用 dsh-lark-link 把 DeepSeek Harness 接到飛書

前言

DeepSeek Harness(dsh)的核心理念是「一切皆插件」:模型、工具、會話、沙箱、循環和界面都可以在配置層替換,不必改框架源碼。很多人已經在本機用 dsh web 跑智能體,真正卡手的往往是入口:人在手機上,任務卻還在終端裏;同事在飛書羣裏丟一張截圖或一段需求,還得複製回網頁。

如果按飛書開放平臺的常規做法自己接機器人,通常要建應用、勾事件訂閱、準備公網回調。社區裏已經有多款飛書/Lark 橋,dsh-lark-link 這條路線把掃碼建應用、卡片化切模式、出站發件箱和入站請求補發寫進了同一套插件。

本文按社區目錄詳情頁、GitHub 倉庫 README / package.json / CHANGELOG(當前 npm 版本 0.3.3)交叉覈對後整理:它是什麼、裝哪條命令、飛書裏怎麼用,以及默認 Full access 意味着什麼。

這是什麼

dsh-lark-link 是一款會話與消息類社區插件,GitHub 倉庫爲 amlyczz/dsh-lark-link,維護者 amlyczz(README 署名「小斯syzs」),許可證 MIT,主要語言 TypeScript。目錄頁收錄日期是 2026-08-06;倉庫創建於 2026-08-13,本文覈對當日 GitHub 顯示 17 星。npm 上的包名同樣是 dsh-lark-link,當前版本 0.3.3。

它解決的問題很具體:把已經在跑的 DSH 智能體接到飛書/Lark。私聊或羣裏發一條消息,對應的是一次完整的 Harness 回合(bash、文件、子代理、工作流等工具都在),而不是再包一層只能問答的聊天機器人。每個飛書會話對應獨立 Agent;橋會話本身是原生 DSH session,可以繼續在 Web GUI 裏看聊天、流式輸出和工具卡。

README 寫明:本項目爲社區插件,與 DeepSeek、飛書或 Lark 無隸屬關係。社區目錄 deepseek-harness-plugin.com 是獨立站點,不是 DeepSeek / 幻方的官方應用商店。

核心功能

掃碼建應用,不必手搓開放平臺

DSH 側執行 /lark setup 後,面板會顯示二維碼,用來創建飛書應用,並自動訂閱消息事件、羣聊全量和表情權限。README 把這條路徑概括爲約 30 秒上線,不要求自己配回調 URL,也不要求準備公網服務器。已經有現成應用時,也可以走 DSH_LARK_APP_ID / DSH_LARK_APP_SECRET 手動通道。

憑據寫入 DSH 的 credentials 服務,不進配置文件。/lark start/lark stop/lark restart/lark status 負責橋接生命週期;/lark uninstall-clean 用來清除憑據和狀態目錄。

出站發件箱 + 入站補發

可靠性是這份插件寫得最細的部分,分兩條線:

  1. 出站 Outbox:持久 JSONL 發件箱,at-least-once、冪等鍵、分航道並行;失敗的信封會離隊,不堵住後續投遞。進程被殺或 dsh 重啓後自動續投。0.3.0 起,橋命令(/status/help/mode 等)的回覆也走 Outbox,不再裸發。
  2. 入站 WAL:用戶消息已經被 Agent 接受、但處理到一半時如果插件熱更或 dsh 重啓,重啓後會按預寫日誌重新觸發這條請求。/status 和 Web 面板會顯示待補發條數。CHANGELOG 寫明邊界:只記錄純文本請求;指令、圖片、文件不納入補發。默認最多重放 2 次、時間窗 30 分鐘,避免空轉。

連接層還有 probe 驅動的受控重連,以及 QuotaGovernor 配額熔斷。0.3.0 之後,配額窗口過期會自動解除熔斷並重連,不必再手工 /lark restart。環境裏的 HTTP 代理會被主動避開,避免飛書 SDK 走錯協議。

卡片化命令和多模式 Agent

飛書裏 /mode/permission/model 都是單選按鈕卡片,點一下即切換,模型按供應商分組。當前 README 列出的 shipped preset 是 standard / code / minimal / cordis,也可以用 GUI 裏自建的 preset;默認 agentPresetcode(一次執行多步工具調用)。

