前言¶
在 DeepSeek Harness(DSH)裏做智能體,常見路徑是等用戶在桌面輸入、再調工具回應。手機上的私信、通知卻是另一路事件:來得零散、平臺各異,有的還沒有穩定協議,只能走 UI 自動化。若把「聽通知 → 判斷是否該回 → 真機在屏幕上操作 → 可選語音」串成一條可插拔鏈路,並默認以安全爲先(少發、可確認、可急停),開發者就不必爲每個 App 硬寫一整條腳本。
下面介紹維護者 xiaozqi 的工作流類插件 dsh-dqy(包名 dsh-dqy,目錄頁見 SkillHub)。README 將其定位爲面向 DSH 的事件驅動值守智能體:監聽通知、過濾噪音、LLM 決策、護欄校驗、UI 執行、語音輸出。在 DSH 內可經宿主模型通道(host-llm)決策,README 與 package 描述均強調免獨立 API key 的使用方式(具體以你當前 DSH 與 Cordis 配置爲準)。
這是什麼¶
dsh-dqy(項目 README 亦稱「青魚」)是掛在 DSH 上的 Android 自主體插件:通過 adb 驅動真機,用 LLM 決策環閉合「通知進 → 過濾 → 判斷 → 動手 → 出聲」。當前版本在 package.json 中爲 0.3.0,許可證 MIT,要求 Node >= 22,peer 依賴含 @deepseek-ai/cordis 4.1.0 等。
與「只做執行器」的插件不同,本項目強調上層閉環:通知路由、過濾、護欄、狀態機與 YAML 平臺配方複用;執行層可選用 uiautomator2、adb 或視覺模板降級鏈。
核心功能¶
值守閉環¶
README 描述的核心鏈路爲:
通知 → 過濾噪音 → LLM 決策 → 護欄硬校驗 → UI 自動化執行 → 語音輸出。
應用層包含自治循環(think→act→observe)、RunMode 運行模式(總開關 / 試運行 / 急停)、出站硬護欄、消息狀態機與冪等,以及 dm-watch-pipeline 編排通知到發送的全過程。
平臺與當前狀態¶
README 用表格如實標註各平臺優先級(節選):
| 平臺 | 狀態 | 說明 |
|---|---|---|
| 抖音私信 | 核心驗證鏈路 | 無可用個人協議,UI 自動化;v0.1 優先打磨該條 |
| B 站 / 微博 / 小紅書 | 適配器已建,待配方化 | 優先級低於抖音穩定 |
| 協議優先 | 有成熟協議通道,不強行 UI 自動化 | |
| 支付寶 | 非目標 | 不做、不接受相關 PR |
v0.2 起的安全取向¶
README 寫明 v0.2 優先修「會做錯事」處,而非堆功能,要點包括:
- 出站策略閘:
RunMode.decide()爲唯一判定點;/halt可攔住自主循環。 - 默認不開口:
autonomy.autoActions默認空;發消息、發圖等默認進黑名單;需主人/confirm approve才執行。 - 提示注入邊界:人格與通知入口 fail-closed(loopback、token、體積上限、App 白名單等)。
- 設備串行 + 超時:
SerialDevice互斥;工具帶timeoutMs。 - 發送真實性:中文走 ADBKeyBoard base64;發送成功需「輸入框清空 + 新氣泡」等校驗。
- 測試:
tests/safety.mjs與原有值守測試一併運行(npm test)。
項目聲明:不做隱形代聊;使用時應告知對話方當前由 AI 值守應答。
模型與工具面¶
基礎設施層提供 host-llm.ts(借用 DSH 宿主模型通道)與 http-llm.ts(OpenAI 兼容兜底)。接口層註冊 fish_apps、fish_app_run 等工具,經 AdapterRegistry 按 App 能力派發,避免工具層寫滿 App 分支 if-else。
平臺 UI 路徑可寫成 YAML 配方(示例見 assets/recipes/douyin.yml),步驟含 open_app、tap、input、send、verify 等,佔位符 {peer}、{reply} 由運行時填充。
安裝與啓用¶
環境與依賴¶
從倉庫 package.json 可見:
- 運行時:Node.js >= 22
- 構建:
npm run build(TypeScript 編譯到lib/) - 測試:
npm test(tests/smoke.mjs、tests/safety.mjs)
README 三步上手中的安裝表述爲:在 DSH 裏安裝 dsh-dqy 的包目錄(或按項目說明從 git 安裝)。資料中未給出固定的 dsh plugin add … 單行命令;請以你使用的 DSH / Cordis 插件安裝方式與倉庫 cordis.patch.yml 爲準,安裝前閱讀源碼與 MIT 許可證。
連接手機與通知¶
- 手機開啓 USB 調試,通過 adb 連接。
- 若要接收通知:編譯安裝
android/notify-listen,在系統「通知使用權」中授權(applicationId爲com.dqy.notify)。
白名單與發送開關¶
先配置允許對話的對象,再逐步打開發送能力。README 示例:
control:
allowedPeers:
- com.tencent.mobileqq:張三
在 DSH 會話中使用值守相關命令(README 原文):
/watch # 先看她現在爲什麼不說,照着提示配
/watch enable # 打開發送總開關(此時仍是試運行)
/watch live # 從試運行切到真實發送
默認狀態下插件只觀察、寫日記、不對外說話。擬執行的對外動作進入確認收件箱:/confirm list 查看,/confirm approve <id> 後才真正執行。
典型用法與架構要點¶
設計原則(README)¶
- 默認關閉自動發送;試運行只記錄擬發送內容。
- 規則模糊或校驗失敗時優先不回覆。
- 消息與發送持久化,支持斷點續跑與復盤。
- 有協議則走協議,UI 自動化爲兜底。
- 執行層可換,新增 App 主要增加 YAML 配方。
分層結構¶
README 給出嚴格向內依賴的分層:入口 src/index.ts 裝配;interface/ 適配工具與命令;application/ 決策與值守;domain/ 端口與模型;infrastructure/ adb、LLM、記憶、視覺與配方加載。UI 驅動經 FallbackUiDriver:主 uiautomator2 → 備 adb → 視覺模板。
與生態內其他項目的差異(README 表格):例如 dsh-mobile-use 偏執行器,本項目是上層閉環;OneBot 類方案覆蓋有協議平臺,本項目側重無協議私信場景的配方化 UI 路徑。
適用場景與注意¶
適合誰:已在用 DSH、希望把 Android 通知驅動的私信值守(當前 README 以抖音私信爲核心驗證)接到宿主模型上,且能接受「默認靜默 + 人工確認 + 急停」安全模型的開發者。
務必注意:
- 插件隨 當前 dsh 進程權限運行,可訪問你配置的 adb 設備與網絡;安裝前通讀倉庫源碼與
tests/safety.mjs所覆蓋的閘門行爲。 - 真機自動化依賴環境與 App UI 變化,嗶哩嗶哩、微博、小紅書等仍處於適配器待配方化階段,勿按生產全天候話術預期。
- 資金類、支付寶相關能力爲非目標;QQ 走協議優先路線,與純 UI 配方路徑不同。
- 社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;版本與星標以各站點實時的倉庫與目錄信息爲準。
結尾¶
dsh-dqy 把「通知驅動的真機值守」收成 DSH 裏可配置的一條工作流:LLM 借宿主通道決策,護欄與運行模式約束出站,YAML 配方描述各 App 的 UI 路徑。若你正在 DSH 上擴展能聽手機、又默認少動的智能體,可從倉庫 README 的「三步上手」與 control.allowedPeers、/watch 系列命令開始驗證。