前言¶
在 DeepSeek Harness(DSH)里跑 agent,改 prompt、换模型、加插件之后,常见问题是:真实工作会话有没有变差?传统 benchmark 要事先写用例、再跑一轮,和日常 session 不是同一批数据。若再引入 LLM 当裁判,结果还难复现。
下面介绍社区插件 dsh-session-eval(维护者 kittimzhe,分类:工作流):对已持久化的 session 日志做回顾性评估——固定阈值打出等级卡,并支持跨 session 的回归对比。不新建 benchmark、不用 LLM 评判、不要求再跑一轮 agent。
这是什么¶
dsh-session-eval 是 DSH 会话工具链里的「测量层」插件:读已有 session,输出可复现的等级与趋势,用来回答「这次会话好不好」「改配置之后趋势是升还是降」。
与同生态插件的分工(均通过 ctx.sessionQuery 读日志,JSONL 或 SQLite 后端均可):
| 插件 | 层级 | 回答的问题 |
|---|---|---|
| dsh-session-export | 证据 | 这次 session 里具体发生了什么 |
| dsh-session-recall | 记忆 | 之前做过什么、记录在哪 |
| dsh-session-eval | 测量 | 会话质量如何、趋势是否在改善 |
与 benchmark 型 dsh-eval 的对比:前者评估你事先发起的跑分;本插件评估已经发生的 session。两者互补,不互相替代。
许可证 MIT;npm 包名 dsh-session-eval(资料中 package.json 版本为 0.2.4)。
核心功能¶
单 session 等级卡(/eval)¶
从持久化日志提取三项确定性指标,按文档化阈值映射为 A–E(缺相关活动时该维度为 n/a):
| 维度 | 指标 | 含义概要 |
|---|---|---|
| Reliability | 工具错误率 | tool result 报错占比 |
| Re-ask | 每 10 轮修正信号 | 连续用户消息中、助手尚未回复前的额外用户消息(行为上近似「没一次说对」) |
| Tool load | 每轮工具调用数 | 调用密度是否在合理区间 |
Overall 取各已评分维度中的最差档,偏保守设计。阈值常量见仓库 src/grade.ts;可配置阈值在 roadmap(GitHub issues)。
同一套日志多次执行 /eval,输出一致:无模型参与、无采样,墙钟时间仅作备注、不参与打分。
跨 session 回归(/eval-diff)¶
指定两个 sessionId,在噪声带(错误率 ±2pp、re-ask ±0.5、tool load ±1)内对比,避免微小抖动被误判为回归。
工作区历史趋势(/eval-history)¶
在当前工作区 cwd 范围内(与 /archive 相同的 sessionQuery 范围),对最近 N 个 session 分别打分,并对首尾做 diff。适合「改插件 / prompt / 模型前后各抓一批真实 session」做对比。
安装与启用¶
环境:Node.js 20 或 22;DSH profile 需挂载 commands 与 sessionQuery 服务(自带的 web / agent profile 满足要求)。
在 DSH 中安装(官方 README 命令):
dsh plugin --profile web add dsh-session-eval
或从 GitHub 源安装:
dsh plugin --profile web add github:kittimzhe/dsh-session-eval
安装后 bundle 会挂载 /eval、/eval-diff、/eval-history。若自行维护 cordis.patch.yml,需保留类似条目:
- insert:
- id: session-eval
name: 'dsh-session-eval'
插件以当前 DSH 进程权限运行;安装前建议浏览仓库源码与 MIT 许可证,确认符合你的安全与合规要求。
典型用法¶
先看当前 session¶
在 DSH 会话里执行:
/eval
终端示例(README 摘录,版本号随安装包变化):
Session eval — a1b2c3d4… (dsh-session-eval v0.2.2)
Overall: A
Reliability A 2/87 tool results errored (2.3%)
Re-ask A 1 re-ask signal(s) over 23 turns (0.4/10 turns)
Tool load B 3.8 tool calls per turn
Notes:
• Wall time 41.2 min over 23 turns.
指定 session 或导出 JSON¶
/eval --id <sessionId>
/eval --json
对比两次变更前后¶
已知两个 id 时:
/eval-diff <beforeId> <afterId>
/eval-diff <beforeId> <afterId> --json
看最近 N 次趋势¶
/eval-history [N]
/eval-history [N] --json
/eval-history --out report.md
--out 将终端卡片存为 Markdown;加 --json 可存 JSON。相对路径相对当前 session 工作区解析;父目录须已存在,已有文件会被覆盖。
适用场景与注意¶
适合:已在 DSH 中持续产生 session 日志的团队或个人;需要在真实工作数据上跟踪 Reliability、Re-ask、Tool load 趋势;改配置后做噪声容忍的回归判断,而不是只依赖事先设计的 benchmark。
不适合替代:需要覆盖预测场景的标准化 benchmark(仍应使用 dsh-eval 等 benchmark 路径)。
注意:
- 评分阈值目前为代码内常量,自定义门槛需关注上游 issue 或自行 fork。
- 历史范围绑定当前工作区
cwd,跨目录对比请用/eval-diff并明确 session id。 - 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点当时展示为准。
结尾¶
dsh-session-eval 把「会话好不好、改完有没有变差」落到持久化日志上的固定阈值与 diff,补全 export / recall 之后的测量一环。安装后从 /eval 和 /eval-history 即可在现有 session 上试跑。