ASTER CODE / Meta Harness
任务分轮执行
保存工作要求、目标、计划和等待条件,并由宿主限制自动续跑。
工作策略保存什么
WorkPolicyV1 保存宿主选择的一段工作要求,带有 ID 和版本号。它在会话的事实日志中记录,并进入原有的 guidelines 提示槽。
use aster_core::{SessionOptions, WorkPolicyV1};
let policy = WorkPolicyV1::new(
"project-engineering",
1,
"先读调用方,修改后运行项目已有的检查。",
)?;
let options = SessionOptions::new().with_work_policy(policy);
策略 ID 最多 128 个 UTF-8 字节,版本号必须大于 0,说明文本不能为空且最多 4096 字节。它提供工作要求,不授予工具权限,也不生成验证通过的结果。
策略跟随原会话保存。重新打开已绑定会话时,不能悄悄换成另一份策略;没有策略的旧会话也不能在恢复时直接补绑。需要不同工作要求时,应按接口规则建立新会话。
长期目标与一次运行有什么区别
一个目标可以分成计划中的多个步骤,再分多次 Run 执行。文档和接口把这样的单次执行称为 slice。每次 slice 仍经过原有工具权限、完成检查和资源收尾。
一次运行通过验证,不代表整个目标已经达成。所有目标步骤都被接受、没有打开的等待条件,并且所有 slice 都处理完后,目标才可以完成。
目标接口的顺序
| 接口 | 作用 | 是否执行模型 |
|---|---|---|
| apply_goal_definition | 创建或修订目标定义 | 不会仅因修改定义就开始运行 |
| apply_goal_plan | 提出计划,再接受对应的计划版本 | 接受计划本身不启动运行 |
| apply_goal_wait | 声明或观察提问、确认、资料版本或 UTC 到期等待 | 按等待状态决定能否继续 |
| preview_goal_tick | 查看此刻是否具备推进条件 | 预览不授予执行权 |
| tick_goal / stream_goal_tick | 重新检查并最多接纳一个原有运行 | 只有判断为 Advance 时推进 |
| control_goal | 暂停、恢复或取消,必要时先停止活动运行 | 不把暂停和恢复当作完成 |
| reconcile_goal_slices | 核对已失去执行者的 slice | 不直接重放原操作 |
目标命令携带会话、工作区、策略摘要以及预期的目标与计划版本。旧版本命令、其他会话的引用或尚未处理完的 slice 会被拒绝。修改计划时需要处理并发版本,不能只靠一段自然语言覆盖旧计划。
等待与下一轮
推进结果可能是 Advance、Wait、NeedsInput、Paused、BudgetExhausted、Reconcile 或 Complete。只有 Advance 表示宿主可以继续提交这一轮执行。
确认和提问需要对应回答,UTC 到期等待可以由时钟满足。两者不能互换。宿主可以根据结果停下来显示问题、等待资料更新,或让用户决定下一步。
每次 tick 最多接纳一个 Run。持续推进需要宿主再次调用接口,或使用产品已有的有界推进流程。组件本身不会另开后台调度器。
自动续跑的限制
Core/SDK 未设置续跑策略时不自动续跑。ACP 产品在缺少可信声明时提供有限默认值。普通模式最多接纳 8 个 slice,连续 2 轮没有实际修改就停止,期限为主机初始化后的 24 小时。
--unattended 的默认上限不同:最多 1000 个 slice,连续 3 轮没有实际修改时停止,并受该次运行的截止时间约束。可信 ACL 的显式设置优先于这些默认值。
“进展”来自实际修改的完整回执。只读工具成功、重复写入相同内容或模型声称完成,不会重新刷新这个计数。暂停和恢复也不会清空已有历史。
goal_control 声明只接受宿主可信配置或用户配置,工作区文件不能提高它的权限或上限。这个块包含 automatic_enabled、max_slices、max_no_progress_slices 和 deadline_unix_ms,四项都必须提供;后三项使用十进制字符串,期限是绝对 UTC 毫秒时间戳。
请按当前时钟选择有限期限,不要复制文档中的旧时间戳。配置格式和允许范围见下方宿主控制手册。
ACP 中怎样使用
新会话默认选择产品的 engineering-v1 工作策略,Core/SDK 默认则仍是可选。ACP 的 _meta.asterEngineering.policy 可以选择 engineering-v1 或 none,未知值会拒绝。
显式 /goal <目标> 用于创建并唤醒目标;普通消息不会自行变成长期目标。产品还提供 /goal status、pause、resume 和 clear。取消或完成的目标保留历史,切换到另一项工作时应建立新会话。