MagicCrazyMan/dsh-password-prompt ↗★ 1
dsh-password-prompt
DeepSeek Harness plugin: a masked password input panel in the Web GUI. The agent calls the password_prompt tool, the browser pops an HTML password panel, and the typed value is returned to the agent — no interactive terminal needed.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:MagicCrazyMan/dsh-password-prompt说明文档
阅读完整 README ↗dsh-password-prompt
一个 DeepSeek Harness 插件,让智能体(agent)可以通过 Web GUI 中的掩码 HTML 密码面板向用户索要密码——无需交互式终端。
当智能体调用 password_prompt 工具时,浏览器会弹出面板并等待。用户输入密码(掩码显示,带显示/隐藏切换),值被返回给智能体,智能体随后即可使用它——例如通过 askpass 脚本把它喂给 ssh。
⚠️ 安全警告 —— 使用前必读
本插件未经过严格的安全性测试,也未经过任何独立的安全审计。
对于经由此插件处理的任何密码,本插件不对其安全性、机密性或完整性提供任何保证。
使用本插件前,请确保你已清楚了解并完全接受相关安全风险。 除非你已亲自审查过代码并接受相应的风险敞口,否则请勿将其用于生产环境、财务系统或其他高度敏感系统的密码。使用风险自负。
调用流程如下:
agent calls password_prompt("SSH password for root@1.2.3.4")
└─ ctx.userQuestions.ask({ id: 'password', ... }) ← public seam, tool pauses
└─ host → browser: question/requested frame
└─ this plugin's composer entry (priority -1) claims it
└─ masked panel renders in the GUI
└─ user types → answer flows back → tool returns { password }
为什么无需修改 DSH 核心
该插件仅使用随发行版提供的公开能力接口(seam):
ctx.userQuestions.ask()—— 与内置ask_user_question工具背后的同一个服务(在 UI 应答前暂停工具调用)。- 浏览器端的
conversation.composer链 —— 一个基于选择器路由的插槽;本插件注册了一个优先级为-1的条目,认领 id 为保留字面量password的单个问题,其余所有问题都会原样落到通用 composer 上,不受影响。 - 双面(dual-face)插件约定:声明了
dsh.client且带exports["./client"]包的包会被自动扫描进window.__DSH_BOOT__,并以/plugins//client.js提供服务。 dsh.bundle清单:包内随附一份cordis.patch.yml补丁层,因此dsh plugin add会把插件追加到 profile 的 bundle 列表,password-prompt行自动激活,无需手工修改补丁。
它可以在原版、未经任何修改的 DSH 安装上运行。
安装
该插件以 bundle + 双面插件形式分发:声明了 dsh.bundle(自动激活插件的补丁层)和 dsh.client(提供给 Web GUI 的浏览器端)。任何 DSH 安装都可以用 dsh plugin add 从 GitHub 安装——无需手工修改 cordis.patch.yml,也无需改动 DSH 核心。
快速开始 —— 新建 profile(推荐)
Profile 只是 $DSH_HOME/profiles/(默认 ~/.dsh/profiles/)下的目录;一个 DSH 安装可以管理任意多个 profile,首次使用时目录会自动创建。 和 是仅有的两个带内置模板的名字;其他名字初始化时只带 。