Files

9.9 KiB
Raw Permalink Blame History

04A.agent_tool_route 验收评审(中间记录,已被后续评审收敛)

状态: 中间记录;最终以 05.acceptance_review.md 为准
日期: 2026-08-07
评审对象: lineup-adapter/hermes/lineup/ 当前实现、04A.agent_tool_route.md02.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_scopetool_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 中的受控选项会被映射回 ACP optionId
  • 该交互会复用现有 tool_calls one-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 当前已新增的实现文件

1.6 Fresh Runtime / Browser Evidence2026-08-07

在重新安装当前工作树的 Hermes Adapter、重启 Adapter 并对 Host 执行强制刷新后,取得了新的真实运行期证据。该证据不是历史截图或旧消息:

  • Host 新发送的 client.inventory 消息序号为 1201revision = catalog-1
  • 该 inventory 使用独立顶层 tools[] 投影,包含 pomodoro.startpomodoro.interrupttask-dashboard.open/updatewhiteboard.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_7d3e9f2a1bPomodoro interrupt 短工具结果为 status = interrupted
    • call_id = call_5f9c2a7d1e:原始 start 调用结果为 state = interrupted,同一个 operation_idpomodoro:operation_msiet305_zwa4ckb9f2interruption_reason = agent_interrupt
  • 两个终态均由 Runtime 发送并被 Adapter 收到,证明 start / interrupt 的请求、进度、终态和 operation 关联在真实消息链路中闭环。

2. 当前尚未证明完成的验收项

以下项目仍未被当前证据证明完成,因此 04A 不能视为已验收通过:

  • 虽然 slash_confirmclarifyupdate_prompt 已具备 Adapter 侧自动化测试证据,但 Hermes ACP 当前是否会以可直接消费的真实请求形态发出这些 contract,尚未拿到运行期 fresh evidence
  • 至少一种“本轮范围外 Hermes 请求被稳定拒绝”的运行证据尚未补入。

3. 当前结论

04A 已从“仅完成协议设计和 invoke parser”推进到“Runtime 已发布 Adapter 可消费的顶层 Tool inventoryAdapter 侧 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
整体 04ARuntime inventory 与 Pomodoro start / interrupt 已完成真实 Host 验证;仍需补齐 Hermes 权限/交互真源和范围外请求拒绝证据,尚未完成最终验收