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

飞书通道 wooxi/dsh-plugin-feishu

DeepSeek 客户端
wooxi8 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

在飞书里与 Agent 对话,流式卡片实时显示进度

29.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/wooxi/dsh-plugin-feishu.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 42 处,展示前 41 条)
  • 发起网络请求
    lib/client.js:46
    fetch(apiBase + '/api/feishu/config')
  • 发起网络请求
    lib/client.js:71
    fetch(apiBase + '/api/feishu/qr/generate')
  • 发起网络请求
    lib/client.js:79
    fetch(apiBase + '/api/feishu/qr/poll?token=' + token)
  • 发起网络请求
    lib/client.js:111
    fetch(apiBase + '/api/feishu/config', {
  • 发起网络请求
    lib/transport/lark-client.js:22
    const res = await fetch(`${this.baseUrl}/open-apis/auth/v3/tenant_access_token/internal`, {
  • 发起网络请求
    lib/transport/lark-client.js:61
    const res = await fetch(url, {
  • 发起网络请求
    lib/transport/lark-client.js:81
    const res = await fetch(url, {
  • 发起网络请求
    lib/transport/lark-client.js:105
    const res = await fetch(url, {
  • 发起网络请求
    lib/transport/lark-client.js:128
    const res = await fetch(url, {
  • 发起网络请求
    lib/transport/lark-client.js:152
    const res = await fetch(url, {
  • 读取本地文件
    lib/host/session-bridge.js:28
    const data = JSON.parse(readFileSync(this.bindingsPath, 'utf8'));
  • 写入本地文件
    lib/host/session-bridge.js:47
    mkdirSync(this.storageDir, { recursive: true });
  • 写入本地文件
    lib/host/session-bridge.js:48
    writeFileSync(
  • 写入本地文件
    lib/media/image-downloader.js:10
    mkdirSync(saveDir, { recursive: true });
  • 发起网络请求
    lib/media/image-downloader.js:27
    const res = await fetch(url, {
  • 写入本地文件
    lib/media/image-downloader.js:41
    writeFileSync(targetPath, bufferData);
  • 读取本地文件
    lib/media/image-uploader.js:23
    if (!filePath || !existsSync(filePath)) {
  • 读取本地文件
    lib/media/image-uploader.js:32
    const fileBuffer = readFileSync(filePath);
  • 请求外部主机open.feishu.cn
    lib/media/image-uploader.js:40
    const res = await fetch('https://open.feishu.cn/open-apis/im/v1/images', {
  • 发起网络请求
    lib/media/image-uploader.js:40
    const res = await fetch('https://open.feishu.cn/open-apis/im/v1/images', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:171
    const tokenResp = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 发起网络请求
    lib/host/config-router.js:171
    const tokenResp = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:185
    const botResp = await fetch('https://open.feishu.cn/open-apis/bot/v3/info', {
  • 发起网络请求
    lib/host/config-router.js:185
    const botResp = await fetch('https://open.feishu.cn/open-apis/bot/v3/info', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:195
    const sendResp = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id', {
  • 发起网络请求
    lib/host/config-router.js:195
    const sendResp = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:316
    const tokenResp = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 发起网络请求
    lib/host/config-router.js:316
    const tokenResp = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:334
    const botResp = await fetch('https://open.feishu.cn/open-apis/bot/v3/info', {
  • 发起网络请求
    lib/host/config-router.js:334
    const botResp = await fetch('https://open.feishu.cn/open-apis/bot/v3/info', {
  • 请求外部主机open.feishu.cn
    lib/host/config-router.js:357
    const sendResp = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id', {
  • 发起网络请求
    lib/host/config-router.js:357
    const sendResp = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id', {
  • 写入本地文件
    lib/host/storage-manager.js:18
    if (!existsSync(this.workspaceDir)) mkdirSync(this.workspaceDir, { recursive: true });
  • 读取本地文件
    lib/host/storage-manager.js:18
    if (!existsSync(this.workspaceDir)) mkdirSync(this.workspaceDir, { recursive: true });
  • 写入本地文件
    lib/host/storage-manager.js:19
    if (!existsSync(this.attachmentsDir)) mkdirSync(this.attachmentsDir, { recursive: true });
  • 读取本地文件
    lib/host/storage-manager.js:19
    if (!existsSync(this.attachmentsDir)) mkdirSync(this.attachmentsDir, { recursive: true });
  • 写入本地文件
    lib/host/storage-manager.js:20
    if (!existsSync(this.logsDir)) mkdirSync(this.logsDir, { recursive: true });
  • 读取本地文件
    lib/host/storage-manager.js:20
    if (!existsSync(this.logsDir)) mkdirSync(this.logsDir, { recursive: true });
  • 写入本地文件
    lib/host/storage-manager.js:21
    if (!existsSync(this.artifactsDir)) mkdirSync(this.artifactsDir, { recursive: true });
  • 读取本地文件
    lib/host/storage-manager.js:21
    if (!existsSync(this.artifactsDir)) mkdirSync(this.artifactsDir, { recursive: true });
  • 写入本地文件
    lib/host/storage-manager.js:62
    appendFileSync(this.messageLogFile, JSON.stringify(entry) + '\n', 'utf8');
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:open.feishu.cn

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

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的飞书/Lark 频道:支持 CardKit 2.0 流式卡片、思考折叠、工具调用追踪、瀑布式审批和多模态输入输出,走外连 WebSocket,无需公网端点。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-feishu DSH 飞书通道插件 在飞书里直接和你的 DeepSeek Harness Agent 对话。 English · 中文 流式卡片、思考折叠、工具调用进度、审批、图片收发 —— 全部在你团队已经在用的飞书里。不需要公网 IP,不需要 Webhook 地址,不需要端口映射。 能做什么 一张卡片,跟着 Agent 的思路长出来 回复不是等半天之后砸出来的一大段文字。你发消息的瞬间就开出一张飞书卡片,然后内容边想边长:工具调用跑一个显示一个,思考过程流进折叠面板,最终答案逐字打出来。 - 工具调用指示 —— 每次搜索、命令、读文件都会显示参数和耗时 - 思考过程折叠 —— 过程看得见,但答案一开始就自动收起,卡片不会长得离谱 - 底部实时统计 —— 状态、耗时、模型、token、缓存命中率挤在一行: ✅ 已完成 · 24s · gemini-3.8-flash · 33.0k tokens · 缓存 90% - Markdown 正常渲染 —— 标题、列表、链接、代码块、表格都按该有的样子显示 是设置页,不是配置文件 所有配置都在 DSH 设置 → 飞书通道 里完成。凭据、管理员、目录、功能开关,全在界面上。
展开完整文档(README 剩余 1 节)
dsh-plugin-feishu DSH 飞书通道插件

在飞书里直接和你的 DeepSeek Harness Agent 对话。

English · 中文

流式卡片、思考折叠、工具调用进度、审批、图片收发 —— 全部在你团队已经在用的飞书里。不需要公网 IP,不需要 Webhook 地址,不需要端口映射。

能做什么

一张卡片,跟着 Agent 的思路长出来

回复不是等半天之后砸出来的一大段文字。你发消息的瞬间就开出一张飞书卡片,然后内容边想边长:工具调用跑一个显示一个,思考过程流进折叠面板,最终答案逐字打出来。

- 工具调用指示 —— 每次搜索、命令、读文件都会显示参数和耗时
- 思考过程折叠 —— 过程看得见,但答案一开始就自动收起,卡片不会长得离谱
- 底部实时统计 —— 状态、耗时、模型、token、缓存命中率挤在一行: ✅ 已完成 · 24s · gemini-3.8-flash · 33.0k tokens · 缓存 90%
- Markdown 正常渲染 —— 标题、列表、链接、代码块、表格都按该有的样子显示

是设置页,不是配置文件

所有配置都在 DSH 设置 → 飞书通道 里完成。凭据、管理员、目录、功能开关,全在界面上。

- 保存并验证 —— 点一下:保存配置、验证鉴权、给你发一条真实测试消息、顺便把专用工作区建好
- 扫码配对 —— 用飞书 App 扫一下,管理员 Open ID 自动填进去
- 密钥不出服务端 —— App Secret 不会回传浏览器,界面上永远只有掩码

功能开关

| 开关 | 作用 |
| CardKit 2.0 原生卡片流式输出 | 用会自己更新的卡片代替纯文本回复 |
| 思考过程折叠 | 把推理过程收进可展开的面板 |
| 工具调用状态指示 | 把工具调用显示成状态行 |
| 多模态图文输入与输出回显 | 收图片,也能把本地图片发回飞书 |
| 群聊 @ 机器人协作支持 | 允许在群里 @ 机器人 |

给共享机器准备的

- 只认一个主人 —— 这个机器人能跑命令、能碰文件,所以只回答一个飞书账号。不填管理员时,第一个发消息的人会被绑定并收到通知,之后其他人一律拒绝。
- 独立工作区 —— 飞书会话归在专属工作区分组下,不会和你浏览器里的会话混在一起,重启也还在。
- 独立目录 —— 附件、Agent 产物、消息流水账都在你指定的同一个文件夹里。
- 引用回复 —— 每条回答都是对你好条消息的回复,而不是飘在外面的新消息。
- 不开放入站端口 —— 连接是纯出站的。

安装

dsh plugin --profile web add dsh-plugin-feishu
dsh --profile web

然后打开 DSH 设置 → 飞书通道,填入 App ID 和 App Secret,点 保存并验证。

飞书应用配置

在飞书开放平台的自建应用里:

1. 权限 —— 开通 im:message、im:message.p2p_msg:readonly、im:resource;要玩群聊再加 im:message.group_at_msg:readonly。
2. 事件 —— 订阅方式选「使用长连接接收事件」,添加 im.message.receive_v1 和 card.action.trigger。
3. 发布 —— 改过权限或事件后,要创建并发布新版本。

第 2 步是最容易漏的。如果发得出去但收不到回复,先查这里。

环境要求

- DSH 0.2.x,Web profile
- Node >=20
- 一个开通了长连接事件订阅的飞书自建应用

常见问题

ERR_PNPM_IGNORED_BUILDS: protobufjs —— pnpm 拦了飞书 SDK 一个传递依赖的 postinstall。放行一次再装:

~/.dsh/profiles/<profile>/pnpm-workspace.yaml
allowBuilds:
protobufjs: true

消息进来了但不回复 —— 事件订阅方式还是 Webhook。改成「长连接」并发布版本。

会话跑到「未分组」里 —— 点一次 保存并验证,它会建好工作区。在这之前创建的会话留在原地。

许可证

MIT
预览分享卡片长什么样 ↓wooxi/dsh-plugin-feishu
分享 · DeepSeek Harness Hub
wooxi/dsh-plugin-feishu

在飞书里与 Agent 对话,流式卡片实时显示进度

这是你的仓库?认领条目

回到顶部