任务 ID: task-retry-opt  |  文件: task.md  |  最后修改: 2026-02-25 02:09:51

Task task-retry-opt — log-to-channel.sh v6 retry 参数简化

文件路径

原始需求

retry 事件签名简化:删除冗余的 <next_role> 参数,改为从 <chain> 首项派生,与 start 事件保持一致。

改动对比

v5(旧):

retry "<task_name>" "<chain>" "<next_role>" "<n>" "<task_id>"
NEXT_NAME=$(label_to_name "$NEXT_ROLE")

v6(新):

retry "<task_name>" "<chain>" "<n>" "<task_id>"
NEXT_NAME=$(label_to_name "$(parse_first "$CHAIN")")

执行链

爱衣实现 → Ai.Rev 审查+测试 → 爱衣质检


各 Agent 职责


Ai.Rev(session key: agent:reviewer:main

任务:审查 /root/.openclaw/workspace/tasks/task-retry-opt/log-to-channel.v6.sh,并执行完整测试覆盖所有通知类型。

开始时:
1. 发工作日志:
bash /root/.openclaw/workspace/scripts/log-to-channel.sh reviewer receive "日志脚本v6" task-retry-opt

审查要点:
- retry 改动是否正确(参数数量、内部逻辑、usage 提示)?
- parse_first + label_to_name 是否与 start 实现一致?
- 其他事件是否被误改?

完整测试(必须覆盖所有事件类型):

SCRIPT=/root/.openclaw/workspace/tasks/task-retry-opt/log-to-channel.v6.sh
TEST_ID=test-v6-$(date +%s)

# 1. start
bash $SCRIPT main start "v6测���任务" "Ai.Dev 💻 → Ai.Rev 📋 → Ai" $TEST_ID

# 2. receive
bash $SCRIPT coder receive "v6测试任务" $TEST_ID

# 3. handoff
bash $SCRIPT coder handoff "v6测试任务" reviewer $TEST_ID

# 4. receive(第二个agent)
bash $SCRIPT reviewer receive "v6测试任务" $TEST_ID

# 5. handoff → main
bash $SCRIPT reviewer handoff "v6测试任务" main $TEST_ID

# 6. retry(新签名,无 next_role 参数)
bash $SCRIPT main retry "v6测试任务" "Ai.Dev 💻 → Ai.Rev 📋 → Ai" 1 $TEST_ID

# 7. receive(retry后重新开始)
bash $SCRIPT coder receive "v6测试任务" $TEST_ID

# 8. handoff
bash $SCRIPT coder handoff "v6测试任务" reviewer $TEST_ID

# 9. done(最终完成,触发删旧重发)
bash $SCRIPT main done "v6测试任务" $TEST_ID

验证要点:
- start:@mention 显示 Ai.Dev 💻(来自 parse_first + label_to_name)
- retry(step 6):LINE3 @mention 显示 Ai.Dev 💻(来自新的 parse_first 逻辑)
- 中间事件行:始终插入 session 链接上方
- done:旧消息删除,新消息出现在频道底部

另外单独测试 fail 路径(独立 test_id):

FAIL_ID=test-v6-fail-$(date +%s)
bash $SCRIPT main start "v6-fail测试" "Ai.Dev 💻 → Ai" $FAIL_ID
bash $SCRIPT coder receive "v6-fail测试" $FAIL_ID
bash $SCRIPT main retry "v6-fail测试" "Ai.Dev 💻 → Ai" 1 $FAIL_ID
bash $SCRIPT main fail "v6-fail测试" $FAIL_ID

完成后:
1. 将审查意见和测试结果写入 /root/.openclaw/workspace/tasks/task-retry-opt/review.md
2. 将执行日志追加到 session.md
3. 发工作日志:
bash /root/.openclaw/workspace/scripts/log-to-channel.sh reviewer handoff "日志脚本v6" main task-retry-opt
4. sessions_send 通知爱衣(agent:main:main必须传 timeoutSeconds=0,禁止省略):
task_id=task-retry-opt task=/root/.openclaw/workspace/tasks/task-retry-opt/task.md


⚠️ 爱衣质检 SOP(收到最终通知后执行)

Step 1:评估工作区大小

du -sb /root/.openclaw/workspace/tasks/task-retry-opt/

Step 2:读取 session.md 和 review.md

读 session.md 全文,再读 review.md。

Step 3:质检要点

Step 4:输出结论

审查通过
1. 将 log-to-channel.v6.sh 覆盖到原始位置:
bash cp /root/.openclaw/workspace/tasks/task-retry-opt/log-to-channel.v6.sh \ /root/.openclaw/workspace/scripts/log-to-channel.sh
2. 发工作日志:
bash /root/.openclaw/workspace/scripts/log-to-channel.sh main done "日志脚本v6" task-retry-opt
3. 释放锁:
bash rmdir /root/.openclaw/workspace/tasks/task-retry-opt/.lock
4. 用 message 工具通知主人(telegram, 92763607)

审查有修改建议
1. 发工作日志(done)
2. 用 message 工具通知主人:附审查建议,询问是否调整

不通过(rejectCount == 0)
1. sessions_send 给 reviewer 重新审查
2. 在 session.md 末尾追加 rejectCount=1
3. 发工作日志:
bash /root/.openclaw/workspace/scripts/log-to-channel.sh main retry "日志脚本v6" "Ai.Rev 📋 → Ai" 1 task-retry-opt

rejectCount >= 1
1. 发工作日志:
bash /root/.openclaw/workspace/scripts/log-to-channel.sh main fail "日志脚本v6" task-retry-opt
2. 释放锁,message 主人请裁决

超限处理(工作区 > 80KB)

  1. 仅读 task.md,读 session.md 末尾 200 行
  2. message 主人:任务已完成,建议人工审计