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

输入关键词开始搜索。

    文档目录

    ASTER CODE / 构建终端智能体

    07 · Harness 配置

    在已有会话上调整工具预算、模型尝试和压缩,再决定是否需要自定义组件。

    根据运行症状选择配置

    应用已经能显示工具、确认、验证和恢复。先记录任务的模型推理次数、工具调用次数和上下文压缩情况,再决定配置。无需为了扩展而先写完整组件树。

    本练习把每次任务的工具调用限制为 12 次,把状态转换限制为 96 次,并要求修改后运行项目检查。配方接入已有的 SessionOptions,保留前几章的权限和存储。

    建立一份配方

    use aster_core::HarnessComposeOptions;
    
    fn coding_harness() -> anyhow::Result<HarnessComposeOptions> {
        let mut harness = HarnessComposeOptions::compose(
            ["system", "tools", "budget", "compact", "infer"]
                .map(str::to_owned).to_vec(),
            Some(12),
            Some(120_000),
            vec!["修改前阅读调用方;修改后运行项目已有检查并说明结果。".into()],
        )?;
        harness.step_limit = Some(96);
        harness.model_attempts = Some(2);
        Ok(harness)
    }
    

    在运行层的 options 上调用 with_harness(coding_harness()?)。system 非空会替换这个配方槽的列表;它不会去掉 Core 加入的权限要求,也不自动替换独立的工作策略。

    三种计数的区别

    预算的验收方法
    配置限制对象观察方法
    tool_budget = 12工具调用次数连续请求工具,检查停止原因及最后一次实际执行
    step_limit = 96状态转换次数模型请求、压缩和确认也可能消耗转换
    model_attempts = 2Harness 对一次推理的尝试次数包括第一次;供应商 HTTP 重试另有策略

    tool_budget: None 表示继承,不表示取消限制。只删除列表里的 budget 或 compact,也不能认定调度器已经不限次数或关闭压缩。

    压缩后的保留内容

    当前 compact_after_chars 按 UTF-8 字节累计。中文文本不能按字数直接估算。需要 token 压缩时,确认模型适配器会报告输入 token 数。只设置阈值而没有使用量数据,不能保证触发。

    临时日志和完整工具输出持续进入系统提示会挤占预算。长期要求放在提示槽或工作策略,项目资料使用上下文来源,执行记录留在原有日志。压缩后的摘要不能替代修改与验证记录。

    增加组件的条件

    补充固定系统说明时,优先使用提示槽。接入检索来源时,使用 ContextProvider。只有需要根据事实日志维护状态并提供动作时,才实现 HostHarnessRegistry 的 host: 组件。

    需要自行搭建完整组件树时再使用 Assembler。组件树优先,但会话可能已经把配方的 step_limit、model_attempts 写入传入配置。动作 key 与恢复记录有关。更换 key 后先用新会话测试,避免旧操作被当作新动作。

    验收

    用同一条任务对比修改前后的调用数和停止原因。把工具预算设成 0,检查工具没有执行。再恢复正常预算,确认读取、批准、修改、验证和保存仍走原来的路径。不要只看模型是否遵守了提示文字。

    相关文档

    可编译的接入函数

    这些 Rust 函数也收录在参考工程的 chapters.rs。它们随 cargo check --locked -p tutorial-agent --all-targets 检查。调用时仍需上述配置与宿主对象。编译这些函数不表示所有外部后端都已验证。