前言¶
DSH 的理念是「一切皆插件」。當 agent 需要在網頁端向用戶詢問密碼或賬號密碼時,交互式終端並不是最自然的交互方式。MagicCrazyMan/dsh-password-prompt 是一個 DeepSeek Harness 插件,目標是讓 agent 在 Web GUI 中通過 password_prompt 工具彈出 masked password panel,用戶輸入後繼續執行任務。
這是什麼¶
這是由 MagicCrazyMan 維護的 DSH 插件,包名爲 dsh-password-prompt,許可證爲 MIT。它面向 Web GUI 客戶端,提供 password_prompt 工具,解決 agent 在瀏覽器界面中向用戶請求密碼、或同時請求賬號和密碼的問題。
核心能力¶
- 提供
password_prompt工具:agent 調用後,瀏覽器彈出 masked HTML password panel,等待用戶輸入。 - 支持
account + password模式:同一面板中增加account字段。 - 密碼不直接返回給 agent:密碼寫入私有
0600文件,工具僅返回文件路徑;account模式下同時返回account和文件路徑。 - 使用 DSH 公共接口:
ctx.userQuestions.ask()和瀏覽器conversation.composer鏈;插件以 priority-1的 composer entry 認領password或account + password問題。 - 作爲 bundle + dual-face plugin:聲明
dsh.bundle和dsh.client,自動掃描並服務/plugins/<id>/client.js。 - 在 stock、未修改的 DSH 安裝上工作:不需要 DSH core 改動,也不需要手動編輯
cordis.patch.yml。 package.json聲明客戶端注入:@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-connection、@deepseek-ai/dsh-client-ui-conversation、@deepseek-ai/dsh-client-ui-slots、@deepseek-ai/dsh-client-ui-primitives。
安裝與啓用¶
下面先安裝插件,再處理 pnpm >= 10 的構建權限,最後爲 GUI profile 增加 Web 應用 bundle。
1. 使用 demo profile 安裝插件¶
資料未確認 npm 發佈狀態,因此這裏使用 Quick start 推薦的 GitHub 安裝路徑:
pnpm dsh plugin --profile demo add github:MagicCrazyMan/dsh-password-prompt
這一步會在 demo profile 中添加 dsh-password-prompt。
2. 處理 pnpm >= 10 的安裝時構建權限¶
首次 pnpm add 會按設計失敗:pnpm >= 10 需要在允許之後才執行 git 依賴的構建代碼。錯誤信息會給出綁定 commit SHA 的 key。按提示在 profile 的 pnpm-workspace.yaml 中添加類似內容:
allowBuilds:
dsh-password-prompt@https://codeload.github.com/MagicCrazyMan/dsh-password-prompt/tar.gz/<commit-sha>: true
然後重跑安裝命令。allowBuilds 是允許執行包構建代碼的權限;只從信任的 commit 安裝,建議 pin 住 commit SHA:
github:MagicCrazyMan/dsh-password-prompt#<sha>
3. 爲 GUI profile 增加 Web 應用 bundle¶
非 web profile 默認只有 @deepseek-ai/dsh-base,沒有 Web UI。資料中的建議不是執行:
dsh plugin add @deepseek-ai/dsh-web-app
而是手動把 @deepseek-ai/dsh-web-app 加入 profile manifest 的 dsh.profile.bundles。例如:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-password-prompt"
]
}
}
}
如果 profile 中已經存在 web 相關 bundle,則確認 dsh-password-prompt 在插件集中即可。plugin-set 變更後,需要重啓正在運行的 web server 或 dsh。
啓動與驗證¶
啓動 DSH:
pnpm dsh --profile demo --host 127.0.0.1 --port 3082
在另一個 shell 中驗證 HTTP 響應:
curl --noproxy '*' -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3082/
預期返回:
200
再驗證插件客戶端文件:
curl --noproxy '*' -o /dev/null -w '%{http_code}\n' \
http://127.0.0.1:3082/plugins/dsh-password-prompt/client.js
預期返回:
200
典型用法¶
對 agent 說:
連 192.168.1.10 需要密碼,用 password_prompt 問我要。
或者:
連 192.168.1.10 的賬號密碼都問我。
agent 調用 password_prompt 後,瀏覽器彈出 masked panel。用戶輸入後,工具返回 secretFile 路徑;account 模式下同時返回 account 和 secretFile 路徑。
在這個流程裏,密碼不進入模型上下文。agent 可通過 askpass 腳本把文件內容用於 ssh,或通過:
sudo -S < file
用於 sudo。使用完成後刪除文件。
適用場景與注意¶
- 適合在 DSH Web GUI 中處理需要用戶輸入密碼或賬號的 agent 任務,替代交互式終端輸入。
- README 安全警告:該插件未經嚴格安全測試或獨立審計,不保證任何密碼的安全、保密或完整性。用於生產、金融或其他高敏系統前,必須審查代碼並接受風險。
- 插件隨 DSH 進程加載,安裝時應把源碼審查視爲必要步驟;尤其注意安裝時構建權限、客戶端注入內容和文件路徑處理。
allowBuilds允許執行包構建代碼;只安裝信任的 commit,並建議固定 SHA。- 非
webprofile 需要手動加入@deepseek-ai/dsh-web-app;插件集變更後需要重啓 web server 或dsh。 - 資料未確認 npm 發佈狀態,本文不將 npm 路徑作爲可用安裝方式。
資源¶
- GitHub:https://github.com/MagicCrazyMan/dsh-password-prompt
- 目錄頁(鏈接來自資料,未另行驗證頁面內容):https://www.skillhub.cn/plugins/MagicCrazyMan/dsh-password-prompt