用飛書控制 DeepSeek Harness:dsh-lark-bridge 雙向控制器

前言

DeepSeek Harness(dsh)是 DeepSeek AI 開源的智能體運行時,核心理念是「一切皆插件」:模型、工具、會話、審批、界面都可以用插件替換或組合。官方倉庫寫明它仍處於開發者預覽階段,接口可能不兼容升級。當前版本用 npx @deepseek-ai/dsh web 啓動時,默認 Web 界面在 http://127.0.0.1:3080

對很多團隊來說,真正卡住的不是「智能體能不能跑」,而是「人在飛書裏,任務卻在本機終端裏」。改一句需求、批一次工具調用、看一眼進度,都要切回電腦。社區目錄裏有一類「通知與集成」插件專門補這塊缺口。本文介紹其中的 dsh-lark-bridge:把飛書私聊、羣聊、話題變成 DeepSeek Harness 的控制面,任務發過去,進度卡片回過來。

需要先說明:社區插件目錄 deepseek-harness-plugin.com 是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。目錄當前收錄約 287 個插件,「通知與集成」分類約 9 個。安裝任何插件前都應自己看源碼和許可證。

這是什麼

dsh-lark-bridge 是一款面向 DeepSeek Harness 的雙向飛書 / Lark 控制器。GitHub 倉庫由 imetn 維護,目錄頁分類爲「通知與集成」,許可證爲 MIT。package.json 中的版本是 0.1.0,主要語言是 TypeScript,要求 Node.js 22+。倉庫 README 寫明已針對 DeepSeek Harness 0.1.0-rc.6 驗證。本文寫作時,目錄頁與 GitHub 上的星標均爲 7

它解決的問題很具體:你在飛書裏發一條任務,Bridge 把它交給對應的 Harness Project 和 Session,用一張原生卡片原位更新進度;審批、提問、文件、圖片和控制命令也走同一段會話回來。傳輸使用飛書開放平臺的 WebSocket 長連接,不需要自己暴露公網 Webhook。

倉庫地址:https://github.com/imetn/dsh-lark-bridge
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-lark-bridge/

核心功能

根據倉庫 README 與 SECURITY.md,當前已經寫明的能力如下。

1、從飛書創建、繼續、糾偏、停止、恢復和檢查 Harness Session。
2、每個羣可以綁定獨立的 Project、工作目錄、模型路線、訪問策略和卡片視圖。
3、默認一個話題或線程對應一個隔離的 Session;同一話題裏的回覆共享上下文。
4、同一張卡片從運行中原位更新爲完成、阻塞、取消或失敗。卡片只展示受長度限制、已脫敏的工具摘要,不展示模型隱藏思維鏈。原始任務出現在飛書的引用回覆裏,卡片內部不再重複任務正文。
5、可以用卡片按鈕批准一次工具調用,或回答 Agent 的結構化問題。一次審批按鈕只授權當前這一次操作。
6、接收文字、圖片和文件;Agent 可通過 lark_deliver 把工作區內的安全文件發回飛書。出站路徑必須落在該 Project 的 workspaceRoot 內,符號鏈接逃逸會被拒絕。
7、卡片密度可選 compactstandarddeveloper,可按 Project 或當前 Session 設置。
8、使用 WebSocket 長連接,不部署公網回調服務。

飛書實體和 Harness 實體的默認對應關係可以記這張表:

飛書實體 Harness 實體 用法
機器人私聊 個人控制面 切換 Project,處理私密任務
一個羣 一個 Project 承載一個代碼庫或長期工作流
一個話題或線程 一個 Session 把一個任務和後續交流放在一起

默認 groupSessionScope: threadsender 會爲每位羣成員保留獨立 Session;chat 讓全羣共享一個 Session,README 明確寫了:只有在你確實需要共享上下文時才用。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:

dsh plugin add github:imetn/dsh-lark-bridge

dsh 會從 GitHub 解析插件並裝進當前配置。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。需要可復現安裝時,按目錄頁說明固定 commit 哈希:

dsh plugin add github:imetn/dsh-lark-bridge#<commit>

<commit> 換成你審查過的提交哈希,不要直接複製佔位符。

