🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

飞书桥接机器人 PlutoKeating/dsh-lark-bot

DeepSeek Harnessv0.19.16
PlutoKeating69 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness(dsh)接入飞书/Lark 机器人,扫码即用:流式卡片、项目工作区、并行任务、多角色智能体、跨会话通知、对话内模型与密钥管理,还有安全网守护(dsh 崩溃后飞书仍可自救)。

47.5/100
综合分
39
GitHub 星标
484
npm 周下载
—/5
用户评分

数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-lark-bot
npm 源 · dsh-lark-bot 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · platform
装得上吗
实装验证未通过(runtime_smoke_failed),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 69 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(runtime_smoke_failed · 2026/10/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-lark-bot @ 0.19.16
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 22:41:10

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 333 处,展示前 77 条)
  • 读取本地文件
    dist/plugin.js:18
    return paths.find((path) => existsSync(path));
  • 读取本地文件
    dist/plugin.js:22
    return readdirSync(root, { withFileTypes: true }).filter((entry) => entry.isDirectory() || entry.isSymbolicLink()).map((entry) => join2(root, entry.na
  • 读取本地文件
    dist/plugin.js:43
    if (existsSync(path)) return path;
  • 读取本地文件
    dist/plugin.js:232
    const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
  • 读取本地文件
    dist/plugin.js:247
    const pkg = JSON.parse(readFileSync(join4(own.root, "package.json"), "utf8"));
  • 读取本地文件
    dist/plugin.js:284
    const parsed = JSON.parse(readFileSync2(manifest, "utf8"));
  • 写入本地文件
    dist/plugin.js:476
    await mkdir4(root, { recursive: true });
  • 写入本地文件
    dist/plugin.js:477
    await writeFile4(join7(root, "package.json"), packageJsonFor2(profile, own), "utf8");
  • 写入本地文件
    dist/plugin.js:478
    await writeFile4(join7(root, "cordis.yml"), "[]\n", "utf8");
  • 写入本地文件
    dist/plugin.js:479
    await writeFile4(join7(root, "cordis.patch.yml"), acpPatchYaml(provider, model, own), "utf8");
  • 写入本地文件
    dist/plugin.js:914
    await mkdir(directory, { recursive: true });
  • 写入本地文件
    dist/plugin.js:917
    await writeFile(temporary, data, options.mode === void 0 ? void 0 : { mode: options.mode });
  • 删除本地文件
    dist/plugin.js:1434
    await rm(lockPath, { force: true }).catch(() => void 0);
  • 发起网络请求
    dist/plugin.js:2334
    await harness.client.request("attachment/upload", { images: encoded }),
  • 发起网络请求
    dist/plugin.js:3112
    const response = await fetch(`${this.baseUrl}/api/${method}`, {
  • 发起网络请求
    dist/plugin.js:3169
    const response = await fetch(`${this.baseUrl}/`, {
  • 删除本地文件递归
    dist/plugin.js:5401
    await rm2(found, { recursive: true, force: true });
  • 发起网络请求
    dist/plugin.js:6457
    await ctx.secretService.request({ scope: ctx.scope, chatId: ctx.chatId, ...ctx.threadId ? { threadId: ctx.threadId } : {}, ownerId: ctx.senderId, targ
  • 发起网络请求
    dist/plugin.js:8389
    const response = await fetch(url, { method: "POST", headers, body: body3, signal: controller.signal });
  • 发起网络请求
    dist/plugin.js:10023
    ...ctx.secretService && ctx.senderId ? { requestSecret: (reference, purpose) => ctx.secretService.request({
  • 删除本地文件
    dist/plugin.js:14317
    await rmdir(path).catch(() => void 0);
  • 删除本地文件
    dist/plugin.js:14336
    await rm3(ownerPath, { force: true });
  • 删除本地文件
    dist/plugin.js:14337
    await rmdir(path).catch(() => void 0);
  • 删除本地文件
    dist/plugin.js:14352
    if (await olderThan(path, INIT_GRACE_MS)) await rmdir(path).catch(() => void 0);
  • 执行外部命令来自配置/变量
    dist/plugin.js:16791
    return spawn5(command, [...args], {
  • 执行外部命令来自配置/变量
    dist/plugin.js:16852
    execFile3(
  • 执行外部命令来自配置/变量
    dist/plugin.js:18217
    const child = spawn7(process.execPath, [
  • 读取密钥环境变量
    dist/plugin.js:18695
    process.env.DSH_LARK_NOTIFY_TOKEN = notifyToken;
  • 读取密钥环境变量
    dist/plugin.js:19044
    process.env.DSH_LARK_SECRET_URL = notifyServer.secretUrl ?? "";
  • 写入剪贴板
    dist/client.js:220
    await navigator.clipboard.writeText(command);
  • 读取密钥环境变量
    dist/notify.js:83
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/notify.js:96
    const response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/ask.js:95
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/ask.js:104
    const response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/plan.js:184
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/plan.js:192
    response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/plan.js:223
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/plan.js:227
    const response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/approval.js:150
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/approval.js:157
    const response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/file.js:55
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/file.js:61
    const response = await fetch(endpoint, {
  • 读取密钥环境变量
    dist/secret.js:47
    const endpoint = config.endpoint ?? process.env.DSH_LARK_SECRET_URL;
  • 读取密钥环境变量
    dist/secret.js:48
    const token = config.token ?? process.env.DSH_LARK_NOTIFY_TOKEN;
  • 发起网络请求
    dist/secret.js:51
    const response = await fetch(endpoint, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ token, sessionId, tar
  • 读取本地文件
    dist/cli.js:18
    return paths.find((path) => existsSync(path));
  • 读取本地文件
    dist/cli.js:22
    return readdirSync(root, { withFileTypes: true }).filter((entry) => entry.isDirectory() || entry.isSymbolicLink()).map((entry) => join2(root, entry.na
  • 读取本地文件
    dist/cli.js:43
    if (existsSync(path)) return path;
  • 读取本地文件
    dist/cli.js:232
    const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
  • 读取本地文件
    dist/cli.js:247
    const pkg = JSON.parse(readFileSync(join4(own.root, "package.json"), "utf8"));
  • 读取本地文件
    dist/cli.js:284
    const parsed = JSON.parse(readFileSync2(manifest, "utf8"));
  • 写入本地文件
    dist/cli.js:484
    await mkdir4(root, { recursive: true });
  • 写入本地文件
    dist/cli.js:485
    await writeFile4(join7(root, "package.json"), packageJsonFor2(profile, own), "utf8");
  • 写入本地文件
    dist/cli.js:486
    await writeFile4(join7(root, "cordis.yml"), "[]\n", "utf8");
  • 写入本地文件
    dist/cli.js:487
    await writeFile4(join7(root, "cordis.patch.yml"), acpPatchYaml(provider, model, own), "utf8");
  • 执行外部命令来自配置/变量
    dist/cli.js:1035
    return spawn5(command, [...args], {
  • 执行外部命令来自配置/变量
    dist/cli.js:1120
    const child = spawn5(command, [...args], {
  • 写入本地文件
    dist/cli.js:1163
    await mkdir(directory, { recursive: true });
  • 写入本地文件
    dist/cli.js:1166
    await writeFile(temporary, data, options.mode === void 0 ? void 0 : { mode: options.mode });
  • 删除本地文件
    dist/cli.js:1683
    await rm(lockPath, { force: true }).catch(() => void 0);
  • 发起网络请求
    dist/cli.js:2583
    await harness.client.request("attachment/upload", { images: encoded }),
  • 发起网络请求
    dist/cli.js:3362
    const response = await fetch(`${this.baseUrl}/api/${method}`, {
  • 发起网络请求
    dist/cli.js:3419
    const response = await fetch(`${this.baseUrl}/`, {
  • 删除本地文件
    dist/cli.js:4019
    await rmdir(path).catch(() => void 0);
  • 删除本地文件
    dist/cli.js:4038
    await rm2(ownerPath, { force: true });
  • 删除本地文件
    dist/cli.js:4039
    await rmdir(path).catch(() => void 0);
  • 删除本地文件
    dist/cli.js:4054
    if (await olderThan(path, INIT_GRACE_MS)) await rmdir(path).catch(() => void 0);
  • 删除本地文件
    dist/cli.js:4061
    if (abandoned) await rm2(ownerPath, { force: true });
  • 执行外部命令来自配置/变量
    dist/cli.js:4813
    execFile(
  • 发起网络请求
    dist/cli.js:9365
    await ctx.secretService.request({ scope: ctx.scope, chatId: ctx.chatId, ...ctx.threadId ? { threadId: ctx.threadId } : {}, ownerId: ctx.senderId, targ
  • 发起网络请求
    dist/cli.js:11297
    const response = await fetch(url, { method: "POST", headers, body: body3, signal: controller.signal });
  • 发起网络请求
    dist/cli.js:12878
    ...ctx.secretService && ctx.senderId ? { requestSecret: (reference, purpose) => ctx.secretService.request({
  • 执行外部命令来自配置/变量
    dist/cli.js:19029
    const child = spawn7(process.execPath, [
  • 读取密钥环境变量
    dist/cli.js:19582
    process.env.DSH_LARK_NOTIFY_TOKEN = notifyToken;
  • 读取密钥环境变量
    dist/cli.js:19931
    process.env.DSH_LARK_SECRET_URL = notifyServer.secretUrl ?? "";
  • 执行外部命令固定命令
    dist/cli.js:20126
    const child = spawn8(
  • 执行外部命令固定命令
    dist/cli.js:22237
    const child = process.platform === "win32" ? spawn9("powershell.exe", [
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-attachment@deepseek-ai/dsh-sdk-client@deepseek-ai/dsh-sdk-jsonrpc-server@deepseek-ai/dsh-sdk-protocol@deepseek-ai/dsh-settings@deepseek-ai/dsh-skill@deepseek-ai/schemastery@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 扫码接入飞书
  • 流式卡片
  • 并行任务
v0.19.162026-08-25
· v0.19.16 — 超大入站图片按比例缩小 · 根因已修复:上游 dsh 附件存储(dsh-attachment-local)对长边超过 maxImageDimension(默认 2000px)的入站图片一律拒绝,报 IMAGE_DIMENSION_TOO_LARGE。手机长截图(如 1080×2344)因此整轮失败,报错还容易误导人,可模型明明已经支持图片输入。 · 修复:入站图片现在会在 prepareAttachments 里按比例缩小,赶在附件上传之前,让长边不超过上限。缩放按比例进行(sharp fit:'inside' + withoutEnlargement),保留源格式(png/jpeg/webp/gif),小图原样不动。 · 可配置:长边上限由 DSH_LARK_IMAGE_MAX_DIMENSION 控制(默认 2000,与宿主存储一致)。设为 0 即关闭缩放。 · sharp 是可选依赖,懒加载,并有优雅降级:拿不到时图片原样透传,准入逻辑照旧——不会引入硬失败。 --- · 变更内容 · ✨ 功能 · 上传前把超大入站图片按比例缩小 · 🚀 发布 · v0.19.16(超大入站图片按比例缩小) 完整变更日志:
v0.19.152026-08-25
· v0.19.15 — 微信 / QQ 真正完成扫码绑定(替换占位轮询) · 用真实实现替换占位的设备流程轮询,扫码能真正完成绑定,不再总是超时退回手动输入。 · QQ(已验证协议,参照 NousResearch/hermes-agent qqbot/onboard.py):create_bind_task(本地生成 AES-256-GCM 密钥)→ poll_bind_result → 本地解密 client_secret → 自动生成渠道(destination: user:,secret: appId:clientSecret)。二维码内容编码任务 id。 · 微信个人号(iLink):get_bot_qrcode → get_qrcode_status。扫码确认后的 token/user 字段名从社区客户端推断,已标记待实机验证;/channels accept 仍是手动兜底。 · QqSink 现在把 user: 目标路由到 C2C 私信接口(/v2/users/{openid}/messages),扫过码的 QQ 用户能收到通知。 · 绑定服务商支持注入 key / fetch,方便测试;新增单元测试,覆盖 QQ 解密与完成/过期流程、微信完成流程。 --- · 变更内容 · ✨ 功能 / 新功能 · 实现真正的 QQ/微信扫码绑定完成(替换占位轮询) · 🚀 发布 / 发布 · v0.19.15(微信 / QQ 真正完成扫码绑定) 完整变更日志:
v0.19.142026-08-25
· v0.19.14 — 扫码绑定通知渠道(微信 / QQ) · 扩展 #113 引导流程:现在任何 IM 通知渠道都能通过扫描飞书会话里显示的二维码来创建。/channels add --qr 会渲染一张二维码图片并发送到飞书会话中,用对应的 IM 应用扫码即可绑定渠道,并以 0600 权限持久化保存(密钥不会回显)。wechat(个人微信,iLink)和 qq(QQ 开放平台 Bot)是两个优先支持的渠道;/channels accept 是超时或手动兜底方案。 · 新增 src/notify/sinks/wechat.ts(WeChatIlinkSink,ilink/bot/sendmessage,bearer token + 每用户 context_token)和 src/notify/sinks/qq.ts(QqSink,官方 QQ access token + /v2/groups/{openid}/messages)。两者都只支持推送,某个渠道失败不会阻塞其他渠道。 · 新增 src/onboard/sink-qr.ts(SinkQrProvider 接缝 + 有界轮询)、src/onboard/sink-qr-providers.ts(WeChat get_bot_qrcode / QQ create_bind_task 设备流服务商)和 src/onboard/qr-image.ts(用 qrcode 把二维码值渲染成 PNG 缓冲区)。 · 桥接层新增 sendImage 渠道能力(CommandChannel.sendImage),二维码以图片形式投递到飞书会话中,并支持运行卡片重新锚定。 · 飞书开放平台自动化(管理员授权 URL + 事件订阅 / 权限导入 / 版本提交辅助函数,src/onboard/open-platform.ts)和快捷命令面板目录(src/onboard/quick-commands.ts)的脚手架。两者在对照线上开放平台验证之前,都会降级为文档中说明的手动兜底方案。 · ⚠️ 微信 iLink 设备流契约和 QQ 开放平台绑定轮询都实现了手动 /channels accept 兜底;端到端自动绑定还需要用真实凭据做一轮验证。飞书版本提交 / 审核是平台控制的手动步骤。 --- · 变更内容 · ✨ 功能 / 新功能 · 新增微信(iLink)/ QQ 推送端,以及通知渠道的扫码绑定引导 · 📚 文档 / 文档 · 记录扫码绑定通知渠道;新增开放平台与快捷命令脚手架 · 在 llms.txt 和路线图中提及通知转发功能 · 开启 cleanUrls——Cloudflare 原生提供干净 URL,无需重写规则 · 使用默认 .html URL,避免 Cloudflare 干净 URL 重定向循环 · 用 VitePress 重建落地页 / 文档站(Kimi Code 风格) · React Router + Tailwind 落地页,带分类使用文档 · 🚀 发布 / 发布 · v0.19.14(微信 / QQ 通知渠道扫码绑定) 完整变更日志:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-lark-bot 🌏 English · 🌐 官网 wiki dsh-lark-bot.arr2018.dpdns.org 把 DeepSeek Harness 装进飞书 · 扫码 30 秒 · 手机指挥本机 coding agent · 崩溃了飞书也照样回你 产品简介 让 DeepSeek Harness 成为你飞书里的一员,在手机、群聊、话题里直接指挥本机 coding agent。 走飞书 WebSocket 长连接,不需要公网 IP、域名、服务器或内网穿透;Linux / macOS / Windows 通用,Node.js ≥ 22。 快速开始 前置:本机已安装 DeepSeek Harness(dsh)并配置好 DEEPSEEK_API_KEY;Node.js ≥ 22.19;一个飞书 / Lark 账号。 npx dsh-lark-bot@latest setup --profile dsh-lark # ① 一键安装(装进 dsh profile + 默认装「安全网守护」) dsh --profile dsh-lark # ② 启动 ③ 首次启动终端打印二维码 → 飞书 App 扫码创建或选择 PersonalAgent 应用 → 绑定后直接私聊发消息;群聊 / 话题默认 @bot。
展开完整文档(README 剩余 1 节)
dsh-lark-bot

🌏 English · 🌐 官网 wiki dsh-lark-bot.arr2018.dpdns.org

把 DeepSeek Harness 装进飞书 · 扫码 30 秒 · 手机指挥本机 coding agent · 崩溃了飞书也照样回你

产品简介

让 DeepSeek Harness 成为你飞书里的一员,在手机、群聊、话题里直接指挥本机 coding agent。
走飞书 WebSocket 长连接,不需要公网 IP、域名、服务器或内网穿透;Linux / macOS / Windows 通用,Node.js ≥ 22。

快速开始

前置:本机已安装 DeepSeek Harness(dsh)并配置好 DEEPSEEK_API_KEY;Node.js ≥ 22.19;一个飞书 / Lark 账号。

npx dsh-lark-bot@latest setup --profile dsh-lark # ① 一键安装(装进 dsh profile + 默认装「安全网守护」)
dsh --profile dsh-lark # ② 启动

③ 首次启动终端打印二维码 → 飞书 App 扫码创建或选择 PersonalAgent 应用 → 绑定后直接私聊发消息;群聊 / 话题默认 @bot。

- 已有应用可跳过扫码:DSH_LARK_APP_ID=cli_xxx DSH_LARK_APP_SECRET=<secret> DSH_LARK_TENANT=feishu dsh --profile dsh-lark。
- 升级:npx dsh-lark-bot@latest upgrade --profile dsh-lark --yes。

不用碰命令行:管理员直接在飞书发 /upgrade 即可。

核心能力

全网独家

- 安全网守护:dsh 崩溃后飞书仍会回复你,/safemode 进入仅核心安全模式直接自愈;重启后自动恢复排队任务,/jobs 可显式重试。多数桥接方案是「串行单聊 + 崩溃就失联」。
- 多机器人可信交接:bot add 增加独立实例,可信机器人在同群真实 @ 交接,连续协作有上限。
- 完善的工作区与会话管理:每会话自动创建隔离 git worktree 项目工作区;/session 浏览 / 绑定会话,/archive + /retention 自动归档与清理,会话列表不会烂掉。
- 完善的版本管理机制:管理员直接在飞书发 /upgrade 后台更新、验证并重载;有新版本才提醒,不打断当前工作。
- dsh Web 可视化设置:官方 Settings → Plugins 页面点选工作目录、模型、并行数、提醒,不用背环境变量。

其他核心能力

- 并行多任务:同一群聊同时跑多个任务、会话隔离。
- 多角色 Agent:/role 切换或指派 PM / 开发 / 文档等角色,各带人设、模型偏好与规则。
- 对话内管理模型与密钥:一张 /config 卡片切换供应商、热更新密钥,不用离开飞书。
- 快速 / 平衡 / 深度模式:/mode 一键选任务强度,下一轮生效且不打断当前任务。
- 关键任务先拍板:lark_request_plan_approval 先出完整计划,再批准或附意见继续规划。
- 跨会话通知 + @人:A 群跑完任务主动推送到 B 群 / 私聊并 @ 你。
- 通知转发到常用 IM(纯通知):把完成 / 失败 / 审批与突发 / 故障通知,经 /channels 配置后单向推送到 Telegram / 企业微信群机器人等;只推送、无入站交互,飞书仍是唯一完整交互平台,未配置时行为不变。/channels add --qr <wechat|qq|telegram> 让用户在飞书会话里收到二维码图片,用对应 IM 扫码即创建并绑定通知渠道。

流式过程卡以飞书原生折叠面板实时展示阶段、耗时与工具状态。

命令速览

命令帮助、状态与卡片均中英文;/help 为全量权威清单,全部命令见 docs/MANUAL.md。

| 命令 | 作用 |
| /config | 模型 / Provider / 凭据管理卡片(/model、/provider(s)、/key 为同一张卡的别名) |
| /new /reset | 开始新会话 |
| /status | 查看状态卡(工作区 / 模型 / session / run / token / 任务账本) |
| /mode(/effort) | 选择快速 / 平衡 / 深度任务强度 |
| /cd <path> | 切到该目录的独立会话 |
| /ws list\|save\|use\|remove | 管理命名工作空间 |
| /jobs [list\|show\|retry] | 对账并重试排队/运行/失败/中断任务 |
| /session、/session bind | 浏览 / 显式绑定 DSH session |
| /role list\|show\|set\|clear | 查看 / 绑定角色 |
| /notify <scope\|chatId> <text> | 跨会话发送通知(管理员) |
| /notifications [show\|off\|on …] | 配置完成 / 失败 / 审批提醒(sinks= 转发到其他 IM 渠道) |
| /channels [list\|show\|add\|accept\|remove\|enable\|disable …] | 管理出站通知渠道(管理员);add --qr <wechat\|qq\|telegram> 扫码即建 |
| /stop | 终止当前任务 |
| /upgrade | 自更新(管理员) |
| /doctor | 生成脱敏诊断包(管理员) |
| /help | 查看命令清单 |

⚠️ 仅认准官方渠道:唯一官方仓库 PlutoKeating/dsh-lark-bot,唯一官方 npm 包 dsh-lark-bot / dsh-feishu-bot(维护者 plutokeating)。本项目*从不提供 .exe 或 “下载即运行”的安装包,任何以此名义分发的页面 / 仓库均为假冒 / 恶意来源。官方安装唯一命令:
npx dsh-lark-bot@latest setup --profile dsh-lark。详见文末「安全提醒」。

常见问题

Q: DeepSeek Harness 怎么接入飞书? A: 装好 Node ≥ 22 与 dsh(已配 DEEPSEEK_API_KEY)后,执行 npx dsh-lark-bot@latest setup --profile dsh-lark,再 dsh --profile dsh-lark 扫码绑定即可;私聊直接发消息,群聊 / 话题默认 @bot。

Q: 需要公网 IP、域名或服务器吗? A: 不需要。飞书走 WebSocket 长连接(出站),本机在 NAT 后面也能用,免公网服务器、免域名、免内网穿透。

Q: 和别的 DeepSeek Harness 飞书插件有什么区别? A: 功能组合最全——安全网守护、并行多任务、多角色 Agent、多机器人交接、持久任务对账、会话归档、跨会话通知、dsh Web 可视化设置、对话内模型 / 密钥管理、执行模式、计划门禁、飞书内自更新。标准 dsh profile bundle,setup 是唯一安装路径。

Q: 会不会有假冒版本? A: 唯一官方仓库 / npm 包见上方「仅认准官方渠道」;本项目从不提供 .exe 或“下载即运行”安装包,任何分发 exe 的都是假冒来源。

兼容性

- DeepSeek Harness(dsh):已验证 0.1.0-rc.8(2026-08-25),经官方 @deepseek-ai/dsh-sdk-client / dsh-acp 接入;锁定版本与升级政策见 docs/COMPATIBILITY.md。
- 运行时:Node.js ≥ 22.19;平台:Linux / macOS / Windows。adapter 默认 sdk(原生续跑 / 流式 / 图片块),可切 acp / headless / web。

配置说明

- 推荐:本机 dsh Web → Settings → Plugins → dsh-lark-bot,直接查看 / 修改服务区域、App ID、App Secret、工作目录、默认模型、并行数、adapter 与提醒;App Secret 只写不回显。
- 也可用 /config、/providers、/provider、/key 在飞书内核验供应商 / 模型 / 凭据并写操作(仅管理员)。
- 环境变量统一 DSH_LARK_ 前缀,状态根目录为 ~/.dsh-lark,模板见 .env.example;完整环境变量矩阵见 docs/MANUAL.md §9。

行为细节(崩溃对账、会话隔离、计划门禁、逐操作审批、多机器人交接、安全网守护等)见 docs/FEATURES.md;权限与数据见 docs/MANUAL.md §6 与 SECURITY.md。

安全与许可

- 许可证:GNU AGPL-3.0(见 LICENSE)。开源可自托管,个人 / 内部使用免费;商用 / SaaS / 闭源二开需另行授权。
- 安全:默认拒绝、密钥脱敏、路径 containment、SSRF 防护、过期事件拒绝、交互工具默认禁用——见 SECURITY.md;安全漏洞请走 GitHub Security Advisory 私下报告。

升级与卸载

npx dsh-lark-bot@latest upgrade --profile dsh-lark --yes # 升级(或飞书内管理员 /upgrade)

- 禁用:启动 profile 前导出 DSH_LARK_DISABLED=1(插件保留但停止桥接引擎)。
- 卸载:dsh plugin --profile dsh-lark remove dsh-lark-bot;本地状态(配置 / 会话 / 归档 / 角色)留在 ~/.dsh-lark。

关于项目

- 开发:pnpm install && pnpm typecheck && pnpm test && pnpm build;生态交付标准见 docs/ECOSYSTEM.md,AI Agent 工作流见 AGENTS.md。双包发布 pnpm publish:dual(dsh-lark-bot + dsh-feishu-bot,共享 dist)。
- 作者:PlutoKeating(主页)。
- 协作者:zhuguangjun2002 · chensimo1992-sys · estelledc · fredjiangyysx · Geoffrey-hougaojie · hellxiaoao · koprivnikarurnaa-oss · Normanyin · pancong0711 · qvivp。
- 文档:QUICK_START(安装/快速开始)· MANUAL(完整手册+命令+环境变量)· FEATURES(能力行为细节)· COMPATIBILITY· ARCHITECTURE· API· roadmap。

社区与生态

| 平台 | 状态 |
| awesome-dsh-plugin | ✅ 已收录(#1408) |
| awesome-dsh-plugins | ✅ 已收录 · 运行级可用 |
| dshfind | ✅ 已收录 |
| dshbase | ✅ 已收录 · 实测可装 |
| dsh-plugin.org | ✅ 已收录 · 官方源已核验 |
| omdsh-dev/community | ✅ 收录申请通过 · 讨论活跃 |

安全提醒

2026-08-17 发现假冒仓库 tarraencompassing61/dsh-lark-bot:非 fork 重新上传、114 个 commit 中 113 个作者为 PlutoKeating、删除全部 CI、关闭 Issues、Releases 为 0,却以“下载 Windows exe 双击运行”的 README 冒充官方分发。本项目从不提供 exe,任何此类下载均为假冒 / 恶意来源。

取证存档:docs/security/2026-08-17-impostor-repo-evidence/ ·官方下载渠道:docs/DOWNLOAD.md · 持续监控:pnpm security:monitor

免责声明

本项目为非官方社区工具,与 DeepSeek、字节跳动 / 飞书(Lark)无关联,亦未获得其背书。DeepSeek Harness、Feishu / Lark 及相关商标归各自权利人所有。
预览分享卡片长什么样 ↓PlutoKeating/dsh-lark-bot
分享 · DeepSeek Harness Hub
PlutoKeating/dsh-lark-bot

DeepSeek Harness(dsh)接入飞书/Lark 机器人,扫码即用:流式卡片、项目工作区、并行任务、多角色智能体、跨会话通知、对话内模型与密钥管理,还有安全网守护(dsh 崩溃后飞书仍可自救)。

回到顶部