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

密钥粘贴拦截 zhujiaqi/dsh-secret-paste

DeepSeek Harnessv0.2.0
zhujiaqi77 天前有提交已提供中文文档扫描:未发现敏感能力

拦截粘贴的密钥,只把占位符发给模型

29.2/100
综合分
3
GitHub 星标
45
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-secret-paste
npm 源 · dsh-secret-paste 的发布者账号已校验与本仓库一致

状态速览

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

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-secret-paste @ 0.2.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 01:16:44

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

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

扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

功能亮点

  • 检测粘贴密钥
  • 密钥存入凭据接缝
  • 发送占位符给模型

DeepSeek Harness 插件:检测粘贴的密钥,存进凭据接缝,只把 [secret:REF] 占位符发给模型。

README

由 DeepSeek 最新模型翻译生成
dsh-secret-paste 一个 DeepSeek Harness 插件:拦截粘贴进输入框的密钥,存入官方凭据存储,并只把 [secret:REF] 占位符发给模型。真实值永远不会出现在消息、会话历史或任何转录里。 npm MIT DSH 🌐 中文 | English:README.md 为什么需要它 你把 API Key 或 token 粘进对话框。没有保护的话,它会直接进模型、进会话日志——这正是密钥最不该出现的地方。这个插件拦截粘贴,把值存入 DSH 官方凭据存储(~/.dsh/.credentials.yaml,权限 0600),并在草稿里替换成 [secret:REF]。 模型只会看到占位符,需要真实值时再通过专门工具按需读取。 工作方式 | 步骤 | 行为 | | 检测 | 对粘贴文本运行 @sanity-labs/secret-scan(源自 gitleaks / TruffleHog 的 1100+ 条规则)。 | | 存储 | 通过官方 credentials.set Web API 写入值——不新增任何服务端路由。 | | 替换 | 命中的片段在草稿中变成 [secret:PASTE_N]。 | | 取用 | 模型需要真实值时调用 secret_resolve(ref) 工具。
展开完整文档(README 剩余 1 节)
dsh-secret-paste

一个 DeepSeek Harness 插件:拦截粘贴进输入框的密钥,存入官方凭据存储,并只把 [secret:REF] 占位符发给模型。真实值永远不会出现在消息、会话历史或任何转录里。

npm
MIT
DSH

🌐 中文 | English:README.md

为什么需要它

你把 API Key 或 token 粘进对话框。没有保护的话,它会直接进模型、进会话日志——这正是密钥最不该出现的地方。这个插件拦截粘贴,把值存入 DSH 官方凭据存储(~/.dsh/.credentials.yaml,权限 0600),并在草稿里替换成 [secret:REF]。
模型只会看到占位符,需要真实值时再通过专门工具按需读取。

工作方式

| 步骤 | 行为 |
| 检测 | 对粘贴文本运行 @sanity-labs/secret-scan(源自 gitleaks / TruffleHog 的 1100+ 条规则)。 |
| 存储 | 通过官方 credentials.set Web API 写入值——不新增任何服务端路由。 |
| 替换 | 命中的片段在草稿中变成 [secret:PASTE_N]。 |
| 取用 | 模型需要真实值时调用 secret_resolve(ref) 工具。 |

明文值只存在于两个地方:(1) 当前浏览器标签页的内存;(2) ~/.dsh/.credentials.yaml
(权限 0600)。其它所有表面——发出的消息、会话历史、转录——只能看到 [secret:REF]。

安装

前置条件

- 一个 DeepSeek Harness Web profile(示例用 web)。
- PATH 里有 dsh CLI 和 pnpm(dsh plugin 是 pnpm 的薄封装)。

从 npm registry 安装(推荐)

dsh plugin --profile web add dsh-secret-paste

这条命令做的事:

1. 在 profile 目录里执行 pnpm add dsh-secret-paste。
2. 安装唯一的运行时依赖(@sanity-labs/secret-scan)。
3. 因为包声明了 dsh.bundle.patch,会被自动登记进 dsh.profile.bundles 成为一层。

安装过程不会运行任何构建——浏览器 bundle 是预构建后随包发布的。

重启

