在飞书聊天里驱动 agent,流式卡片一键审批
29.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/whoisjiahao/dsh-feishu-channel.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-feishu-channel(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 02:25:45
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
- 读取本地文件lib/index.js:1850
const bytesOnDisk = (await stat(path)).size; - 读取本地文件lib/index.js:1856
const data = await readFile(path); - 删除本地文件lib/index.js:1872
await rm(path, { force: true }).catch(() => void 0); - 删除本地文件lib/index.js:1880
await rm(stagingDir, { - 写入本地文件lib/index.js:3677
await mkdir(cwd, { recursive: true }); - 发起网络请求lib/index.js:4574
const response = await raw.request({ - 发起网络请求lib/index.js:4589
await raw.request({ - 发起网络请求lib/index.js:4595
await raw.request({ - 写入本地文件src/channel.ts:395
await mkdir(cwd, { recursive: true }) - 读取本地文件src/images.ts:85
const bytesOnDisk = (await stat(path)).size - 读取本地文件src/images.ts:94
const data = await readFile(path) - 删除本地文件src/images.ts:107
await rm(path, { force: true }).catch(() => undefined) - 删除本地文件递归src/images.ts:112
await rm(stagingDir, { recursive: true, force: true }).catch(() => undefined) - 发起网络请求src/runtime.ts:70
const response = await raw.request({ - 发起网络请求src/runtime.ts:91
await raw.request({ method: 'DELETE', url: SLASH_COMMAND_API + '/' + commandId }) - 发起网络请求src/runtime.ts:94
await raw.request({
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 飞书聊天驱动agent
- 流式富卡片
- 一键审批
飞书 × DeepSeek Harness 遥控器:在飞书聊天里驱动 DSH agent——流式富卡片、一键审批、按模型能力传图、费用与峰谷计量
README
由 DeepSeek 最新模型翻译生成dsh-feishu-channel
把飞书变成 DSH 的遥控器 —— 双向对话、流式富卡片、一键审批、扫码即用。
Feishu/Lark IM channel for DeepSeek Harness:在飞书聊天里直接驱动你的 DSH agent——每个私聊、群聊或话题都有自己的 agent,回复以流式富卡片回到飞书,工具权限问题变成按钮决策。
English — Turn Feishu/Lark into a remote control for DeepSeek Harness: every chat (direct / group / topic) drives its own DSH agent, replies stream back as rich cards with live progress, tool approvals become one-tap buttons, images pass through whenever the bound model supports vision, and every turn reports its token cost with DeepSeek peak/off-peak pricing. Install in one command — see 快速开始.
为什么用它
| 体验 | 说明 |
展开完整文档(README 剩余 1 节)
dsh-feishu-channel
把飞书变成 DSH 的遥控器 —— 双向对话、流式富卡片、一键审批、扫码即用。
Feishu/Lark IM channel for DeepSeek Harness:在飞书聊天里直接驱动你的 DSH agent——每个私聊、群聊或话题都有自己的 agent,回复以流式富卡片回到飞书,工具权限问题变成按钮决策。
English — Turn Feishu/Lark into a remote control for DeepSeek Harness: every chat (direct / group / topic) drives its own DSH agent, replies stream back as rich cards with live progress, tool approvals become one-tap buttons, images pass through whenever the bound model supports vision, and every turn reports its token cost with DeepSeek peak/off-peak pricing. Install in one command — see 快速开始.
为什么用它
| 体验 | 说明 |
| ⚡ 扫码即用 | 零配置:启动时打印二维码,飞书一扫自动创建应用(含事件订阅与凭据持久化),30 秒开聊 |
| 🎴 流式富卡片 | 每轮一张三态卡片原地更新:加载中实时步骤 → 结论优先正文 → 失败可重试;超限自动降级为原生消息 |
| 🔐 一键审批 | 工具权限问题变成交互卡片,点「允许一次 / 拒绝」即决策,无需切窗口打字 |
| 🧭 交互命令 | 裸命令自动变成选择、输入或确认卡;执行结果在原卡片结算,危险权限额外二次确认 |
| 🌐 无需公网 | WebSocket 长连接,不需要公网 URL、回调地址或端口转发 |
| 🧵 多会话 | 私聊 / 群聊 / 话题各自独立 agent,互不串台;/new、/stop 随时控制 |
| 🛡️ 安全默认 | 白名单门控、群内 @ 门控、密钥脱敏、拒绝静默——默认拒绝一切收窄之外的流量 |
快速开始
环境要求:DeepSeek Harness 的 dsh web(本插件在 0.1.2-alpha.2 主线上开发并实测,依赖宿主 agents / settings / commands / sessionController 等核心服务,标准 dsh web 组合自带);Node ^22.19.0 || >=24。
① 安装(三选一,装进你的 web profile;命令即转发 pnpm,在 ~/.dsh/profiles/web 内执行):
已发布版本(需要对应 tag 已推送到 GitHub)
dsh plugin --profile web add github:whoisjiahao/dsh-feishu-channel#v0.9.0
或:从 GitHub Releases 下载 tgz 后本地安装(无需网络解析 git 引用)
dsh plugin --profile web add ~/Downloads/dsh-feishu-channel-0.9.0.tgz
或:开发模式——链接本仓库,pnpm build 后热重载即可见
dsh plugin --profile web add file:/绝对路径/dsh-feishu-channel
安装排障(pnpm 门禁都是幂等占位行,改完重跑即安全):
- ERR_PNPM_IGNORED_BUILDS(protobufjs):依赖链 feishu-channel → @larksuite/channel → protobufjs(Lark 协议层),插件侧移不掉。pnpm 会在 profile 的 pnpm-workspace.yaml 写入 protobufjs: null 占位行,把 null 改为 true 重跑即可;其 postinstall 只做本地版本提示,放行风险可控。
- ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED(git 安装):0.9.0 起不再发生——插件已把 prepare 改为 prepublishOnly(lib/ 随 git 提交,git 安装无需构建)。仅安装 ≤0.8.0 旧版会遇到,解法同上(占位行改 true)或改用 tgz 安装。
- 新版依赖刚发布被拒(minimumReleaseAge 门禁):pnpm 可能拒绝解析刚发布的 @deepseek-ai/* 版本。等几天后重跑,或在 profile 的 pnpm-workspace.yaml 加 minimumReleaseAgeExclude 条目。
② 重启 dsh web,启动日志出现二维码:
feishu-channel: 请用飞书扫码创建应用…
③ 扫码:用飞书 App 扫描二维码,确认创建应用——凭据自动保存,下次启动直连,无需再扫。
④ 开聊:在飞书里给机器人发第一条消息(群聊记得 @ 它)。
已有企业应用凭据?直接写在 profile 的 cordis.patch.yml:
- insert:
- id: feishu-channel
name: dsh-feishu-channel
config:
appId: cli_xxx
appSecret: xxx
或用环境变量管理凭据:运行 node scripts/register-lark-app.mjs 走官方扫码注册,把产出的 FEISHU_APP_ID / FEISHU_APP_SECRET 填入 patch 的 appId: !!js process.env.FEISHU_APP_ID(!!js,不是 !js)。
🤖 你是 AI agent?跳到 Agent 安装指引——每步带命令与完成标志,可直接执行。
Agent 安装指引(机器可执行)
目标读者:AI agent 与自动化脚本。按序执行,每步给出完成标志;任一步失败即停,不要自行变通。以下 $PROFILE 默认 web。
步骤 0 · 前置检查
node -v # 必须满足 ^22.19.0 || >=24.0.0
test -f ~/.dsh/profiles/$PROFILE/package.json && echo profile-ok
步骤 1 · 安装包体(二选一)
A. 本地 tgz(从 Releases 资产下载,或仓库内 pnpm pack 产出;不触发任何构建门禁)
dsh plugin --profile $PROFILE add /绝对路径/dsh-feishu-channel-0.9.0.tgz
B. 发布版(要求 GitHub 存在 v0.9.0 tag;未发布则用 A)
dsh plugin --profile $PROFILE add github:whoisjiahao/dsh-feishu-channel#v0.9.0
完成标志:~/.dsh/profiles/$PROFILE/package.json 的 dependencies 出现 "dsh-feishu-channel"。
步骤 2 · 装配确认(三处,缺一不可)
1. package.json → dsh.profile.bundles 数组包含 "dsh-feishu-channel"(没有就手动加一行);
2. 凭据二选一:~/.dsh/settings.yaml 的 feishu-channel: 段(appId/appSecret),或 profile cordis.patch.yml 的 insert 行(模板见上文快速开始);两者都缺 → 首次启动进入扫码流程,也算合法路径;
3. node -e "console.log(require('$HOME/.dsh/profiles/$PROFILE/node_modules/dsh-feishu-channel/package.json').version)" 输出预期版本。
步骤 3 · 重启并验证
重启 dsh web 后,日志必须出现授权声明行:
feishu-channel: direct messages: anyone the app is visible to (narrow with senderAllowlist); groups: ...
冒烟测试:在飞书向机器人发送任意消息 → 收到流式卡片(加载 → 完成/失败三态之一)即成功。
回滚
dsh plugin --profile $PROFILE remove dsh-feishu-channel
并从 package.json 的 dsh.profile.bundles 数组移除 "dsh-feishu-channel",然后重启。
界面预览
以下均为真实飞书客户端截图,敏感路径已遮盖。
回复卡片
结论优先呈现,支持表格、编号列表与默认收起的分析过程。
命令执行
同一张卡片从处理中原地更新为完成态,并保留清晰、可核对的执行时间线。
执行中已完成
命令控制
命令中心与会话设置均使用原生交互控件,无需记忆参数或离开聊天窗口。
命令中心模型设置
常用配置
| 字段 | 默认 | 说明 |
| appId / appSecret | — | 应用凭据;不填则扫码注册 |
| domain | open.feishu.cn | 开放平台域名(国际版用 open.larksuite.com) |
| provider / model | 宿主默认 | 聊天 agent 的模型路由 |
| sessionScope | chat | 会话面:chat / chat-thread(话题)/ chat-sender(按发送者) |
| requireMention | true | 群聊必须 @ 才响应 |
| senderAllowlist | [] | 私聊白名单(ou_…);空 = 平台可见者皆可 |
| groupAllowlist | [] | 群白名单(oc_…);空 = 任何被拉入的群 |
| approvers | [] | 审批点击者白名单;空 = 能驱动该聊天者皆可 |
完整配置表(渲染细节等)
| 字段 | 默认 | 说明 |
| cwd | ~/.dsh-feishu | agent 会话工作目录;不存在时自动创建 |
| preset | 宿主默认 | 聊天 agent 加入的 preset |
| showProcess | true | 是否展示加载进度与完成态工具动作时间线(不展示原始 reasoning) |
| syncSlashCommands | true | 同步命令到飞书斜杠面板 |
| denyTools | ask_user_question, exit_plan_mode | 聊天 agent 禁用的工具(答案无法到达聊天的工具) |
| footerFields | 见源码 | 终态卡片展开详情字段(model/input/output tokens/cost/context) |
| pricing | 内置 DeepSeek 官方牌价 | 模型单价表(每百万 token):默认已配好 deepseek-v4-flash / deepseek-v4-flash-vision-exp / deepseek-v4-pro 现行峰谷价;自定义条目按模型 id 与内置表合并,同名键整条覆盖。字段:input/output 高峰价、可选 cacheHitInput 缓存命中输入价(缺省按未命中价计,只会高估不会低估)、可选 currency 符号(默认 ¥)、可选 offPeak: { input, output, cacheHitInput? } 空闲档。配置后展开详情多一行「费用」,usage 落在空闲窗口内按折扣计并标「·低谷」,窗外按标准价计并标「·高峰」(未配分时价则不带档位标记) |
| offPeakWindows | DeepSeek 官方峰谷表 | 空闲时段窗口(北京时间 HH:MM 半开区间;end 早于 start 表示跨午夜)。默认按 DeepSeek 定价页:高峰为北京时间 9:00–12:00 与 14:00–18:00,其余为空闲(价格为高峰一半);设为 [] 关闭分时计价 |
| maxTimelineItems | 12 | 时间线最大条目数 |
| tableOverflowMode | compact | 表格超限策略:compact(转字段列表)/ truncate(丢弃) |
命令
| 命令 | 作用 |
| /new | 新建空白会话 |
| /reset | 重置当前会话(与 /new 同义) |
| /stop | 停止当前任务 |
| /model | 查看或切换当前会话模型 |
| /effort | 查看或调整当前会话推理强度 |
| /help | 列出可用命令 |
直接发送裸命令会打开交互卡:有固定选项的命令显示下拉框,需要参数的命令显示输入框,无参数动作显示确认按钮。显式参数仍可直接执行,例如 /feedback 卡片体验很好。
其余 /xxx 来自当前 DSH 的宿主命令运行时,并按宿主描述自动进入同一套交互流程。/permission 的选项直接读取当前会话投影;切换到 danger-full-access 前必须再次确认。
安全
本插件让飞书消息驱动一个有文件读写和 shell 权限的 agent——它就是你的遥控器。默认拒绝一切收窄之外的流量:
- 生产部署务必设置 senderAllowlist / groupAllowlist / approvers,把遥控器交给该交的人
- 审批卡片展示工具名、将执行的命令与模型说明;所有动态文本先限长,命令和说明中的 token / secret / password / api-key 等先自动脱敏
- 点击必须同时匹配动作、原卡片、所在聊天、当前会话与允许的操作人;旧命令卡自动失效,同名 callId 在不同会话之间不会串用参数
- 拒绝入站保持静默:不向未授权者暴露边界事实
- 卸载即净:transport 断开、自有 agent 全部 dispose、挂起审批全部结算为 cancelled
- ask_user_question / exit_plan_mode 默认禁用:它们把提问弹到 ctx.userQuestions 的唯一注册方(通常是 dsh web 图形界面),飞书用户看不到也答不了,只会挂起到超时;禁用后模型会直接在聊天里用文字提问、用文字给计划。若你的部署以别处作答,可从 denyTools 移除
开发
pnpm install
pnpm gates # typecheck + test + build + pack 冒烟 + 版本一致性(发布前必跑)
pnpm build # tsc + tsdown,lib/ 提交进 git
组件组合测试将完整插件经 apply 挂到可控 transport 与 host 测试替身(tests/harness.ts),覆盖入站会话阶梯、授权拒绝、命令卡片、审批卡片全生命周期、富卡片渲染与失败重试、图片附加、斜杠面板同步、卸载清理与扫码注册流程。真实飞书客户端验收仍是发布前的独立步骤。
架构与设计决策见 docs/DESIGN.md。
局限
- 配置只在启动时读取一次(patch 层与 settings 层都生效,后者优先),修改需重启
- chat agent 存活到插件卸载,无空闲驱逐
- 停机期间到达的消息不会重放(transport 无游标)
- 图片按当前模型能力决定是否透传,与 dsh web 图形界面同一门禁语义:会话模型声明支持图片输入即透传(无需任何配置);模型不支持时机器人明确告知“当前模型不支持图片输入”,可 /model 切换视觉模型后重发;模型信息未知时放行、由路由做最终裁决。文件和音频以 SDK 标准化文本透传给模型
- 模型询问类工具(ask_user_question / exit_plan_mode)被禁用而非以卡片作答
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
whoisjiahao/dsh-feishu-channel
在飞书聊天里驱动 agent,流式卡片一键审批
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7