deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness 守护者 —— 始终活着的无模型底层,当 DSH 陷入不可逆状态时自动接管、诊断、回滚、重启、静默。
这是"agent 自己修复自己"的自举困境的答案:能改自己,就可能改坏自己;而改坏后 agent 跑不了,就需要一个不依赖 DSH、不依赖模型的底层来救场。
agent(模型)改坏文件 → DSH 起不来 → 模型自己也跑不了
↓
能救场的东西,必须不依赖模型和 DSH → 纯 shell 守护者
Restart=always),DSH 死它不死;AGENTS.md 与事件文件,让恢复后的模型第一时间知情。systemd(始终活着)
└─ dsh-guardian.service(独立于 DSH)
├─ 正常:只读健康检查(HTTP + systemd 状态),零干预 = 静默
├─ 异常(连续失败阈值):接管
│ ├─ 诊断:journalctl + dump-config 验证组合
│ ├─ 修复:回溯最近"可用"快照 → 重启 → 验证
│ └─ 修复成功:通知模型 → 恢复静默
└─ 快照:变更检测 + 定期基准 + 修复后基准
健康判据:
健康 = HTTP 探活返回 200(主判据,与启动方式无关)
+ (仅当配置了 systemd 服务且存在) 服务 active
所以 Termux / docker / 前台进程 / 任意服务名都能监控。
# 本地
bash install.sh
# 远程(从仓库)
bash <(curl -s https://gitee.com/okmyapp/dsh-guardian/raw/master/install.sh)
安装自动完成:脚本 → systemd 单元 → enable --now(开机自启)→ 基准快照。幂等,可重复执行。
卸载:
bash uninstall.sh
环境变量(在 systemd 单元 Environment= 里设置,或用你自己的启动方式注入):
| 变量 | 默认 | 说明 |
|---|---|---|
DSH_GUARDIAN_SERVICE |
dsh-web.service |
systemd 服务名;留空 = 无 systemd 场景(只靠 HTTP 监控) |
DSH_GUARDIAN_URL |
http://127.0.0.1:3080/ |
HTTP 健康探活地址 |
DSH_GUARDIAN_INTERVAL |
30 |
健康检查间隔(秒) |
DSH_GUARDIAN_THRESHOLD |
3 |
连续失败接管阈值 |
DSH_GUARDIAN_SNAPSHOT_EVERY |
600 |
定期良好快照间隔(秒) |
保护对象(组合/配置层,agent 最可能改坏自己的 3 个文件):
~/.dsh/profiles/web/cordis.patch.yml(用户组合层)~/.dsh/profiles/web/package.json(bundle 注册表)~/.dsh/settings.yaml(全局设置)三层快照时机:
| 层 | 触发 | 作用 |
|---|---|---|
| 变更检测 | 组合文件 md5 变化(每检查间隔) | 改配置自动留"后悔药" |
| 定期基准 | 健康时每 SNAPSHOT_EVERY 秒 |
始终有近期良好快照 |
| 修复后 | 接管修复成功 | 良好状态存为新基准 |
回滚时逐份回溯,跳过结构不可用(YAML/JSON 解析失败)的快照,即使最近快照也被写坏,也能找到更早的可用那份。
快照位置:~/.dsh/guardian/snapshots/<时间戳>/,默认保留 10 份。
守护者修复成功后:
~/.dsh/guardian/last-heal.json(时间、原因、回滚快照、诊断日志位置);~/.dsh/AGENTS.md 更新「最近自愈事件」区块(自动注入到模型每个会话/恢复的第一步)。效果:DSH 恢复后,模型第一眼就看到"发生过一次自愈",再读事件文件排查根因——无需任何推送机制。
/root/.dsh/guardian/guardian.sh snapshot # 手动拍快照(改组合后调用)
/root/.dsh/guardian/guardian.sh status # 查看状态
/root/.dsh/guardian/guardian.sh check # 手动健康检查
tail -f /root/.dsh/guardian/guardian.log # 守护者日志(含诊断现场)
守护者(体外,无模型): 监控 → 回滚文件 → 重启 DSH ← 急救员
auto-goal-resume(体内): DSH 活了 → 恢复任务 → 续跑 ← 康复师
systemctl restart;无 systemd 时回滚文件后提示由外部 supervisor 负责;MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。