前言¶
在 DeepSeek Harness(DSH)裏做軟件開發時,對話裏經常要貼現場照片:白板、硬件標籤、報錯界面。用手機拍最順手,但傳統做法多是微信/郵件傳到電腦再拖進窗口,步驟多,還容易傳錯會話。下面介紹的插件在電腦端 DSH 進程裏起一個局域網 HTTP 小服務,手機瀏覽器掃碼即可選對話、拍照或選相冊,圖片以「待發送」消息掛到該對話底部,你在 PC 上補一句話再發,不會自動觸發模型。
這是什麼¶
dsh-phonephoto-ezinput(維護者 IceyVanci,分類:客戶端)面向「主要用 PC 寫代碼、手邊有現役或淘汰手機」的場景:在 DSH 裏開局域網服務,手機零安裝 App、不需要 HTTPS,用瀏覽器原生能力完成拍照與上傳,並投遞到你指定的對話。
項目地址:SkillHub 目錄頁、GitHub 倉庫。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。插件以當前 DSH 進程權限運行,安裝前應自行查看源碼與 MIT 許可證。
核心功能¶
手機端流程¶
掃碼 → 在手機上選擇目標對話 → 拍照或從相冊選圖 → 預覽確認後發送。最多 4 張、單張不超過 10 MB、合計不超過 25 MB;發送前可預覽、刪除、重拍。
電腦端表現¶
圖片到達後,以一條類似「發送自 192.168.1.23」的待發送消息掛在對話底部,旁側有縮略圖;你補一句話發出後,圖片才隨這一輪進入上下文。默認不會自動跑模型。
壓縮與安全¶
客戶端壓縮:長邊 2048、JPEG 質量 0.85、自動修正 EXIF 方向,單張約 300~400 KB。默認僅接受私網來源;CSP nonce、magic bytes 校驗、上傳限速、IP 級授權;已配對 IP 在有效期內可免重複輸 token。
設置面板¶
裝好後在 更多 → 設置 → 手機照片便捷輸入 可查看:二維碼、局域網鏈接、6 位備用配對碼、已配對設備列表(可逐條刪除或全部撤銷)、配對有效期(1 / 3 / 7 / 30 天)、監聽端口與 UI 心跳等。面板數據優先走同源路由 /phone-shoot/*;設備與設置落在 ~/.dsh/phone-shoot/(目錄名沿用早期版本,改名會導致已配對手機全部失效)。
投遞模式¶
配置文件 inject.mode 可調行爲:默認 inbox(待發送);另有 display(只寫入、不喚醒)、followup(寫入並立刻回覆)、steer(插入當前回合)、draft(輸入框草稿,當前版本不渲染)。
環境要求¶
- DeepSeek Harness 桌面端
0.2.1-rc.5(或相近版本) - Node.js 20+(插件運行在 DSH 進程內,無需單獨安裝 Node)
- 手機與電腦在同一局域網
安裝與啓用¶
官方 README 給出的安裝方式爲本地路徑包,而非命令行 plugin add:
- 在 DSH 應用內打開 設置 → 插件 → 安裝本地路徑包,選擇插件所在目錄。
- 裝完或更新代碼後,完整重啓應用才生效:host 半邊(服務、投遞)開關插件可重載;client 半邊(設置面板)在啓動時構建進 Web UI,只開關插件不會刷新界面。README 建議裝成真實目錄、避免
link:聯接與實體目錄並存,以減少重複 bundle 等問題。 - 配對設備與設置存在
~/.dsh/phone-shoot/,重啓不丟,手機上不必重新掃碼。
當前 package 版本爲 0.1.0(以倉庫 package.json 爲準)。
典型用法¶
工作方式可概括爲:
電腦:插件起 HTTP 服務(默認 8788)→ 生成二維碼
手機:掃碼 → 選對話 → 拍照/選圖 → 預覽 → 發送
電腦:圖片按 inject.mode 進入對話
先做配對:在設置面板掃二維碼或打開局域網鏈接,必要時用 6 位短碼配對。再在手機上選要對講的 session,拍完確認發送。回到 PC,在對應對話底部看到待發送項,編輯說明文字後發送。
若需改默認說明行,可在配置裏調整 inject.noteTemplate(例如 '發送自 {ip}');設爲空串則只發圖、不插入該行。
默認服務片段(完整項見倉庫 README):
server: { host: 0.0.0.0, port: 8788, portRetries: 10, privateOnly: true }
inject: { mode: inbox, noteTemplate: '發送自 {ip}', sourceKind: user, pendingTtlMs: 600000 }
upload: { maxFiles: 4, maxBytes: 10485760, maxTotalBytes: 26214400, targetMaxEdge: 2048, quality: 0.85, ratePerMinute: 12 }
健康檢查示例:GET http://127.0.0.1:8788/api/health 返回 { ok, version, port, mode }(排障時 README 建議先測此項)。
適用場景與注意¶
適合:長期在 PC 上使用 DSH,需要快速把物理世界裏的畫面(設備、紙質資料、屏幕外物)放進指定對話,且希望上傳前在手機上預覽、在 PC 上控制是否觸發模型。
注意:
- 設備以 IP 爲鍵:同一 NAT 後多臺手機可能被合併爲一條配對記錄。
- 草稿隊列在內存中,應用重啓即丟;
draft模式因上游 API 限制當前不可用。 - 端口 8788 被佔用時會在原端口重試,仍失敗則遞增,最多試 10 次(
portRetries: 10)。 - 若出現
web boot: 1 entry did not activate或設置面板Failed to fetch,README 排障節說明常見原因爲重複安裝、舊 client bundle 等,需清理node_modules中同名插件副本並重啓。
結尾¶
dsh-phonephoto-ezinput 把「手機拍照 → 指定 DSH 對話」收成掃碼與預覽確認幾步,默認以待發送消息等待你在 PC 側決定是否提交,並帶設置面板與私網安全默認值。進一步瞭解實現與路由表,見 GitHub README 與 SkillHub 插件頁。