dsh-lark-link:把 DeepSeek Harness 智能体接入飞书

前言

DeepSeek Harness(DSH)在本地或 Web GUI 里跑 Agent 时,工具调用、文件读写、子代理都齐全,但对话入口通常绑在终端或浏览器。团队日常在飞书沟通,想从手机给 Agent 派任务、看结果,常见做法是自建飞书开放平台应用:申请应用、配事件回调、找公网地址收 webhook,再自己把消息转进 DSH。链路长、运维成本高,进程重启还容易丢消息。

dsh-lark-link 是社区维护的 DSH 客户端插件,把 DSH Agent 与飞书/Lark 做成双向桥接。扫码即可完成应用创建与认证,出站 Outbox 与入站 WAL 双持久化降低消息丢失风险,切换模式、权限、模型走飞书单选卡片,不必记一长串命令拼写。

这是什么

dsh-lark-link(npm 包名同名,当前版本 0.5.2)由维护者 amlyczz 发布,分类为客户端插件,GitHub 仓库 26 stars、5 forks,许可证 MIT。插件以 Cordis bundle 形式并入 DSH profile,桥接层负责飞书 SDK 适配、消息入站出站、会话管理与卡片交互;底层仍是原生 DSH session,可与 DSH Web GUI 共用同一套聊天、流式输出与工具面板。

项目为社区插件,与 DeepSeek、飞书或 Lark 无隶属关系。SkillHub 目录页:https://www.skillhub.cn/plugins/amlyczz/dsh-lark-link

核心功能

下面按已文档化的能力分组说明。

认证与连接

/lark setup 扫码创建飞书应用,自动订阅消息事件并申请群聊与表情相关权限,README 称约 30 秒可完成上线;也可通过环境变量 DSH_LARK_APP_IDDSH_LARK_SECRET 走手动通道。凭据写入 DSH credentials 服务,不进普通配置文件。

连接侧有 probe 驱动的受控重连、QuotaGovernor 配额熔断(窗口过期后自动解除并重连)、断连补偿,以及环境代理自动规避。

出站零丢失(Outbox)

出站消息走持久 Outbox:JSONL 存储、at-least-once 投递、幂等键、分航道并行、失败条目离队不阻塞整条队列、周期清理。进程被 kill、插件热更或 dsh 重启后,未发出的回复会自动续投;桥命令的回复同样走 Outbox。

入站请求补发(Inbound WAL)

用户消息在 Agent 处理到一半时若插件或 DSH 崩溃,重启后会按 WAL 对账并重新触发该条用户消息,而不是静默丢弃。有次数上限与时间窗以防空转;/status 可查看待补发条数。

多模式 Agent 与权限

支持 standard、code、minimal、cordis 等 preset,以及 GUI 自建的 preset。飞书发 /mode 弹出单选卡片切换,默认 code(一次执行多步工具调用)。/permission 卡片切换只读、工作区写、Full access 三种权限,默认 danger-full-access

卡片化命令与 DSH 原生命令

/model/mode/permission 均为单选按钮卡片,模型列表按供应商分组。/goal 可在飞书启动长任务闭环,支持 pauseresumeclear/new/resume/workspace 管理会话与工作区;/doctor 生成 ZIP 诊断包(session log、脱敏配置、ISSUE.md 模板);/lark-config key=value 热改配置并持久化。

命令分流规则:桥特有命令由桥处理;DSH 已注册命令(如 /compact)原生执行;/goal、未知 /xxx、普通文本原样注入 Agent。skill 无需前缀,直接描述任务即可。模型通过 ask_user_question 提问时,会转成飞书意图确认卡片(选项、多选、自定义输入)。

多媒体进出

入站:飞书图片存入 attachment 供视觉模型读取;文件做有界文本提取后写入提示词。出站:模型可通过 lark_send_local_file 回传本地图片或文件(工作区白名单、大小校验、格式自动降级)。

展示与交互

回复自动检测 Markdown,复杂内容用 CardKit 卡片渲染(标题、列表、代码块、表格),纯文本走文本消息。/lark-config streaming.enabled=true 可热开 CardKit schema 2.0 流式卡片逐字输出,默认关闭。收到消息可随机表情回执,完成时打 DONE 类 emoji(仅使用飞书实测有效的表情)。

Web GUI 复用与会话隔离

