dsh-lark:用飞书 / Lark 消息驱动本地 DeepSeek Harness 会话

前言

在本地跑 DeepSeek Harness(DSH)时,任务通常绑在终端或 Web UI 上:改代码、查失败测试、问仓库结构,都要先切到那一侧再发指令。若团队日常在飞书或 Lark 里沟通,把「发一条消息 → 本地 agent 执行 → 结果回到同一条会话」串起来,能减少上下文切换,同时仍可在 dsh Web UI 里查看完整会话与工具调用。

下面介绍社区插件 dsh-lark(维护者 ChengqianHuang,SkillHub 分类为工作流):在已安装的 dsh 与已配置的 Lark/Feishu 机器人之上,用 lark-cli 订阅消息事件,在本地工作区执行 turn,并把答复回复到触发消息所在的聊天;不对外暴露公网 webhook。

这是什么

dsh-lark 是 DeepSeek Harness 的 package-bundle 插件(仓库 ChengqianHuang/dsh-lark)。README 概括为:向 Lark 或 Feishu 机器人发送任务,Harness 在本地工作区运行,并回复到发起该任务的消息;审查变更、排查失败测试、询问代码等,会话仍可在 dsh Web UI 中继续查看。

插件通过 bundle 内的 cordis.patch.yml 安装 lark 服务行;宿主负责 agent、工具、凭据、权限与持久化会话历史。当前文档中的兼容目标是 dsh 0.1.2-alpha.5(见 README「Use this package」);package 版本为 0.2.0,许可证 MIT。

核心功能

以下能力均来自仓库 README 与说明文档索引,未在资料中展开的细节不展开写。

会话与上下文

  • 私聊与群话题各自维护会话;后续消息保留上下文。
  • 私聊发送 /sessions 可列出可选会话并切换继续(需 session 卡片与 CLI card.action.trigger 支持,见 setup 文档)。
  • 发送 /new 会取消桥接任务、清空待处理消息并重置当前聊天的会话。

任务与文件

  • 普通文本:在当前聊天的会话中执行一个任务;额外任务进入有界队列。
  • 可接收图片/文件;支持显式文件投递审批;任务进度卡片带停止按钮(可通过配置关闭各类卡片,见下文配置项)。
  • 桥接注册 lark_send_file 等工具;具体可用动作取决于宿主 dsh 的工具与权限策略。

控制与安全

  • /status 查看当前会话、运行状态与队列;/stop 取消当前桥接任务并清空待处理消息;/help 立即列出命令。
  • 可限制发送者与聊天;空发送者白名单会导致启动失败,除非显式启用 allowAllSenders。
  • 事件经 lark-cli 本地订阅处理,不打开公网 webhook 端点。
  • 会话继承宿主的默认 agent 预设与权限策略;群成员可见回复,同话题内授权发送者共享上下文;配置的 filesystem workspace 在聊天会话间共享。

群聊

  • 默认示例配置中 groupPolicy: disabled;启用群聊需例如 groupPolicy: mentions 并限制 allowedChats(见 configuration 文档)。
  • 群中需用机器人 @display name 精确开启话题,在该话题内回复以延续会话。

命令一览

消息 结果
普通文本 在本聊天会话中运行一个任务;其余任务排队
/sessions 私聊中展示会话选择
/status 当前会话、运行状态与队列
/stop 取消当前桥接任务并清空待处理消息
/new 取消工作、清空待处理并重置本会话
/help 显示可用命令

未知斜杠命令会返回帮助,不会当作 agent 提示执行。机器人通知支持英文与简体中文;模型答复语言随对话选择。

安装与启用

前置条件(README 原文):可用的 dsh 安装、Node.js ^22.19.0 || >=24.0.0、pnpm、已在 PATH 中配置好的 Lark/Feishu 机器人与 lark-cli。凭据、scope、发送者 ID 等见仓库 docs/setup.md。

1. 构建并安装 bundle

官方步骤为从源码构建后链入 web profile:

git clone https://github.com/ChengqianHuang/dsh-lark.git
cd dsh-lark
pnpm install --frozen-lockfile
pnpm build
dsh plugin --profile web add "$PWD"

本地 checkout 会链入 web profile;改源码后需重新 build。若从 Harness 源码运行 dsh,README 建议在该仓库用 pnpm dsh 执行 dsh 命令,并向 add 传入插件目录的绝对路径。

2. 允许账号与工作区

将下列片段合并进 ${DSH_HOME:-$HOME/.dsh}/profiles/web/cordis.patch.yml,替换示例 sender ID,并保留文件中已有条目:

- id: lark
  config:
    allowedSenders: [ou_your_open_id]
    workspacePath: ~/projects/my-project
    groupPolicy: disabled
    locale: en

说明(README):session 与 interaction 卡片默认开启,需 CLI 支持 card.action.trigger;启动前按 setup 配置回调。若只要纯文本,可设 sessionCards: false、interactionCards: false、progressCards: false,以及 receiveAttachments: false、fileDelivery: false。中文通知可设 locale: zh-CN。

3. 启动与验证

dsh --profile web --dump-config
dsh web

配置 dump 应包含 dsh-lark 层与你的设置;它不校验 Lark 连通性。向机器人发 /help,再让它描述工作区;在 Web UI 打开会话查看工具活动。权限请求与追问通过 interactions 中的卡片处理。

卸载:dsh plugin --profile web remove dsh-lark。已保存的 dsh 会话历史仍受宿主保留策略约束。

典型用法

README 给出的示例提示(实际能力取决于你的工具与权限):

  • “Explain this repository’s entry points”
  • “Review the changes in my workspace”
  • “Find why the parser test fails”

建议流程:先私聊直连验证 → 发 /help 熟悉命令 → 用自然语言描述任务 → 在 Web UI 查看完整回复与工具轨迹;长回答可能被截断,完整内容在 dsh 会话中查看(README「Known Limitations」)。

群聊场景:按文档配置 groupPolicy 与 allowedChats 后,用机器人显示名 @ 开话题,在话题内连续对话。

适用场景与注意

适合谁

  • 已在本地使用 DSH,且团队沟通在 Lark/Feishu,希望从 IM 触发本地 coding agent 的开发者。
  • 需要私聊切换历史会话、在聊天里审批文件与权限、并用 /stop 打断任务的工作流场景。

务必知晓

  • 桥接任务在 运行 dsh 的同一主机权限 下执行,并读写你配置的 workspacePath;安装与启用前应阅读仓库源码、SECURITY.md 与 MIT 许可证。
  • 社区目录 SkillHub 插件页 与 GitHub 仓库由维护者发布;DSH 生态强调「一切皆插件」,该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
  • 资料中记录的 GitHub 星标为 0;更多限制见 README「Known Limitations and Deferred Work」及 troubleshooting。

延伸阅读

仓库内文档索引: Setup、Configuration、Sessions、Tasks、DESIGN.md。中文 README:README.zh-CN.md。

dsh-lark 把 IM 消息与本地 Harness 会话对齐:消息驱动任务、结果回到聊天、会话仍在 Web UI 可审计。目录页:https://www.skillhub.cn/plugins/ChengqianHuang/dsh-lark;源码与安装说明:https://github.com/ChengqianHuang/dsh-lark。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye