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

会话日志脱敏 L-ingqin12/dsh-redaction

DeepSeek Harness
L-ingqin1253 天前有提交已提供中文文档扫描:未发现敏感能力

拦截并清理会话日志中的敏感内容,防止泄露

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add L-ingqin12/dsh-redaction
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-redaction(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 02:03:38

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 拦截会话日志敏感内容
  • 原地脱敏处理
  • 防止敏感信息泄露

DeepSeek Harness 会话日志的原地脱敏与拦截策略——两个 Cordis 插件,外加背后的平台调研

README

由 DeepSeek 最新模型翻译生成
dsh-redaction 为 DeepSeek Harness 提供的两个插件,以及催生它们的平台研究。 它们解决的问题是:一次公开网络搜索、一条 gh 命令、一次日志抓取——任何工具都可能返回你不应保留的内容。在 DSH 中,这些内容不仅仅是流经而已:存储的 tool/result 事件就是面向模型的消息,因此一次写入就会把它同时提交到持久会话日志和未来每一次的提供商请求中。如果它属于提供商的內容过滤器会拒绝的那类内容,那么该轮次就会失败——而且之后的每一轮也会失败,因为历史记录会一直携带它。 两个包 | 包 | 层级 | 作用 | | dsh-plugin-content-policy | 预防 | 在 tools/execute 瀑布流上应用规则和结构化剥离,在结果被持久化之前执行。重写结果的 value,因此渲染出的文本和持久化的 meta 会一起被清理。 | | dsh-plugin-redact | 补救 | 对已有的 session.vN.jsonl.zstd 日志进行就地脱敏和回滚,由 dsh-tui 内部驱动。包含一个帧级引擎(也可作为 dsh-redact CLI 使用)、会话内实时 hide、轮次回滚和撤销。 | 它们被刻意分开:预防无法处理已经落盘的内容,而补救对下一次搜索结果无能为力。
展开完整文档(README 剩余 1 节)
dsh-redaction

为 DeepSeek Harness 提供的两个插件,以及催生它们的平台研究。

它们解决的问题是:一次公开网络搜索、一条 gh 命令、一次日志抓取——任何工具都可能返回你不应保留的内容。在 DSH 中,这些内容不仅仅是流经而已:存储的 tool/result 事件就是面向模型的消息,因此一次写入就会把它同时提交到持久会话日志和未来每一次的提供商请求中。如果它属于提供商的內容过滤器会拒绝的那类内容,那么该轮次就会失败——而且之后的每一轮也会失败,因为历史记录会一直携带它。

两个包

| 包 | 层级 | 作用 |
| dsh-plugin-content-policy | 预防 | 在 tools/execute 瀑布流上应用规则和结构化剥离,在结果被持久化之前执行。重写结果的 value,因此渲染出的文本和持久化的 meta 会一起被清理。 |
| dsh-plugin-redact | 补救 | 对已有的 session.vN.jsonl.zstd 日志进行就地脱敏和回滚,由 dsh-tui 内部驱动。包含一个帧级引擎(也可作为 dsh-redact CLI 使用)、会话内实时 hide、轮次回滚和撤销。 |

它们被刻意分开:预防无法处理已经落盘的内容,而补救对下一次搜索结果无能为力。

dsh plugin --profile add ./packages/dsh-plugin-content-policy
dsh plugin --profile add ./packages/dsh-plugin-redact
dsh --profile --dump-config # confirm both rows composed

/redact pick——即键盘可选择的节点列表——默认关闭:当审批面板处于待处理状态时,该模态对话框可能会锁住 TUI 键盘。机制详见 docs/01-platform/dsh-tui-internals.md,一行式启用方式见该包 README。

背后的研究

docs/reports/ 中的一切内容都是通过阅读已安装的部署并运行它而确立的——并非来自文档,因为文档并未覆盖其中大部分内容。这些是原始产物,保留下来是因为结论的可靠性取决于证据:

| 路径 | 内容 |
| reports/redteam/ | 对脱敏工具的红队审查:十项发现,附机制、复现脚本,以及以读者为判据的结论。其中两项会使会话永久无法打开,而工具却报告成功。 |
| reports/fix/ | 修复方案,附每项发现的前后输出对比,以及测试套件结果 |
| reports/dialog-root-cause/ | 插件对话框为何会锁住终端键盘:确切的三部分机制、死锁状态矩阵,以及独立复现脚本 |
| reports/dialog-contract/ | 真实的 tuiDialogs 契约——校验边界、promise 语义、唯一的抛出路径,以及能否在打开模态框之前检测到渲染器(不能) |
| reports/boot-verify/ | 真实 boot() 路径的复现:加载/激活扫描、配置边界矩阵、双轨 Config 对比,以及证明 --dump-config 完全不导入插件模块 的测量 |
| reports/surveys-existing-plugins.zh.md | 在撰写本文之前 DSH 插件生态系统中已经存在的内容,以及每个近似方案止步于何处 |

一组综合的平台笔记(会话日志格式、持久化内部机制、工具结果流水线、TUI 的扩展面、缺陷目录以及流程回顾)存放在作者的本地 Obsidian 仓库中,而非此处,因为它是按照该仓库的链接和元数据约定撰写的。

验证状态

| 套件 | 断言数 |
| dsh-plugin-redact 处理器 | 248 |
| dsh-plugin-redact 回归(以真实读取器为基准) | 54 |
| dsh-plugin-redact 加固 | 78 |
| dsh-plugin-redact 引擎 / CLI | 34 |
| dsh-plugin-content-policy(4 个套件) | 103 |

dsh-plugin-redact 引擎还通过使用真实的 JsonlSessionPersistence.open() 打开其输出进行额外验证;仅运行工具自身自检的套件不被接受为证据(这个错误曾导致一个缺陷被发布——参见回顾)。

需要 Node >= 22.15 以使用 zlib zstd API。插件本身没有运行时依赖——只有可选的 peer 依赖。

在本地复现这些检查

cd packages/dsh-plugin-redact && npm test # engine 34 + handler 248 + torn-tail 11 + CLI smoke
cd packages/dsh-plugin-content-policy && npm test # the two pure suites: 45 + 36
node .github/scripts/portability.selftest.mjs # from the repo root
node .github/scripts/pack-check.mjs # from the repo root

.github/workflows/ci.yml 在 ubuntu-latest 和 windows-latest 上,跨 Node 22.15、22.x 和 24.x 运行这些相同的命令。需要真实 DSH 安装的套件被有意地不纳入 CI:它们从 DSH_HOME 推导安装位置,并在其缺失时以 3 退出,而不是空洞地通过。

如果你在 Windows 上开发,你可以在推送前复现 Linux 分支,而不必等待一次失败的构建。WSL 就足够了——不需要 Docker:

curl -fsSL https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-x64.tar.xz | tar -xJ -C /opt
/opt/node-v22.21.0-linux-x64/bin/node test/engine.selftest.mjs

为什么存在可移植性防护

第一次 CI 运行在 37 秒后失败:test/preflight.mjs 读取了 process.env.USERPROFILE,而它在 Linux 上是 undefined,因此 path.join(undefined, '.dsh') 抛出了 ERR_INVALID_ARG_TYPE。该文件位于 npm files 允许列表中,因此每个运行 npm test 的非 Windows 消费者都会遇到它。仅在 Windows 上运行测试无法发现这一类缺陷——它恰恰在它被编写的地方不可见。
因此,.github/scripts/portability.mjs 会静态扫描两个包中已发布的代码和测试,以查找四种仅适用于 Windows 的假设:

| 规则 | 它捕获的内容 |
| win-only-env | 使用 USERPROFILE / HOMEDRIVE / APPDATA / LOCALAPPDATA 时,后面没有紧跟 ?? 或 \|\| 回退 |
| import-meta-pathname | import.meta.url 与 .pathname 组合使用,这会在包含空格的路径中留下 %20 |
| hardcoded-win-path | 字符串字面量中硬编码的驱动器号 |
| path-win32 | path.win32,它会在所有平台上强制使用 Windows 语义 |

win-only-env 的规则刻意针对变量,而不是行:DSH_HOME ?? path.join(process.env.USERPROFILE, '.dsh') 包含 ??,但仍然是坏的。

它的自测正是其意义所在。portability.selftest.mjs 将真实的 USERPROFILE 缺陷重新注入 preflight.mjs,断言该守卫失败并指出文件名和正确的行号,然后在 finally 中恢复该文件。一个不会失败的守卫比没有守卫更糟,而硬编码到测试中的行号就是一个会因错误原因而变红的守卫。

为什么会有打包检查

每个 package.json 中的 files 允许列表是手工维护的,而 index.js 导入 lib/engine.mjs,同时 bin/dsh-redact.mjs 又第二次导入它。添加一个导入却忘记允许列表条目,这里的每个检查都会保持绿色,而发布的包却缺少一个文件——这种失败只有使用者才能看到。

.github/scripts/pack-check.mjs 询问 npm 它实际会发布什么(npm pack --dry-run --json),然后遍历已发布入口点内的每个相对导入,并要求每个解析后的目标都在该 tarball 中。它还断言测试运行中的任何内容(fixture.、plan-.json、needle.txt、broken.zstd)都不会被一并带上。从允许列表中移除 lib/engine.mjs 会让它按名称报告两个导入方。

License

MIT — 见 LICENSE。

维护者:PUBLISHING.md 涵盖了 npm 发布步骤和发布前门禁。
预览分享卡片长什么样 ↓L-ingqin12/dsh-redaction
分享 · DeepSeek Harness Hub
L-ingqin12/dsh-redaction

拦截并清理会话日志中的敏感内容,防止泄露

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