每个飞书会话对应独立 Agent 实例,工作区、模型、模式按会话持久化。/resume 用极简卡片恢复历史会话,支持点选、序号或 id 前缀,并提取会话真实标题,减轻跨重启 live session 冲突。桥接会话自动归入对应工作区,Web 面板可查看 Outbox 与补发计数。

访问控制

allowlist 限定可对话的 open_id;groupPolicy 控制群聊触发策略(open 免 @、mentionkeywordsreply);denyList 可按命令前缀拒绝。默认 groupPolicy=open,群聊可直接说话触发。

安装与启用

前置条件:Node.js ≥ 24,已全局安装 DeepSeek Harness(npm i -g @deepseek-ai/dsh)。

通过 DSH 官方 dsh plugin 机制安装,包以 bundle 格式分发,安装后并入 profile 的 dsh.profile.bundles 层:

dsh plugin --profile web add dsh-lark-link@latest --ignore-scripts

--ignore-scripts 用于跳过飞书 SDK 传递依赖 protobufjs 的 postinstall,在 pnpm 11 安全策略下避免非零退出码;若环境已全局放行可省略。--profile web 指定安装到 web profile,与 GUI 共用同一 profile 时保持 web

升级示例:

dsh plugin --profile web update dsh-lark-link --latest --ignore-scripts

若镜像 dist-tags.latest 未刷新导致报 Already up to date,可先查官方源版本再显式安装:

npm view dsh-lark-link versions --registry https://registry.npmjs.org
dsh plugin --profile web add dsh-lark-link@<新版本号> --ignore-scripts

安装后重启 dsh web 生效。启动与桥接:

dsh web

在 GUI 输入框或终端执行:

/lark setup    # 扫码创建飞书应用,面板显示二维码
/lark start    # 启动桥接

飞书搜索机器人发任意消息,收到表情回执且收到完整回复即表示端到端连通。

DSH 侧生命周期命令:

/lark setup
/lark start|stop|restart|status
/lark uninstall-clean    # 清除凭据与状态目录

典型用法

切换模式与模型:在飞书发送 /mode/model,点选卡片即可,无需手打 preset 或模型 id。

长任务/goal 整理本周会议纪要并写入工作区 启动自主执行;中途 /goal pause/goal resume;结束或放弃用 /goal clear

会话与工作区/new 在当前工作区新开会话;/resume 从卡片选历史会话;/workspace /path/to/project 切换工作区根目录。

热改群聊策略

/lark-config groupPolicy=mention
/lark-config streaming.enabled=true
/lark-config agentPreset=standard

排障:飞书发 /doctor 获取 ZIP 诊断包,或 /status 查看连接、Outbox、补发与会话健康。

发图或文件:直接在飞书发送,图片走视觉模型,文件提取文本后进 Agent 上下文。

常用配置项

以下均可通过 /lark-config 热改,立即生效并持久化:

配置键 默认 说明
groupPolicy open 群聊触发:open / mention / keywords / reply
groupKeywords ["lark","bot"] keywords 模式触发词
agentPreset code Agent preset
permissionMode danger-full-access 权限模式
streaming.enabled false CardKit 流式卡片
reactions.enabled true 表情回执
allowlist [] open_id 白名单,空表示不限制
denyList [] 命令前缀拒绝列表
workspaceRoot 桥会话工作区根,空为 process.cwd()
attachments.retentionHours 168 入站媒体保留小时数,0 为永久
attachments.dir 入站媒体目录覆盖,空为系统 tmpdir

适用场景与注意

适合已在用 DSH、希望把 Agent 入口放到飞书(尤其移动端)的团队或个人:研发在群里问代码问题、运维收 /status 健康信息、负责人用 /goal 驱动长任务,都无需守着终端。

安装前建议阅读 GitHub 源码与 MIT 许可证。插件以当前 dsh 进程权限运行,默认 Full access(沙箱全访问、审批 never),生产环境应结合 allowlistgroupPolicypermissionMode 收紧范围。插件状态为 beta;CI 在 push/PR 时跑类型检查、264 项测试与构建。

链接

  • SkillHub 目录:https://www.skillhub.cn/plugins/amlyczz/dsh-lark-link
  • GitHub:https://github.com/amlyczz/dsh-lark-link
  • npm:https://www.npmjs.com/package/dsh-lark-link
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