DeepSeek Harness 零侵入运行事实遥测:每个会话自动把任务/模型档位/工具/失败/时长/状态写入人机共读观测卡并附统计区(纯观察者——零工具、零 LLM、零注入)。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Cavan-Ou/dsh-observation-journal
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 的零侵入运行事实遥测:每个会话自动写一张成绩单。
纯观察者插件(零工具注册、零 LLM 调用、零 agent 介入)。session 结束时自动把任务 / 模型档位 / 工具 / 失败 / 时长 / 状态写入人机共读的观测卡,附自动更新的统计区。
为什么需要它
失败有记录者(dsh-fail-logger),成功和运行事实没有。这是它的姊妹篇:记录发生了什么——不是"怎么解决"、不是"该记住什么"。无工具、无注入、无检索。harness 被动写,人/项目读。
它不是什么(边界说破):
| 插件 | 记录 | 注入回 agent? | 消费端 |
|---|---|---|---|
| 本插件 | 运行事实(遥测) | 永不 | 人/项目文件 |
| dsh-task-planner | 解决方案("怎么解决") | 是(recall) | agent 规划 |
| dsh-mneme / dsh-memento / dsh-memory | agent 记忆 | 是(检索) | agent 上下文 |
| dsh-fail-logger | 失败 | 经 skill | agent 技能加载 |
60 秒验证
dsh plugin --profile headless add <仓库或包> # 或复制仓库作本地 bundle
dsh --profile headless "跑任意小任务"
cat ~/.dsh/observations.md # 出现一行记录 + 统计区
输出长什么样
观测卡就是 UI。机器维护区段(人工编辑不受影响)+ 自动统计块:
<!-- OBS-JOURNAL:BEGIN -->
| time | sid | task | model | dur | turns | tools | calls | fail | status |
|---|---|---|---|---|---|---|---|---|---|
| 2026-08-14T21:42 | abe96e0f | 阅读 specs/s11-1.md 任务书 | deepseek-v4-pro(max) | 1242 | 1 | read:80,bash:12,edit:9,todo_write:4 | 106 | 0 | completed |
| 2026-08-15T03:04 | 9c1f3a | run any small task | deepseek-v4-flash(max) | 25 | 1 | bash:4,grep:2,glob:1 | 7 | 0 | completed |
<!-- OBS-JOURNAL:END -->
<!-- OBS-JOURNAL:STATS -->
- 会话总数: 2
- 失败率: 0.0%(0/113)
- top 工具: read:80,bash:12,edit:9,todo_write:4,grep:2
- 平均时长(秒) 按模型: deepseek-v4-flash(max): 25, deepseek-v4-pro(max): 1242
<!-- OBS-JOURNAL:STATS:END -->
raw sidecar(obsFile + '.jsonl',追加写):全保真——todo 规划轨迹(≤5)、工具全量计数、失败工具、完整模型 id、任务描述全文、归一化 task_hash。v2 LLM 洞察的素材,与主卡 TTL 解耦。
配置(patch config: 字段,全可选)
| 键 | 默认 | 说明 |
|---|---|---|
obsFile |
$DSH_HOME/observations.md |
主卡路径(可指项目级观测卡) |
maxRows |
200 |
主卡最多保留行数(raw 不受限) |
marker |
OBS-JOURNAL |
区段 marker id,[A-Za-z0-9-] |
redact |
[] |
额外脱敏正则(叠加内置密钥表) |
flushMs |
300 |
turn/end 尾随防抖 |
环境变量:OBS_FILE(覆盖 obsFile)、OBS_REPLAY=<session.jsonl>(回放测试模式)。
可靠性
- 一行一 session,不做有损合并
- 任务标题转义
\|与换行;密钥脱敏(fail-logger 同款表) - 跨进程写锁 + 陈旧锁回收;dispose 兜底落盘无 turn/end 的会话
- 真实会话日志实测:5 个真实 .zstd 样本(含 2000+ 事件的 Pro 长提炼会话)14/14 回放用例,逐字段与独立重算交叉核对;21 会话全量回放验证人工区字节级不变
开发
node --check lib/index.js
node --test tests/test.mjs # 需要 python3 + zstandard
License
MIT
链接
同类插件
yjh051108/dsh-routing-suite★ 7003
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3666
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 325
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 206
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
lire1131/dsh-undo-savepoint★ 166
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 155
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。