服务端(secret_resolve 工具)在启动时加载,所以装完后要重启 dsh web,然后强制刷新浏览器标签页(Cmd+Shift+R / Ctrl+Shift+R)以加载客户端 bundle:

重启你管理的 dsh web 进程(Ctrl-C 后重新启动,或用你的进程管理器)

验证

- 设置 → 插件里能看到 dsh-secret-paste。
- 往输入框粘一个 GitHub token(ghp_...):它会立刻变成 [secret:PASTE_N] 并出现提示 chip。

由 AI / 自动化安装

AI agent 或 CI 安装时步骤完全相同:

1. dsh plugin --profile web add dsh-secret-paste
2. 重启 dsh web(secret_resolve 工具注册所必需)。
3. 强制刷新浏览器标签页。
4. 验证:粘贴 ghp_... 应得到 [secret:PASTE_N];或检查页面 window.__DSH_BOOT__ 里包含 dsh-secret-paste 条目。

使用

自动检测并隐藏

粘贴包含高置信密钥(ghp_...、sk-proj-...、JWT 等)的文本,会立即被存储并替换成 [secret:PASTE_N],同时出现一个 chip:

🔒 隐藏 · · PASTE_N · 撤销

- 悬停 chip 会在浮层中显示真实值——不会引起布局跳动。
- 还在编辑时,点 撤销 可恢复明文。
- 发送后 chip 保留但撤销按钮消失;答案返回后 chip 自动移除。

中等置信

confidence === 'medium' 的命中(例如 Bearer )原样留在草稿里,弹出一个「疑似密钥」chip 让你确认(隐藏)或忽略。

手动标记

检测库不认识的格式(ark-...、部分 sk-...)绝不猜测。选中文本后使用「标记为密钥」动作,再点「隐藏并存储」。

嵌套占位符

已经包含 [secret:REF] 的选区可以再包一层;secret_resolve 会把这种链
递归解析到明文(遇到环或缺失的内层引用返回 found: false)。

模型侧:secret_resolve

模型需要真实值时调用 secret_resolve(ref) 工具:

- 返回 { found, value, source }。
- 值里的嵌套占位符会被递归解析成明文。
- 该值属敏感内容:工具描述明确要求模型不得在回复、文件、命令或工具参数里回显或复述它。

安全模型

- 值不泄露:消息、历史、转录里只有 [secret:REF];值只存在于标签页内存和 0600 权限的凭据文件。
- 检测保守:high 自动隐藏,medium 等待确认,未知格式绝不猜测(手动标记兜底)。
- 引用名防冲突:ref 已被占用时自动顺延到下一个空位,绝不覆盖;同一值每会话只存一次并复用引用名。
- 无读取端点:凭据存储按设计「只读有无、不枚举」;刷新后内存值清空, chip 不持久化。
- 使用时刻可见(v1):只有模型主动询问时,secret_resolve 才把值带入模型上下文。

开发

node scripts/build.mjs # 重新构建 lib/client.js(无需外部打包器)
npm test # node --test tests/*.test.mjs

目录结构

dsh-secret-paste/
├── package.json # dsh.bundle.patch + dsh.client 声明 ├── cordis.patch.yml # 挂载服务端行 ├── lib/ │ ├── index.js # 服务端:secret_resolve 工具(递归解析) │ └── client.js # 预构建的浏览器 bundle ├── src/ │ ├── resolve.js # 嵌套占位符解析器(服务端共用) │ ├── scan.js # 检测辅助(与测试共用) │ └── client/index.js # 粘贴拦截、chip、credentials.set ├── vendor/secret-scan.cjs # vendored @sanity-labs/secret-scan@1.1.0 (MIT) ├── scripts/build.mjs # 组装 lib/client.js └── tests/ # node:test 单元测试

许可证

MIT。vendor/secret-scan.cjs 是 @sanity-labs/secret-scan v1.1.0(MIT)的编译产物,其规则源自 gitleaks(MIT)与 TruffleHog 检测器;其许可证保留在 vendor/secret-scan.LICENSE。
预览分享卡片长什么样 ↓zhujiaqi/dsh-secret-paste
分享 · DeepSeek Harness Hub
zhujiaqi/dsh-secret-paste

拦截粘贴的密钥,只把占位符发给模型

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