补齐仓库指令作用域

升级仓库启动上下文并按目录作用域加载AGENTS指令
区分仓库指令与不可信参考资料并固定权限安全边界
阻止旧版上下文指纹恢复后直接执行项目写入
补充作用域、请求载荷和迁移阻断回归测试
同步Runtime方案、App实施计划与项目决策记录
This commit is contained in:
AIGameCreator App
2026-07-16 05:59:26 +08:00
parent fa15655a75
commit e99cfa4185
6 changed files with 211 additions and 20 deletions
@@ -4648,6 +4648,13 @@
- 客户端:Project Supervisor 主聊天、启动器开发 Agent 聊天和项目内 Agent 弹窗复用同一问题卡;等待时普通输入/steer 禁用,卡片不随 Runtime 详情折叠,失败重试保持同一 responseId。
- 真实验收:2026-07-16 正式 `openai_chat / gpt-5.5``user-input-runtime` suite PASS。Project Supervisor 自主提出 1 题/2 选项,Runner pidfd 强杀换 boot 后 Provider started 保持 `1 -> 1`,回答后同 Agent/Session/run 完成唯一最终 assistant;会话问题/答案各 1,重复 message、公共正文、API Key、项目/配置路径和报告泄漏均为 0,隔离现场已清理。
## 2026-07-16 AI 游戏创作 Agent Runtime V1.24 scoped AGENTS 仓库指令
- 决策:`AGENTS.md` 不再与 README/CONTEXT 一样标成纯数据。`repository-startup-context-v2` 为每份文档持久派生规范 scope;Agent 对目标路径只叠加祖先链规则,根到叶优先级递增,兄弟目录规则不适用。
- 系统边界:项目指令只约束代码风格、工作流、测试和交付,不能改变 Agent/Goal/Session/run,不能授予工具、网络、MCP、文件或命令权限,也不能替用户确认、放宽沙箱/隐私/verification/finalization 或授权副作用重放。README 与根 CONTEXT 继续使用不可信参考边界。
- 恢复:v2 fingerprint 纳入 schema、path、kind、scope 与清洗后正文;v1 pending fingerprint 在任何受仓库上下文保护的动作前都会形成 `repositoryContextDrift=true / blocked` observation,旧动作零执行并在同一 run 重规划。
- 验收:16 条 repository context 测试覆盖根/父/叶/兄弟 scope、顺序、预算、来源清单、清洗和 fingerprintProvider 捕获请求证明 v2 schema、scope、指令/参考边界与正文真实进入 planning;5 类写工具 drift 回归和旧 v1 pending 回归均证明零副作用。真实双兄弟目录 Provider 行为验收仍待执行,当前不宣称 V1.24 整体 PASS。
## 2026-07-16 AI 游戏创作 Agent Runtime V1.18 真实 Goal Provider 验收收口
- 真实结论:正式 AppData 的 `openai_chat / gpt-5.5` 路由通过隔离 `goal-runtime` suite。Goal revision 1 的旧待确认写动作在 revision 2 形成唯一 `runtime.goal / blocked` receipt 且零执行/零重放;Agent 取得真实退出码 1 后用一个 patchset 修复,暂停、Linux pidfd 强杀、Runner 换 boot 与显式 resume 全部保持原 Agent/Session/run,稳定窗口中 task/plan/conversation/Provider/action 零推进。
@@ -962,6 +962,17 @@ V1.23 对齐 Codex Plan/Goal 在任务未完成时主动澄清并进入 `Needs i
2026-07-16 使用正式 AppData 的 `openai_chat / gpt-5.5` 路由执行隔离 `user-input-runtime` suiteV1.23 真实验收 **PASS**。Project Supervisor 自主发起 1 个含 2 个选项的结构化问题,等待期使用 Linux pidfd 强杀 Runner 并换 boot 恢复;Provider started 记录在重启前后保持 `1 -> 1`,未暗中请求。回答后保持同一 Agent/Session/run,会话恰好为 1 条初始任务、1 条 assistant 问题、1 条 user 回答和 1 条最终 assistant;全程 2 个 Provider request identity 均唯一闭合,重复 message、遗留 finalization、公共问题/答案正文、API Key、项目/配置路径和报告泄漏均为 0,隔离 Runner、AppData 和一次性项目已清理。
## V1.24 Codex 式 scoped `AGENTS.md` 仓库指令
V1.24 修正仓库启动上下文把 `AGENTS.md` 与 README/CONTEXT 一律描述成“纯数据”的行为。`AGENTS.md` 是受 Runtime 系统边界约束的项目指令:用于约定目录内代码风格、工作流、测试和交付要求;README 与根 `CONTEXT.md` 仍只是项目参考数据。本切片不扫描 AppData、用户主目录或仓库外 Skill,也不宣称已经实现 Codex 的完整 Skill 发现与按需加载。
- 仓库启动上下文升级为 `repository-startup-context-v2`。每个 context document 除 `path / kind / content / contentSha256 / truncated` 外新增规范 `scope`:根 `AGENTS.md` 的 scope 为 `.``game/AGENTS.md` 的 scope 为 `game``game/feature/AGENTS.md` 的 scope 为 `game/feature`README/CONTEXT 的 scope 固定为 `.`,但不具备项目指令语义。
- Agent 对每个准备读取、修改、验证或提交的项目内路径,必须只应用其祖先目录链上的 `AGENTS.md`,按根到叶顺序叠加;更深 scope 只在自身目录树内覆盖冲突,兄弟目录规则不得串用。没有目标路径时可以使用根指令做全局规划,但不能把任意嵌套规则提升成全局规则。
- Provider prompt 必须显式区分 `SCOPED REPOSITORY INSTRUCTIONS``UNTRUSTED REPOSITORY REFERENCE`,列出每份文档的 scope、SHA-256 和截断状态,并在正文边界重复 path/scope。已截断的适用指令不能被模型当作完整规则;后续需要修改该 scope 时应先通过现有 `file.read` 获取足够上下文。
- 项目指令不能修改 Agent/Goal/Session/run 身份,不能授予工具、网络、MCP、文件或命令权限,不能替用户批准确认动作,也不能放宽沙箱、隐私、verification/finalization 或副作用重放门禁。正文继续执行凭据和绝对路径清洗;符号链接、敏感目录和 `.agent/**` 不进入启动上下文。
- v2 fingerprint 覆盖规范 path、kind、scope、清洗后正文哈希和既有仓库结构。旧 pending action 绑定的 v1 fingerprint 在第一次恢复或执行前会按现有 repository context drift 路径转成 `blocked` observation 并在同一 run 重规划,不能按旧规则直接写项目。
- 确定性验收覆盖根/父/叶/兄弟 scope、根到叶顺序、非指令参考文档标签、prompt 真实请求载荷、正文预算与截断、密钥/绝对路径清洗、scope/content 变化导致 fingerprint 漂移,以及旧 pending 动作零执行。真实 Provider 后续必须用没有工具配方的一次性嵌套项目证明:模型对两个兄弟目录分别遵循正确规则、没有串用兄弟规则,并在修改后完成真实验证;未完成该门禁前只记录确定性能力,不宣称 V1.24 整体 PASS。
## 验收命令
- `cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml structured_plan_ -- --nocapture`
@@ -568,4 +568,5 @@ game-project/
- 2026-07-15 V1.22 已落地并完成真实验收:开发配置窗可管理 server、敏感凭据、工具过滤和审批并通过 Runner 查看有界目录,`agc:chat` / `agc:swarm` 可用 `/mcp` 查询状态。正式 `openai_chat / gpt-5.5` 路由真实调用 STDIO/Streamable HTTP lookup 和确认后的 mutate,正常 run 的 action/sidecar/receipt 各 3 且最终 assistant 唯一;第二 run 在 HTTP mutate 副作用后强杀 Runner,只进入 1 次 reconciliation,调用、sidecar、receipt 和 assistant 均未重放。公共 arguments、结果正文、instructions、凭据和项目/配置路径泄漏为 0,一次性现场已清理。
- 2026-07-16 起,同一 Runtime 文档的“V1.23 单 Agent 持久用户输入请求”作为 Needs input 事实源。Agent 可在计划未完成时通过 `user.input_request` 提出 1-3 个结构化问题,Runtime 保持同一 run 并暂停;Project Supervisor、开发 Agent 窗口和 `agc:chat` 从私有 sidecar 展示并提交答案。普通 steer、工具确认和最终回复不再承担问题回答语义,问题/答案正文不进入公共审计。
- 2026-07-16 V1.23 已完成真实验收:正式 `openai_chat / gpt-5.5` 路由在 Project Supervisor 上产生 1 个含 2 选项的 Needs input,等待期 Runner pidfd 强杀恢复未增加 Provider 请求,回答后同 Session/run 完成唯一最终回复。问题/回答各一条,重复消息、公共正文、密钥、路径和报告泄漏均为 0,隔离现场已清理。
- 2026-07-16 起,同一 Runtime 文档的“V1.24 Codex 式 scoped `AGENTS.md` 仓库指令”作为项目规范加载事实源。仓库启动上下文升级为 v2,根与嵌套 `AGENTS.md` 携带规范 scope 并按根到叶适用,更深规则只覆盖自身目录树,兄弟 scope 不串用;README/CONTEXT 明确保持不可信参考数据。项目指令不能扩大工具、确认、沙箱、隐私或完成门禁,旧 v1 pending fingerprint 必须先形成 repository drift blocker 再重规划。当前确定性与 Provider 请求载荷回归已通过,真实双兄弟目录 Provider 门禁仍待完成,不把 prompt 可见性等同于模型遵循能力。
- 开发模式可通过本地项目文件面板执行 `file.list/read/write/delete`,普通用户界面不暴露文件面板。