/root/.openclaw/workspace/tasks/task-ctx-check/task.md/root/.openclaw/workspace/tasks/task-ctx-check/session.md为 Ai.Res(researcher agent)编写一个 context 水位自检脚本,让 researcher 在每轮搜索/PDF精读结束后能评估自己当前的 context 压力,决定是继续还是提前收尾。
路径: /root/.openclaw/workspace/scripts/context-check.sh
调用方式:
bash /root/.openclaw/workspace/scripts/context-check.sh <task_id>
工作原理:
1. 读取 session log 大小:workspace-researcher/sessions/YYYY-MM-DD-<task_id>.md(用 glob 匹配,取最新)
2. 读取 scratch 大小:workspace-researcher/sessions/scratch-<task_id>.md(若存在)
3. 估算 token 数(粗估:字节数 ÷ 4)
4. 输出水位评估 + 建议
输出格式(stdout):
=== Context 水位检查 [task_id] ===
session log : X 行 / Y KB (~Z tokens)
scratch : X 行 / Y KB (~Z tokens)
合计估算 : ~Z tokens
─────────────────────────────────
状态:🟢 轻载(<30k tokens)继续执行
或:🟡 中载(30k-80k)注意控制
或:🔴 重载(>80k)建议提前收尾,通知爱衣
建议:[具体操��建议]
阈值:
- 🟢 <30k tokens:正常继续
- 🟡 30k-80k tokens:减少 PDF 精读数量,每轮后检查一次
- 🔴 >80k tokens:停止新增搜索,立即写报告+收尾;若已在写报告,简化内容
附加功能:
- 若 scratch 文件不存在,跳过 scratch 行
- 若 session log 文件不存在,输出警告但不报错
- 支持 --json 参数,输出机器可读的 JSON(供未来自动化)
coder → 爱衣质检
agent:coder:main)任务:按照上方规格实现 context-check.sh,并写简单测试验证输出格式正确。
开始时:
1. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh coder receive "context自检脚本" task-ctx-check
完成后:
1. 将执行日志追加到 session.md
2. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh coder handoff "context自检脚本" main task-ctx-check
3. sessions_send 通知爱衣(agent:main:main,必须传 timeoutSeconds=0,禁止省略):
task_id=task-ctx-check
task=/root/.openclaw/workspace/tasks/task-ctx-check/task.md
du -sb /root/.openclaw/workspace/tasks/task-ctx-check/
wc -l /root/.openclaw/workspace/tasks/task-ctx-check/session.md
若行数 N > 0,read session.md 全文。
通用检查(每次必须):
- 产出是否符合原始需求?
- 执行过程是否有明显问题?
任务特定检查:
- 脚本是否存在于 /root/.openclaw/workspace/scripts/context-check.sh?
- 输出格式是否含三色状态(🟢🟡🔴)和建议文字?
- 阈值是否正确(30k / 80k)?
- --json 参数是否支持?
- 运行一次验证:bash /root/.openclaw/workspace/scripts/context-check.sh test-task 2>&1(不存在文件时应有 graceful 提示而非报错)
通过 →
1. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main done "context自检脚本" task-ctx-check
2. 用 message 工具发送给主人(telegram, 92763607),告知脚本已就绪,给出调用示例
不通过(rejectCount == 0) →
1. 分析问题根因,设计新执行链
2. 创建新的 task.md(task_id 加后缀 -retry1),session.md 独立
3. 在原 session.md 末尾追加一行 rejectCount=1
4. sessions_send 给新执行链起始 Agent
5. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main retry "context自检脚本" "coder → main" coder 1 task-ctx-check
rejectCount >= 1(第二次仍失败) →
1. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main fail "context自检脚本" task-ctx-check
2. message 主人,归纳问题和两次失败原因,请主人裁决