Preface¶
DSH (DeepSeek Harness), as a workspace environment, often needs to continue task progress through chat software. Traditional integration approaches usually require configuring a public callback address and often need to process large amounts of historical messages. Feishu Workspace Bridge solves this problem. It maps DSH workspaces to Feishu groups one-to-one and achieves real-time bidirectional message synchronization between DSH sessions and Feishu groups.
Plugin Introduction¶
Feishu Workspace Bridge is a network tool plugin maintained by bandianliancha. Its core logic is: bind a Feishu enterprise self-built application bot, create a Feishu private group on demand when the first message appears in a workspace, and synchronize messages bidirectionally between the DSH session and that group. The plugin does not read historical messages and does not require a public callback address.
Core Features¶
- Real-time bidirectional message synchronization
- On-demand creation of Feishu private groups
- Markdown support
- Message queue delivery
- No historical message reading
- Continue processing failed messages after process restart
- Secure credential storage (system keychain or file)
Installation and Enablement¶
Install the plugin using the official command:
dsh plugin --profile web add dsh-plugin-feishu-workspace
After installation, you need to restart the DSH Web service:
dsh web --no-open
Configuration¶
After the restart, fill in the following information in the “Feishu Bot” section of DSH settings:
- App ID
- App Secret
- Your Feishu Open ID (format is ou_...)
Click “Save and Verify”. The plugin checks the bot, event subscriptions, and all required permissions before saving. If verification fails, the existing configuration will not be overwritten.
Feishu Open Platform Configuration¶
To use this plugin, you need to complete the following configuration in the Feishu Open Platform:
- Enable the bot capability.
- In “Events and Callbacks”, select “Use long-lived connection to receive events”, and subscribe to
im.message.receive_v1(local deployment does not require a public callback address). - Enable the following permissions:
im:chat:create: Create group chatsim:chat: Retrieve and update group informationim:message:send_as_bot: Send messages as the applicationim:message.group_msg: Receive group chat messagesim:message.reactions:write_only: Add message reaction repliesapplication:application:self_manage: Manage the application’s own information
Data and Security¶
- Credential storage: On macOS, the App Secret is stored in the system keychain; on Linux, the App Secret is stored in a file with permissions set to
0600(the path is usually~/.dsh/feishu-workspace-bridge.secrets.json). - Database: The default location is
~/.dsh/feishu-workspace-bridge.sqlite. - Message processing: Inbound and outbound messages are deduplicated by message ID; delivered records are retained for 30 days and then automatically cleaned, while undelivered records are not periodically cleared.
Working Mechanism¶
- Lifecycle: One workspace can be bound to at most one group. The group is created by the bot, defaults to a private group, and group information can only be modified by the group owner or administrators. After a workspace is renamed, the group name is synchronized automatically; after a workspace is deleted, the group is automatically dissolved.
- Message queue: While DSH is processing a task, new messages from Feishu are queued using
queuemode and do not interrupt the current task. - Reliability: The status of each message is recorded; transient failures are retried with exponential backoff, and processing continues after a process restart. Long messages are sent in segments and will not be silently truncated.
Notes¶
- Node.js 20 or higher is required.
- DeepSeek Harness (DSH) is required.
- The DSH version must be 0.1.7-alpha.1 or higher.
- DSH loads server-side plugins only at startup; after modifying code, you need to restart
dsh web.
Summary¶
Feishu Workspace Bridge provides an DSH and Feiss integration solution that does not require a public callback address or read historical messages. Through private groups and a message queue mechanism, it ensures real-time and stable synchronization.