| name | doctor |
| description | Orchestrator 全栈诊断。检查容器/DB/采集器/通道/Qdrant/GPU,给出 pass/warn/fail + 修复命令。Use when: 用户说 doctor、诊断、体检、检查系统、出了什么问题。 |
| origin | Orchestrator — earned through direct practice (see commit history) |
| source_version | 2026-04-18 |
If you were dispatched as a subagent to execute a specific task, skip this skill.
Doctor runs system-wide diagnostics that require main-agent context (containers, DB, channels).
Orchestrator Doctor — 全栈诊断
你是 Orchestrator 的诊断系统。不只返回状态,而是带着领域知识判断什么算正常、什么需要修。
诊断流程
按顺序跑以下检查,每项给出 PASS / WARN / FAIL 判定。
1. Container Runtime
docker ps --filter name=orchestrator --format "{{.Status}}\t{{.Ports}}"
- PASS: Up + 端口 23714 映射正常
- FAIL: 容器不存在或 Exited
- 修复:
docker compose up -d
2. Database
docker exec orchestrator python3 -c "
import sys; sys.path.insert(0,'.')
from src.core.health import HealthCheck
import json
hc = HealthCheck()
r = hc._check_db()
print(json.dumps(r, default=str))
"
判定阈值:
- size_mb > 100 → WARN(需要归档)
- size_mb > 200 → FAIL
- lock_ok = false → FAIL(DB 被锁)
- journal_mode = wal → WARN(Docker NTFS 不兼容)
- stale_files 非空 → WARN(异常退出残留)
3. Collectors
docker exec orchestrator python3 -c "
import sys; sys.path.insert(0,'.')
from src.core.health import HealthCheck
import json
hc = HealthCheck()
r = hc._check_collectors()
print(json.dumps(r, default=str))
"
判定阈值:
- hours_ago > 48 → WARN(采集器休眠)
- hours_ago > 72 → FAIL(采集器失联)
- last_event = null → FAIL(从未采到数据)
- steam 采集器是老 meme 了,hours_ago 大也正常
4. Governor Tasks
docker exec orchestrator python3 -c "
import sys; sys.path.insert(0,'.')
from src.core.health import HealthCheck
import json
hc = HealthCheck()
r = hc._check_governor()
print(json.dumps(r, default=str))
"
判定阈值:
- stuck > 0 → FAIL(任务卡死,需要手动 kill)
- failed/total > 50% → WARN(失败率过高)
5. Channels (TG/WeChat)
docker exec orchestrator python3 -c "
import sys; sys.path.insert(0,'.')
from src.core.health import HealthCheck
import json
hc = HealthCheck()
r = hc._check_channels()
print(json.dumps(r, default=str))
"
判定阈值:
- running = false → FAIL(轮询线程停了)
- wake.stuck > 0 → WARN(wake session 卡住 >30min)
- last_chat_message.hours_ago > 48 → INFO(通道静默)
6. Qdrant Vector Store (主机侧)
curl -s http://localhost:6333/collections | python3 -m json.tool
- PASS: 返回 collections 列表
- WARN: 连接成功但 collections 为空
- FAIL: 连接拒绝(Qdrant 未运行)
- 修复:
docker compose up -d qdrant 或检查 Qdrant 容器
7. GPU (主机侧)
nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv,noheader
- PASS: GPU 可用,VRAM 使用 < 80%
- WARN: VRAM 使用 > 80%
- INFO: 无 GPU(纯 CPU 模式,某些功能受限)
8. Disk Space (主机侧)
powershell -Command "Get-PSDrive D | Select-Object Used,Free | ConvertTo-Json"
- PASS: 空闲 > 10GB
- WARN: 空闲 5-10GB
- FAIL: 空闲 < 5GB
9. Event Loop Latency
docker exec orchestrator python3 -c "
import sys; sys.path.insert(0,'.')
from src.core.health import HealthCheck
import json
hc = HealthCheck()
r = hc._check_event_loop()
print(json.dumps(r, default=str))
"
- PASS: latency < 50ms
- WARN: latency 50-200ms(事件循环拥堵)
- FAIL: latency > 200ms 或超时
输出格式
汇总表(不要省略):
┌─ Orchestrator Doctor ──────────────────┐
│ Container [PASS] Up 5 hours │
│ Database [PASS] 16M, lock OK │
│ Collectors [WARN] steam 72h silent │
│ Governor [PASS] 0 stuck, 23% fail │
│ Channels [PASS] TG running │
│ Qdrant [PASS] 3 collections │
│ GPU [PASS] RTX 4090 42% VRAM │
│ Disk [PASS] 234GB free │
│ Event Loop [PASS] 3ms latency │
├────────────────────────────────────────┤
│ Result: 8 PASS / 1 WARN / 0 FAIL │
└────────────────────────────────────────┘
WARN/FAIL 项给出修复建议(具体命令,不要泛泛而谈)。
智能判断规则
- Steam 采集器一直是 0 数据的老 meme,WARN 就行不用 FAIL
- DB journal_mode=wal 在 Docker NTFS 场景下是已知问题,给修复命令:
docker exec orchestrator python3 -c "import sqlite3; conn=sqlite3.connect('data/events.db'); conn.execute('PRAGMA journal_mode=DELETE'); conn.close()"
- GPU 不存在不是 FAIL(有些任务不需要 GPU)
- 采集器从未采到数据比"48h 没更新"更严重
- Run Jump Tracker from
SOUL/public/prompts/rationalization-immunity.md#jump-tracker — if escape count ≥ 3 surface it before proceeding.