Aiko Chat
挂钩(Hooks)
phase-guard 写门禁 — 三种宿主形态、五阶段白名单、vibe 站下与写后校验
挂钩是挂在工具调用上的拦截器。Aiko SDD 的核心挂钩是 phase-guard:在 SDD 会话里按工作流阶段约束"现在能写什么文件"。
判定逻辑
- 读
openspec/changes/<id>/.aiko.yaml的phase:(open/design/build/verify/archive) - 写入目标落在具体 change 目录 → 用该 change 自己的状态;否则按
.aiko.yamlmtime 最近的活跃 change 管辖(多 change 并行不串) - 按阶段白名单判定:open/design 只许写规格产物(proposal/design/tasks/specs/检查点),build 起才放行源码(full 流程还要五字段决策齐备),archive 后封笔
.aiko.yaml每次写入(init/set/transition)后都过 schema 校验,坏文件当场报错
三种宿主形态
| 宿主 | 形态 | 拦截方式 |
|---|---|---|
| Claude | PreToolUse hook(settings.json) | exit code 拦截 |
| Codex | managed hook(requirements.toml) | permissionDecision: deny JSON |
| opencode | plugin | tool.execute.before throw |
三者共享同一份 aiko-hook-guard.sh 判定逻辑;codex/opencode 的会话模式走 ~/.aiko/agent-guard/<provider>-<id>.mode 文件。
vibe 站下
vibe(自由编程)会话里 AIKO_SDD_MODE=vibe,phase-guard 全阶段放行——门禁只在 SDD 会话生效。模式在会话创建时确定,不可中途切换。
其他挂钩
UserPromptSubmit(提示前处理)等用户级挂钩放 ~/.aiko/claude-auth/settings.json。插件也可携带自己的挂钩(见 智能体插件)。