權限分三檔:只讀、工作區寫、Full access,默認 Full accesspermissionMode=danger-full-access),沙箱全訪問且審批爲 never。羣聊默認 groupPolicy=open,免 @ 即可觸發。

命令走三級分流:橋特有命令由橋處理;DSH 已註冊命令(如 /goal/compact)原生執行;其餘 /xxx 和普通消息原樣注入 Agent,README 強調沒有攔截、沒有門禁。Skill 不需要 /skill:name 這類前綴,直接描述任務即可。

模型若調用 ask_user_question,會轉成飛書意圖確認卡片(選項按鈕、下拉多選、自定義輸入),答完後 Agent 繼續。收到消息會打隨機「已收到」表情,完成後打 DONE;表情集合按飛書實測有效值篩選,避免無效 emoji 返回 400。

媒體、會話和 Web GUI

入站:飛書圖片進入 attachment 存儲,交給視覺模型;文件做有界文本提取後寫入提示詞。出站:模型可通過 lark_send_local_file 回傳本地圖片或文件,帶工作區白名單、大小校驗,以及按飛書 file_type 規則的格式降級。

回覆若檢測爲 Markdown(標題、列表、代碼塊、表格等),會改成 CardKit 卡片發送;純文本仍走文本消息。流式輸出默認關閉,可用 /lark-config streaming.enabled=true 熱開 CardKit schema 2.0 流式卡片。

會話方面:/new 在當前工作區新起會話(不進 Agent);/workspace <路徑> 切換工作區,支持 ~ 展開;會話 id 在重啓後持久化。0.3.1 起,工作區 / 模型 / 模式覆蓋按會話鍵隔離,避免一個聊天裏的切換跟着重建 Agent 漏到別的會話。

橋 Agent 就是原生 DSH session,聊天、流式、工具卡和設置仍由 Web GUI 呈現;會話會歸入對應工作區,面板上能看到 Outbox 和補發計數。

/doctor 診斷包

飛書發送 /doctor,會收到一份 ZIP:當前會話完整 DSH session log、脫敏配置、ISSUE.md 模板。README 的定位是把這份包交給任意 AI 或發到維護者飛書羣,用來定位問題,而不是隻看一段報錯文本。

安裝與啓用

前置條件來自倉庫 README 和 package.json

  • Node.js ≥ 24engines.node 寫的是 >=24.0.0
  • 已安裝 DeepSeek Harness,例如 npm i -g @deepseek-ai/dsh

社區目錄頁給出的安裝命令原文是:

dsh plugin add github:amlyczz/dsh-lark-link

目錄頁同時說明:如需可復現安裝,可固定 commit 哈希:

dsh plugin add github:amlyczz/dsh-lark-link#commit

commit 換成實際哈希即可。插件以官方 bundle 格式分發(package.jsondsh.bundle + cordis.patch.yml),安裝後併入當前 profile 的 dsh.profile.bundles 層。

倉庫 README 當前更推薦從 npm 裝預構建產物,並指定 web profile(讓飛書和 GUI 共用同一套配置):

dsh plugin --profile web add dsh-lark-link@latest --ignore-scripts

升級:

dsh plugin --profile web update dsh-lark-link --latest --ignore-scripts

--ignore-scripts 的原因寫在 README 裏:飛書 SDK 的傳遞依賴 protobufjs 帶一個可忽略的 postinstall,pnpm 11 的安全策略可能攔截並返回非零退出碼;跳過腳本後 protobufjs 仍可用。若本機 pnpm 已全局放行,可以不加。從 GitHub 源碼安裝需要 prepare 構建和 allowBuilds 許可;離線環境可以先 npm pack,再 dsh plugin --profile web add ./dsh-lark-link-<version>.tgz --ignore-scripts

兩條安裝路徑指向同一倉庫。目錄頁命令以頁面原文爲準;日常使用時,README 的 npm + --profile web 寫法少一次源碼構建。安裝前應閱讀源碼和 MIT 許可證。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。

裝好後啓動 Web GUI:

dsh web

在 GUI 輸入框或終端執行:

/lark setup
/lark start

然後在飛書搜索剛創建的機器人,發一條任意消息。收到表情回執和完整回覆,即端到端連通。羣聊默認免 @。

典型用法