只執行上面這條命令,還不會自動創建飛書應用、寫入憑據、生成 lark Profile。倉庫 README 推薦的接入方式是 setup 嚮導。前置條件是:Node.js 22+、pnpm、已經可用的 DeepSeek Harness 模型配置,以及已安裝的 dsh CLI,或附近一份官方 Harness 源碼。進入希望機器人控制的 Project 目錄後執行:

pnpm dlx github:imetn/dsh-lark-bridge setup --project "$PWD"

嚮導會做這些事:打開飛書 / Lark 官方授權頁創建新的機器人應用;只申請 Bridge 用到的消息、附件、表情、事件和卡片回調能力;把 App Secret 寫入 Harness 僅 Owner 可讀的憑據文件,不寫進 Profile;安裝插件,冪等寫入 lark Profile,綁定授權用戶並啓動 Bridge;平臺返回用戶 Open ID 後,機器人會發一張歡迎卡片。

自動流程固定使用 createOnly: true,不會選擇或修改已有應用。字節租戶加 --brand larkoffice,國際版 Lark 加 --brand lark

pnpm dlx github:imetn/dsh-lark-bridge setup --project "$PWD" --brand larkoffice

如果企業已經有應用,命令只驗證憑據並寫本機 Harness 配置,不會改現有應用:

printf '%s' "$LARK_APP_SECRET" | pnpm dlx github:imetn/dsh-lark-bridge setup \
  --project "$PWD" \
  --app-id cli_xxxxxxxxxxxxxxxx \
  --app-secret-stdin

企業策略不允許一鍵創建時,加 --manual。嚮導會打開開發者後臺,讓你輸入 App ID 和 App Secret。手動創建時需要:啓用機器人能力、選擇長連接、發佈一個版本,並配置 README 列出的權限與事件,主要包括 im:message.p2p_msg:readonlyim:message.group_at_msg:readonlyim:message:send_as_botim:resource;接收入站附件還需要 im:message:readonly;消息事件 im.message.receive_v1;卡片回調 card.action.trigger。羣聊只申請 @機器人 消息,不需要讀取羣內全部消息。

package.json 聲明瞭 dsh.bundle.patch,指向 ./cordis.patch.yml,並帶有官方發現關鍵詞 dsh-plugin。倉庫提交了已構建的 lib/,並打包了飛書官方 SDK,README 寫明從 Git 安裝不需要現場構建。

典型用法

先在機器人私聊裏發:

/status

再發一個小任務。回覆卡片應展示 Project、結果、耗時,以及當前視圖對應的信息。歡迎卡片裏的按鈕測試是可選項,不點也能直接發文字任務。隨時可以用下面這條命令檢查本機接入狀態:

pnpm dlx github:imetn/dsh-lark-bridge doctor

常用控制命令來自 README,不要自己發明別的斜槓指令:

  • 文字或附件:繼續當前 Agent
  • /steer <內容>:在運行中補充或糾正最近一步
  • /stop:取消當前任務
  • /approve/reject:處理當前一次工具審批的文字兜底
  • /new:創建新 Session
  • /sessions/resume:列出或恢復屬於當前飛書來源的 Session
  • /projects/project:在私聊中列出或選擇 Project
  • /bind [project-id]/unbind:管理羣聊的 Project 綁定
  • /view compact|standard|developer:切換當前 Session 的卡片密度
  • /commands/help:查看 Harness 原生命令或 Bridge 幫助

Profile 只有一個可用 Project 時,Owner 第一次在羣裏 @機器人 會自動綁定。存在多個 Project 時,需要發送一次 @機器人 /bind [project-id]。卡片按鈕也支持停止、新會話、狀態、審批、視圖切換和結構化提問。

卡片三檔視圖的差異如下:

  • compact:結果、耗時、關鍵操作
  • standard:精簡視圖加上 Project、模型、近期工具名、工具次數和總 token
  • developer:標準視圖加上 cwd、Session ID、已脫敏工具摘要與耗時、輸入 / 輸出 / 緩存 token

嚮導會寫入 ~/.dsh/profiles/lark/cordis.patch.yml。需要多個 Project 時,按 README 在這個文件裏追加,例如:

