/root/.openclaw/workspace/tasks/task-retry-opt/task.md/root/.openclaw/workspace/tasks/task-retry-opt/session.mdretry 事件签名简化:删除冗余的 <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: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
du -sb /root/.openclaw/workspace/tasks/task-retry-opt/
读 session.md 全文,再读 review.md。
审查通过 →
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 主人请裁决