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

输入关键词开始搜索。

    文档目录

    ASTER CODE / 02

    任务执行流程

    以一次编码任务为例,看模型如何调用工具、处理结果并完成验证。

    架构图FIG. 02 · 执行循环模型根据工具结果决定下一步。工具调用先经过权限检查;返回结果前,还需要检查完成条件并等待资源清理。
    一次任务的执行过程宿主提交任务后,Core 在模型与受控工具间循环,记录执行结果,完成检查并等待资源清理后返回。opt[请求工具调用]loop[需要继续执行时]提交任务与工作区组装上下文并请求推理工具调用或结束意图检查权限 / 必要时等待确认获准后执行执行结果与修改回执写入事实日志检查完成条件并等待资源清理返回结果或未完成原因宿主Core模型受控工具宿主Core模型受控工具

    01 建立工作区会话

    开始任务前,Agent 加载 ACL 配置,AgentSession 确定本次会话使用的工作区、模型、工具和权限。终端和桌面通过 ACP 调用 Core;Rust 应用可以直接使用 send 或 stream。

    宿主提供的可信配置与项目目录中自动发现的配置,拥有不同的权限。例如,仓库里的配置文件不能自行授权执行命令,也不能指定什么检查足以证明任务完成。

    02 准备模型上下文

    每次调用模型前,运行时收集系统指令、项目规则、对话历史和工具目录。这些内容经排序、去重后,再按上下文预算选择发送部分。预算限制发送给模型的内容量。历史过长时,可以用摘要替换较早的消息。

    工作区检索用于查找相关代码,Skills 提供任务所需的操作说明,持久记忆保存可跨会话使用的信息。是否使用这些来源,取决于宿主接入了哪些能力。

    03 检查工具调用权限

    模型返回工具名称和参数后,运行时先检查权限,再决定执行、拒绝或请求用户确认。获准的调用由工具执行器运行,并遵守当前沙箱配置。执行结果、拒绝原因和错误都会返回模型。

    04 执行并记录结果

    工具结果写入事实日志,文件修改和检查结果也会被记录。模型看到这些结果后,再决定继续查找、修改还是运行测试。

    任务也可以交给子代理。子代理使用独立会话,仍要经过权限和完成检查。子代理修改共享工作区时,父任务必须取得并处理执行结果。尚未确认结果的后台任务会阻止父任务成功结束。

    05 检查完成条件

    模型准备给出最终答复时,CompletionGate 检查修改文件、对应检查、子任务和未决操作。常见的结束状态如下:

    完成状态的含义
    状态何时出现含义
    Narrative没有工作区修改,且无其他未解决事项本轮可以用最终答复结束
    Verified检查通过,报告对应当前修改声明的检查已通过
    Waived宿主或用户明确接受尚未验证的本次修改允许结束,但不代表验证通过
    Incomplete缺少检查结果、操作结果不明或子任务尚未处理完任务还不能算完成

    effect_digest 是本次修改的摘要,用来确认验证报告对应哪一版修改。先测试版本 A,再改出版本 B,原报告就不能证明 B 也通过了测试。

    版本 A
    修改摘要 A测试通过,报告对应 A
    Verified
    ↓ 再次修改,产生新的 effect_digest
    版本 B
    修改摘要 B需要重新运行相应检查
    待验证
    FIG. 03 · A 的测试结果不能证明 B 也通过了测试。

    缺少检查结果时,运行会根据当前状态决定继续执行还是返回未完成。命令退出码为 0 只是报告的一部分,还需要知道它检查了哪些修改。

    06 收尾与恢复

    完成检查通过后,运行还要等待资源清理结束,例如关闭监听器、释放租约。清理失败、超时,或用户在此期间取消任务,都不能返回成功。

    会话中断后,可以从事实日志重建执行状态。已经发出但结果不明的操作需要先核实,再决定是否重试。长期目标启动下一轮执行前,还要检查宿主设定的期限、权限和进展要求。

    实现依据