记录已证伪的失败路径,证据变化时自动放行重试
31.5/100
综合分
3
GitHub 星标
278
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @akslcw/dsh-negative-ledgernpm 源 · @akslcw/dsh-negative-ledger 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 53 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@akslcw/dsh-negative-ledger @ 0.1.2
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 06:57:33
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 11 处,展示前 10 条)
- 读取本地文件dist/cli-D_Tn-BQa.mjs:116
if (!existsSync(this.dir)) mkdirSync(this.dir, { - 写入本地文件dist/cli-D_Tn-BQa.mjs:116
if (!existsSync(this.dir)) mkdirSync(this.dir, { - 读取本地文件dist/cli-D_Tn-BQa.mjs:123
if (!existsSync(this.#file)) return; - 读取本地文件dist/cli-D_Tn-BQa.mjs:124
const lines = readFileSync(this.#file, "utf8").split("\n"); - 写入本地文件dist/cli-D_Tn-BQa.mjs:162
appendFileSync(this.#file, `${JSON.stringify(line)}\n`, { mode: 384 }); - 写入本地文件dist/cli-D_Tn-BQa.mjs:325
appendFileSync(this.#file, `${JSON.stringify(line)}\n`, { mode: 384 }); - 读取本地文件dist/cli-D_Tn-BQa.mjs:682
if (!existsSync(this.dir)) mkdirSync(this.dir, { - 写入本地文件dist/cli-D_Tn-BQa.mjs:682
if (!existsSync(this.dir)) mkdirSync(this.dir, { - 读取本地文件dist/cli-D_Tn-BQa.mjs:1175
const lines = readFileSync(path, "utf8").split("\n"); - 读取本地文件dist/cli-D_Tn-BQa.mjs:1284
if (existsSync(join(dir, "ledger.db"))) return { backend: "sqlite" };
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 记录已证伪失败路径
- 证据变化自动放行重试
最近更新
在 GitHub 查看全部 →v0.1.22026-08-23
· 变更
· 声明 @deepseek-ai/dsh-tools >=0.1.1-rc.2 <0.2.0 为可选 peer,不安装第二份 DSH 运行时。
· 更新中英文兼容性说明与正式基准审计。
· 使用 deepseek-v4-flash、Harness 29d5790c91 完成 54/54 次正式实验,G1-G7 全部通过。
· 验证
· 113/113 测试通过
· 类型检查、构建、真实 DSH 挂载和独立 tarball 消费测试通过
· 隔离 DSH profile 安装成功,bundle 可见,未出现嵌套 dsh-tools
v0.1.12026-08-15
"# v0.1.1 — 一条命令安装", "", "自 0.1.0 的安装形态升级:现在是标准 DSH bundle,可被插件目录收录,核心逻辑冻结未变。", "", "## 一条命令安装", "", "", "dsh plugin --profile add @akslcw/dsh-negative-ledger", "", "", "安装即激活随包 bundle 层(dsh.bundle 清单 → cordis.patch.yml),生产默认值:sqlite 后端、warn 模式、.ledger 账本目录、默认 TTL。验证与卸载:", "", "", "dsh --profile --dump-config # 可见 \"@akslcw/dsh-negative-ledger\" 层与 negative-ledger 行", "dsh plugin --profile remove @akslcw/dsh-negative-ledger", "", "", "## 行为边界(与 0.1.0 一致,核心冻结)", "", "- 失败路径(command_failed / file_missing)连同结果与前置条件证据、指纹、重试条件持久化到 SQLite(WAL,多进程/多代理安全)。", "- warn(默认):重复尝试前经 inbox 注入提醒,绝不阻断;block:派发前 deny,账本不可用时 fail-closed。", "- 证据变化自动吊销:文件写入(fs/observed)使 file_missing 失效;命令失败按 after TTL 放行(默认 5 分钟,commandRetryAfterMs 可调)。", "- 诚实计数:duplicateFailuresObserved / warningsEmitted / callsDenied,无 token 估算。", "- 跨代理一致:父代理的失败结论对子代理生效(warn 注入 / block deny)。", "", "## 正式实验摘要(第五批,54/54 轮,deepseek-v4-flash,单一 harness commit)", "", "| 门槛 | 结果 |", "|---|---|", "| G1 Block 重复失败较官方 reminder 降低 ≥ 70% | 降低 100%(9 → 0) |", "| G2 Block 错误阻止 = 0 | 0 |", "| G3 合法重试放行率 = 100% | 6/6(s3 文件证据 3/3、s4 TTL 3/3) |", "| G4 Block 完成率 ≥ Baseline | 100% ≥ 100% |", "| G5 跨代理重复降低 ≥ 80% | 降低 100%(3 → 0) |", "| G6 Warn 重复压力轮注入提醒 | 全部注入 |", "| G7 账本计数与会话日志一致 | 一致 |", "", "审计:[benchmark/FORMAL-RESULTS.md;协议:benchmark/PROTOCOL.md", "", "## 本版本变更", "", "- 新增根目录 cordis.patch.yml 与 package.json 的 dsh.bundle 声明(patch 随 npm 包发布,files 白名单已含)。", "- 端到端验证:全新 DSH_HOME 下 dsh plugin add → dsh.profile.bundles 自动追加 → --dump-config 层可见 → 真实 headless 运行(warn 注入 + 默认 .ledger/ledger.db 创建)→ remove 后层消失、profile 仍可组合。", "- README Quick Start 改为一键安装;新增 smoke/plugin-add-smoke.ps1 干净环境五步 smoke;pack-test 增加 bundle 层随包校验。", "- CI:3 OS × Node 22/24 + 22.19 下限七项全绿;发布产物消费者 smoke(安装 tarball → ESM 入口 → sqlite store → bin)。", "", "npm: · 仓库: "", "\n\n---\n\n已发布到 npm:@akslcw/dsh-negative-ledger@0.1.1\n"]
v0.1.02026-08-14
"# v0.1.0 — 首个发布版", "", "DSH 原生、证据约束的持久负面记忆门禁:失败结论随环境证据自动生效和吊销,并在并发代理之间保持事务一致。", "", "## 核心能力", "", "- 失败结论持久化:command_failed / file_missing 带结果与前置条件证据、指纹、重试条件(SQLite WAL,多进程安全;JSONL 遗留后端)", "- 自动失效:文件证据变化(fs/observed)即吊销 file_missing;命令失败按 after TTL 放行", "- warn / block 双模式:warn 经 inbox 注入提醒(诚实计数);block 在派发前 deny(store 不可用时 fail-closed)", "- 跨代理一致:父代理的失败结论对子代理生效(warn 注入 / block deny)", "- 事务账本:原子决策(BEGIN IMMEDIATE + OCC revision)、重试租约(互斥 + 接管)、操作回执(幂等重放)、崩溃恢复", "- 诚实计数:duplicateFailuresObserved / warningsEmitted / callsDenied,无 token 估算", "", "## 正式基准(formal,54 轮,deepseek-v4-flash,单一 harness commit)", "", "| 门槛 | 结果 |", "|---|---|", "| G1 Block 重复失败较官方 reminder 降低 ≥ 70% | 降低 100%(9 → 0) |", "| G2 Block 错误阻止 = 0 | 0 |", "| G3 合法重试放行率 = 100% | 6/6(s3 文件证据 3/3、s4 TTL 3/3) |", "| G4 Block 完成率 ≥ Baseline | 100% ≥ 100% |", "| G5 跨代理重复降低 ≥ 80% | 降低 100%(3 → 0) |", "| G6 Warn 重复压力轮注入提醒 | 全部注入 |", "| G7 账本计数与会话日志一致 | 一致 |", "", "审计摘要:[benchmark/FORMAL-RESULTS.md;协议:benchmark/PROTOCOL.md", "", "## 质量", "", "- 3 OS(Ubuntu/Windows/macOS)× Node 22/24 + 22.19.0 下限,CI 7/7 绿", "- 双进程验收(同库竞争、kill 点崩溃恢复、租约接管、导入回滚)+ 发布产物消费者 smoke", "- 94+ 单元测试;better-sqlite3 v13 官方预编译产物(无编译工具链依赖)", "", "## 安装", "", "", "npm i @akslcw/dsh-negative-ledger", "", "", "DSH 组合挂载(overlay 示例):", "", "", "- insert:", " - id: negative-ledger", " name: @akslcw/dsh-negative-ledger", " config:", " backend: sqlite # 默认;jsonl 为遗留后端", " mode: warn # warn | block | off", " dir: .negative-ledger", "", "", "\n\n---\n\n已发布到 npm:@akslcw/dsh-negative-ledger@0.1.0\n"]
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-negative-ledger
给编码 Agent 用的失败知识账本。它只记录已被证伪的路径——失败的命令、不存在的文件、被否定的方案、不可用的 API——连同每条结论背后的证据、以及何时可以重试。证据变化时,结论自动失效。
不是什么
- 不是 memory:不存正面知识、不做语义回忆。
- 不是 cache:存的是结论,不是工具结果。
- 不是 bug regression tracker:覆盖任意工具调用与文件读取,而非仅 bug 修复。
核心循环
1. 一次工具调用失败(非零退出码、FS_NOT_FOUND 等)→ 记录一条负结论:outcome 见证(退出码、错误码)+ precondition 见证(来自 DSH fs/observed 的文件状态)。
2. 下一次相同尝试按指纹命中(规范化命令 + cwd,或文件路径)。
3. 只要所有 precondition 见证未变,该尝试被提醒(warn 模式)或阻止(block 模式)。
4. 任一 precondition 变化 → 结论变 stale,提醒自动撤销、允许重试;重试成功 → resolved。
差异化:DSH 原生、证据约束的持久负面记忆门禁——失败结论随环境证据自动生效与吊销,并在并发代理之间保持事务一致。
展开完整文档(README 剩余 1 节)
dsh-negative-ledger 给编码 Agent 用的失败知识账本。它只记录已被证伪的路径——失败的命令、不存在的文件、被否定的方案、不可用的 API——连同每条结论背后的证据、以及何时可以重试。证据变化时,结论自动失效。 不是什么 - 不是 memory:不存正面知识、不做语义回忆。 - 不是 cache:存的是结论,不是工具结果。 - 不是 bug regression tracker:覆盖任意工具调用与文件读取,而非仅 bug 修复。 核心循环 1. 一次工具调用失败(非零退出码、FS_NOT_FOUND 等)→ 记录一条负结论:outcome 见证(退出码、错误码)+ precondition 见证(来自 DSH fs/observed 的文件状态)。 2. 下一次相同尝试按指纹命中(规范化命令 + cwd,或文件路径)。 3. 只要所有 precondition 见证未变,该尝试被提醒(warn 模式)或阻止(block 模式)。 4. 任一 precondition 变化 → 结论变 stale,提醒自动撤销、允许重试;重试成功 → resolved。 差异化:DSH 原生、证据约束的持久负面记忆门禁——失败结论随环境证据自动生效与吊销,并在并发代理之间保持事务一致。 快速开始:一条命令安装 dsh plugin --profile add @akslcw/dsh-negative-ledger 安装并激活 bundle 层:随包发布的 cordis.patch.yml(由 dsh.bundle 清单声明)以生产默认值挂载账本策略——sqlite 后端、warn 模式、.ledger 目录、默认 TTL。先不启动、验证组合,再启动: dsh --profile --dump-config # 可见 "@akslcw/dsh-negative-ledger" 层与 negative-ledger 行 dsh --profile # 启动 卸载:dsh plugin --profile remove @akslcw/dsh-negative-ledger。干净环境端到端 smoke(安装 → 层可见 → headless warn + sqlite 账本 → 卸载 → profile 仍可启动):powershell -File smoke/plugin-add-smoke.ps1。 pnpm 11 注意:pnpm ≥11 把「忽略构建脚本」升级为硬错误,add 会以 ERR_PNPM_IGNORED_BUILDS: better-sqlite3 失败。better-sqlite3 随包自带官方预编译产物,被忽略的脚本完全无害、不需要编译。在 profile 目录执行 pnpm config set --location project strict-dep-builds false 后重跑 add 即可。(若改为允许构建,则会从源码编译 better-sqlite3,需要 C++ 工具链。) 仅引擎 + CLI(checkout 内调试,不挂 DSH 组合): node src/cli.ts --dir .ledger stats node demos/run-demos.ts # S1 命令去重 / S2 缺失文件去重 / S3 证据失效,自带验收断言与节省报告 要求 Node ^22.19.0 || >=24.0.0(与官方 DSH 的 engines 范围对齐)。 CLI node src/cli.ts [--dir ] [--backend sqlite|jsonl] | stale | stats> 显式 --backend 优先;否则按目录自动识别(ledger.db → sqlite、ledger.jsonl → jsonl);两者皆无时使用主后端 sqlite。 | 命令 | 输出 | | list | 全部事实:status、kind、id、claim | | show | 单条事实的格式化 JSON | | stale | 因证据变化而失效的事实 | | stats | 三个诚实指标:重复失败观察、警告发出、调用阻止 | 引擎 API 两个存储后端共用同一 LedgerStore seam:默认的事务性 SQLite 存储(SqliteLedgerStore:WAL、revision 乐观并发、操作收据、retry lease、JSONL 导入)与旧版单进程 JSONL 存储(JsonlLedgerStore)。 - getFact(scope, kind, fingerprint) / queryFacts(filter) — 当前事实(含 revision 与活跃 lease 摘要)。 - commitAttemptDecision(request) — 唯一裁决入口:deny / observe-warn / verify-retry(allow 与 stale-allow 都竞争 lease);revision 冲突重读重算。 - recordFact(input, meta) — 记录被证伪的路径;重复追加同一 id 的版本;按操作收据与 (fact, toolCallId, operation_kind) 幂等。 - transitionFacts(batch, meta) — 批量全或无的状态转换(一次 FS observation 可失效多个 fact)。 - settleLease(settlement) — 持有者的重试结果:成功 → resolved,失败 → 新证据版本,取消 → 事实不动。 - summarize(scope?) — 三个诚实指标:duplicateFailuresObserved / warningsEmitted / callsDenied。不做 token 估算——那归轨迹实验室(#4)的 A/B 与回放 diff。 DSH 接入 兼容性:已在 @deepseek-ai/dsh-tools 0.1.1-rc.2 上验证。包中以可选 peer 声明 >=0.1.1-rc.2 <0.2.0,既标明支持的 DSH 事件接口范围,也不会额外安装第二份 DSH 运行时。 随包发布的 bundle 层即: - id: negative-ledger name: '@akslcw/dsh-negative-ledger' 在更后层的 patch(你的 profile 的 cordis.patch.yml)中按 id 覆盖该行——patch 会整体替换 config,改哪个键就重写全部: - id: negative-ledger name: '@akslcw/dsh-negative-ledger' config: backend: sqlite # sqlite(默认,事务性)| jsonl(旧版单进程) mode: block # off | warn | block(默认 warn) dir: .ledger # 账本目录(默认 .ledger) commandRetryAfterMs: 300000 # 自动记录的命令事实的重试 TTL commandTools: [bash, pwsh] # 记录为 command_failed readTools: [read] # 记录为 file_missing - 存储连接与后台失效队列由插件 fiber 持有:卸载时先 drain 队列再关闭存储(HMR 安全)。 - warn(默认):在 tools/post-execute 注入 additionalContexts;绝不阻止、绝不改写工具结果。 - block:在 tools/pre-execute 派发前 deny。被 deny 的调用仍会流经 post-execute,插件以自己的 deny 前缀识别并跳过,同一次尝试绝不双计。 - 自动记录的命令事实带短 after TTL(commandRetryAfterMs,默认 5 分钟):block 模式到期自动放行,不会因瞬时故障永久锁死命令。never/manual 只留给显式、可信来源记录的事实。 - off:完全关闭记录与拦截。 - fs/observed 事件(present+version 或 absent)与 file-state 前提见证一一映射;通过 actor 关联发出观察的 exec,模型传入路径(按 session cwd 作用域化)与解析后的 displayPath 双键见证同一事实;每次观察变化即驱动失效,全程无需自己哈希文件。 - 成功结果经结算或无 lease 转换达成 resolved——重试成功后提醒撤销。 - 账本跨代理共享(子代理不重复父代理的失败);计数在 sqlite 后端为事务列,在 jsonl 后端为追加式 hit 行。 安全姿态: - claim 绝不包含原始命令文本;模型可见的预览经控制字符清理并限长。原始命令保留在账本文件里(它就是指纹)——文件以 0600 写入、目录 0700。 - 账本内容以引用的数据渲染,绝不当作指令注入。 - 单写者 JSONL 仅限旧版后端;sqlite 后端为多进程(WAL)。 与 repeat-tool-reminder 的边界:它是对会话内连续字节级重复的临时提醒;本账本是跨会话、绑定证据、自动失效的持久知识。 重试判定与提醒频率 未配置命令依赖,或缺少完整、新鲜的执行前观察时,命令失败只记录失败结果与冷却时间;此时即使文件已修复,也要等 TTL 到期才能在 block 模式下重试。提示会明确说明依据和冷却到期时间,不再把缺少证据称为“证据未变”。文件事实的当前证据缺失仍沿用保守裁决,但提示明确标为不完整。 warningRepeatAfterMs 默认 60000:同一策略实例、会话和事实的重复提醒在该间隔内去重;设为 0 可关闭去重,单独评估提示文案。失败证据改变、间隔到期或合法验证重试会允许再次提醒。去重仅保存在内存,每个会话最多 256 条;其他会话独立提醒,block 拒绝原因始终返回。 提醒不再附带累计统计;使用 CLI stats 查看。被去重的重复失败仍计入 duplicateFailuresObserved,只有实际附加的重复提醒增加 warningsEmitted。这一变化尚未进行在线成本实验,不能据此宣称节省 token。开发验收与 P2 边界见 重试契约。 显式命令依赖 可在插件 config 中加入以下配置,让已观察的依赖变化允许提前验证重试: commandEvidenceMaxAgeMs: 60000 commandDependencies: - tool: bash commandLine: npm test cwd: /workspace/my-project files: - /workspace/my-project/package.json - /workspace/my-project/test.config.js tool、完整命令文本和有效 cwd 必须精确匹配;files 使用 DSH 的绝对 displayPath,不支持 glob 或自动解析 shell。必须在命令执行前收到全部依赖的 fs/observed;声明文件不等于已经观察。观察接收超过 commandEvidenceMaxAgeMs(默认 60 秒)视为未知,继续使用 TTL。插件不增加文件读取或哈希。 失败记录保存执行前的观察快照;执行中或执行后才观察到的状态不会回填到这次快照。相关依赖新观察发生变化时允许验证,无关文件变化不影响;允许验证不代表成功,只有成功执行才标为 resolved。其他进程和重启后的实例需要重新接收观察。未配置时保持原行为。 已知限制与后续 - 单写者 JSONL(旧版):backend: jsonl 保留 v0 单进程存储,供迁移与调试;该后端不支持多进程并发写。默认的 backend: sqlite 是事务性 WAL 存储,带唯一索引、幂等操作收据与崩溃恢复。 - 命令指纹使用调用 agent 的 session cwd;沙箱策略覆盖的 workspace root 对插件不可见。原始命令文本完整保留(不压缩空白),语义不同的 shell 程序不会碰撞,但等价改写的命令会各算一条。 - 非零退出码不总是"路径被证伪"(如 grep 无匹配退出 1);短 TTL 与 warn 默认姿态限定了损害,按工具细分记录策略留待后续。 - v0 只做指纹精确匹配,无语义相似检索。 - approach_rejected、api_unavailable 两类已进数据模型,尚未接线到工具。 - 有意不做 token 估算;轨迹实验室(#4)拥有 A/B 与回放 diff。 - 后续接缝:子代理契约结果携带 failed_attempts(#1)、active/stale 负结论投影进任务检查点(#3)、轨迹回归统计重复失败率(#4)、高风险失败路径提升为 fail-closed 规则(#2)。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
akslcw/dsh-negative-ledger
记录已证伪的失败路径,证据变化时自动放行重试
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1