前言¶
若要讓 DeepSeek Harness(DSH)裏的 agent 「看見」物理環境,常見做法是打開系統相機應用、把預覽窗口擺好、再截屏把圖餵給模型。無人值守、遠程桌面,或別的窗口蓋住預覽時,這條鏈路很容易斷。dsh-tool-camera 走另一條路:由 agent 調用工具,經 ffmpeg 從本機攝像頭抓一幀,以與內置 read_image 相同的 image 內容塊交給模型,無需相機應用在前臺,也不做屏幕採集。
下面按定位、能力、安裝、用法與注意點說明該插件。
這是什麼¶
dsh-tool-camera 是掛在 DeepSeek Harness 上的一類 bundle 插件,倉庫與維護組織爲 zlmddygggzh-collab/dsh-tool-camera。在社區目錄 SkillHub 中歸類爲模型推理。安裝並重啓 DSH 後,agent 會多出兩個工具:camera_snapshot(抓實時幀並把真實圖像交給模型)和 camera_devices(列出攝像頭、ffmpeg 是否就緒以及當前採集後端)。包體約 16 KB,不捆綁 ffmpeg。
核心功能¶
camera_snapshot¶
一次調用從指定設備採集若干幀,保留最後一幀(前幾幀常爲全黑或過曝),保存爲附件並以 image 形式返回。可選設備名、幀數、JPEG 質量,以及亮度、gamma、對比度、銳化、autoLevel(動態範圍拉伸)等參數。單次調用只產出一張靜幀,不是視頻流;要連續觀察需反覆調用。工具聲明 isConcurrencySafe: () => false,併發請求會排隊,避免多路同時搶設備。
camera_devices¶
用於在抓圖前確認本機有哪些攝像頭、ffmpeg 是否可用、當前使用的採集後端(Windows 爲 DirectShow,macOS 爲 AVFoundation,Linux 爲 V4L2)。
與「截屏看相機」的差異¶
要點在於:不依賴 Camera 應用、不要求窗口在前臺、不走屏幕截圖;ffmpeg 直連繫統採集後端,像素從設備進入模型可見的渲染路徑。
安裝與啓用¶
安裝後必須重啓 DSH,工具只在全新加載時出現。bundles 決定哪些包掛載進層棧;只 pnpm add 而不寫入 dsh.profile.bundles 時插件不會生效。
方式一:一鍵腳本(Windows 推薦)¶
無需先下載包,可把 release 的 tgz URL 交給腳本:
pwsh -File install.ps1 -Tgz "https://github.com/zlmddygggzh-collab/dsh-tool-camera/releases/download/v1.0.1/dsh-tool-camera-1.0.1.tgz"
或使用本地已有包:
pwsh -File install.ps1 -Tgz .\dsh-tool-camera-1.0.1.tgz
腳本會定位 profile 目錄、解析 pnpm,備份 package.json 與 pnpm-lock.yaml,完成 pnpm add 並在 dsh.profile.bundles 中註冊;回滾可重命名生成的 *.bak-camera-<stamp> 備份文件。
方式二:手動兩步¶
進入 profile 目錄並添加本地 tgz(路徑按你手中的包文件爲準):
cd ~/.dsh/profiles/desktop
pnpm add /path/to/dsh-tool-camera-1.0.0.tgz
在同一 package.json 的 dsh.profile.bundles 數組中追加包名:
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"dshmarket",
"...",
"dsh-tool-camera"
]
}
}
方式三:npm 已發佈包¶
pnpm add dsh-tool-camera
同樣需要將 dsh-tool-camera 寫入 dsh.profile.bundles。
卸載¶
cd ~/.dsh/profiles/desktop
pnpm remove dsh-tool-camera
並從 dsh.profile.bundles 中移除 dsh-tool-camera。README 說明其 cordis.patch.yml 僅插入自身配置行,卸載相對乾淨。
典型用法¶
重啓後可直接用自然語言讓 agent「看一下攝像頭」,它會自行調用 camera_snapshot。也可在對話中給出更具體的指令,例如:
Take a snapshot with camera_snapshot, 8 frames
暗光環境若仍得到近乎全黑畫面,可嘗試:
Take a snapshot with camera_snapshot, autoLevel on, gamma 1.6
工具參數默認值與含義(節選,以 README 爲準):
| 參數 | 默認 | 說明 |
|---|---|---|
device |
首個可用設備 | 設備名見 camera_devices |
frames |
5 | 採集幀數,保留最後一幀 |
quality |
3 | JPEG 質量 1–31,數值越低質量越好 |
autoLevel |
false | 是否做 normalize 拉伸動態範圍 |
ffmpeg 從哪來¶
插件不包含 ffmpeg。首次真正採集時按順序解析:ffmpegPath 配置 → 環境變量 DSH_FFMPEG → $DSH_HOME/tools/ffmpeg(Windows 爲 ffmpeg.exe)→ PATH 上的 ffmpeg;若仍沒有且 autoDownload 爲 true,會從 npm 鏡像拉取對應平臺預編譯包到 $DSH_HOME/tools/。支持 win32-x64、win32-ia32、darwin-x64、darwin-arm64、linux-x64、linux-arm64、linux-ia32。離線環境可設 autoDownload: false,自行放入二進制或配置 ffmpegPath。
配置¶
可在 profile 的 cordis.patch.yml 中覆蓋插件行,無需改包內文件:
- id: tool-camera
config:
device: ov9734_azurewave_camera
frames: 8
quality: 2
timeoutMs: 30000
autoDownload: true
gamma: 1.5
工具調用參數優先於配置;兩者最終走同一套 ffmpeg 濾鏡鏈。常用鍵包括 timeoutMs(默認 20000)、autoDownload(默認 true)等,完整表見倉庫 README。
平臺說明與已知限制¶
Windows:設備名多爲 DirectShow 風格字符串;若相機應用、微信視頻或會議軟件佔用設備,ffmpeg 可能報 Could not run graph,插件會轉成可讀提示。
macOS:設備常爲索引 0、1……首次需在「系統設置 → 隱私與安全性 → 相機」中允許 DSH 或終端訪問攝像頭。
Linux:設備路徑爲 /dev/videoN,當前用戶通常需屬於 video 組。
其他限制:同一時刻一般只有一個進程能打開攝像頭;輸出爲設備原始朝向,筆記本內置頭可能鏡像或翻轉;README 所列 DSH 發行版兼容性見 package.json 中 dsh.compatibility 字段。
適用場景與注意¶
適合需要 agent 在本地/遠程會話中偶爾看一眼物理場景、又不想維護「開相機 + 截屏」腳本的開發者。插件在當前 DSH 進程權限下運行,採集的是本機攝像頭而非用戶主動選擇的文件;安裝前宜閱讀源碼與 MIT 許可證,確認是否符合你的安全與合規要求。DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-tool-camera 用 ffmpeg 把攝像頭一幀直接接進多模態對話,補足「agent 看現實世界」時繞開前臺窗口與截屏的環節。更多信息見 SkillHub 目錄頁 與 GitHub 倉庫。