🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

避坑核对 OldManDing/dsh-ledger-watch

DeepSeek Harness
OldManDing8 天前有提交已提供中文文档扫描:含敏感能力

检查本次会话是否查阅经验账本并记录踩过的坑

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add OldManDing/dsh-ledger-watch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 8 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 32 处,展示前 17 条)
  • 读取本地文件
    lib/index.js:303
    return createHash('sha256').update(readFileSync(path)).digest('hex');
  • 读取本地文件
    lib/index.js:310
    if (!existsSync(path)) return {};
  • 读取本地文件
    lib/index.js:311
    const parsed = JSON.parse(readFileSync(path, 'utf8'));
  • 读取本地文件
    lib/index.js:323
    const head = readFileSync(path, 'utf8').slice(0, 400);
  • 写入本地文件
    lib/index.js:575
    if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }); created.push(sub + '/'); }
  • 读取本地文件
    lib/index.js:575
    if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }); created.push(sub + '/'); }
  • 读取本地文件
    lib/index.js:581
    if (!existsSync(toolsSrc)) {
  • 写入本地文件
    lib/index.js:589
    copyFileSync(srcPath, dstPath);
  • 写入本地文件
    lib/index.js:603
    try { copyFileSync(dstPath, dstPath + '.bak'); } catch (error) { }
  • 写入本地文件
    lib/index.js:604
    copyFileSync(srcPath, dstPath);
  • 写入本地文件
    lib/index.js:618
    try { writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf8'); } catch (error) {
  • 写入本地文件
    lib/index.js:1156
    mkdirSync(this.ledgerDir, { recursive: true });
  • 删除本地文件
    lib/index.js:1177
    try { if (existsSync(tmp)) unlinkSync(tmp); } catch (error) { }
  • 读取本地文件
    lib/recall.js:180
    if (!existsSync(dir)) continue;
  • 读取本地文件
    lib/recall.js:182
    for (const name of readdirSync(dir)) {
  • 读取本地文件
    lib/recall.js:186
    try { text = readFileSync(join(dir, name), 'utf8'); } catch (error) { continue; }
  • 读取本地文件
    lib/recall.js:189
    try { fileMtime = statSync(join(dir, name)).mtimeMs; } catch (error) { fileMtime = 0; }
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-llm@deepseek-ai/dsh-typert-protocol
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的会话级经验账本监控:本次会话到底有没有查过账本、记下踩过的坑?

README

由 DeepSeek 最新模型翻译生成
dsh-ledger-watch · 避坑核对 目的:让模型真的去查经验账本、记下踩过的坑、修正失效的规则 —— 也就是自我提升 / 自我避坑 / 自我升级。 界面只是指示灯:显示「当前会话有没有启用这个避坑/提升功能」,以及规则库的健康度。 它不是审计系统,不是监控用户行为的工具,也不生产规则(规则由 lesson-ledger 账本生产)。 会话顶部 tab 里的「避坑核对」面板 上图是真实运行界面(会话 id 与证据文件路径已替换为占位符):顶部一行是启用指示灯(本会话有没有查经验账本),下面是结论条、本会话指标、事件时间线,页脚是规则库健康度与召回状态。 English summary What it is. A bundle plugin for DeepSeek Harness that answers one question per session: did this session actually consult the lesson ledger, and did it record the pitfalls it hit?
展开完整文档(README 剩余 1 节)
dsh-ledger-watch · 避坑核对

目的:让模型真的去查经验账本、记下踩过的坑、修正失效的规则 —— 也就是自我提升 / 自我避坑 / 自我升级。
界面只是指示灯:显示「当前会话有没有启用这个避坑/提升功能」,以及规则库的健康度。

它不是审计系统,不是监控用户行为的工具,也不生产规则(规则由 lesson-ledger 账本生产)。

会话顶部 tab 里的「避坑核对」面板

上图是真实运行界面(会话 id 与证据文件路径已替换为占位符):顶部一行是启用指示灯(本会话有没有查经验账本),下面是结论条、本会话指标、事件时间线,页脚是规则库健康度与召回状态。

English summary

What it is. A bundle plugin for DeepSeek Harness that answers one question per session: did this session actually consult the lesson ledger, and did it record the pitfalls it hit?

What problem it solves. "I'll remember not to repeat that mistake" is unverifiable. This plugin turns it into data you can check: a per-session indicator, a closing-report callout, and the rule base's health (rules needing rework / rules already revised).

What it is not. Not an audit system, not user-behaviour monitoring, and it does not produce rules — the rules live in the lesson-ledger skill; this plugin only reports whether they were used.

Optional auto-recall (default OFF). The host half can inject the most relevant ledger rules into the step as a system-reminder. It ships disabled because an independent acceptance pass measured ~69% precision on an 87–100 entry Chinese ledger; enable it with recallMode: 'high-confidence' only after reading the admission thresholds in the repo's own quality gate.

Zero runtime dependencies. The host half uses only Node built-ins; the browser half requires only React (provided by the host).

两个界面

| 界面 | 插槽 | 说明 |
| 会话顶部 tab「避坑核对」 | conversation.view(order 30,在「画廊」之后) | 主界面:启用指示灯 + 规则库健康度 + 本会话指标 + 事件时间线 + 其它会话 |
| 输入框下方药丸 | conversation.composer.dock(5 秒轮询) | ● 避坑 5 / 11,圆点颜色 = 结论;在本 tab 内随输入框一起隐藏且停止轮询 |

本 tab 在屏时会隐藏宿主输入框([data-composer-seat] + 把 --dsh-composer-height 归零),切走即恢复。

指示灯与判定口径

| 显示 | 含义 |
| 避坑功能已启用(绿) | 本会话查过账本(queries > 0) |
| 避坑功能未启用(红) | 本会话一次都没查过账本,但已经在动工具 |
| 结论 又查又记 / 查了没记 / 记了没查 / 未查询 / 无活动 | 由 queries 与 records 组合得出 |
| ⚠ 补记横幅 | needRecord:本会话有失败的工具调用,却一条坑都没记 → 收尾请用 add-lesson.ps1 补记 |

计数口径(2026-10-27 评审后收紧):

- 只认命令位真的调用了账本脚本(& …\brief.ps1、pwsh -File …\add-lesson.ps1、行首裸调用、任何路径形式);字符串字面量、注释、只是路径里出现 lesson-ledger 的无关命令都不算。
- 文件类工具:file_path 必须落在账本目录内;读证据文件本身不算(自指)。
- skill 工具加载 lesson-ledger 算一次查询。
- 失败的调用不算查询/记录(失败的 brief.ps1 没有产出任何信息)——只进事件流并计入 failures。
- 「记录 N」是动作次数,不等于「新增了 N 条坑」(同一条目反复编辑会重复计数)。

它怎么判断「这是不是一个坑」

它不判断。 插件不做语义判断,它只回答两个问题:这个会话有没有查过经验账本、有没有把坑记下来。判断「这段经历算不算坑」的是模型,判据写在账本技能与 ~/.dsh/AGENTS.md 里(用户纠正、同类错误第 2 次、失败原因不显然、实测与旧结论冲突、定位超 10 分钟)。

插件能做的是把可疑事件标出来,提醒模型回头看一眼。目前采集五类可观测信号:

| 信号 | 判据 | 对应的坑类型 |
| failures | 工具调用失败(ok:false / isError / 数字退出码 / 结果文本里的 [exit code: N]) | 失败原因不显然 |
| retries | 连续两次「同一工具 + 同一参数」(写类工具除外,它由下一项覆盖) | 同类错误第 2 次 |
| rewrites | 同一个文件被写/改到第 3 次及以上 | 之前理解错了 |
| corrections | 用户消息里出现纠正标记词(不对 / 错了 / 又犯 / 我说过 …)——只匹配标记词,不保存用户原文 | 用户纠正 |
| churn | 工具调用 ≥ 25 次却一条坑都没记 | 干了很多活、什么都没沉淀 |

当 records === 0 且任一信号非零时,面板出 ⚠ 横幅、收尾自报点名,并写出具体是哪些信号(例如「失败调用 2 次 · 用户疑似纠正 1 次」)。

边界:信号 ≠ 坑。失败调用可能只是探针故意跑失败;用户说「不对」也可能只是改需求。所以插件只提醒、不判定,也不会因为信号非零就自动往账本里写东西。

数据从哪来

宿主半边订阅 tools/result 与 session/event,把结果写成证据文件(宿主 console 模型读不到,只能落盘):

~/.agents/skills/lesson-ledger\.watch.json

关键字段:build、ledger{entries,relapse,revised}、writeFailures、client(客户端回报自己的 build)、
current{queries,records,calls,failures,enabled,needRecord,verdict,events}、sessions[]。

写入是原子替换(tmp + rename,Windows 瞬态错误退避重试,退避用尽降级为直接写),并会合并文件里已有的会话统计 —— 多实例或重启不会互相清空历史。

收尾自报里也会点名(tools\report.ps1 尾部「避坑功能」段):未查 / 踩坑未记都会打 ⚠。

安装与生效方式(重要)

本包是 bundle 型插件(浏览器半边只能靠 bundle 进启动载荷):

"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"client": { "platform": "web", "inject": [...] }
}

安装 / 更新(F 盘脚本会被 RemoteSigned 拦,必须带 -ExecutionPolicy Bypass) powershell -NoProfile -ExecutionPolicy Bypass -File F:\dsh\plugins\ledger-watch\install.ps1

| 改了什么 | 怎么生效 |
| lib/client.js(界面) | 跑 install.ps1 → 浏览器 Ctrl+F5(客户端按内容 rev 取新 bundle,不用重启) |
| lib/index.js(宿主) | 跑 install.ps1 → 必须重启 DSH web(bundle 的模块与客户端载荷都是启动时组合的) |

三处 id 必须逐字相同(否则静默跳过或报 duplicate factory registration): cordis.patch.yml 的 - insert[].name / package.json 的 name / lib/client.js 里 __ModuleLoader__.load({ id })(外加目录名)。

测试

node F:\dsh\plugins\ledger-watch\tests\run-all.mjs # 55 条:宿主 49 + 界面 6
界面用例会自动拉一个临时实例与无头 Edge(CDP,自签 cookie)。当前状态:55 / 55 通过。

已知限制

1. 只反映「本进程观测到的事实」:宿主重启后内存计数从零开始(证据文件里的历史会话会保留,但新进程不认它们的实时状态)。
2. 多实例共享同一个证据文件:两个实例交替写入时,谁最后写谁的内容在外层(会话统计已合并,build/diag 会是最后写入者的)。
3. 只能证明「工具调用层面」:它看不到「坑有没有记全」「规则有没有真的生效」——那要靠账本的复发记录与人工复核。
4. 界面文案与判定口径会随评审调整,以本文件 + 代码注释为准。

回滚

powershell -NoProfile -ExecutionPolicy Bypass -File F:\dsh\plugins\ledger-watch\uninstall.ps1 -RemovePackage
再从 profiles/web/package.json 的 dependencies 与 dsh.profile.bundles 里删掉 dsh-ledger-watch,重启 DSH。

目录

ledger-watch/
├── package.json # bundle + client 声明 ├── cordis.patch.yml # bundle 自带补丁层(插入宿主半边的 loader 行) ├── lib/index.js # 宿主半边:观测 + 统计 + 证据文件 + Remote 面(state/evidence/report) ├── lib/client.js # 浏览器半边:会话 tab + 药丸 ├── install.ps1 / uninstall.ps1 ├── tests/ # 55 条自动化用例(run-all.mjs) └── README.md

相关报告

- REVIEW-2026-10-27-visual.md 视觉验收 / REVIEW-2026-10-27-ux.md 信息架构
- REVIEW-2026-10-27-client-half.md 前端实现 / SECURITY-REVIEW.md 安全与健壮性
- AUDIT-2026-10-27-delivery-verification.md 交付取证与缺陷对账
预览分享卡片长什么样 ↓OldManDing/dsh-ledger-watch
分享 · DeepSeek Harness Hub
OldManDing/dsh-ledger-watch

检查本次会话是否查阅经验账本并记录踩过的坑

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部