前言¶
把 DeepSeek Harness(DSH)接到 IM 裏,常見做法是自建一層消息轉發或薄封裝。飛書側還有長連接事件、互動卡片回調、羣話題與附件等細節;若還要持久會話、工作區讀寫、隔離 shell 以及對外寫入前的審批,單做一個 relay 往往不夠。
下面介紹社區插件 dsh-feishu(維護者 ycp424c):在 DSH 之上提供飛書 / Lark 機器人基礎能力,屬於 DSH 社區目錄中的「工作流」類插件。倉庫當前爲 alpha 源碼預覽,尚無獨立 npm 包或官方預編譯二進制;部署以在目標 Linux 上構建並校驗歸檔後安裝爲主。
這是什麼¶
dsh-feishu 一句話定位:帶持久會話、隔離工作區工具、審批卡片,以及可選職場 API 的社區 DSH 飛書 / Lark 機器人底座(倉庫描述與 README 一致)。
- 一個實例對應一個飛書應用;共享工作區不是按用戶隔離的文件沙箱。
- 默認可在工作區內讀寫並運行隔離 shell,能力上不只是文本聊天中繼。
- 通用飛書工具可按羣組啓用;經這些工具的外部寫入需當前請求者審批。
- 瀏覽器自動化、領域工作流、組織身份與內部知識庫等,README 明確應放在消費方項目中擴展。
基線環境(README 已驗證目標):Ubuntu 22.04、Linux x64、Node.js 22.19+、Python 3.10+、bubblewrap、用戶級 systemd。DSH 固定爲 0.2.1-rc.5,飛書 SDK 固定爲 @larksuiteoapi/node-sdk 1.76.0。package.json 中插件版本爲 0.1.0-alpha.3。項目代碼 MIT 許可;運行時依賴另有各自許可證(含 MPL/LGPL 組件)。
核心功能¶
以下均來自 GitHub README 能力列表與範圍說明。
會話與指令
- 按應用、會話、話題區分的持久會話;支持
/status、/new,以及請求者自己的/cancel。 - 圖片與文件輸入、處理中 reaction、話題回覆與最終消息投遞;圖片需支持圖像的模型,普通文件以原始附件交給 agent 工具處理。
工作區與 shell
- 工作區文件生成與隔離 shell 命令,含顯式子目錄與保留的只讀授權。
飛書工具與審批
- 通過
toolGroups可選十六類通用飛書工具:文檔、知識庫、雲盤、羣聊 / 討論、多維表格、權限診斷、消息 / 媒體、妙記等。 - 綁定請求者的審批卡片、寫入回執、讀回、去重;對不確定的寫入不會自動重試。
- 資源權限仍生效:僅有應用 scope 並不等於能訪問所有文檔或錄音;無內置 Office 解析、OCR 或音頻轉寫。
擴展
- 面向可信應用代碼的版本化擴展契約;必選擴展須在頻道連接前就緒。
信任邊界(務必閱讀)
- Shell 的網絡副作用不會自動變成飛書審批卡片。管理員 Web 默認僅 loopback,經 DSH 認證;私有登錄 URL 在
state/web-login-url,常用 SSH 隧道訪問。詳見倉庫 SECURITY.md。
安裝與啓用¶
插件不是 dsh plugin add github:… 一類一行命令安裝;流程爲:在 Linux 上構建發行包 → 校驗 SHA-256 → 解壓並用 install.py 註冊實例 → 填密鑰 → doctor → 用戶 systemd 啓服務。
1. 飛書應用與配置¶
- 創建飛書 / Lark 應用,開啓機器人能力,配置長連接消息事件與互動卡片回調。
- 將
examples/basic-bot/config.example.json複製到源碼目錄外,填寫應用 ID、允許的 sender open ID、provider、model、endpoint;open ID 須屬於同一應用。 - 權限、羣話題、模型輸入類型、可選
toolGroups等見 Configuration。
構建步驟(含依賴與 scripts/package-release.py)見倉庫 README「Build from source on Linux」;產物由 dist/release.json 指明歸檔文件名與 SHA-256。
2. 安裝已構建並校驗的歸檔¶
安裝不會自動啓動服務。密鑰寫入實例目錄 state/secrets.json(DSH_FEISHU_APP_SECRET、DSH_MODEL_API_KEY,權限 600),狀態應放在源碼庫外。
export DSH_FEISHU_INSTANCE="$HOME/.local/share/dsh-feishu"
export DSH_FEISHU_CONFIG="$HOME/dsh-feishu-config.json"
export DSH_FEISHU_ARCHIVE="$PWD/dist/$(node -p 'require("./dist/release.json").file')"
export DSH_FEISHU_RELEASE="$(basename "$DSH_FEISHU_ARCHIVE" .tar.gz)"
mkdir -p "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
# Compare sha256sum output with dist/release.json before extracting.
sha256sum "$DSH_FEISHU_ARCHIVE"
tar -xzf "$DSH_FEISHU_ARCHIVE" -C "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
python3 "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE/scripts/install.py" --root "$DSH_FEISHU_INSTANCE" --release "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE" --config "$DSH_FEISHU_CONFIG" --service dsh-feishu
3. 自檢並啓動¶
doctor 會演練已配置的沙箱,而不只是覈對版本號:
node "$DSH_FEISHU_INSTANCE/current/scripts/doctor.mjs" "$DSH_FEISHU_INSTANCE"
systemctl --user enable --now dsh-feishu.service
典型用法¶
會話控制(羣內 / 私聊以實際配置爲準)
/status:查看當前會話狀態。/new:開啓新會話上下文。/cancel:由當前請求者取消進行中的請求。
帶附件的對話
- 向機器人發送圖片或文件;處理過程中可有 reaction,結果通過話題回覆或最終消息返回。圖片模型需具備圖像能力;非圖片文件由 agent 在工作區工具中自行處理。
啓用飛書寫入類工具
- 在配置中按文檔設置
toolGroups,爲對應羣開啓文檔、雲盤、多維表格等工具;模型發起的外部寫入會彈出綁定當前請求者的審批卡片,通過後纔有寫入回執。
擴展開發
- 消費方實現倉庫 Extensions 中的契約;若聲明爲必選擴展,須在長連接就緒前完成加載。
運維與排錯可參考 Operations。
適用場景與注意¶
適合誰
- 已在用 DSH(
0.2.1-rc.5基線),希望在飛書 / Lark 內落地帶工具與審批的智能體,並願意自行構建、部署 Linux 實例的團隊。 - 需要羣話題、附件、可選飛書 Open API 工具組,而不是純文本 webhook 轉發的場景。
不適合或需另做項目的部分
- README 明確:瀏覽器自動化、強領域工作流、組織 SSO、內部知識庫等應放在基於本底座的消費項目中,而非期待插件內置。
- 其他操作系統與架構未作爲驗證目標;勿在 macOS 上直接運行爲 Linux 打好的 runtime 拷貝。
安全與權限
- 插件以你部署時的 DSH / 進程與用戶權限 運行;默認能讀寫其工作區並執行隔離 shell。安裝前請閱讀源碼、SECURITY.md 與 THIRD_PARTY_NOTICES.md,確認許可證與信任邊界可接受。
- 單實例單應用;多人共用實例時,工作區與 shell 副作用並非按飛書用戶自動隔離。
DSH 生態強調「一切皆插件」;SkillHub 社區目錄 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-feishu 把 DSH 的會話、工作區工具與審批模型接到飛書 / Lark,並預留擴展契約與可選職場 API 工具組。當前仍爲 alpha 預覽,部署以 Linux 構建 + 歸檔安裝爲主;使用前完成飛書應用配置、密鑰與 doctor 自檢即可。