Preface¶
In the DSH ecosystem, channel capabilities are typically integrated as plugins. If you wish to use DeepSeek Harness in Feishu or Lark International and need to handle text, images, regular files, persistent sessions, and tool approval—rather than just single-turn text Q&A—you need a channel plugin that can accommodate these capabilities.
Unlike methods that require a public network callback server, sliverp/DeepSeek-harness-lark uses official WebSocket transmission, does not require a public network callback server, and supports both Feishu and Lark International. Below is an introduction to its positioning, core capabilities, installation configuration, and typical usage.
What is this¶
sliverp/DeepSeek-harness-lark is a DeepSeek Harness channel bridge used to bring text, images, and files from Feishu / Lark into DSH.
Key information is as follows:
- Repository:
sliverp/DeepSeek-harness-lark - Maintainer:
sliverp - License:
MIT - Base: Official
@larksuiteoapi/node-sdk - Transport: Official WebSocket with auto-reconnect
- Applicability: Feishu and Lark International
Core Features¶
Messages and Sessions¶
- Supports text, rich text, images, and regular file input.
- Maintains persistent, isolated Harness sessions for each chat.
- Sending
/newpreserves old history and switches to a blank session. - Agent presets are mounted and recorded when creating or restoring sessions, with the default preset being
standard. - Supports direct chat and group chat access policies; group chats require @mentioning the bot by default.
Files and Multi-modal¶
- Supports Durable Harness attachments and organizes multi-modal inputs based on model capabilities.
- Regular files are downloaded to the Agent workspace’s
.dsh-lark/inbox/, making them convenient for filesystem tools to check. - Replies support model text, generated image uploads, and workspace file sending.
Commands and Approval¶
- Registered Harness slash commands are executed directly and not sent to the model as regular messages.
/approve <code>and/reject <code>can be used within the same session to complete one-time tool approvals.- The following commands are provided:
/bot-ping/bot-help/bot-image-test/bot-file-test/bot-status/bot-cancel
Credentials and Startup¶
- App Secret is parsed via the Harness credential service.
- If App ID or App Secret is not configured, the plugin enters dormant startup.
- Installing the plugin alone does not block Harness Web.
- When credentials are missing or invalid, the channel goes offline and logs are recorded without blocking Harness startup.
Installation and Enablement¶
Environment Requirements¶
Node.js 22.19 or later
pnpm 10.33.4
DeepSeek Harness 0.1.0-rc.7 or later
Installation¶
Install the plugin first, then configure Feishu / Lark app credentials:
pnpm dsh plugin --profile web add github:sliverp/DeepSeek-harness-lark
Configure Feishu / Lark App¶
- Create a custom app in the Feishu Developer Console and enable bot capabilities.
- Grant the following permissions:
im:message.p2p_msg:readonly
im:message.group_at_msg:readonly
im:message:readonly
im:message:send_as_bot
im:resource
Specifically, im:message:readonly is used for the Feishu message resource download endpoint to handle images and files sent by users; im:resource is still used for image/file uploads on the bot side.
- Select Long Connection Event Delivery and subscribe to
im.message.receive_v1. - Publish the app version and add the bot to the chats where it will be used.
- Put the App ID into
LARK_APP_IDand store the App Secret in the Harness credential referenceLARK_APP_SECRET.
For development, you can temporarily inject environment variables:
export LARK_APP_ID='<app-id>'
export LARK_APP_SECRET='<app-secret>'
pnpm dsh --profile web
For long-term use, put the App ID into ~/.dsh/.env and save the App Secret via the Harness credential settings interface. Do not commit credentials.
Typical Usage¶
Basic Checks¶
Send the following sequentially in the chat:
/bot-ping
/bot-image-test
/bot-file-test
/new
This step is used to check basic connectivity, image testing, file testing, and creating a new session.
File Checks and Sending¶
Send plain text, an image, and a CSV file, then ask the bot to check the CSV and confirm that it is using the path downloaded to the workspace.
Then ask it to create and send a CSV. The final response should include file attachments.
Tool Approval¶
Initiate an operation that requires approval, then reply with the precise instruction given:
/approve <code>
Or reject the operation:
/reject <code>
Limitations and Notes¶
- Access policies support
open,allowlist, anddisabled. In production, it is recommended to use allowlists and minimal Harness permissions. - Inbound defaults: Up to 10 files per message, single file max
50 MiB, total message size max100 MiB. - Outbound defaults: Up to 5 non-empty files per reply, each max
30 MiB. approvalTimeoutMsmust be less thanresponseTimeoutMs.agentPresetis the explicit fallback value for new sessions and persisted records without a preset.- Tool loop fixes will advance the plugin session namespace from
lark-v1-*tolark-v2-*. Old files are not deleted or rewritten, but the plugin will no longer append tolark-v1-*records that might be polluted by DSML; old records can still be viewed in the Web UI. - The plugin runs with the permissions of the current
dshprocess. It is recommended to check the source code and theMITlicense before installing.
Conclusion¶
If you need to use DeepSeek Harness within Feishu / Lark, focusing on text, images, files, persistent sessions, and approval, sliverp/DeepSeek-harness-lark provides an access method that does not require a public network callback server.
The community directory is a separate site and does not represent the DeepSeek / Hypothesis official app store. Repository address:
https://github.com/sliverp/DeepSeek-harness-lark
For the directory page provided in the link, please refer to the actual listing:
https://www.skillhub.cn/plugins/sliverp/DeepSeek-harness-lark