下面的命令和配置都來自倉庫 README,可以按原文復現。

1. 飛書側切模式、權限和模型

在與機器人的會話裏發送:

/mode
/permission
/model

會彈出單選卡片。/mode 在 standard、code、minimal、cordis 以及 GUI 自建 preset 之間切換;/permission 在只讀、工作區寫、Full access 之間切換;/model 按供應商列出可用模型。點選後即對當前會話生效。

2. 熱改配置

/lark-config groupPolicy=mention
/lark-config agentPreset=standard
/lark-config streaming.enabled=true

/lark-config 立即生效並持久化。常用鍵如下(默認值以 README 爲準):

配置鍵 默認 說明
groupPolicy open 羣聊觸發:open / mention / keywords / reply
groupKeywords ["lark","小斯"] keywords 模式下的觸發詞
agentPreset code Agent preset,或 GUI 自建 id
permissionMode danger-full-access 只讀 / 工作區寫 / Full access
streaming.enabled false CardKit 流式卡片
reactions.enabled true 表情回執
allowlist [] open_id 白名單;空表示所有人可對話
denyList [] 命令前綴拒絕兜底
workspaceRoot 橋會話工作區根目錄;空則用 process.cwd()

3. 會話、工作區和診斷

/new
/workspace ~/projects/demo
/status
/sessions
/help
/doctor
/stop

/new 新開會話;/workspace 切換工作區;/status 看連接、Outbox、補發和會話健康;/doctor 回傳 ZIP 診斷包;/stop 停當前任務。DSH 原生命令例如 /goal/compact 會在飛書裏執行並把結果發回來。

適用場景與注意事項

比較適合這些情況:

  • 本機已經在跑 DeepSeek Harness,希望用飛書私聊或羣聊當移動入口
  • 需要卡片切模式 / 模型,而不是記一串斜槓命令
  • 關心進程崩潰、插件熱更之後,文本消息和回覆能不能補回來
  • 希望橋會話繼續出現在 dsh web 的工作區裏,而不是另起一套聊天記錄

使用前要先看清權限邊界,下面幾條都來自目錄頁或倉庫文檔,不是額外發揮:

  1. 插件以當前 dsh 進程權限運行。 目錄頁寫明安裝時可能執行代碼。安裝前檢查 GitHub 源碼和 MIT 許可證;生產或可復現環境應固定 commit 哈希。
  2. 默認 Full access。 permissionMode 默認 danger-full-access,沙箱全訪問、審批 never。這等於飛書裏的一句話可以驅動本機 bash 和寫文件。共享機器人或接到羣裏之前,應先把權限降到只讀或工作區寫,並用 allowlist 限制 open_id。
  3. 羣聊默認免 @。 groupPolicy=openallowlist 爲空時,羣裏任何人說話都會進 Agent。更穩妥的是改成 mentionkeywords,並填白名單。
  4. 入站補發只覆蓋純文本。 圖片、文件、指令類消息不進 WAL;不要把「零丟失」理解成所有類型都保證重放。
  5. 運行時要求 Node.js ≥ 24。 版本不夠會裝不上或跑不起來。
  6. 這是社區插件。 與 DeepSeek、飛書、Lark 都沒有官方從屬關係;社區目錄也不是官方商店。倉庫 README 提供了維護者飛書羣,用來反饋問題,不是官方支持渠道。

架構上,橋是 Cordis 插件,分層爲 hostinboundapplicationoutboundsessions。README 寫明倉庫帶 162 項單元和集成測試,CI 在 push/PR 上跑類型檢查、測試和構建。這些是倉庫自稱的測試規模,不代表你這臺機器上的迴歸結果。

小結

dsh-lark-link 把 DeepSeek Harness 接到飛書:掃碼建應用、卡片切模式、媒體進出,再用 Outbox 和入站 WAL 處理崩潰與重啓。它複用原生 DSH session 和 Web GUI,所以飛書側和網頁側看到的是同一套會話,而不是兩套機器人。

默認 Full access、羣聊免 @、白名單爲空,這三條要先改再接到真實羣。裝插件前讀源碼和許可證,需要可復現安裝時固定 commit。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-lark-link/

GitHub:https://github.com/amlyczz/dsh-lark-link

npm:https://www.npmjs.com/package/dsh-lark-link

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

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

小夜