plan playbook 同步:澄清指纹传 null,别再从 observation 抄
上一提交把两个指纹改成 Runtime 从原 delivery 补齐,但 plan 根 Supervisor 的 playbook 第 4 步还写着「并提交 observation 给出的 questionsSha256、 answersSha256」——正是这条指令让它去手抄 128 个十六进制字符。改成明确 传 null 并说明由 Runtime 补齐,加一条断言钉住。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
1. 本 run 第一轮只调用一次 `agent.goal_contract` 冻结目标合同:outcome 概括用户原话意图,`preferences` 必须传空数组,`acceptanceNodes` 提交 Runtime 指定的固定单节点。这一轮不做任何其它调用。
|
||||
2. 冻结后立即用一次 `agent.delegate` 把任务委派给 `project-planning`,`expectedArtifacts` 写 `game/fast_gdd.md`,`repairOfDelegationId`、`runId`、`continuationOfDelegationId`、`questionsSha256`、`answersSha256` 全传 null。已有委派尚未收束时不要重复委派。
|
||||
3. 等待子 Agent 期间不得调用 `respond_to_user`。Runtime 会通过 delegate 完成屏障保持同一父 run,回执到达后再继续。
|
||||
4. 子 Agent 以问询信封退出时,决策卡由 Runtime 直接按信封原文呈现给用户,**不需要你调用任何工具**——你根本不会在那一刻被恢复。用户答完之后你才会拿到答案,届时为该原 delivery 创建且仅创建一次 continuation 委派,`continuationOfDelegationId` 与 `repairOfDelegationId` 都指向该原 delivery,并提交 observation 给出的 `questionsSha256`、`answersSha256`。子 Agent 在 continuation 里**再次**以信封退出时,对那条新 delivery 重复同一动作:「仅创建一次」约束的是单条 delivery,不是整条链,澄清预算未用尽时这个循环继续。Runtime 会在委派 task 末尾写明已用轮次与上限,不需要你自己数,也不要替它宣布预算已尽。
|
||||
4. 子 Agent 以问询信封退出时,决策卡由 Runtime 直接按信封原文呈现给用户,**不需要你调用任何工具**——你根本不会在那一刻被恢复。用户答完之后你才会拿到答案,届时为该原 delivery 创建且仅创建一次 continuation 委派,`continuationOfDelegationId` 与 `repairOfDelegationId` 都指向该原 delivery。`questionsSha256` 与 `answersSha256` 传 null——Runtime 会从该原 delivery 补齐权威指纹,你不要自己抄。子 Agent 在 continuation 里**再次**以信封退出时,对那条新 delivery 重复同一动作:「仅创建一次」约束的是单条 delivery,不是整条链,澄清预算未用尽时这个循环继续。Runtime 会在委派 task 末尾写明已用轮次与上限,不需要你自己数,也不要替它宣布预算已尽。
|
||||
5. 回执 contractStatus=evidence-ready 且 GDD 已提交时,用 `file.read` 从第 1 行读到 `game/fast_gdd.md` 末尾取证,每次都传 `maxLines: 240`(上限),尽量一页读完;确实需要第二页时从上一页的下一行开始,不要重复读同一段。每次 `file.read` 的 observation 末尾都带着 `sourceAgentId` / `sourceRunId` / `sourceActionId` 三个字段,把它们原样抄成 evidence 的 `{agentId, runId, actionId}`,用一次 `agent.acceptance_update` 一并提交即可——evidence 是按这三个字段整体查回执的,回忆错任何一个都会被判成"缺少持久动作回执"。不要为了取这些字段再去查动作历史。取证完成前审批卡不会出现。
|
||||
6. 用户在审批卡上选择修改或退回时,先用 `agent.run_status` 按原 delegationId 取回已认领的权威委派合同,把其中的 acceptanceCriteria 与 expectedArtifacts 逐字照抄进返工委派(`runId` 传 null),再把用户原话完整附在 task 里;同一原委派只能返工一次。用户通过后只做一句简短收尾。
|
||||
|
||||
|
||||
@@ -1568,6 +1568,23 @@ mod tests {
|
||||
assert!(!plan_common.contains("才能调用 respond_to_user 收束"));
|
||||
}
|
||||
|
||||
/// 澄清 continuation 的两个指纹由 Runtime 从原 delivery 补齐,playbook 不得再
|
||||
/// 要求 Supervisor 从 observation 里抄过来。实测正是那条指令让它手抄 128 个
|
||||
/// 十六进制字符,抄错后工具计划格式修复两次仍失败,整个 plan 根 run 判 failed,
|
||||
/// 用户已提交的澄清回答全部作废。
|
||||
#[test]
|
||||
fn plan_supervisor_playbook_leaves_clarification_fingerprints_to_the_runtime() {
|
||||
let plan = required_runtime_prompt_section("planSupervisorPlaybook");
|
||||
assert!(
|
||||
plan.contains("Runtime 会从该原 delivery 补齐权威指纹"),
|
||||
"playbook 必须写明指纹由 Runtime 补齐:{plan}"
|
||||
);
|
||||
assert!(
|
||||
!plan.contains("提交 observation 给出的"),
|
||||
"playbook 仍在要求 Supervisor 手抄澄清指纹:{plan}"
|
||||
);
|
||||
}
|
||||
|
||||
/// 「不得替用户预先裁定产品取舍」这段同时写进两条 lane 的 playbook。
|
||||
///
|
||||
/// 执行层只单向拦住 plan 根(`立项策划根 Run 只能委派 project-planning`),
|
||||
|
||||
Reference in New Issue
Block a user