鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册

dsh-verification-receipt

把每轮工具计数与粗粒度验证信号写入本地 JSONL,不保存提示词、工具参数或结果正文。

安全权限
访问 GitHub
文档README

DSH Verification Receipt

English

awesome · DSH plugin

DSH Verification Receipt 社交预览图

回答一个范围更小、可以检查的问题:这一轮中,DSH 记录了哪些形似验证操作的执行信号?

▼
sh
复制代码
dsh plugin --profile web add dsh-verification-receipt

Receipt 汇总已记录的工具计数与词法层面的形似验证信号;它不能证明测试确实运行,也不能证明代码正确。

由社区维护,并非 DeepSeek 官方项目。相关 trust-layer 插件:Telemetry Redactor、Evidence Audit 与 Context Provenance。

DSH Verification Receipt 是一个面向 DeepSeek Harness 的小型、被动式 Profile Bundle。每次耐久的 turn/end 到达后,它会向本地 JSONL 文件追加一条隐私最小化、启发式执行摘要。

Verification Receipt 数据流

它记录执行痕迹,不证明语义正确。凭证只能说明 DSH 记录了工具调用,并且词法启发式发现了可能的验证信号;它永远不能证明“测试已运行”,也不能说明正确命令得到执行、断言充分、输出真实或助手结论正确。

它有意不做 evidence-audit 账本:各行保持独立,不引入哈希链、产物捕获、claim-evidence 关联或协议证明。

兼容性证据

本包以 DeepSeek Harness 提交 47f943859bef60e4160492346772ded9b24f765a 为审计基线;该提交的 manifest 声明 @deepseek-ai/dsh-session 0.1.0-rc.5、Cordis 4.0.1 和 Schemastery 3.18.1。peer 范围从这些版本开始,在 dsh-session 稳定版 0.1.0 或 Cordis/Schemastery 下一个 semver 主版本之前结束。发布检查也覆盖当前可安装的 dsh-session 0.1.0-rc.6。范围内但未在此点名的版本只是兼容预期,不是实测证据。Cordis 和 Session 由 DSH 宿主提供,因此标为 optional peer;Schemastery 既以精确版本作为运行时依赖,也声明为兼容性 peer。

安装

把已发布的包加入需要生成凭证的每个 profile:

▼
sh
复制代码
dsh plugin --profile web add dsh-verification-receipt dsh --profile web --dump-config

如果其他 profile(例如 headless)也需要凭证,请换用对应 profile 名重复第一条命令。本地开发时,克隆本仓库并运行 pnpm install --frozen-lockfile && pnpm run check,再把 checkout 路径而不是包名传给 dsh plugin ... add。

package.json 声明 dsh.bundle.patch;cordis.patch.yml 插入一个普通观察插件。任何提供核心 Session 服务的 DSH 输出面都可以使用它。

输出

下图来自发布版插件处理合成、非用户 DSH 事件后生成的真实 receipt;右侧只展示部分落盘字段。它不是用户会话,也不证明测试运行或通过。

合成夹具产生的真实 Verification Receipt 输出

默认文件为:

▼
text
复制代码
$DSH_HOME/verification-receipts/v1/receipts.jsonl

DSH_HOME 未设置时,路径解析到 ~/.dsh 下。可以在 profile 的 cordis.patch.yml 中用绝对路径覆盖:

▼
yaml
复制代码
- id: verification-receipt config: outputPath: /absolute/private/path/receipts.jsonl

每行格式如下:

▼
json
复制代码
{ "schemaVersion": 1, "kind": "dsh-verification-receipt", "sessionIdHash": "sha256:…", "turn": 3, "turnEndSeq": 42, "endedAt": 1786630000000, "outcome": "completed", "tools": { "calls": 4, "succeeded": 3, "failed": 1, "unresolved": 0, "topLevel": 2, "nested": 2 }, "verificationSignals": [ { "source": "command", "category": "test", "status": "failed" } ], "claim": "execution-trace-only", "receiptHash": "sha256:…" }

完整性警告

两个 hash 都没有密钥,均可重算。receiptHash 是对其前面全部凭证字段按输出顺序计算的 SHA-256;能编辑一行的人也能重新计算它。独立行无法暴露删除、插入、重排、截断、回滚或替换。它不是签名、可信时间戳、哈希链、承诺或防篡改日志。

隐私与 Agent 行为

Receipt 保留与排除字段边界

落盘凭证不包含:

  • 工具参数或 call id;
  • 工具结果正文或错误消息;
  • 助手或用户消息正文;
  • 原始 session id、工作目录、provider 名称或模型名称。

插件会暂时读取已有耐久事件里的工具名称、原始参数和结果状态来计算汇总,但不会持久化这些输入。它不追加 Session 事件、不注册工具、不添加 prompt 段、不注入上下文、不发起模型调用,也不改变模型历史。

sessionIdHash 是确定性、无密钥且带域分隔的 SHA-256,用于在不保存原始 id 的前提下将同一 Session 的凭证分组。它可跨文件关联。如果 Session id 可预测或熵低,观察者可以离线猜测候选值并重算 hash;这是化名化,不是匿名化。

