xiaohj233/dsh-credential-handoff ↗★ 0
dsh-credential-handoff
Conversation-local credential handoff that writes through the DSH credential service without returning the secret to model context.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xiaohj233/dsh-credential-handoff说明文档
阅读完整 README ↗dsh-credential-handoff(凭据交接)
状态:功能插件(Feature Plugin)。已在 DeepSeek Harness(深度求索 Harness)0.1.0-rc.6 上测试。
dsh-credential-handoff 允许 agent 请求一个指定名称的凭据(credential),而不把秘密放入模型上下文(model context)。浏览器会打开一个会话局部(conversation-local)的密码对话框,通过 DSH 的凭据服务(credential service)写入该值,并只向工具调用返回固定的状态元数据。
问题
agent 可以发现某个凭据缺失,但让用户把密钥粘贴到普通聊天中会把它暴露在转录(transcript)和模型上下文中。本插件为这种时刻提供一条只写(write-only)的交接路径。
行为
request_credential 工具接受一个凭据引用(如 TAVILY_API_KEY)、一个可选的标签(label)和一个原因(reason)。每个会话只允许一个待处理请求。对话框在十分钟后过期。工具结果只报告该引用以及它是被配置(configured)还是被替换(replaced)。
在 HTTPS 上,允许提交凭据。在明文 HTTP 上,仅对精确的 loopback(回环)主机(localhost、127.0.0.1 和 IPv6 loopback)允许。非 loopback 的明文 HTTP 在控件(controls)和提交处理器(submit handler)中都会被阻止。
非目标
本包不是保险库(vault)、加密提供者、凭据查看器、子进程凭据注入器,也不是 DSH 凭据提供者(credential provider)的替代品。它无法保护被攻陷的浏览器、主机进程或 DSH 凭据后端。
机制
- Host:注册
request_credential,并等待一个带标签的userQuestions请求。 - Client:只处理那个带标签的问题,并直接调用
credentials.set。 - 结果:用固定文本回答待处理的问题,并返回不含值的元数据。
秘密绝不会出现在本插件创建的问题答案、工具结果、常规日志或会话事件负载(payload)中。
兼容性
已在 DeepSeek Harness 0.1.0-rc.6、Node.js ^22.19.0 || >=24 和 pnpm >=10 上测试。DSH 仍是发布候选(release candidate)版本;后续版本可能改变 question、credential 或 client-slot 的约定(contract)。
安装
dsh plugin --profile web add "github:xiaohj233/dsh-credential-handoff#v0.1.0"
安装后重启 Web profile。
配置
无需任何插件设置。模型调用:
{"ref":"TAVILY_API_KEY","label":"Tavily API key","reason":"Required for Tavily search"}
凭据引用使用 shell 风格名称:以字母或下划线开头,后跟字母、数字或下划线。
卸载
dsh plugin --profile web remove dsh-credential-handoff
移除插件会移除该工具和对话框。它不会删除已由所配置的 DSH 凭据提供者存储的凭据。
安全
不要将 DSH Web 控制面(control plane)暴露给不可信网络。阻止明文非 loopback 提交可以防止本插件在该传输上发送秘密;但它并不会为 DSH 增加认证。请另行审查所配置凭据提供者的存储属性。
测试
npm test
npm run check:syntax
npm run scan:secrets -- synthetic-test-value lib/index.js lib/client.js test/validate.test.js
npm pack --dry-run
测试覆盖:引用校验、秘密形态(secret-shape)处理、传输分类、问题/结果映射,以及包语法。
局限性
DSH 已提供 resolve、describe、set 和 unset 凭据服务。本插件只增加一个会话局部的交接 UI 和模型工具。它不会把凭据值读回浏览器或模型。