SKILL.md 技能文档
能力目标
让 Agent 把 dream cycle 注册成操作系统级后台守护进程(macOS launchd / Linux systemd),实现「用户睡觉、brain 自动追平最新状态」——daemon 按 brain 健康度自适应间隔触发 dream,并能查询状态、卸载、以及在 daemon 的非交互 shell 环境里正确注入 API key。
前置
- dream cycle 本身能手动跑通(见 running-dream-cycle)。
- launchd daemon 是非交互式 shell、不 source
~/.zshrc;终端里 export 的 key 传不给 daemon。 - gbrain autopilot 的所有操作都是 flag 形式(
--install/--status/--uninstall),没有install/start/stop子命令。
实操流程
把两个 key 写进
~/.zshenv——.zshenv是 zsh 中唯一对非交互 shell 也 source 的配置文件(不是.zshrc/.bash_profile):cat >> ~/.zshenv << 'EOF' export DASHSCOPE_API_KEY="<你的 DashScope key>" export ANTHROPIC_API_KEY="<你的 Anthropic key>" EOF注入链路:launchd →
~/.gbrain/autopilot-run.sh(wrapper,source ~/.zshenv)→gbrain autopilot --repo $BRAIN_DIR。安装 daemon:
timeout -k 5 30 gbrain autopilot --install --repo "$BRAIN_DIR" > /tmp/autopilot.log 2>&1 cat /tmp/autopilot.log ls -la ~/Library/LaunchAgents/com.gbrain.autopilot.plist # macOS 上的 plist cat ~/.gbrain/autopilot-run.sh # wrapper,含 source ~/.zshenvplist 带
KeepAlive=true+RunAtLoad=true:随登录启动、异常退出自动重启。等待并观察多次 tick(daemon 装好即开始 tick):
sleep 160; cat ~/.gbrain/autopilot.log # 每 tick 两行:[cycle-inline ...] + [cycle] score=... next=...~/.gbrain/autopilot.log是给人看的 compact summary(每 tick 2 行);~/.gbrain/autopilot.err是完整 16-phase trace(每 tick 约 37 行),调试看.err、日常监控看.log。查状态(
--json适合脚本 / CI):timeout -k 5 30 gbrain autopilot --status --json # {"installed":true,"last_log":"[cycle] score=45 elapsed=7s next=150s"}卸载并核验彻底移除:
timeout -k 5 30 gbrain autopilot --uninstall launchctl list | grep gbrain || echo "[OK] removed"
校验回路
- 安装后
~/Library/LaunchAgents/com.gbrain.autopilot.plist与~/.gbrain/autopilot-run.sh存在。 ~/.gbrain/autopilot.log累计 ≥2 行[cycle] score=... next=...,说明 daemon 真在 tick。gbrain autopilot --status --json返回"installed":true与最后一次 cycle 的last_log。--uninstall后launchctl list | grep gbrain一无所获(有命中说明没清干净,手动launchctl unload ~/Library/LaunchAgents/com.gbrain.autopilot.plist && rm ...)。
常见陷阱
- key 写错文件、daemon 拿不到:终端 export 或写进
~/.zshrc对非交互 daemon 无效,必须写~/.zshenv。症状:autopilot.err 里 embed phase 报缺DASHSCOPE_API_KEY。 - 误用子命令语法:
gbrain autopilot install/start/stop全报 unknown command。只有--install/--status/--uninstall三个 flag。 --interval N在--install模式不生效:daemon 内部用固定 baseInterval=300s,再由 score 自适应算法动态调整;--interval只在前台 inline 模式(不带--install)生效。- score 自适应间隔的三档:score ≥90 → 600s(健康、降频省 API);70
89 → 300s(标准);<70 →90、间隔回归 300s——这就是被动复利的自修复正反馈:越不健康越勤检查、enrichment 累积越快、健康度回升。max(300/2, 60)=150s(待改善、加密检查)。score 低的主因是 orphan 比例高(fresh brain 页面全是 orphan);随 wikilink 网络扩张、orphan 下降、score 升到 70 - score 一直是 50:
engine.getHealth()没返回brain_score字段的默认值,多半 brain 数据库损坏,按 recovering-brain-database 重建。
适用范围与前置条件
- dream cycle 本身能手动跑通(见 running-dream-cycle)。
- launchd daemon 是非交互式 shell、不 source
~/.zshrc;终端里 export 的 key 传不给 daemon。 - gbrain autopilot 的所有操作都是 flag 形式(
--install/--status/--uninstall),没有install/start/stop子命令。
怎么使用
使用步骤
把两个 key 写进
~/.zshenv——.zshenv是 zsh 中唯一对非交互 shell 也 source 的配置文件(不是.zshrc/.bash_profile):cat >> ~/.zshenv << 'EOF' export DASHSCOPE_API_KEY="<你的 DashScope key>" export ANTHROPIC_API_KEY="<你的 Anthropic key>" EOF注入链路:launchd →
~/.gbrain/autopilot-run.sh(wrapper,source ~/.zshenv)→gbrain autopilot --repo $BRAIN_DIR。安装 daemon:
timeout -k 5 30 gbrain autopilot --install --repo "$BRAIN_DIR" > /tmp/autopilot.log 2>&1 cat /tmp/autopilot.log ls -la ~/Library/LaunchAgents/com.gbrain.autopilot.plist # macOS 上的 plist cat ~/.gbrain/autopilot-run.sh # wrapper,含 source ~/.zshenvplist 带
KeepAlive=true+RunAtLoad=true:随登录启动、异常退出自动重启。等待并观察多次 tick(daemon 装好即开始 tick):
sleep 160; cat ~/.gbrain/autopilot.log # 每 tick 两行:[cycle-inline ...] + [cycle] score=... next=...~/.gbrain/autopilot.log是给人看的 compact summary(每 tick 2 行);~/.gbrain/autopilot.err是完整 16-phase trace(每 tick 约 37 行),调试看.err、日常监控看.log。查状态(
--json适合脚本 / CI):timeout -k 5 30 gbrain autopilot --status --json # {"installed":true,"last_log":"[cycle] score=45 elapsed=7s next=150s"}卸载并核验彻底移除:
timeout -k 5 30 gbrain autopilot --uninstall launchctl list | grep gbrain || echo "[OK] removed"