验证信号启发式

以下情况会产生启发式信号:

  • 工具名称类似 test、typecheck、lint、build、check、verify 或 validate 工作;或者
  • 类 shell 工具在内存中的 command 或 cmd 参数类似上述工作。

落盘信号只保留 source、粗粒度 category 和观察到的 status。DSH 原生工具错误以及可识别的非零 shell 退出标记计为失败。后台命令保持 unresolved,因为后续 job 结果可能发生在本轮之外。即使是 status: succeeded,也只表示观察到的调用没有已识别失败标记;它不表示测试通过,甚至不表示测试确实运行。

分类只做词法匹配,不解析 shell 语义、不展开别名,也不执行命令:

输入形态支持情况边界
JSON 字符串或对象参数中的字符串 command/cmd支持只检查已识别的类 shell 工具名。
大小写、引号,或可见的 bash -lc/pwsh -Command wrapper词法支持分类关键词必须仍在字符串中可见。
数组命令、argv、嵌套命令对象、自定义 shell 工具名不支持不产生信号。
不含可见分类关键词的别名或 wrapper不支持预期存在漏判。
echo "do not run tests" 一类引用文本会被词法匹配因为不解析意图与执行,预期存在误判。

每个匹配都只能称为“启发式信号”,绝不能称为“测试已运行”,也不能作为证明或质量门禁。

模型体验

方面影响
Token 成本无。
工具调用无;模型不会获得新工具。
Session 日志不变;插件只读已有事件,不添加事件。
Prompt 与上下文不变。
Turn 延迟监听器同步扫描已结束的 turn,并排队本地文件 I/O;turn 路径不等待磁盘。

已知限制

  • 凭证只覆盖插件运行期间观察到的事件;不会回填构造 seed 历史或插件卸载期间结束的 turn。
  • 进程崩溃可能丢失尚在队列中的凭证,因为 turn/end 不会同步等待这个可选本地 sink;正常卸载插件或应用时会排空已接收写入。
  • 卸载时先关闭 enqueue 闸门,再移除 listener,最后排空已接收写入;进程被突然终止时无法运行该生命周期。
  • 各行彼此独立,无法检测删除、重排、截断或回滚。
  • 凭证状态复述 DSH 记录的工具结果和可识别的 shell 标记,不会独立执行或验证任何内容。
  • 投影成本随单轮事件的数量和大小增长;异常大的工具参数在内存分类时可能增加 turn 结束阶段的 CPU 时间。
  • 进程内写入队列有序但无界;缓慢或卡死的文件系统会持续增加内存占用,直至写入恢复或进程结束。
  • 没有跨进程锁。两个 DSH 进程同写一个文件时,行顺序和行边界完整性均无保证;应每进程使用独立文件。崩溃可能留下不完整尾行,读取方必须拒绝或隔离它。
  • 创建模式只在支持的 POSIX 文件系统上请求 0700/0600;不会收紧已有权限,Windows 可能忽略 POSIX mode,并且会跟随预先存在的符号链接。请配置可信、私有且非符号链接的路径。
  • 文件没有内建轮转、保留策略、加密、签名或恢复机制。

信任与漏洞披露模型见 SECURITY.md。

开发

▼
sh
复制代码
pnpm run typecheck pnpm run test pnpm run build pnpm run check pnpm run release:smoke pnpm run performance:smoke

测试覆盖隐私排除、确定性 hash、顶层与 Code Mode 最终状态、分类支持/不支持矩阵、监听器释放、磁盘排空,以及真实 DSH Context + SessionStore 组合。release:smoke 会锁定 tarball 精确文件清单,把真实 .tgz 安装进临时项目,并按包名导入。

许可证

MIT

安全权限

快捷安装

复制到终端去安装插件

dshplugin--profilewebadddsh-verification-receipt

温馨提示

装插件等于在本机跑第三方代码,权限与你相同,能读文件、用凭据、访问网络,工具审批管不到。请只装可信来源,并尽量锁定 commit。

站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题
dsh 插件推荐
cc-safety-net
执行前守卫,在工具调用运行前拦截破坏性 Git 与文件系统命令,以及对 SSH 密钥、.env 等机密文件的访问。
dsh-workspace-write-plus
增加工作区修改++权限档,文件工具仍锁在工作区,可用通配符放行 Git Bash 等程序以跳过 Windows 进程沙箱。
user-management
用户管理:给 dsh web 加登录门禁,未登录访问弹登录/注册页,首个注册者自动成为管理员;管理员可管理用户/角色,带登录与访问审计。
dsh-security-guard
DSH 插件安全卫士:28 条规则静态扫描、风险评分、白名单/黑名单、本地 Web 仪表盘与 DSH 内风险弹窗。
dsh-route-fence-linter
审计 profile 内所有插件 HTTP 路由的浏览器信任围栏:插件路由在 Web 服务器的最长前缀匹配中优先,因此缺少围栏的路由会被静默暴露;逐条给出文件与行号级别的证据。