Notifications & Integrations

feishu-dsh-plugin

2286893544/feishu-dsh-plugin · ★ 2

2286893544

Feishu (Lark) tools for DeepSeek Harness: send messages, read chat history, create/read/append Feishu documents, and grant document access.

An English summary is not available; the Chinese summary is shown.

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
github
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:01.736Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:2286893544/feishu-dsh-plugin#8cb7f88b0eed0b8c59932e381f52f096c7e56df9'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Install
  2. Tools (25)
  3. Notes and limits
  4. Prerequisites (Feishu side)
  5. Development
  6. License

Feishu (Lark) tools for DeepSeek Harness: 25 feishu_* tools covering chat messages, cloud documents (including images, generated charts and tables), bitable records, spreadsheet ranges and drive permissions — through your own enterprise self-built Feishu app. Pure Node, no external dependencies, no Python.

Install

Requires DeepSeek Harness with plugin support (dsh plugin).

dsh plugin --profile web add dsh-plugin-feishu                  # once published to npm
dsh plugin --profile web add github:2286893544/feishu-dsh-plugin # straight from GitHub

Reload the profile, then configure the plugin on its own settings page: Settings → 飞书(Feishu). The client half (client/client.js) contributes that sidebar page (a settings.section, the same slot community plugins such as the side card use); it writes into the feishu-bridge settings namespace, so a saved change applies immediately:

Field Meaning
appId Feishu app ID of your self-built app (cli_...)
appSecret Feishu app secret — declared role("secret"), so it is redacted from every page read and shown as a password control that starts blank
tenantDomain Optional (acme.feishu.cn); auto-detected from the tenant API when empty
defaultChatId Optional (oc_...) used by the chat tools when a call omits chat_id
grantOpenId Optional (ou_...) — every document/bitable the plugin creates is shared with this user (full_access), so the person operating the bot keeps control of what the bot made
wikiSpaceId Optional knowledge-base space id; when set, new documents are created inside that knowledge base and the returned URL is a /wiki/ link
wikiParentNodeToken Optional default parent node for new wiki documents (empty means the knowledge-base root)

On a host without a settings service the card is simply absent and the composed configuration stands. Both fallbacks remain: the profile patch entry (config: { appId, appSecret, ... }) and the environment variables FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_TENANT_DOMAIN.

The page also carries a 测试连接 (test connection) button. It POSTs to the host route /dsh-plugin-feishu/test-connection, which exercises the stored credentials against the Feishu API and answers with non-secret facts only: the app name, the tenant name and domain, a masked key fingerprint (pkQi…E2h (len 32)) and which configuration layers supplied the values. The raw secret never leaves the host, and the route refuses GETs and cross-origin calls.

Tools (25)

Chat & messages — feishu_list_chats, feishu_list_chat_members, feishu_send_text, feishu_send_post_message, feishu_read_chat_history, feishu_recall_message

Documents (docx) — feishu_create_document, feishu_read_document, feishu_read_document_blocks, feishu_append_document_blocks, feishu_update_document_block, feishu_delete_document_block, feishu_insert_table_into_document, feishu_insert_image_into_document, feishu_insert_chart_into_document, feishu_resolve_wiki_node

Bitable — feishu_create_bitable, feishu_list_bitable_tables, feishu_list_bitable_fields, feishu_write_bitable_record, feishu_read_bitable_records

Sheets (classic v2 range API) — feishu_read_sheet_range, feishu_write_sheet_range

Permissions — feishu_grant_document_access, feishu_set_document_link_sharing

A bundled feishu skill documents the workflows and known limits for the agent.

Notes and limits

  • Charts are rendered locally (pure Node PNG encoder + 5×7 ASCII font); chart titles and category labels are ASCII-only — non-ASCII characters are dropped. For Chinese labels, generate the image yourself and use feishu_insert_image_into_document.
  • Spreadsheet tools use the classic sheets v2 range API.
  • Only chats the bot belongs to can be read; other users' private chats are not accessible through the Feishu API.

Prerequisites (Feishu side)

  • Enterprise self-built app with the bot enabled.
  • Published scopes for reading chat history (im:message.group_msg …), docx read/write, bitable, sheets and drive permission management; the bot must be a member of the target chats, and documents the app must read must be shared with it.
  • Credentials stay local; never share appSecret in chat or documents.

Development

node scripts/verify-registration.mjs   # offline: registers 25 tools + skill, renders a chart
node scripts/smoke.mjs                 # live API check (needs credentials; optional doc id)

License

MIT