ASTER CODE / 01
Aster Harness 概述
Aster Code 负责 Aster 的模型调用、工具执行、会话记录和完成检查。
Harness 的职责
假设 Aster 需要修复一个失败的测试。模型先查找代码,再修改文件并运行测试,然后根据结果决定是否继续。Harness 组织这些步骤:准备模型输入、执行工具调用、检查权限、记录结果,并判断任务能否结束。
在 Aster 中,这部分由 Aster Code 实现。它的核心库是 aster-core,下文简称 Core。终端和桌面通过 ACP 协议与 aster-acp 进程通信,由该进程调用 Core。Rust 应用也可以直接嵌入 Core。使用这套库的应用称为“宿主”。
Core 提供 Anthropic、OpenAI、智谱及 OpenAI 兼容接口的模型适配器。
执行工具
检查模型请求的调用是否获准,再执行工具。
保存记录
记录执行结果,供下一轮使用或中断后恢复。
检查完成条件
检查修改是否通过验证,或已获准免除验证。
事实日志如何支持恢复
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 工程,依次实现只读会话、确认、验证、恢复和长期任务。
实现依据
本文根据 Aster 仓库中的 aster-core 9.1.5 编写,代码核对日期为 2026-10-26。