任务 ID: task-kizuna-fix-001  |  文件: task.md  |  最后修改: 2026-03-03 22:54:05

Task task-kizuna-fix-001 — Kizuna 核心问题修复

文件路径

原始需求

修复 Kizuna Phase 1 的以下核心问题,使其能完成端到端任务流转:

P10:Hub 缺少任务分发机制——start_task 只标记 pending,不通知 Node Agent

P11:Node Agent 调用 openclaw agent 缺少 --session-id 参数,导致命令挂起

P12(设计缺失):节点注册时 agents 字段为 List[str],应改为 Dict[str, str](agent名 → session key),注册示例:

{
  "node_id": "aichan",
  "url": "http://127.0.0.1:8892",
  "agents": {
    "coder": "agent:coder:main",
    "reviewer": "agent:reviewer:main"
  }
}

Hub 分发时将 session key 带到 Node Agent 请求中。

P13(设计违规)kizuna-ctl CLI 目前无法让 Coordinator 注入任务内容,Coordinator 只能通过 CLI 操作,不能直接写 /srv/kizuna/tasks/。需在 Hub + CLI 实现 create-task 接口,接收 task_id + title + content(Markdown),由 Kizuna 写入 task.md。


执行链

coder → reviewer → 爱衣质检


各 Agent 职责


Coder(session key: agent:coder:main

目标代码库:/srv/kizuna/(已 clone 到 aichan,本机也有 clone 路径待确认

⚠️ 作业须知
- SSH 到 aichan:ssh -p 31415 aichan@15.235.184.76,操作用 sudo su - root -c '...'
- Kizuna 源码在 aichan:/srv/kizuna/
- 如需在本机也操作,检查是否有本地 clone;否则直接 SSH 改

任务

  1. 修复 P12:修改 Hub main.pyRegisterNodeRequest
  2. agents: List[str]agents: Dict[str, str](兼容旧格式:若收到 List 则按 agent:name:main 自动推断)
  3. nodes.json 存储完整 mapping

  4. 修复 P10:在 Hub main.py 中实现 dispatch_subtask(task_id, subtask_id, node_id, session_key)

  5. start_task 标记 pending 后立即调用分发
  6. submit_subtask(某 subtask 完成后触发下一个)时也调用分发
  7. 分发逻辑:从 nodes.json 找到 node URL → HTTP POST /execute(Node Agent 接口)
  8. 请求体含:action, task_id, subtask_id, agent, session_key, message, work_dir

  9. 修复 P11:修改 kizuna-node/index.jscallOpenClawAgent

  10. 参数改为接收 sessionKey(从 Hub 请求中获取)
  11. spawn 命令:openclaw agent --session-id <sessionKey> --message <msg> --json
  12. 注意:--json 输出为 streaming JSON,需正确捕获

  13. 修复 P13:在 Hub 实现 POST /tasks/create-content 接口

  14. 接收 task_id, title, content(Markdown 字符串)
  15. /srv/kizuna/tasks/<task_id>/ 创建目录并写入 task.md
  16. 若 task 已存在则报错(不覆盖)
  17. 同步更新 kizuna-ctl 添加 create-task-content <task_id> <title> <file> 子命令(从文件读 content)

产出要求
- 修改后在 aichan 原地重启 Hub(kill + nohup 重启)
- 用 curl 验证:重新注册节点(新格式)→ 创建测试任务 → start → 观察 Node Agent 是否收到请求
- 验证结果写入 /root/.openclaw/workspace/tasks/task-kizuna-fix-001/coder-report.md
- session.md 追加执行日志

开始时:

/root/.openclaw/workspace/scripts/log-to-channel.sh coder receive "Kizuna核心修复" task-kizuna-fix-001

完成后:

/root/.openclaw/workspace/scripts/log-to-channel.sh coder handoff "Kizuna核心修复" reviewer task-kizuna-fix-001

然后 sessions_send 通知 reviewer(agent:reviewer:maintimeoutSeconds=0):

task_id=task-kizuna-fix-001
task=/root/.openclaw/workspace/tasks/task-kizuna-fix-001/task.md

Reviewer(session key: agent:reviewer:main

任务

  1. 阅读 coder-report.md 和修改后的源码
  2. 审查以下几点:
  3. P10 分发逻辑:Hub 是否正确从 nodes.json 取 session key?分发失败时有无错误处理?
  4. P11 Node Agent:openclaw agent --json 输出是 streaming JSON(每行一个事件),是否正确处理?
  5. P12 注册接口:List 兼容逻辑是否正确?
  6. P13 create-task-content:是否幂等(重复创建是否报错)?写入路径是否正确?
  7. 如有条件,SSH 到 aichan 独立运行验证命令:
    bash # 检查 Hub 日志 sudo cat /tmp/kizuna-hub.log | tail -30 # 检查 Node Agent 日志 sudo cat /tmp/kizuna-node.log | tail -30
  8. 将审查报告写入 /root/.openclaw/workspace/tasks/task-kizuna-fix-001/review.md
  9. session.md 追加审查日志

开始时:

/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer receive "Kizuna核心修复" task-kizuna-fix-001

完成后:

/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer handoff "Kizuna核心修复" main task-kizuna-fix-001

然后 sessions_send 通知爱衣(agent:main:maintimeoutSeconds=0):

task_id=task-kizuna-fix-001
task=/root/.openclaw/workspace/tasks/task-kizuna-fix-001/task.md

⚠️ 爱衣质检 SOP

Step 1:评估工作区大小

du -sb /root/.openclaw/workspace/tasks/task-kizuna-fix-001/

Step 2:读取 session.md + coder-report.md + review.md

Step 3:质检要点

Step 4:质检通过

  1. log-to-channel.sh main done "Kizuna核心修复" task-kizuna-fix-001
  2. message 主人归纳修复结果