ShiXiangYu2
dsh-feishu-remote
Control your DeepSeek Harness agent from Feishu/Lark: DM a task, get results back, push notifications. Powered by lark-cli.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
📱 DSH Feishu Remote
Control your DeepSeek Harness agent from Feishu / Lark on your phone. Send a task by DM — get the result back in chat.
✨ What it does
- 📨 Feishu → Agent: DM your Feishu bot a task, a headless DSH agent runs it, and the result comes back to the chat.
- 📤 Agent → Feishu: the model gets a
feishu_sendtool to push results/notifications to any user or chat. - 🤖 Long connection: uses
lark-cli's WebSocket event bus — no public webhook server needed, works on localhost/LAN. - 🔒 Secure: reuses
lark-cli's OS-keychain credential storage and permission system.
🚀 Install
0. Prerequisites
- A Feishu/Lark self-built app with the Bot ability enabled, event subscription
im.message.receive_v1(long-connection mode), and permissionsim:message,im:message:send_as_bot,im:message.p2p_msg:readonly,im:chat:read,im:resource— all configured in the Feishu developer console. lark-cliinstalled & authenticated once:
npm i -g @larksuite/cli
lark-cli config init # paste your App ID / Secret
lark-cli auth login --recommend # scan QR to authorize
1. Install the plugin
dsh plugin --profile demo add github:ShiXiangYu2/dsh-feishu-remote
2. Configure
export LARK_HOME="$HOME" # where lark-cli config lives
export LARK_SEND_AS=bot # bot (default) or user
dsh --profile demo
3. Use it
DM your Feishu bot: 帮我总结一下 ~/projects 的 README — the agent runs and replies in Feishu.
🛠 Tools
| Tool | Description |
|---|---|
feishu_send | Model-facing: send a message to a Feishu user (ou_) or chat (oc_). |
🔌 How it works
Feishu DM ──► lark-cli event consume (WebSocket long-connection)
│
▼
DSH agent session (agents.create)
│ agent.send(task) → whenIdle()
▼
result text ──► lark-cli im +messages-send ──► Feishu chat
⚠️ Notes
- The full agent task wiring uses DSH's headless agent API (
agents.create+agent.send); requires thedsh-agent-loopprovider to be loaded (it is in the default profile). - Long tasks: the plugin currently awaits
whenIdle(); very long runs may exceed Feishu's message size — replies are truncated to the final text block. - See the Feishu developer console for app setup details (abilities, permissions, event subscription, version release).
📄 License
MIT