dsh-observation-journal:为 DSH 会话留下运行事实

前言

使用 DeepSeek Harness(DSH)跑智能体任务时,经常需要确认一些基本运行事实:这个会话执行了什么任务、使用了哪个 model tier、调用了哪些工具、发生了几次失败、运行了多久、最终状态是什么。

这些信息如果只散落在会话过程中,事后核对会比较麻烦。dsh-observation-journal 的做法是:在会话结束后,把这些运行事实写入一份人类可读的 journal,并自动维护统计区块。

这是什么

dsh-observation-journal 是一个 DSH 纯观察者插件。资料中明确写出它的边界:

  • zero tools registered
  • zero LLM calls
  • zero agent involvement

它记录的是运行事实,包括:

  • task
  • model tier
  • tools
  • failures
  • duration
  • status

它不把记录注入 agent,也不参与 agent 规划或记忆召回。

仓库地址:

https://github.com/Cavan-Ou/dsh-observation-journal

许可证:

MIT

package.json 中声明的版本和运行环境为:

{
  "version": "0.1.0",
  "engines": {
    "node": ">=20"
  }
}

核心功能

会话结束后写入 journal

会话结束后,插件将单次会话的运行事实写入人类可读 journal。资料说明会话卡为 10-column rows,一个 session 一行,不做有损合并。

任务标题会进行转义:

  • 转义 |
  • 转义换行

同时会基于内置 secret table 做 secrets redaction。

自动维护 marker 区块和 stats 区块

journal 中会维护两类区块:

  • 带 marker 的 journal 区块
  • auto-stats 区块

资料说明 marker section 可保留人工编辑内容。也就是说,自动写入区域和人工编辑区域可以分离。

生成 append-only raw sidecar

除 journal 外,插件还会生成 append-only raw sidecar。路径为:

obsFile + '.jsonl'

raw sidecar 中包含:

  • todo planning trace(≤5)
  • 完整工具计数
  • 失败工具
  • 完整 model id
  • 完整 task 描述
  • normalized task_hash

资料将其描述为 v2 material for LLM insight,并且 TTL-decoupled from the card。

写入可靠性

资料中列出的可靠性机制包括:

  • 跨进程写锁
  • stale lock reclaim
  • dispose fallback 会 flush 没有 turn/end 的 sessions

安装与启用

先添加插件,再运行一个 DSH headless 任务,最后查看 journal。资料给出的安装命令使用占位参数:

dsh plugin --profile headless add <repo-or-pkg>

也可以将该仓库复制为 local bundle 使用。

接下来运行一个小型任务:

dsh --profile headless "run any small task"

然后查看默认观测文件:

cat ~/.dsh/observations.md

如果文件中出现了 journal row 和 stats section,说明插件已经写入运行事实。

配置项

以下配置项在资料中被列为可选:

  • obsFile
  • maxRows
  • marker
  • redact
  • flushMs

其中:

  • obsFile:journal 文件路径;raw sidecar 使用 obsFile + '.jsonl'
  • marker:journal 区块 marker
  • redact:redaction 相关配置;资料说明任务标题会基于内置 secret table 做 secrets redaction

对于 maxRowsflushMs 的默认值与细节语义,已核实资料中没有给出,这里不展开。

环境变量

资料中确认了两个环境变量:

  • OBS_FILE:覆盖 obsFile
  • OBS_REPLAY=<session.jsonl>:用于重放真实 session 事件,适用于 test/CI mode

验证与测试

资料中声明已经使用真实 session logs 做过验证:

  • 14/14 replay tests
  • 5 个真实 .zstd fixtures
  • 其中一个为 2000+ event Pro long-synthesis session
  • 21-session full replay 验证 human sections byte-identical

本地开发时可以运行:

node --check lib/index.js
node --test tests/test.mjs

其中 node --test tests/test.mjs 需要:

python3 + zstandard

适用场景与注意

适合以下场景:

  • 需要给 DSH 会话留下可核对的运行记录
  • 需要在一个人类可读文件中查看每次会话的任务、模型、工具、失败和状态
  • 希望保留人工编辑区域,同时让自动统计区独立维护
  • 需要在 test/CI 中重放真实 session 事件

需要注意的边界:

  • 它不是 agent memory 插件
  • 不注册工具
  • 不调用 LLM
  • 不注入 agent
  • 不参与 agent 决策或召回

安装前仍建议检查源码与许可证。当前资料确认许可证为 MITpackage.json 要求:

node >=20

由于插件以当前 dsh 进程权限运行,启用前请确认你对该插件的来源、代码和写入路径有基本把握。

结尾

dsh-observation-journal 的价值在于把 DSH 会话的运行事实从临时过程里抽出来,写成一行一会话、可人工编辑、可统计、可重放的文件。它不改变 agent 行为,只留下可核对的记录。

本文资料未提供社区目录页 URL。GitHub 仓库地址为:

https://github.com/Cavan-Ou/dsh-observation-journal
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