双Agent交流协作
概述
Agent A与Agent B通过本地知识库文件系统交流。本技能由独立看门狗进程驱动——一个运行在后台的 PowerShell 脚本,每5分钟固定扫描协作空间,发现新内容后由Agent A负责处理并通知用户。
核心变化 v2.0:扫描触发从"我在行动间隙检查"变为"后台进程定时间隔执行",彻底解决对话阻塞导致的漏扫。
架构
┌──────────────────────────────────────────────┐
│ agent-collab-watchdog.ps1 │
│ (后台独立进程,每5分钟固定扫描) │
│ │
│ 1. 扫描8个目标 │
│ 2. 发现新内容 → 写入 .watchdog_state.json │
│ 3. 更新 .scan_trigger 时间戳 │
│ 4. 写入日志 │
│ 5. 休眠300秒 → 循环 │
└──────────────────────┬───────────────────────┘
│ 读取状态
▼
┌──────────────────────────────────────────────┐
│ Agent A │
│ │
│ TICK / 用户消息 / 动作完成 → 读取状态文件 │
│ → 处理新内容 → 写已读标记 → 微信通知用户 │
└──────────────────────────────────────────────┘
触发机制(v2.0 — 看门狗驱动)
本技能不再依赖"我记住去检查"。扫描定时由独立看门狗进程保障:
- 看门狗进程
<VAULT>\scripts\agent-collab-watchdog.ps1作为后台进程运行 - 每 300秒(5分钟) 执行一次全量扫描
- 扫描结果写入
共享规则\.watchdog_state.json(含发现数和明细) - 同时更新
共享规则\.scan_trigger时间戳 - Agent A在每次激活(TICK/用户消息/自主动作完成)时读取状态文件:
- 有发现 → 处理并微信通知用户
- 无发现 → 跳过
- 看门狗不受对话阻塞影响——它在独立 PowerShell 进程中运行
即使Agent A连续对话30分钟不抬头,看门狗依然每5分钟忠实扫描,把结果累计在状态文件中。Agent A在对话间隙就能顺手处理。
扫描范围(同v1.x)
<VAULT>\07-智能体协作\
├── 任务队列/ ← 双方投递的任务卡片
├── 交流记录/ ← 双方相互留言(Agent A只读与己相关的)
├── 共享规则/ ← 共享行为守则
├── Agent B工作记录/ ← Agent B单方面产出(Agent A自动发现知识萃取)
├── Agent A审查/ ← Agent A的审查记录(检查Agent B是否回复)
├── 共享凭证库.md ← 共享凭证明细(变更需关注)
├── 监督板.md ← 协作状态总览(变更需读取)
└── 致Agent A.md ← Agent B专门致Agent A的留言
所有目标自动扫描,不留手动通知缺口。
主流程
Step 1:读取看门狗状态
每次激活(TICK/用户消息/自主动作完成),读取 .watchdog_state.json:
has_findings→ 有发现才继续处理findings→ 新内容的类型和文件列表- 避免重复扫描:看门狗已完成了目录级扫描,Agent A只需针对性读文件
Step 2:逐文件处理
对每个新发现的文件:
- 读取文件内容(全文)
- 判断内容类别(任务/交流/规则/产出/审查/凭证/监督板/留言)
- 执行对应处理(自己能做的直接做,需要用户判断的通知)
- 写入已读标记
Step 3:写入已读标记(统一格式)
处理完一个文件后,在其末尾追加分隔线和已读标记:
---
✅ Agent A已读 @2026-07-13 HH:MM
- 如果文件末尾已有 --- 分隔线和标记,覆盖更新最后一行时间
- 标记始终在文件末尾倒数3行以内
- 看门狗通过检查 --- 后的标记来判断新内容,Agent A处理完必须写标记
Step 4:通知用户(全部微信推送)
所有协作动态一律通过微信通知用户,包括但不限于:
- 任务队列有新任务/新回复
- 交流记录有新留言
- Agent B工作记录有新增产出
- 共享规则有更新
- 审查记录有回复
- 凭证库有变更
- 致Agent A有新留言
- 监督板有更新
用户通过微信获知所有协作动态,自行决定是否介入。
同一文件不重复通知(已有已读标记的视为已通知过)。
看门狗管理
启动
# 手动启动
powershell -File "<VAULT>\scripts\agent-collab-watchdog.ps1"
# 后台启动(带窗口)
Start-Process -WindowStyle Hidden -FilePath "powershell" -ArgumentList "-File `"<VAULT>\scripts\agent-collab-watchdog.ps1`""
状态检查
Get-Content "<VAULT>\07-智能体协作\共享规则\.watchdog_state.json" | ConvertFrom-Json
Get-Content "<VAULT>\scripts\logs\watchdog.log" -Tail 10
重启
看门狗进程死亡后,Agent A需要重启它。宿主应用重启时Agent A会自动尝试启动看门狗。
日志
<VAULT>\scripts\logs\watchdog.log — 每轮扫描有记录,错误有堆栈。
行为规则(10条)
- 主动通知:所有协作动态通过微信通知用户,不设静默分类
- 不重复通知:同一文件处理过一次后不再向用户报告第二次(除非用户主动再问)
- 已读标记必写:任何读完的文件必须加标记,禁止同一文件反复读取
- 看门狗不处理内容:看门狗只做目录级文件扫描(查文件名、修改时间、末尾标记),不读正文、不决策、不发微信
- Agent A不重复扫描目录:Agent A直接读看门狗的状态文件,不做全量目录遍历——减少重复IO和API时间
- 全盘覆盖:看门狗每次扫描检查全部8个目标(5目录+3文件),不得遗漏
- 用户手动触发优先:用户明确说「看看任务」「协作空间」时,Agent A直接执行全量扫描(跳过看门狗状态)
- 恢复机制:宿主应用重启后Agent A自动检查看门狗进程是否存活,不存活则自动重启
- 问题报告:如果看门狗日志中有连续3次以上错误,Agent A通知用户
- Agent B必须同步:Agent B应使用相同的扫描间隔和标记协议,双方对齐
版本历史
- v1.0
v1.7 (2026-07-1314):三层触发回路(TICK+消息+动作),仍依赖Agent A的激活间隙,有漏扫风险 - v2.0 (2026-07-14):架构重构——引入独立看门狗后台进程,扫描定时与Agent A脱钩;简化触发回路为"看门狗状态驱动";新增看门狗管理规则