把 API 密钥与凭据存进 macOS 登录钥匙串
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nengong-ai/dsh-keychain-credentials该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 36 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-keychain-credentials(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 08:45:04
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
- 执行外部命令来自配置/变量src/index.js:66
const child = execFile(SECURITY_BIN, args, { encoding: 'utf8' }, (error, stdout, stderr) => {
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 存储API密钥与凭据
- 写入macOS登录钥匙串
纯 JavaScript 的 macOS Keychain 服务商,供 DeepSeek Harness(DSH)ctx.credentials 使用,同时支持 refs 和 records,磁盘上不存明文凭据。
README
由 DeepSeek 最新模型翻译生成dsh-keychain-credentials
用于 DeepSeek Harness(dsh)的 macOS Keychain 凭据提供程序。
默认提供程序(dsh-credentials-local)将密钥存储在 $DSH_HOME/.credentials.yaml 中,权限为 0600。正如其自己的 README 所述:该文件对其他操作系统用户是受保护的,但对模型不是——工具进程(bash、文件系统工具)以同一用户身份运行,可以像读取任何其他文件一样读取它。
此提供程序将密钥移入 macOS 登录钥匙串。一个不存在的文件无法被 cat;不会有任何内容落入备份、同步文件夹或 git 中。
这为你带来了什么
- 已修复: 密钥不再是一个文件。默认文件可被模型拥有的每一种读取原语访问——read、cat、grep、tar、node -e …,无论进程内还是子进程。使用此提供程序后,值存放在登录钥匙串中。
- 未修复(诚实地说): 当登录钥匙串处于解锁状态时(登录后的默认状态),任何同一用户的进程都可以通过调用 /usr/bin/security 读取该项——该 CLI 受 ACL 信任,不会出现提示。一个拥有不受限 shell 且知道去询问钥匙串的代理仍然可以窃取。
展开完整文档(README 剩余 1 节)
dsh-keychain-credentials 用于 DeepSeek Harness(dsh)的 macOS Keychain 凭据提供程序。 默认提供程序(dsh-credentials-local)将密钥存储在 $DSH_HOME/.credentials.yaml 中,权限为 0600。正如其自己的 README 所述:该文件对其他操作系统用户是受保护的,但对模型不是——工具进程(bash、文件系统工具)以同一用户身份运行,可以像读取任何其他文件一样读取它。 此提供程序将密钥移入 macOS 登录钥匙串。一个不存在的文件无法被 cat;不会有任何内容落入备份、同步文件夹或 git 中。 这为你带来了什么 - 已修复: 密钥不再是一个文件。默认文件可被模型拥有的每一种读取原语访问——read、cat、grep、tar、node -e …,无论进程内还是子进程。使用此提供程序后,值存放在登录钥匙串中。 - 未修复(诚实地说): 当登录钥匙串处于解锁状态时(登录后的默认状态),任何同一用户的进程都可以通过调用 /usr/bin/security 读取该项——该 CLI 受 ACL 信任,不会出现提示。一个拥有不受限 shell 且知道去询问钥匙串的代理仍然可以窃取。与限制工具子进程的沙箱配合可以缩小这一范围;硬边界需要操作系统级别的隔离(一个带有私有访问组的已签名代理,例如 keyringseam,或一个单独的操作系统用户)。 净效果:门槛从“任何读取原语”提高到“必须以同一用户身份执行 /usr/bin/security”——这是真正的改进,而非完整的边界。 为什么选这个,而不是其他 - 完整的接缝覆盖: 实现了 ctx.credentials 的两半——refs(API 密钥)和 records(结构化凭据,如 client-connection/browser-session 授权)。其他几个提供程序只实现了 refs 这一半,这意味着 DSH 自身的会话记录会回退到明文文件。 - 零构建步骤: 纯 JavaScript,无需 Swift,无需代码签名证书,无需 Xcode。安装即用。 - 无认证提示: 读取和写入从不要求用户进行 Touch ID / 密码验证。(这是一个有意的取舍:keyringseam 提供设备所有者认证,代价是每次操作都要弹出提示。) 要求 - macOS(/usr/bin/security) - DeepSeek Harness ≥ 0.1.0-rc.6 安装 dsh plugin --profile web add dsh-keychain-credentials or from source: dsh plugin --profile web add github:/dsh-keychain-credentials 然后该 bundle 的 cordis.patch.yml 会禁用默认提供程序并挂载此提供程序。如果你更愿意手动接线,请添加到你的补丁层(~/.dsh/cordis.patch.yml 或 --patch ): - id: credentials disabled: true - insert: - id: credentials-keychain name: dsh-keychain-credentials config: servicePrefix: dsh-credentials # keychain service prefix account: dsh # keychain account name 用法存储一个密钥(account = 凭据引用名称): security add-generic-password -U -s dsh-credentials -a DEEPSEEK_API_KEY -w 'sk-…' LLM 适配器按请求解析该引用——轮换后无需重启。 遵循接缝契约的语义: - 进程环境会遮蔽钥匙串(每次运行的运维意图优先)。 - 存储的值为空视为不存在。 - 当只读来源(环境)遮蔽该引用时,set/unset 会被拒绝。 - describe 检查是否存在而不读取值——状态查询绝不会将明文拉入 agent 进程。 - 来自 security CLI 的错误经过净化:仅保留退出码和 stderr,绝不包含命令行(在 set 失败时命令行会携带密钥)。 - 密钥始终通过 stdin 而非 argv 传给 security,因此绝不会出现在 ps 中。 - 超过 128 字节的值通过 security -i 写入,而非 stdin 密码提示:该提示最多存储 128 字节,并会静默截断更长的内容。交互模式没有此限制,但不会报告失败退出码,因此这些写入会通过回读该值来确认。(DSH 作为 records 条目存储的账户令牌就是这样一个值。) 测试 npm test 需要真实的 DSH node_modules(peer 依赖)——从已安装 @deepseek-ai/dsh-credentials 的 profile 中运行,或符号链接一个。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
nengong-ai/dsh-keychain-credentials
把 API 密钥与凭据存进 macOS 登录钥匙串
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1