Aster文档
搜索 Aster 文档
ESC
产品
版本

输入关键词开始搜索。

    文档目录

    ASTER CODE / Meta Harness

    Meta Harness 使用指南

    查找组件组合、宿主扩展、上下文、目录加载、恢复和验证所用的接口。

    Meta Harness 是 Aster Code 的执行组合层。宿主用它改变智能体的工作方式,无需重写整个执行循环。

    Meta Harness 组合执行组件。Core 负责权限判定、事实记录、完成检查和资源收尾。

    架构图FIG. 05 · Meta Harness 的接入方式配方与宿主注册表一起装配组件;完整 Assembler 提供组件树时优先。选中的树共用原有会话、事实日志和 Core 检查。
    把可组合部分与固定约束分开软件职责按层排列,不表示进程或部署位置。Core 固定约束权限 / 完成 / 资源同一份事实日志状态与原始回执系统与工具组件system + tools预算与压缩组件budget + compact模型调度组件infer
    1. 01先看底座

      Core 维持权限、完成门禁和资源寿命。替换组件仍受这些约束。

      harness_loop.rs L1591 ↗
    2. 02再看装配

      默认配方包含五个组件。列表描述装配顺序。

      meta_harness.rs L124 ↗
    3. 03最后看运行依据

      组件从同一份日志读取状态。装配顺序不等于调用顺序。

      fact_control.rs L126 ↗

    下载 SVG ↗

    职责边界

    宿主可以选择默认配方、挂载已注册的 Rust 组件,或提供完整组件树。Meta Harness 把这些选择装配进同一个会话。事实日志、权限判定、完成检查和资源收尾仍由 Core 保留。

    架构图Meta Harness 是什么Meta Harness 装配可替换的执行组件。会话与事实日志保持不变,Core 的固定约束始终生效。
    Meta Harness 是什么宿主用配方、注册组件或完整组件树描述执行方式。Meta Harness 装配组件,同一个会话按事实日志运行,Core 的固定约束始终生效。始终生效默认配方组件与参数宿主组件已注册的 host 组件完整组件树HostHarnessAssemblerMeta Harness装配执行组件同一个 AgentSession按选定方式执行事实日志状态与原始回执Core 固定约束权限 / 完成 / 资源

    组合执行组件的原因

    没有统一的组合边界时,宿主通常要修改执行程序。每个执行变体还要重新核对权限、恢复和完成检查。Meta Harness 分开可变策略与固定约束。不同执行方式因而在相同边界下运行,并留下可比较的事实。

    架构图为什么需要 Meta Harness直接修改执行程序需要重新核对整套约束。组合组件可以保留固定运行边界,只比较执行策略的差异。
    为什么需要 Meta Harness改变执行方式时,直接修改执行程序还要重新核对整套运行约束。Meta Harness 让宿主只替换需要比较的组件,并复用 Core 的固定约束和事实记录。要改变执行方式提示、工具流程或调度直接修改执行程序每个变体单独维护重新核对整套约束权限 / 恢复 / 完成用 Meta Harness 组合只替换目标组件复用 Core 固定约束运行边界保持一致使用同一事实日志比较真实执行结果

    Meta Harness 不会自动提高模型能力。它提供可替换的执行过程和可核对的运行依据。

    运行循环

    架构图Meta Harness 的工作原理组件从事实重建状态,调度器选择动作,Core 检查动作,结果再写回事实日志。
    Meta Harness 怎样推进一次运行组件从事实日志重建状态。调度器选择下一动作,Core 按动作检查权限或完成条件。获准的动作产生新事实,再进入下一轮。下一轮① 读取事实日志已有事件与回执② 重建组件状态initial / step / output③ infer 选择动作模型 / 工具 / 确认 / 压缩④ Core 按动作检查工具权限 / 完成门禁⑤ 执行获准动作写入新事实满足完成条件等待资源收尾后结束

    组件用 initial / step / output 根据事实重建状态和视图。infer 再选择下一动作。配方中的组件顺序不是运行时调用顺序。

    工具调用先取得权限决定。结束运行前还要检查完成条件并等待资源收尾。动作结果写回事实日志,再进入下一轮。结果未知的外部操作仍需核实,不能靠日志重放盲目重试。

    组件内部机制

    打开 Meta Harness,查看内部如何协作可钻取图谱 · 非实时运行数据
    实现机制 · 非实时运行数据

    连线表示共享事实与执行协作,不表示固定串行调用。光点是关系方向示意,不是实时请求。

    会话组件候选证据门禁失败光点 · 关系方向示意
    实现机制 · 非实时运行数据同一事实日志

    五个默认组件读取同一事实日志,输出视图与动作。运行时由调度器选择下一步。

    查看来源依据 ↗

    装配顺序与运行时调用顺序分别理解。

    演进历程9 个阶段

    Core · 组件协作

    实现机制 · 非实时运行数据

    案例与证据边界

    连线表示共享事实与执行协作,不表示固定串行调用。光点是关系方向示意,不是实时请求。

    原始依据 ↗
    同一事实日志

    五个默认组件读取同一事实日志,输出视图与动作。运行时由调度器选择下一步。

    装配顺序与运行时调用顺序分别理解。

    system

    提供系统指令列表。候选可以提出调整这个槽,但权限提示与权限决定仍由 Core 管理。

    默认组件

    tools

    向视图提供工具目录。工具实现通过原有会话接口注册;目录不是权限凭证。

    默认组件

    budget

    组件显示工具调用预算,实际限制由 HarnessConfig 与调度器执行。删掉 budget 展示槽不等于移除上限。

    默认组件 + 调度器限制

    compact

    提供压缩阈值视图,由调度器触发压缩。当前 compact_after_chars 按 UTF-8 字节累计;token 压缩依赖适配器上报。

    默认组件 + 调度器动作

    infer

    根据事实安排模型调用、工具执行、确认或压缩。装配顺序不是固定调用顺序;运行时根据日志状态和动作 key 选择下一步。

    默认调度器

    host:<id>

    HostHarnessRegistry 只挂载宿主已注册的 Rust 组件。更大调整可以由 HostHarnessAssembler 提供完整组件树。

    Rust 宿主注册

    权限判定

    工具执行前必须有权限决定。系统提示、Hook、候选配方和宿主组件都不能代替授权。

    Core 不可关闭

    完成门禁

    修改后的完成状态需要与当前修改摘要对应的验证证据或宿主明确豁免,并等待资源收尾。

    Core 不可关闭

    节点说明与全部来源

    事实日志

    Core 提供:组件读取同一事实日志重建状态。日志驱动下一步与恢复;未决的外部副作用仍需核实,不能靠重放盲目重试。

    • 动作 key:识别同一运行中的动作,保留因果和重放身份。
    • Run ID:将结果、取消和恢复绑定到准确的原运行。
    • 事实重建:step / output 可再次执行,不能在其中直接发起外部副作用。
    • 未决副作用:结果未知的外部操作先核实,不当成成功或自动重复。
    节点来源 ↗

    system

    默认组件:提供系统指令列表。候选可以提出调整这个槽,但权限提示与权限决定仍由 Core 管理。

    • initial:建立组件初始状态。
    • step:读取一条事实,重建状态。
    • output:输出指令视图及当前可执行动作;不直接做网络或文件副作用。
    节点来源 ↗

    tools

    默认组件:向视图提供工具目录。工具实现通过原有会话接口注册;目录不是权限凭证。

    • 工具目录:列出模型可选择的工具说明。
    • 执行器:由既有程序、动态工具或 MCP 接口承接实际调用。
    • 权限:每次执行仍经过 Core 权限检查。
    节点来源 ↗

    budget

    默认组件 + 调度器限制:组件显示工具调用预算,实际限制由 HarnessConfig 与调度器执行。删掉 budget 展示槽不等于移除上限。

    • 工具次数:tool_budget 控制工具调用次数,不是费用或总运行时间。
    • 状态转换:step_limit 与工具调用次数是不同计数。
    • 配置继承:None 继承基础配置;显式零额度与不存在上限不同。
    节点来源 ↗

    compact

    默认组件 + 调度器动作:提供压缩阈值视图,由调度器触发压缩。当前 compact_after_chars 按 UTF-8 字节累计;token 压缩依赖适配器上报。

    • 长度阈值:名称虽然含 chars,当前实现使用 Rust 字符串字节长度。
    • token 观测:token 压缩需要真实输入 token 数据。
    • 限制仍在:删除 compact 槽不能据此认定自动压缩已关闭。
    节点来源 ↗

    infer

    默认调度器:根据事实安排模型调用、工具执行、确认或压缩。装配顺序不是固定调用顺序;运行时根据日志状态和动作 key 选择下一步。

    • 读状态:依据当前事实选择可执行转换。
    • 动作 key:保留准确动作身份,支持恢复与去重判断。
    • 调度:读取 HarnessConfig,不绕开权限和完成门禁。
    节点来源 ↗

    host:<id>

    Rust 宿主注册:HostHarnessRegistry 只挂载宿主已注册的 Rust 组件。更大调整可以由 HostHarnessAssembler 提供完整组件树。

    • 注册表:未知 ID 或缺少注册表时拒绝装配。
    • 完整组件树:Assembler 提供树;仍要核对传入的执行限制。
    • 受控接纳:模型写出 host:<id> 不会下载或装载任意代码。
    节点来源 ↗

    权限判定

    Core 不可关闭:工具执行前必须有权限决定。系统提示、Hook、候选配方和宿主组件都不能代替授权。

    • 拒绝:拒绝必须实际阻止执行。
    • 询问:绑定准确调用与回答,超时不能变成批准。
    • 固定边界:候选和 Assembler 不能清除 permission_overlay。
    节点来源 ↗

    完成门禁

    Core 不可关闭:修改后的完成状态需要与当前修改摘要对应的验证证据或宿主明确豁免,并等待资源收尾。

    • 当前摘要:验证报告与本次 effect_digest 对齐。
    • 明确豁免:宿主显式记录豁免;不是模型自称通过。
    • 收尾完成:Run 资源仍未关闭时,不能据此报告成功。
    节点来源 ↗

    图中五个默认组件展示状态、事实处理和输出职责。事实日志节点说明动作身份与重放边界。权限判定和完成门禁展示候选不能取消的约束。展开节点后,外层图谱保留当前组件的位置。

    连线表示组件共享事实并参与同一次受控执行,不表示固定的串行调用。装配顺序与运行时动作选择是两个问题。host:<id> 代表宿主已有的注册入口。该图不加载新组件或执行代码。

    相关案例:RSI 的执行程序演进。

    接口索引

    具体需求与使用入口
    需求接口文档
    调整提示、调用次数和压缩阈值HarnessComposeOptions + with_harness组件、预算与压缩
    挂载自己的执行组件HostHarnessRegistry + host:<id>自定义组件与调度
    替换整棵组件树HostHarnessAssembler + admit_component_tree自定义组件与调度
    接入项目资料、Skills、MCP 或生命周期钩子SessionOptions 的上下文、工具和 Hook 接口上下文、工具与 Hooks
    从一个目录加载指令、脚本和定时提示DirectoryProjectionAgent 目录与定时提示
    保存会话,或从检查点继续执行save / resume_session_async / resume_run保存、中断与恢复
    把宿主检查结果交给完成检查CompletionAttestor验证报告与资源清理
    让监听器或租约跨工具轮次使用register_run_capability_effect验证报告与资源清理
    给长期任务绑定工作要求、计划和等待条件WorkPolicyV1 + goal 接口工作策略与长期目标

    接入方式

    示例接收一个能正常发送请求的 Rust Agent。模型配置与异步运行环境见宿主接入。示例不会另建模型连接。组件示例还使用工作区内的 aster-effect,无需为这些接口启用 advanced-harness。

    多数嵌入场景使用 SessionOptions::with_harness 选择默认组件并调整参数。补充一个组件时使用 HostHarnessRegistry。需要完整组件树时使用 HostHarnessAssembler。

    自定义组件和完整组件树是 Rust 宿主接口。ACP 客户端不能提交任意 Rust 组件。当前入口只接受三套预先列出的组合,具体列表见“组件、预算与压缩”。

    能力协作

    一个每日检查项目的 Agent 可以从目录读取指令和 Skills。宿主定时提交任务,Agent 使用 MCP 获取外部信息,并在结束前提交测试报告。中断后可以从保存的会话或检查点恢复。

    目录负责组织文件,宿主负责时钟与外部服务,Meta Harness 负责装配执行组件。目录中的定时声明不会自行启动后台服务。

    上下文、工具、持久记忆和目标控制通过会话接入。它们不是五个默认组件之外随意添加的组件名称,也不都需要 advanced-harness。构建开关与会话配置需要分别核对。

    组件不能改掉的规则

    每次工具调用仍要检查权限;修改后的完成状态仍要对应验证结果或明确豁免。组件名称、系统提示和 Hook 的返回值都不能代替这两项检查。

    事实日志可以帮助恢复执行状态,但结果不明的外部操作仍需核实。一次运行的完成也不等于长期目标完成;目标需要另外检查所有步骤和等待条件。

    专题文档

    实现依据