接入单Agent原生工具目录

为 OpenAI Chat 与 Responses 广告独立 Runtime 和 MCP 函数。
支持持久计划 checkpoint、多动作顺序与严格协议拒绝。
补齐真实 Provider 协议门禁、确定性回归和 Runtime 文档。
This commit is contained in:
AIGameCreator App
2026-07-16 08:15:39 +08:00
parent 9d29631b01
commit 69159b2b39
8 changed files with 1385 additions and 221 deletions
@@ -989,6 +989,19 @@ V1.25 在 V1.24 仓库启动上下文上增加项目内 Skill catalog,但不
2026-07-16 正式 `openai_chat / gpt-5.5` 的 `project-skill` suite **PASS**。一次性项目的 hash-only 原始验收先真实失败;Agent 在首个项目变更前精确读取匹配 `.codex/skills/release-capsule/SKILL.md` 1 次,无关 Skill 读取为 0,以 1 个项目变更动作只修改 `game/release-capsule.txt`,随后 Agent `project.verify` 与宿主独立复验均通过。最终脚本复跑记录 25 条 task、41 条 event、57 条 Agent DB、5 个成功工具动作和 2 个确认动作;4 组 tool-plan Provider lifecycle 全部唯一 `started -> completed`,最终 assistant 与 completed audit 各 1,重复 message/receipt、fallback replay 和遗留 finalization 均为 0。最终回复、公共审计、测试报告中的 Skill 正文、API Key、诱饵、项目与正式配置绝对路径泄漏均为 0;正式配置 CLI 调用为 0,源 Runner endpoint 和配置副本保持不变,隔离 Runner、AppData 与 disposable 项目已按 sentinel 清理。V1.25 真实行为门禁至此完成。
## V1.26 Provider 原生工具目录
V1.26 把 OpenAI-compatible planning 从单个 `submit_agent_tool_plan` 包装函数升级为独立 function tool 目录。当前 wrapper 虽然走原生 function calling,但每个真实工具仍只是 `actions[].tool + 任意 input object`,模型需要从长提示词记忆工具名和参数,Provider 也无法对具体工具输入做 schema 约束。新协议让模型直接选择稳定函数名并填写对应 JSON schema;Runtime 仍是唯一执行者,原有 action identity、权限、确认、沙箱、revision、verification、reconciliation、steer、Goal、finalization 和副作用重放边界全部保持。
- OpenAI Chat 与 Responses 请求必须提供 `update_agent_plan`、`respond_to_user`、全部当前可执行内置工具,以及当前 MCP catalog 中每个可用工具对应的独立 function definition。内置函数名由规范 Runtime tool id 确定性映射,MCP 函数名使用 server/tool 身份的稳定有界哈希,不能把外部任意名称直接拼成 Provider function name;完整 server/tool 与 catalog/tool fingerprint 继续由 Runtime 绑定,模型不能提交或覆盖。
- 每个内置 action function 使用独立输入 schema,并显式携带非空 `reason` 与工具 `input`。MCP function 复用经过现有目录预算和清洗的真实 input schema,但外部 description/schema/instructions 始终是不可信输入,不能改变系统规则或扩大能力。function catalog 必须进入 token 估算和自动压缩预算;目录超限、重复函数名、非法 schema 或 binding 漂移失败关闭。
- 一次 Provider 响应最多包含 1 个 `update_agent_plan`、最多 3 个 action function call,或 1 个 `respond_to_user`;计划更新既可单独作为持久进度 checkpoint,也可与 action 或最终回复同批返回,最终回复不能与 action 共存。plan-only 会先持久化单调计划,再由未完成计划 blocker 进入同一 run 的下一次 planning,不会提前写 assistant 或 completed。call id 必须非空且唯一,未知、重复、参数非对象、超预算、空回复、多个回复或多个计划更新都进入现有格式修复,不执行任何动作。action 顺序按 Provider 返回顺序稳定转换;V1.26 不宣称同一 Agent 内并行执行工具,转换后的动作继续逐个进入 durable ledger。
- `update_agent_plan` 只承载 explanation 与最多 8 个持久步骤;`respond_to_user` 只承载最终正文。直接工具协议不要求模型公开 thinking 正文,Runtime 从计划说明或首个 action reason 派生有界 thinking summary。结构化计划仍有未完成步骤时禁止最终回复,项目修改后仍必须取得当前 revision 的真实验证凭证。
- 新请求不再向 OpenAI-compatible Provider 广告 `submit_agent_tool_plan`。解析器继续接受旧 wrapper 与 text JSON,用于现有确定性 fixture、历史兼容和不提供 function tools 的 Anthropic 路径;格式修复请求必须继续广告当前原生目录,不能在同一 Provider request identity 下静默切回旧 wrapper。公共协议审计只保存协议名、function call 数量、稳定函数名和 call id 身份,不保存 arguments、写入正文、MCP 参数或最终回复。
- 确定性验收必须覆盖完整内置目录、函数名稳定性、核心 schema、动态 MCP binding、计划 + 多 action、计划 + reply、顺序、未知/重复/冲突/超预算拒绝、旧 wrapper/text 兼容、repair 后仍使用原生目录、token 预算和公共零 arguments。真实 Provider 必须在无工具名和参数配方的任务下自主选择至少一个只读工具、一个项目修改工具和真实验证工具,完成唯一目标文件交付;最终还要证明协议全程为原生目录、action/receipt/Provider lifecycle 唯一、无 wrapper fallback、唯一 assistant/completed、零正文/密钥/路径泄漏和隔离现场完整清理。
2026-07-16 正式 `openai_chat / gpt-5.5` 的 `project-skill` suite **PASS**。首轮真实执行在匹配 Skill 读取后暴露旧 parser 拒绝 plan-only,保留现场复验进一步证明模型会先单独调用 `update_agent_plan`;Runtime 空动作分支原本已能持久化计划并安全进入下一轮,因此移除矛盾的 parser 拒绝并补三轮确定性闭环。最终加强门禁复跑记录 31 条 task、57 条 event、94 条 Agent DB、6 个成功工具动作和 2 个确认动作;9/9 个成功工具计划与 6/6 个格式修复全部使用 `native_runtime_tools`,旧 wrapper 与 text JSON fallback 均为 0。Agent 在首个项目修改前读取匹配 Skill 1 次、无关 Skill 0 次,只修改 1 个目标文件,Agent `project.verify` 与宿主复验均通过;15 个 tool-plan 加 1 个 final-reply Provider lifecycle 全部唯一闭合,最终 assistant/completed 各 1,重复 message/receipt、遗留 finalization、Skill 正文、API Key、诱饵、项目/正式配置路径和报告泄漏均为 0,隔离 Runner、AppData 与一次性项目完整清理。确定性 Tauri 全量为 822 passed / 4 ignored;V1.26 真实行为门禁至此完成。
## 验收命令
- `cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml structured_plan_ -- --nocapture`
@@ -572,4 +572,6 @@ game-project/
- 2026-07-16 V1.24 已完成真实验收:正式 `openai_chat / gpt-5.5` 的 `scoped-agents` suite 在无规则正文、期望内容和工具配方的任务下,让同一 Agent 只修改 `alpha / beta` 两个兄弟目录交付文件;根、父、各自叶规则全部精确命中且兄弟串用为 0,Agent `project.verify` 与宿主复验均通过。最终脚本复跑的 8 组 Provider lifecycle 唯一闭合,最终 assistant/completed 各 1,重复持久化,以及最终回复/公共审计/报告中的规则正文、API Key、诱饵、项目/配置路径泄漏均为 0,隔离现场完整清理;不再把 prompt 可见性代替模型遵循证据。
- 2026-07-16 起,同一 Runtime 文档的“V1.25 Codex 式项目 Skill 发现与渐进加载”作为项目工作流加载事实源。仓库启动上下文升级为 `repository-startup-context-v3`,只发现项目内 `.codex/skills/<name>/SKILL.md` 与 `.agents/skills/<name>/SKILL.md` 直接入口,同名时 `.codex` 优先;首轮 prompt 只注入清洗后的 `name / description / entryPath / contentSha256`,正文必须在任务命中后通过现有 `file.read` 按需读取。Skill 不能扩大工具、权限、确认、沙箱、隐私或完成门禁,与适用路径的 `AGENTS.md` 冲突时后者优先;active Skill 变化推进 repository fingerprint 并阻断旧 pending 动作后重规划。
- 2026-07-16 V1.25 已完成真实验收:正式 `openai_chat / gpt-5.5` 的 `project-skill` suite 先让 hash-only 原始验收真实失败;Agent 在首个变更前精确读取匹配 Skill 1 次、无关 Skill 0 次,以 1 个变更动作只修改目标文件,Agent `project.verify` 与宿主复验均通过。最终脚本复跑记录 25 条 task、41 条 event、57 条 Agent DB 和 5 个成功工具动作;4 组 tool-plan Provider lifecycle 唯一闭合,最终 assistant/completed 各 1,Skill 正文、API Key、诱饵、项目/配置路径泄漏和重复持久化均为 0,隔离 Runner/AppData/项目完整清理。
- 2026-07-16 起,同一 Runtime 文档的“V1.26 Provider 原生工具目录”作为 OpenAI-compatible planning 协议事实源。Chat / Responses 不再只广告 `submit_agent_tool_plan` 包装函数,而是直接提供 `update_agent_plan`、`respond_to_user`、全部内置 Runtime action 和动态 MCP function;每个函数使用独立 schema,Runtime 继续负责身份、权限、确认、沙箱、revision、验证、恢复与副作用防重放。Anthropic 与历史 fixture 保留 text JSON / wrapper 解析兼容,但新请求和 repair 不能静默降级。plan-only 是合法持久 checkpoint,未完成计划仍阻止最终化。
- 2026-07-16 V1.26 已完成真实验收:正式 `openai_chat / gpt-5.5` 的 `project-skill` suite 中 9/9 个成功工具计划与 6/6 个格式修复全部使用 `native_runtime_tools`,wrapper/text fallback 均为 0。Agent 自主读取匹配 Skill、只改唯一目标文件并完成 Agent/宿主双重验证;15 个 tool-plan 和 1 个 final-reply lifecycle 唯一闭合,最终 assistant/completed 各 1,重复、Skill 正文、API Key、诱饵、项目/配置路径和报告泄漏均为 0,隔离 Runner/AppData/项目完整清理。
- 开发模式可通过本地项目文件面板执行 `file.list/read/write/delete`,普通用户界面不暴露文件面板。