昨晚生成知识结节分析报告时,发布链路转了 5 圈弯路,耗时约 15 分钟才最终上线。
| # | 操作 | 发生了什么 | 谁的责任 |
|---|---|---|---|
| 1 | sessions_spawn 子 agent 生成报告 | 子 agent prompt 里没写域名 → 子 agent 自创了一个不存在的域名 reports.sunjsun.com | 我的(prompt 不完整) |
| 2 | 子 agent 完成,通知我 | 子 agent 说"已同步到 VPS",实际上没成功(域名不存在也没验证) | 子 agent 的 |
| 3 | 我转发子 agent 通知给 JC | 我直接转了子 agent 的输出,包括"临时用默认 key 同步完成"这个错误断言 | 我的(未验证就转发) |
| 4 | JC 追问"确认上传了吗" | 我才发现 rsync 用的 key 连不上 VPS | 我的(未预先验证 key) |
| 5 | 切默认 key 重传 | id_ed25519 成功,文件上线 | — |
| 修复 | 位置 | 效果 |
|---|---|---|
| 子 agent 产出先验证再转发 | AGENTS.md 信任层级 + 新增验证规则段 | 以后子 agent 输出不直接转给 JC |
| 报告发布检查清单 | CHECKLIST.md | 6 步验证流程,每步失败即停 |
| 子 agent prompt 模板规范 | CHECKLIST.md | 必须包含域名、路径、key 路径 |
| id_ed25519_reports key 修复 | VPS authorized_keys | 已匹配,可正常连接 |
| 发布链路经验记录 | MEMORY.md | 可回溯 |
当前模式下,子 agent 负责"生成报告 + 发布通知 + rsync",三个操作捆在一起。任何一个环节出错都会导致整条链断裂。且子 agent 隔离运行,出错后无法被主 session 感知和纠正。
解决方案不是让子 agent 更聪明,是把不可靠的操作从子 agent 剥离。
当前链路: 主 session → spawn 子 agent(生成+发布一步完成)→ 转发通知 问题:子 agent 不可控地虚构域名、断言已同步 改进链路: 主 session → spawn 子 agent(只生成报告,不发布) 子 agent → 保存 HTML 到本地 → 通知主 session 主 session → 验证文件 → ssh 验证 → rsync → VPS 确认 → 通知 JC 发布操作由主 session 执行(可控、可验证、出错可中断)
| 步骤 | 执行者 | 内容 |
|---|---|---|
| 1. 生成报告 | 子 agent | 只写 HTML 到本地文件,不执行任何外部操作 |
| 2. 验证报告 | 主 session | 检查文件存在 + 大小 > 0 + 域名正确 |
| 3. 发布 | 主 session | ssh 验证 → rsync → VPS 确认 |
| 4. 通知 | 主 session | 发 Telegram 链接给 JC |
生成如下 HTML 报告: - 保存到 /Users/lume/openclaw-data/outputs/research/YYYY-MM-DD-slug.html - 使用 message 工具通知 JC 文件已生成(仅通知文件路径,不自行发布) - 不要执行 rsync、不要编造域名、不要说我已完成同步
如果以后报告发布频率增加,可以考虑写一个 shell wrapper 脚本:
#!/bin/bash # publish-report.sh# 自动完成:验证 → rsync → 确认 → 通知 KEY=~/.ssh/id_ed25519_reports VPS=root@47.239.140.218 REMOTE_DIR=/var/www/reports DOMAIN=reports.10n1j.top # 1. verify local file [ -f "$1" ] || { echo "Local file not found"; exit 1; } # 2. verify ssh ssh -i $KEY -o ConnectTimeout=10 $VPS "echo ok" || { echo "SSH failed"; exit 1; } # 3. rsync rsync -avz -e "ssh -i $KEY" "$1" $VPS:$REMOTE_DIR/$(basename "$1") || { echo "rsync failed"; exit 1; } # 4. verify remote ssh -i $KEY $VPS "ls -la $REMOTE_DIR/$(basename "$1")" || { echo "Remote verify failed"; exit 1; } echo "Published: https://$DOMAIN/$(basename "$1")"
| 优先级 | 动作 | 影响 | 工作量 |
|---|---|---|---|
| P0(已完成) | AGENTS.md 验证规则 + CHECKLIST.md 检查清单 | 立即生效,下次发布不翻车 | 已完成 |
| P1 | 子 agent 只生成不发布 | 杜绝子 agent 虚构信息 | 改 prompt 即可,5 分钟 |
| P2 | 写 publish-report.sh | 发布自动化,减少人为步骤 | 15 分钟 |
| P3 | 发布监控日志 | 可回溯每次发布结果 | 30 分钟 |
P0 已经做了(规则 + 检查清单)。P1(子 agent 只生成不发布)改动极小,效果立竿见影——下次 spawn 子 agent 生成报告时,prompt 里加两句话就行。
P2(自动化脚本)看报告发布频率。如果一周发 3+ 次,值得写。