DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Lark Bridge — DeepSeek Harness 插件(DSH Plugin)
← Plugins
L

@deepseek-ai/dsh-lark-bridge

Lark Bridge

面向 DeepSeek Harness 代理的飞书(Lark)IM 机器人频道 — 按聊天划分的会话、原生思考过程、交互式审批卡片、WebSocket 长连接。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:moyu-good/dsh-lark-bridge#cb06c38e6f4d875209bd19cb486dd69957449c89
README兼容性版本

兼容性与来源证明

Lark Bridge 以 @deepseek-ai/dsh-lark-bridge 发布,当前版本为 0.3.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/8/20

版本

0.3.1stable
2026/8/20

相关插件

正在加载相关插件…

最新版
0.3.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
BSD-3-Clause
发布源
github
GitHub
★ 5
周下载
0
最近提交
2026/9/15
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rPocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。

README

🕊️ dsh-lark-bridge

Run a full DeepSeek Harness coding agent inside Feishu / Lark
Native thinking process, approval cards, live goal/todo cards, subagent fan-out, bilingual slash panel — no public webhook URL needed.

中文 · Quick Start · Features · Slash Commands · Configuration · Architecture · Development


What is this?

dsh-lark-bridge is a Feishu/Lark IM channel for DeepSeek Harness — a plugin that makes your coding agent work right inside a chat. Each conversation (DM or group) drives its own dsh agent with:

  • Native thinking process — model reasoning renders as Feishu's own "thinking" message, tool calls with icons, results as code blocks. No black box.
  • Interactive approval cards — operations needing confirmation become clickable cards (Allow once / Deny), with the decider written back.
  • Live lifecycle reactions — OK → THINKING → DONE / ERROR on every message.
  • Live goal & todo cards — goal phase changes and todo snapshots update a card in the chat, so a long-running task is never a silent gap.
  • WebSocket long connection — no public callback URL, no reverse proxy.

Feishu is the carrier; the work is still done by DeepSeek Harness itself.

✨ Features

🧠 Native thinking processcot renders reasoning as Feishu's native thinking message; older clients fall back to stream typewriter card
✅ Live reactionsOK → THINKING → DONE/ERROR, states replace each other, configurable
🗂️ One agent per conversationsessionScope: whole chat / topic thread / single sender; sessions persist across restarts
📋 Approval cardsHost approval questions render as Allow-once / Deny cards; decision + decider written back
🎯 Goal cardsLive goal phase (active/paused/blocked/complete) updates a card; /goal works, autoResumeGoals re-arms after restarts
✅ Todo cardstodo_write snapshots update a live card in the chat
🧑💻 Subagent fan-outWorkflow runs stream as text lines: run start, child open, child end, run end
📦 Compaction transparency"Compacting…" → summary text + released tokens; prunes report trimmed count
⏰ Scheduled remindersschedule_create/list/delete tools + /schedules view (compose @deepseek-ai/dsh-schedule yourself; the plugin ships the full listener)
🔍 Session history search/sessions <keyword> full-text searches this chat's stored history with snippets
⚙️ Background job notificationsrun_in_background jobs and direct subagents announce their terminal outcome in the chat
⚡ Full slash panel/stop /help /preset /sessions /tools /schedules /jobs /feedback /context /audit /config plus host commands (goal, plan, compact, permission)
🌐 Bilingual commandsPanel and /help follow the platform: English on international Lark, Chinese on domestic Feishu; locale overrides
🖼️ Image input (opt-in)attachImages downloads chat images into the host attachment store
📎 File deliveryAgent send_file delivers files with caption into the chat
🔑 QR onboardingFirst boot prints a QR code; scanning creates the Feishu app (event subscription included), credentials persist
🔒 Authorization narrowingsenderAllowlist / groupAllowlist / approvers narrow further than the app's visibility scope
🧩 Deep dsh adaptationEverything goes through host service contracts: agents, agentPresets, agentDefaultModel, settings, workspaceRegistry, loader, invariants, approval, goals — self-contained, no host source needed

🚀 Quick Start

npx @deepseek-ai/dsh plugin --profile web add github:moyu-good/dsh-lark-bridge \
  && npx @deepseek-ai/dsh web

The console prints a QR code → scan with Feishu to create the app → fill in your DeepSeek API Key in Settings → Models → DM the bot or @ it in a group.

Already using dsh? Drop the npx @deepseek-ai/ prefix.

The package ships prebuilt (lib/ is committed) — no build step on install. A prepare hook rebuilds automatically only when the compiled output is missing (e.g. a source clone without the committed output).

💬 Slash Commands

CommandDescription
/stopCancel the running turn
/helpShow this listing
/presetView / switch agent preset (standard / code / minimal / cordis)
/sessionsList this chat's session history
/toolsView / deny / allow tools at runtime
/schedulesView this chat's scheduled reminders
/jobsView this chat's background jobs
/auditOperation audit summary for the session
/contextView current context token pressure
/configView the bridge's live configuration
/goalView / set the goal (host)
/planEnter / leave plan mode (host)
/compactCompact older history (host)
/feedbackRate the last answer: positive/negative + optional note
/permissionSwitch permission preset (host)

Panel descriptions are bilingual: English when the platform domain is open.larksuite.com (international Lark), Chinese for open.feishu.cn (domestic Feishu). Set locale: zh|en to force one.

vs. other Feishu/Lark bridges

Capabilitydsh-lark-bridgexmanrui/dsh-imomdsh-dev/dsh-larkAX1202/ax-feishu-bridge
PositioningDeep Harness channelMulti-platform gatewayScan-to-usePi + DSH dual bridge
Native thinking process (Feishu CoT)✅———
Approval cards + decider trail✅——remote approve
Live goal/todo cards✅———
Workflow fan-out + phase/log lines✅———
Compaction transparency✅———
Goal auto-resume after restart✅—crash-safe—
Bilingual slash panel sync✅——panel buttons

