具名凭据按引用使用:秘密值在「设置 → 凭据」页录入,按次注入 shell 执行环境的 DSH_CM_* 变量而不打印进对话,credential_read 是文档化的最后手段。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:accpowered/dsh-credential-manager
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 简体中文
DeepSeek Harness 的命名凭据插件:让模型按引用使用你的 API key、令牌和登录凭据 —— 秘密值绝不进入对话。
一条凭据是一条扁平记录,只保存一个秘密值。模型用 credential_create 工具创建空的占位记录;你在 设置 → 凭据 页面录入秘密值。每个已配置的秘密值都会以 DSH_CM_<ID> 环境变量的形式注入模型的每次 shell 执行(按次解析),值到达命令环境而不会被打印进对话记录。
组成
| 部件 | 类型 | 作用 |
|---|---|---|
credential-manager |
host 服务插件 | 元数据侧车(storage domain)、秘密值存于 ctx.credentials 接缝、DSH_CM_* shell 环境变量注入 |
tool-credential-manager |
host 工具插件 | 面向模型的 credential_list / credential_create / credential_read / credential_update_note 工具 + 系统提示词策略小节 |
| 设置 → 凭据 | web 客户端插件(dsh.client) |
录入/管理秘密值的页面;通过自挂载的 Typert Remote 命名空间与 host 通信 |
安装
从 GitHub 安装(通过包的 prepare 脚本在安装时构建;pnpm 会要求你允许一次构建):
dsh plugin --profile web add github:accpowered/dsh-credential-manager
如果 pnpm 打印 allowBuilds 提示,把打印的键加入 profile 目录 pnpm-workspace.yaml 的 allowBuilds 下并重跑 add —— 这等于授予安装期执行权限,只允许你信任的来源(建议固定 commit:github:accpowered/dsh-credential-manager#<sha>)。
本地检出安装:
dsh plugin --profile web add ./dsh-credential-manager
重启 dsh web(或对应 profile)并强刷浏览器。
与 harness 的协作方式
bundle patch(cordis.patch.yml)插入两个 host 行;dsh.client 声明让 web 面自动伺服设置页:
- insert:
- id: credential-manager
name: dsh-credential-manager
- id: tool-credential-manager
name: dsh-credential-manager/tools
不修改任何 harness 源码:
- 工具注册进 host 工具注册表,所有 agent 预设可见。
- 设置页通过公开的
ctx.remote.$mount接缝自挂载 Typert Remote 贡献,无需改动api/remotes。 - host 服务是
TypertRemoteService,网关通过 SRC 标记动态发现其@Remote方法,部署不需要代码生成步骤。
原版上游说明: 上游 api/remotes 的事件转发白名单不含 credential-manager/updated,因此设置页不会收到来自其他界面的实时推送失效;页面仍通过权威的变更应答和连接重置重取收敛。若你的 harness 转发了该事件,页面会自动获得实时刷新。
配置
两个 host 行零配置即可工作,所有可调项都有 schema 默认值。需要调整时,在你的 profile 的 cordis.patch.yml 中重写该行(patch 会替换整行配置):
- id: credential-manager
name: dsh-credential-manager
config:
maxNoteBytes: 8192 # 单条 user/LLM 备注的 UTF-8 字节上限
- id: tool-credential-manager
name: dsh-credential-manager/tools
config:
promptOrder: 116 # 系统提示词策略小节的排序权重
只保留服务和设置页(不给模型工具)时,从 bundle patch 删除 tool-credential-manager 行即可。
使用
- 对话中模型需要凭据时,会调用
credential_create只传名称(绝不传值),并请你录入。 - 打开 设置 → 凭据,找到占位记录,录入秘密值(只写不读回,任何页面和对话记录都不会显示它)。
- 模型在
bash/pwsh命令中通过列出的DSH_CM_<ID>变量使用:curl -H "Authorization: Bearer $DSH_CM_MYAPI" ...。 credential_read是刻意保留的最后手段逃生口(非 shell 场景);harness 会指示模型优先走变量路径。
过期凭据不会被阻断(过期日仅为提示),但会在页面和 credential_list 中标记,便于模型提醒你轮换。
卸载
dsh plugin --profile web remove dsh-credential-manager
服务、工具、系统提示词小节、设置页和 Remote 命名空间都随插件 fiber 一并卸载。已持久化的元数据(harness home 的 storages/credential_manager.json)与已存储的秘密值不受影响。
开发
pnpm install
pnpm build # tsc 声明 + tsdown(node 库 + 浏览器客户端 bundle)
pnpm test # vitest:服务 CRUD / 接缝隔离 / 工具映射
目录:src/index.ts(host 服务,默认导出)、src/tools.ts(工具插件)、src/types.ts + src/spec.ts(线缆类型 + 存储域)、src/client/(设置页;remote.ts 是手工维护的 Typert Remote 贡献 —— 服务的 @Remote 方法变更时需同步)。
许可证
MIT
链接
同类插件
kenryu42/cc-safety-net★ 1900
执行前守卫,在工具调用运行前拦截破坏性 Git 与文件系统命令,以及对 SSH 密钥、.env 等机密文件的访问。
ADWMC/helm-d#helmd★ 984
DeepSeek Harness 的安全分析插件:33 个工具覆盖六大安全域、证据/报告与工具集,并提供案件生命周期、路由和工具账本;按会话绑定的案件工作区支持证据链、E 编号校验与可复现结论(repro_cmd);内置 362 篇按需参考、三档可热切换人设,以及带案件状态恢复的破甲 / Case / 拦截 / 关于四页工作台。
toby-bridges/api-relay-audit★ 904
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 807
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 616
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 244
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。