- id: dsh-lark-bridge
  config:
    appId: cli_xxxxxxxxxxxxxxxx
    appSecretRef: DSH_LARK_APP_SECRET
    brand: feishu
    defaultProjectId: web
    groupSessionScope: thread
    projects:
      - id: web
        name: Web App
        cwd: /absolute/path/to/web-app
        workspaceRoot: /absolute/path/to/web-app
        cardPreset: developer
      - id: ios
        name: iOS App
        cwd: /absolute/path/to/ios-app
        workspaceRoot: /absolute/path/to/ios-app
        cardPreset: compact

每個 Project 還可以設置 chatIdsallowedOpenIdsprovidermodelinboundDir。從飛書完成的羣綁定保存在僅 Owner 可讀的 Bridge 狀態文件中;靜態 chatIds 優先。

有兩個容易混的點。第一,dsh --profile lark 只啓動 Bridge,不提供 HTTP 頁面;http://127.0.0.1:3080 屬於單獨的 dsh web。第二,README 列出的常見故障:收不到消息時檢查是否發佈了應用版本、是否選擇了長連接、消息事件和權限是否齊全;羣聊無響應時先把機器人拉進羣並 @ 它;卡片按鈕無響應時補上 card.action.trigger,文字任務、/approve/reject 仍然可用。

適用場景與注意事項

適合已經在用 DeepSeek Harness、日常溝通又在飛書或 Lark 裏的個人開發者和小團隊:希望在手機或羣聊裏下任務、看進度、批一次工具調用,而不把本機終端一直開着。多代碼庫場景可以把每個羣綁到不同 Project,用話題隔離 Session。

它不適合當成「把 Harness 公開到互聯網上的網關」。SECURITY.md 寫得很清楚:Bridge 會把獲准的飛書用戶變成本機 Harness Agent 的遠程入口,每個允許的 open_id 都應視爲擁有該 Harness profile 實際能力的操作者。Bridge 不能替代 Harness 沙箱、審批策略、操作系統權限和憑據保管。

安裝和使用時建議同時記住這些邊界:

  • 目錄頁與 README 都強調:插件以當前 dsh 進程權限運行,安裝前檢查源碼和許可證;可復現安裝請固定 commit。
  • App Secret 放在 Harness 僅 Owner 可讀的憑據文件、密鑰管理器或受保護的進程環境裏,不要寫進 Profile,也不要出現在聊天、日誌、截圖或提交裏。
  • SECURITY.md 建議保持 allowAllUsersallowAllGroups 關閉,同時使用全局 allowedOpenIds 和更窄的 Project 名單;保持 requireMention: true;每個羣只綁一個 Project;workspaceRoot 設成最小夠用的目錄。
  • Owner 通過官方授權身份綁定,或使用經過哈希保存、十分鐘有效、只能用一次的 /claim 配對碼。
  • 入站附件使用 0700 目錄和 0600 文件,文件名會被淨化並加隨機後綴。
  • 脫敏是按常見密鑰形態做的,異常格式可能漏網;獲准操作者可以請求底層 Harness profile 允許的任何操作。羣成員能看到該羣可見的消息,即使其中只有部分人能操作機器人。
  • WebSocket 事件投遞不是分佈式鎖:多個 Bridge 進程掛到同一個飛書應用上,可能把事件和內存中的交互狀態拆散。一個飛書應用對應一個 Bridge,生產和開發應用分開。
  • DeepSeek Harness 仍是開發者預覽,本插件驗證過的版本是 0.1.0-rc.6。升級 Harness 前要再對一下插件的 peer 依賴。

同類目錄裏還有 dsh-lark 等飛書通道插件,維護者和許可證都不同。本文只依據 dsh-lark-bridge 自己的目錄頁和倉庫說明,不把別的插件的能力算到它頭上。

結語

dsh-lark-bridge 做的事情比較剋制:不另起一套 Web 控制檯,而是把飛書會話映射到 Harness 的 Project 和 Session,用一張卡片把進度、審批和文件送回去。對已經把日常協作放在飛書裏的人來說,這條路徑比反覆切回本機終端更直接。

它是 MIT 許可的社區項目,不是 DeepSeek 官方應用。裝之前看源碼、看許可證、固定 commit,把飛書應用權限和本機 Harness 審批策略一起收緊,再開始把任務從聊天窗口丟進去。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-lark-bridge/
GitHub:https://github.com/imetn/dsh-lark-bridge
DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