ASTER CODE / 01
Aster Harness 概述
Aster Code 负责 Aster 的模型调用、工具执行、会话记录和完成检查。
- 01先说清想得到什么
你提供目标、范围和完成条件。界面负责接收输入。
- 02把界面请求送入内核
ACP 把协议消息转成 Core 会话调用。Rust 宿主支持直接使用 SDK。
turn.rsL26 ↗ - 03检查实际发生的结果
Core 调用模型与受控工具。事实日志保留执行依据。
fact_control.rsL126 ↗
Harness 的职责
假设 Aster 需要修复一个失败的测试。模型先查找代码,再修改文件并运行测试,然后根据结果决定是否继续。Harness 组织这些步骤:准备模型输入、执行工具调用、检查权限、记录结果,并判断任务能否结束。
在 Aster 中,这部分由 Aster Code 实现。它的核心库是 aster-core,下文简称 Core。终端和桌面通过 ACP 协议与 aster-acp 进程通信,由该进程调用 Core。Rust 应用也可以直接嵌入 Core。使用这套库的应用称为“宿主”。
Core 提供 Anthropic、OpenAI、智谱及 OpenAI 兼容接口的模型适配器。
入口实现:Agent L11 ↗ 创建共享服务与会话,FactRun L126 ↗ 组织事实驱动的执行。
执行工具
检查模型请求的调用是否获准,再执行工具。
保存记录
记录执行结果,供下一轮使用或中断后恢复。
检查完成条件
检查修改是否通过验证,或已获准免除验证。
事实日志如何支持恢复
FactRun 是执行任务的核心,底层使用 aster-effect。事实日志按顺序保存用户输入、模型回复和工具结果。执行组件读取这些记录,计算当前状态和下一步可以执行的动作。
例如,一次工具调用已完成并留下记录,恢复会话时就不需要重新执行这一步。运行时根据日志重建状态,继续处理尚未完成的动作。宿主通过实时事件或运行快照显示进度。子代理采用相同机制,但各自保存日志。
可以组合的执行组件
Rust 宿主可以选择和组合执行组件,例如系统指令、工具目录、调用预算、上下文压缩和调度器。这套组合接口称为 Meta Harness。不指定组合时,会话使用默认组件。
system系统指令tools工具目录budget执行预算compact上下文压缩infer调度组件自定义组件也从日志计算状态,由运行时执行动作。无论如何组合,工具权限和完成检查都由 Core 执行。Rust 接口支持自定义组件树;当前 ACP 入口只接受代码中预先列出的几套组合。
具体配方、自定义组件、工具接入和恢复接口,见 Meta Harness 使用指南。
默认包含哪些能力
Core 默认使用 local-code 构建,包含本地编码所需的执行循环、工作区工具和词法索引。高级工作流、研究与评估、浏览器搜索、S3 和遥测需要额外的构建开关。持久记忆和长期目标还需要宿主提供相应配置或服务。
相应的 Cargo feature 已启用。
宿主已提供这项能力需要的配置。
在目标环境中检查过实际行为。
例如,编译了记忆模块,并不意味着会话已经开始保存和召回长期记忆。宿主还需要指定存储、访问范围和激活规则。具体接入方法见“宿主接入”。
文档入口
设计原则说明执行边界。RSI 与 Meta Harness说明候选执行策略的实验方法。
终端编码智能体教程使用同一个 Rust 工程,依次实现只读会话、确认、验证、恢复和长期任务。
源码入口
函数引用指向本版源码快照的对应行号。“本页源码”汇总本页出现的入口,窄屏显示在正文之后。下表连接公开 API 与执行机制。
| 主题 | 源码入口 | 相关文档 |
|---|---|---|
| 会话创建 | Agent::session_async L176 ↗ | 宿主接入 |
| 模型输入 | ContextAssembler::assemble L153 ↗ | 执行流程 |
| 追加指令 | AgentSession::steer L6 ↗ | 会话与运行控制 |
| 完成条件 | decide_completion L1565 ↗ | 权限与验证 |
| 记忆激活 | activate_candidate L260 ↗ | 记忆与恢复 |
实现依据
本文根据 Aster 仓库中的 aster-core 9.1.6 编写,代码核对日期为 2026-10-28。源码引用固定到本版注册的 Git 提交,后续分支移动不会改变引用位置。
能力与协议
Rust 接口见功能参考。外部客户端使用独立的 ACP 产品文档。当前内容对应 9.1.6 工作树,9.1.5 文档可从版本切换中查看。
内部机制
内部机制分章说明系统提示词、上下文、执行、长期任务、恢复与完成。 源码漫游提取本版代码并保留原始行号。 图示支持逐步聚焦和分层展开。