把 ZCode Agent 的工作状态发给 Comi 桌宠:工作中 → 打字/工作动作,等待确认 → 等待提醒,本轮结束/失败/完成 → 相应动作。宿主离线或桌宠没开都不影响 ZCode 本身。
- 打开
~/.zcode/cli/config.json,把user-config.example.json里的hooks内容合并进去(保留已有其他 hooks,别整文件覆盖); - 把两处
__COMI_REPO__替换成本仓库的绝对路径; - 新开一个 ZCode session(配置在 session 启动时快照,老窗口不保证热更新)。
把 zcode-plugin/ 作为插件安装(hooks/hooks.json 会被标准目录自动发现,
不要同时在 plugin.json 里重复声明),同样替换 __COMI_REPO__ 后新开 session。
新 session 里跑一个真实任务:开始 → 工具执行 → 等待确认 → 继续 → 本轮结束, 观察桌宠动作。也可以手动重放(不依赖宿主):
echo '{"session_id":"t1","hook_event_name":"PreToolUse","tool_name":"Bash"}' \
| python3 adapters/zcode/comi_hook.py
ls ~/.comi-pet/events/ # 应出现一个统一事件 JSON,桌宠会消费并进入工作状态从 config.json 删除对应 hooks 条目(或移除插件),rm -rf ~/.comi-pet。
- 默认只传状态:不含提示词、回复、工具内容。设
COMI_BRIDGE_SUMMARY=1才附带任务标签(UserPromptSubmit 截断 80 字)与 Stop 回复摘要(截断 160 字)。 - 不读
transcript_path(临时文件,Hook 后即清理);不返回 block、不改权限、 不调用任何模型。Hook 文本一律当数据清洗后转发,绝不执行。 - 收件箱在本地(默认
~/.comi-pet/events,可用COMI_BRIDGE_DIR改),无网络。
| ZCode Hook | 统一事件 |
|---|---|
| SessionStart | session.started |
| UserPromptSubmit | turn.started(可选任务标签) |
| PreToolUse | tool.started |
| PermissionRequest | permission.required |
| PostToolUse | tool.finished |
| PostToolUseFailure | tool.failed(is_interrupt 时为 interrupted) |
| Stop | turn.ended(可选回复摘要;不是任务成功) |