Files
agent_ops/02.架构设计/02.整合结论/02.Agent工具与运行时边界.md

4.2 KiB
Raw Permalink Blame History

Agent 工具与运行时边界

版本: 2026-08-07 整合版
主来源: 01.当前有效设计/02.正式方案/运行时与智能体工具.md
辅助来源: 01.当前有效设计/APP架构设计.md90.历史设计归档/01.前期分析与设计/tool-action-design.md

1. 当前权威结论

当前最重要的结论是:

Agent Tool 是 Runtime 发布给远端 Agent 的受控调用契约,不是用户按钮,也不是 MiniApp 内部函数的别名。

这是当前设计相对于早期草案最重要的收敛之一。

2. Agent 当前扮演什么角色

远端 Agent 当前应该被理解为:

  • 用户意图的理解者;
  • Runtime 已发布能力的调用者;
  • 结果解释与后续编排者。

它不应该被理解为:

  • 本地 Runtime 的替身;
  • MiniApp 内部状态的直接操作者;
  • Host 权限的直接调用者;
  • 任意前端函数的远程执行入口。

3. 三条入口必须分开

当前有效设计明确把三条入口区分开了:

3.1 Agent Tool

由远端 Agent 发起,经过 Runtime 校验、持久化、路由和回传。

3.2 本地 UI Action

由用户在 MiniApp 页面中的点击、输入、拖动等触发,经 SDK / Surface Bridge 进入 Runtime。

3.3 Host 生命周期意图

由前后台切换、返回、关闭、恢复、锁屏等本地环境事实触发,经 Runtime 的生命周期裁决进入状态机。

这三条入口可以复用内部业务动作,但不能混同身份。

4. 为什么早期工具三分法不能直接作为当前主模型

agent_ops/设计/01.前期分析与设计/tool-action-design.md 中的 app / toolset / action 三分法,在早期用于说明不同工具形态,很有价值;但它已经不能完整表达当前 Runtime 模型,原因是:

  • 当前 Runtime 要管理 Inventory 可见性;
  • 要管理 Tool Call 的幂等、状态、回执和终态;
  • 要管理激活过程、App 就绪条件、前台要求和 operation;
  • 要把 Tool、MiniApp instance、子会话、业务 operation 区分开。

因此,当前主模型应优先使用:

  • Agent Tool
  • Agent Inventory
  • Tool Call
  • 协议回执 / 进度;
  • 业务结果;
  • MiniApp activation
  • operation。

5. 当前 Runtime 对 Tool 的唯一所有权

Tool 相关的这些职责都必须由 Runtime 统一承担:

  • 发布 Inventory
  • 校验调用;
  • 做幂等去重;
  • 决定是否可见;
  • 决定是否允许启动或复用 MiniApp;
  • 持久化业务状态与 outbox
  • 回传协议回执与最终结果。

这意味着:

  • MiniApp 不能自己向 Agent 宣传 Tool
  • Surface 不能直接把前端动作伪造成 Tool Call;
  • Agent 不能绕过 Inventory 直接指定任意 instance 或内部函数;
  • Host 事件也不能伪造成 Tool 调用。

6. 当前与项目实际情况一致的几个重点

结合当前 lineup-app 的实现方向,以下几个判断具有最高优先级:

  • Tool 是 Runtime 语义的一部分,不是单独漂浮在外的协议层;
  • Interact / MiniApp / Workspace / Focus / Lifecycle 与 Tool 调用之间已经形成一套统一模型;
  • 长时业务行为需要区分“调用被接受”“激活已就绪”“业务已开始”“业务已完成”;
  • 用户本地操作、Agent 远程调用和 Host 生命周期变化必须各自可审计、可恢复。

7. 对旧设计中仍可保留的部分

早期协议文档中这些认识仍然有价值:

  • 结构化调用比自然语言裸发更稳定;
  • 工具定义需要 schema 化;
  • 消息需要统一信封与版本化;
  • 调用与返回需要成对、可追踪。

但这些内容如今应作为当前 Runtime Tool 模型的背景,而不是替代它。

8. 本轮整合后的使用建议

如果后续在设计、实现或迭代文档里出现以下歧义,优先按本文判断:

  • 某个按钮是不是 Agent Tool
  • 某个本地事件能不能当成 Tool 调用;
  • 某个 MiniApp 能不能直接发消息给 Agent;
  • 某个 operation 是否等同于一次 Tool Call
  • 某个实例 ID 是否能由 Agent 任意指定。

这些问题的默认答案,都应该先经过 Runtime 边界来裁决,而不是回退到早期直连协议思路。