ASTER ACP / 01
ACP 客户端接入
先理解进程与协议边界,再接入模型、会话和宿主扩展。
ACP 负责哪一层
aster-acp 是运行在独立进程中的 Agent Client Protocol 代理。客户端负责界面、启动进程、请求权限和接收更新;代理把协议请求接到 Core,执行模型调用、受控工具与会话持久化。
- 01客户端负责交互
客户端发送用户消息,并显示代理事件。
- 02适配器保留协议身份
ACP 会话映射到 Core 会话,工具 ID 跟随原调用。
turn.rsL26 ↗ - 03内核维持执行边界
模型调用与工具效果仍由原始运行处理。
fact_control.rsL126 ↗
Core 和 ACP 使用相同的运行时,并不具有完全相同的接口。Rust 宿主可以注入 trait 实现和组件树;ACP 客户端只能选择代理明确提供的协议与宿主扩展。提交一个组件名称不会让代理动态加载任意 Rust 代码。
建议的接入顺序
- 配置可信 ACL,构建并启动配套的终端与 ACP。
- 完成 initialize、session/new、一次只读 session/prompt 和 session/cancel。
- 接入流式文本、工具状态、权限请求和业务问题,检查取消后的终态。
- 接入会话保存与加载、模型选择和工具状态展示。
- 按产品需要启用插件、Office、长期目标或无人值守;逐项验收。
下面的章节介绍这一步步怎样做。JSON 示例都是线上协议消息或工具参数,不是配置文件。源码中的闭集字段和 schema 才是消息兼容性的依据。
版本与交付
本组文档对应仓库 9.1.6 源码。aster 与 aster-acp 必须配套构建、分发;不要把任意上游发行包覆盖到 Aster 安装中。源码引用固定到本版注册的 Git 提交,不包含工作树未提交的改动。
客户端与运行时怎样连接
- 01从交互进入适配器
客户端构造协议参数。ACP 在入口检查内容类型。
- 02可信宿主选择能力
宿主提供可信配置。工作区配置保留原有信任限制。
- 03Core 处理事实与完成
ACP 的显示事件不会替代内核回执。
turn.rsL26 ↗
协议实现从 A3sCodeAgent L529 ↗ 开始;会话装配见 open_core_session L233 ↗,工具与模型运行则交给 Core。
| 想追踪的路径 | 实现入口 | 配套章节 |
|---|---|---|
| 协商协议与创建会话 | initialize L976 ↗、new_session L1021 ↗ | 协议生命周期 |
| 提交任务与接收事件 | stream_turn L411 ↗ | 流式展示 |
| 让用户确认一次调用 | request_tool_permission L135 ↗ | 权限与提问 |
| 恢复已有会话 | load_session L1121 ↗ | 历史与会话目录 |
正文引用直接定位到本版 Git 快照的行号,“本页源码”汇总当前页面的实现入口。
任务索引
02启动 ACP,并核对它获得的授权构建、参数、ACL 层、账号导入和工作区 MCP 信任。03跑通请求、更新、取消和恢复标准处理入口、请求关联、模式切换和会话恢复。04运行一个能处理确认、问题和表单的 ACP 客户端可编译的 stdio 客户端、交互回复和取消收尾05把文本、工具与执行状态显示完整文本片段、推理、工具输出、图片和可选 Run 观测。06让用户知道自己批准了什么权限姿态、逐项确认、可学习规则、业务提问与 MCP sampling。07切换模型,同时保留会话约束目录 ID、配置选项、推理档位和会话替换。08查询会话,不必先启动一次任务会话目录、加载重放、工具事件与运行控制。09把获准的插件能力交给会话受管理发布、选择 generation、工具进程、Skills 和资产根。10读取真正的来源,再生成和核对产物编辑器文本、Office 读写、SVG/PNG 和数值检查的区别。11推进目标,并核对每次完成的依据默认工程策略、目标命令、计划与等待、审阅和完成证明。12在正确的数据范围中查询和维护资料记忆管理、Wiki 搜索、检索配置与宿主边界。13运行没有用户在端的任务执行预算、自动交互策略、目标续跑和结果原因。14ACP 扩展与宿主元数据参考标准协议之外,代理接受哪些请求、发出哪些通知,以及谁提供元数据。
实现依据
沿请求进入源码
协议原理漫游串起文本入口、工具行、确认和无人值守结果。 图示支持分步聚焦,源码片段支持逐站对照。