9.9 KiB
04A.agent_tool_route 验收评审(中间记录,已被后续评审收敛)
状态: 中间记录;最终以 05.acceptance_review.md 为准
日期: 2026-08-07
评审对象: lineup-adapter/hermes/lineup/ 当前实现、04A.agent_tool_route.md、02.technical_implementation_spec.md
评审口径: 以 04A 主定义和实施规范为准,先记录当时已经拿到的自动化证据与已闭环子能力,再明确尚未满足的最终验收项。本文不是最终完成声明;后续 fresh runtime evidence、结构性限制记录与最终关闭结论,均已收敛到 05.acceptance_review.md。
1. 当前已验证的实现
1.1 Runtime Agent Tool invoke 的 Adapter 侧基线已通过自动化测试
已具备并已由自动化测试覆盖的能力:
client.inventory接受独立tools[]顶层投影;lineup.v1.tool.invoke已进入 Hermes Adapter 允许输出集合;tool.invoke会绑定当前 conversation 的最新inventory_revision;- 非法
tool.invoke会被拒绝或降级,不允许伪造 Runtime 内部目标字段。
对应测试命令:
npm test -- \
src/runtime/app-management/miniapp-sdk.test.ts \
src/runtime/app-management/reference-miniapps.test.ts \
src/runtime/app-management/app-registry.test.ts \
src/runtime/inventory/client-inventory.test.ts \
src/runtime/coordination/tool-router.test.ts \
src/runtime/coordination/lineup-runtime.test.ts
2026-08-07 当前结果:
Test Files 6 passed (6)
Tests 71 passed (71)
当前已通过自动化测试验证的点:
- Runtime
client.inventory以顶层tools[]发布 Agent Tool,不再把 Tool 塞进applications[].tools; - Tool projection 从 MiniApp SDK Declaration 经 Manifest / Registry 产生,保留
app_scope、tool_id、description、input_schema、handling、delivery 与 activation requirement; - Pomodoro 的
pomodoro.start/pomodoro.interrupt会进入顶层投影;禁用、升级、卸载会递增 revision 并撤销对应 Tool; - inventory 不泄露
output_schema、permissions、handler、bundle 或本地实现信息。
1.2 Hermes Adapter 已通过自动化测试消费同一顶层 Tool projection
对应测试命令:
python3 -m unittest \
lineup-adapter/hermes/lineup/tests/test_protocol.py \
lineup-adapter/hermes/lineup/tests/test_core.py \
lineup-adapter/hermes/lineup/tests/test_acp_client.py
2026-08-07 当前结果:
Ran 32 tests in 0.022s
OK
已具备并已由自动化测试覆盖的能力:
client.inventory接受独立tools[]顶层投影;lineup.v1.tool.invoke已进入 Hermes Adapter 允许输出集合;tool.invoke会绑定当前 conversation 的最新inventory_revision;- 非法
tool.invoke会被拒绝或降级,不允许伪造 Runtime 内部目标字段。
1.3 Runtime 已接受 lineup.v1.tool.invoke 作为最小请求兼容入口
当前已拿到的 Runtime 自动化证据表明,04A 不再只是 Adapter 内部自洽,而是已经把新的请求入口真正接到了 04.runtime_workspace 既有执行链路上。
当前已通过自动化测试验证的点:
- Runtime parser 接受
lineup.v1.tool.invoke; - Tool Router 会把
lineup.v1.tool.invoke路由到与旧请求类型相同的 MiniApp Tool 路径; - 至少一条普通 bundled MiniApp Tool 路径已经通过
lineup.v1.tool.invoke跑通; pomodoro.start已通过lineup.v1.tool.invoke跑通 activation、foreground 确认、deadline 结算与最终结果;pomodoro.interrupt已通过lineup.v1.tool.invoke跑通短 Tool 自身结果,以及对长pomodoro.start的中断收口;- Runtime 对旧请求类型的兼容测试没有因此回归。
1.4 Hermes 交互兼容层的统一状态机已落地
本轮已在 Adapter 内实现并通过自动化测试验证以下兼容闭环:
Hermes ACP session/request_permission
-> Adapter 投影为内部 permission request
-> Adapter 发出 lineup.v1.tool.call(choice)
-> 用户回传 lineup.v1.tool.result
-> Adapter resolve 回 ACP permission outcome
Adapter 内部 interactive request
-> Adapter 发出 lineup.v1.tool.call(choice | confirm | input)
-> 用户回传 lineup.v1.tool.result / tool.cancel
-> Adapter resolve 回 Hermes 内部 interaction outcome
当前已通过自动化测试验证的点:
- ACP permission request 会被解析为受控请求,而不是一律
cancelled; - Adapter 会为该请求生成标准
tool.call(choice); tool.result中的受控选项会被映射回 ACPoptionId;- 该交互会复用现有
tool_callsone-shot ledger,并配套持久化hermes_interactions映射; - Adapter 重启恢复时,未完成的 Hermes 交互会被过期收口,而不是在新进程里继续假定可 resolve。
slash_confirm已能通过tool.call(choice)生成并回收once / always / cancel一类受控结果;update_prompt已能通过tool.call(confirm)生成并回收y / n一类受控结果;clarify已能覆盖单选choice、纯文本input、以及other -> input的二段式路径;clarify multi_select = true当前会被 Adapter 稳定拒绝,不向 Host 发出不受支持的交互请求。
1.5 当前已新增的实现文件
- acp_client.py
- core.py
- state.py
- test_acp_client.py
- test_core.py
- client-inventory.ts
- miniapp-sdk.ts
- app-registry.ts
- tool-router.ts
- lineup-v1.ts
- tool-router.test.ts
- lineup-runtime.test.ts
1.6 Fresh Runtime / Browser Evidence(2026-08-07)
在重新安装当前工作树的 Hermes Adapter、重启 Adapter 并对 Host 执行强制刷新后,取得了新的真实运行期证据。该证据不是历史截图或旧消息:
- Host 新发送的
client.inventory消息序号为1201,revision = catalog-1; - 该 inventory 使用独立顶层
tools[]投影,包含pomodoro.start、pomodoro.interrupt、task-dashboard.open/update和whiteboard.open/submit; - 用户消息序号
1202为真实用户输入:开始一个 5 分钟的专注; - 同一条启动调用
call_id = call_5f9c2a7d1e收到accepted进度回执(消息序号1207); - 随后收到
started进度回执(消息序号1209),其中operation_id = pomodoro:operation_msiet305_zwa4ckb9f2,并绑定到前台 Pomodoro instance; - 用户提供的页面截图显示“专注工作区”“5分钟专注”,倒计时从
05:00进入04:56,证明前台工作区已真实打开并运行; - 用户消息序号
1219为真实用户输入:停止当前专注; - 停止后收到两个
lineup.v1.miniapp.tool.result终态:call_id = call_7d3e9f2a1b:Pomodoro interrupt 短工具结果为status = interrupted;call_id = call_5f9c2a7d1e:原始 start 调用结果为state = interrupted,同一个operation_id为pomodoro:operation_msiet305_zwa4ckb9f2,interruption_reason = agent_interrupt;
- 两个终态均由 Runtime 发送并被 Adapter 收到,证明 start / interrupt 的请求、进度、终态和 operation 关联在真实消息链路中闭环。
2. 当前尚未证明完成的验收项
以下项目仍未被当前证据证明完成,因此 04A 不能视为已验收通过:
- 虽然
slash_confirm、clarify、update_prompt已具备 Adapter 侧自动化测试证据,但 Hermes ACP 当前是否会以可直接消费的真实请求形态发出这些 contract,尚未拿到运行期 fresh evidence; - 至少一种“本轮范围外 Hermes 请求被稳定拒绝”的运行证据尚未补入。
3. 当前结论
04A 已从“仅完成协议设计和 invoke parser”推进到“Runtime 已发布 Adapter 可消费的顶层 Tool inventory,Adapter 侧 invoke 基线完成,Runtime 已接受 lineup.v1.tool.invoke 请求入口,Hermes 交互兼容层已有统一状态机并具备多类自动化证据”的阶段。
但按主定义与实施规范的最终完成标准来看,本轮只能判定为:
Runtime Tool inventory:已从 SDK / Manifest / Registry 端到端发布顶层 tools[],并有 71 个 Runtime 定向测试证据
MiniApp Tool invoke 基线:已具备 Adapter 侧实现与 32 个 Adapter 定向测试证据
Runtime 请求兼容:已具备 lineup.v1.tool.invoke 的 parser / router / 高价值集成测试证据
Hermes 交互兼容层:已完成 exec_approval、slash_confirm、clarify、update_prompt 的 Adapter 侧统一桥接与自动化覆盖
Hermes ACP 真源验证:当前仍需补充除 request_permission / exec_approval 外的 contract,及一种范围外请求的真实拒绝证据
真实 Pomodoro fresh evidence:已完成 start / interrupt;见 1.6
整体 04A:Runtime inventory 与 Pomodoro start / interrupt 已完成真实 Host 验证;仍需补齐 Hermes 权限/交互真源和范围外请求拒绝证据,尚未完成最终验收