⚙️ Configuration

FieldDefaultMeaning
appId, appSecretfirst-boot QR registrationFeishu/Lark app credentials
domainFeishuOpen-platform domain; Lark: https://open.larksuite.com
localeautoCommand language: auto (Lark→en, Feishu→zh) / zh / en
cwdhost process cwdAbsolute workspace directory for chat agents
provider, modelhost agentDefaultModelModel routing for chat agents
presetroster defaultAgent preset chat agents join
sessionScopechatchat / chat-thread / chat-sender
outputcotcot (native thinking process) or stream (typewriter card)
showProcesstrueShow reasoning and tool calls
reactionFeedbacktrueLive reaction feedback
hideProcessWhenDonefalseHide finished process (cot only)
attachImagesfalsePass chat images to the model
syncSlashCommandstruePublish commands to bot's / panel (reconciles: creates missing, removes stale, refreshes drifted descriptions)
autoResumeGoalsfalseRe-arm an active goal when a session returns after a restart
approvalReminderMs0Nudge the chat when an approval card is unanswered this many ms (0 = off)

⚠️ File delivery is default-deny. Without outbound.allowedFileDirs, send_file with a local path fails with local file source requires outbound.allowedFileDirs to be configured — the agent appears to send, nothing arrives. URLs and raw buffers always work.

Credentials resolve in three layers, later wins: bundle patch config → settings document plugin section → first-boot QR registration.

🔐 Required app permissions

A newly created Feishu app needs these scopes published before the panel and messaging work. The QR onboarding flow grants them automatically; a manually created app must add them in Developer Console → Permissions, then create and publish a version (scopes added after the last publish are not visible to the API until a new version ships):

ScopeNeeded for
application:app_slash_command (read + write)Slash command panel — without it, syncSlashPanel fails with 99991672 and the / list stays empty
im:messageSend and receive messages
im:message:readonlyRead message content
im:message.receive_v1 eventReceive message events (Events & Callbacks → long connection)
im:resourceUpload / send images and files
im:chat:readGroup chat info (group scenarios)
im:message.reactions:read / write_onlyLive reaction feedback

Debug with the API directly — the console page shows granted, the API shows what the published version carries:

# 1. token
curl -s -X POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal \
  -H 'Content-Type: application/json' \
  -d "{\"app_id\":\"$APP_ID\",\"app_secret\":\"$APP_SECRET\"}" | jq -r .tenant_access_token
# 2. slash commands (should list your commands after sync)
curl -s "https://open.feishu.cn/open-apis/application/v7/app_slash_commands?page_size=50" \
  -H "Authorization: Bearer $TOKEN"
# 3. published scopes (check application:app_slash_command is present)
curl -s "https://open.feishu.cn/open-apis/application/v6/applications/$APP_ID/app_versions?lang=zh_cn" \
  -H "Authorization: Bearer $TOKEN"

The slash panel sync runs on session create/resume — after granting the scope, send the bot one message to trigger it.

🧭 Architecture

Feishu / Lark ── WebSocket 长连接 ──►  dsh-lark-bridge (dsh 进程内的 feishu-channel 插件)
   (聊天/审批/图片)                        │
                                          ▼
                     host 服务契约: agents / sessions / tools / approval /
                     goal / workspace / settings / commands
                                          │
                                          ▼
                                     DeepSeek Harness 本体

The bridge runs inside the dsh process as the feishu-channel plugin — it is not a separate server. npx @deepseek-ai/dsh web (or --profile chat) boots dsh with this plugin composed; the plugin opens the WebSocket long connection and drives everything from there. Any launcher (shell script, systemd, supervisor) can host it; it has no dependency on any other agent framework.

🛠️ Development

pnpm install
pnpm run build    # clean + tsc + tsdown (emits into lib/, committed)
pnpm test         # vitest (272 tests)
node plugin-contract-test.mjs   # standalone contract tests

The repo is self-contained: only published packages (@deepseek-ai/cordis, @deepseek-ai/schemastery, @larksuite/channel) are dependencies, no host source needed.

Packaging notes (why lib/ is committed):

  • Git-dependency installs (github:user/repo) never ran a build, and without a committed lib/ the plugin failed at boot with ERR_MODULE_NOT_FOUND — fixed by committing the compiled output.
  • The prepare hook is a safety net for source clones: it exits immediately when lib/ exists and only rebuilds when it is genuinely missing.
  • build cleans lib/ first (tsdown itself runs clean: false because its entry points live inside the output dir).

📋 Known limitations

  • Configuration is read once at startup; changes need a restart
  • Events during a long-connection outage are not replayed (transport has no cursor)
  • The Feishu app must use long-connection event subscription (self-built app); webhook mode receives no events
  • schedule_create/list/delete tools require composing @deepseek-ai/dsh-schedule in your dsh profile (the bridge already listens for schedule/change and renders /schedules; the tools are the model-side half)

📄 License

BSD-3-Clause. Architecture inspired by dsh-lark (also BSD-3-Clause).

denyTools
[]
Tools chat agents may not call
requireMentiontrueIn groups, only respond when @-mentioned
senderAllowlist[]Open ids allowed to DM
groupAllowlist[]Only these oc_… group chats when non-empty
approvers[]Open ids allowed to answer approvals
outbound.allowedFileDirsunset → file sending disabledDirectories send_file may read local paths from. Required for delivering generated artifacts (HTML reports, screenshots, documents). Example: outbound: { allowedFileDirs: ['/home/user/work'] }