diff --git a/docs/design/architecture-v2.md b/docs/design/architecture-v2.md index 868976b..db6cc10 100644 --- a/docs/design/architecture-v2.md +++ b/docs/design/architecture-v2.md @@ -1473,6 +1473,34 @@ sanguo_moziplus_v2/ - **文件系统**:给 Agent 用(`read` 工具直接读,Agent 不能访问 daemon 的 SQLite) - 两者通过 daemon API 同步,SQLite 是权威源,文件是缓存/视图 +#### 3.9.3 产出物门控(Gating)设计 + +> 参考 OpenAI Codex Cookbook 的 gating check:"Do not advance until required files are present" + +``` +步骤完成回报 POST /api/steps/{id}/complete + │ + ▼ +Daemon validator 做三层检查: + 1. 文件存在性检查 + - output_json 中声明的每个 artifact.path 都必须存在 + - ls -la 验证 + 2. 内容完整性检查 + - 文件大小 > 0(空文件不算) + - 文件大小在合理范围内(非异常值) + - 如果是 JSON/CSV,验证 schema/parsing + 3. 语义检查(可选,消耗 token) + - AI 检查产出物是否与 end_state 描述匹配 + - 只在 confidence < 0.7 时触发 + │ + ▼ +三层全过 → 同一事务内: + - UPDATE steps SET state='completed' + - INSERT INTO moments (type='step_completed') + - INSERT INTO moments (type='validation_passed') +任何一层失败 → 回报 validation_failed,步骤保持 executing +``` + --- ### 3.10 Daemon API 接口定义