在飞书群里接入可持久对话的机器人并审批外部写入
36.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ycp424c/dsh-feishu该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · platform
装得上吗
静态安装检查未通过,可能需要源码安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-feishu @ 0.0.1
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 03:18:44
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 31 处,展示前 31 条)
- 读取本地文件src/business/index.mjs:95
try { this.ledger = JSON.parse(await readFile(this.path, 'utf8')) } catch (e) { if (e.code !== 'ENOENT') throw e } - 写入本地文件src/business/index.mjs:101
await mkdir(this.config.stateDir, { recursive: true, mode: 0o700 }) - 写入本地文件src/business/index.mjs:102
await writeFile(this.path + '.tmp', JSON.stringify(this.ledger), { mode: 0o600 }) - 写入本地文件src/business/index.mjs:103
await rename(this.path + '.tmp', this.path) - 发起网络请求src/business/index.mjs:171
const decision = await this.approvals.request(request, async () => 'unavailable') - 写入本地文件src/business/index.mjs:218
await writeFile(join(this.config.stateDir, 'test-resources.json'), JSON.stringify(resources, null, 2) + '\n', { mode: 0o600 }) - 读取本地文件src/host.mjs:21
export const baseVersion = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version - 写入本地文件src/host.mjs:62
await mkdir(config.stateDir, { recursive: true, mode: 0o700 }) - 写入本地文件src/host.mjs:64
await appendFile(join(config.stateDir, 'events.jsonl'), JSON.stringify({ at: new Date().toISOString(), event, ...fields }) + '\n', { mode: 0o600 }) - 读取本地文件src/host.mjs:80
try { config.testResources = JSON.parse(await readFile(join(config.stateDir, 'test-resources.json'), 'utf8')) } catch (e) { if (e.code !== 'ENOENT') t - 读取本地文件src/host.mjs:119
try { return send(200, JSON.parse(await readFile(join(config.stateDir, 'usage/report.json'), 'utf8'))) } catch (e) { return send(e.code === 'ENOENT' ? - 发起网络请求src/host.mjs:169
ctx.effect(() => ctx.on('approval/request', (request, next) => approvals.request(request, next), { prepend: true }), 'Feishu approval answerer') - 读取本地文件src/business/shim.mjs:55
const actual = await realpath(path) - 读取本地文件src/business/shim.mjs:56
const roots = await Promise.all(localRoots.map(p => realpath(p))) - 读取本地文件src/business/shim.mjs:59
const metadata=await stat(actual) - 读取本地文件src/business/shim.mjs:61
const buffer = await readFile(actual) - 读取本地文件src/business/vendor/tools.mjs:880
if (unambiguousPath || absolutePath && existsSync(candidate)) { - 读取本地文件src/business/vendor/tools.mjs:891
if (absolutePath && !existsSync(candidate)) throw new Error(`File not found: "${candidate}". If you intended to pass image binary data, use a data URI - 发起网络请求src/business/vendor/drive.mjs:278
return await getDriveInternalClient(params.client).request({ - 读取本地文件src/state.mjs:6
try { this.value = JSON.parse(await readFile(this.path, 'utf8')) } catch (e) { if (e.code !== 'ENOENT') throw e } - 写入本地文件src/state.mjs:11
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 }) - 写入本地文件src/state.mjs:12
await writeFile(this.path + '.tmp', data, { mode: 0o600 }) - 写入本地文件src/state.mjs:13
await rename(this.path + '.tmp', this.path) - 发起网络请求src/business/client.mjs:7
httpInstance.request = config => defaultHttpInstance.request({ ...config, timeout: 30000 }) - 写入本地文件src/usage.mjs:16
const root = join(config.stateDir, 'usage'); await mkdir(root, { recursive: true, mode: 0o700 }) - 写入本地文件src/usage.mjs:23
if (record) tail = tail.catch(() => {}).then(() => appendFile(join(root, 'metadata.jsonl'), JSON.stringify(record) + '\n', { mode: 0o600 })) - 读取本地文件src/private-boundary.mjs:10
try { actual = await realpath(actual); break } catch (e) { if (e.code !== 'ENOENT' || basename(actual) === '..') return false; const parent = dirname( - 读取本地文件src/private-boundary.mjs:12
const p = relative(await realpath(workspace), actual) - 写入本地文件src/lease.mjs:6
await mkdir(directory, { recursive: true, mode: 0o700 }) - 读取本地文件src/lease.mjs:11
return async()=>{try{if(JSON.parse(await readFile(path,'utf8')).nonce===nonce)await unlink(path)}catch(e){if(e.code!=='ENOENT')throw e}} - 删除本地文件src/lease.mjs:11
return async()=>{try{if(JSON.parse(await readFile(path,'utf8')).nonce===nonce)await unlink(path)}catch(e){if(e.code!=='ENOENT')throw e}}
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-credentials给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
社区版 DSH 飞书/Lark 机器人基础框架,支持持久会话、隔离工作区工具、审批,以及可选的工作场所 API。
README
由 DeepSeek 最新模型翻译生成DSH Feishu
可独立运行的 DSH 飞书/Lark Bot 基座,提供持久化会话、群话题、附件、审批卡片和可选通用飞书工具。
English · 配置 · 扩展 · 运维 · 安全边界
当前状态
当前源码预览为 0.1.0-alpha.3。支持的部署组合为 Ubuntu 22.04 Linux x64、Node.js 22.19+、Python 3.10+、bubblewrap 与用户级 systemd;DSH 固定 0.2.1-rc.5,SDK 固定 1.76.0。其他系统和架构尚未作为部署目标验证。
默认具备工作区文件读写和隔离 Shell。普通工作区操作无需逐次确认;飞书工具的外部写入通过当前发起人的卡片确认。Shell 网络请求不等同于飞书业务工具审批,共享工作区也不等于多租户文件隔离。浏览器、专用业务流程、身份与内部资料由使用方扩展。
从源码构建
先准备 Node.js、Python、bubblewrap、C/C++ 构建工具链和用户 systemd 会话。Ubuntu 系统依赖包括 build-essential、python3、pkg-config、bubblewrap。
展开完整文档(README 剩余 1 节)
DSH Feishu 可独立运行的 DSH 飞书/Lark Bot 基座,提供持久化会话、群话题、附件、审批卡片和可选通用飞书工具。 English · 配置 · 扩展 · 运维 · 安全边界 当前状态 当前源码预览为 0.1.0-alpha.3。支持的部署组合为 Ubuntu 22.04 Linux x64、Node.js 22.19+、Python 3.10+、bubblewrap 与用户级 systemd;DSH 固定 0.2.1-rc.5,SDK 固定 1.76.0。其他系统和架构尚未作为部署目标验证。 默认具备工作区文件读写和隔离 Shell。普通工作区操作无需逐次确认;飞书工具的外部写入通过当前发起人的卡片确认。Shell 网络请求不等同于飞书业务工具审批,共享工作区也不等于多租户文件隔离。浏览器、专用业务流程、身份与内部资料由使用方扩展。 从源码构建 先准备 Node.js、Python、bubblewrap、C/C++ 构建工具链和用户 systemd 会话。Ubuntu 系统依赖包括 build-essential、python3、pkg-config、bubblewrap。 git clone https://github.com/ycp424c/dsh-feishu.git cd dsh-feishu npm ci --ignore-scripts --legacy-peer-deps npm --prefix runtime ci python3 scripts/prepare-runtime.py python3 scripts/package-release.py runtime 安装使用完整锁文件,并执行固定原生依赖的安装脚本,需在 Linux 运行。不要在 macOS 执行 Linux runtime,也不要只固定 CLI 后重新解析其 RC 依赖。 dist/release.json 给出本地构建包和 SHA-256。此源码仓库不代表已发布 npm 包或二进制附件;private: true 用于避免误发 npm。 配置和安装 在飞书开放平台创建应用、启用机器人、配置长连接消息事件和卡片回调。把 examples/basic-bot/config.example.json 复制到仓库外,替换 app ID、同应用下的用户 open ID、模型与 API 地址。权限与可选工具见配置文档。 完整可复制的解包、安装和启动命令见英文 README 的安装段落。安装默认不启动,需私下填写实例 state/secrets.json 的飞书与模型凭据,保留 600 权限,再运行 doctor 和用户服务。实例数据放在仓库外,不能提交到 Git。 管理 Web 默认只监听回环地址并使用 DSH 鉴权,通过 SSH 隧道访问。登录链接保存在私有 state/web-login-url;不要把链接、原始会话或未脱敏日志贴到 issue。 能力和限制 - 按应用、聊天和话题隔离持久化会话,支持 /status、/new、当前发起人的 /cancel。 - 接收图片/文件、处理表情、话题续聊、最终回复。图片需要模型支持;普通附件交由工具处理。 - 支持工作区子目录中的脚本与相对文件操作,保持原只读授权,不扩大权限。 - 16 个通用飞书工具按 toolGroups 选择;默认示例只启用发文件所需的 message 组,其他组按权限开启。 - 写入使用发起人确认、共享回执与回读,状态未知时不自动重试。 - 通过契约版本 1 扩展;必需扩展未就绪时不接收消息,失效后需修复并重启。 基座不自带 Office 解析器、OCR 或音视频转写。应用 scope 与单篇资源权限是不同条件。一个实例对应一个应用;本机占用锁不能检测其他主机的同应用消费者。 参与开发 npm test python3 -m unittest discover -s test -p '*_test.py' python3 scripts/license-inventory.py --check python3 scripts/check-public-source.py --history python3 scripts/check-doc-links.py 部分集成测试依赖 Linux bubblewrap 或用户 systemd 会话,环境不满足时会明确跳过。开发要求见 CONTRIBUTING.md,安全问题见 SECURITY.md。 项目自有代码采用 MIT,第三方依赖保留各自许可,不能将全部依赖统称为 MIT。来源、依赖清单和公开检查见 THIRD_PARTY_NOTICES.md、依赖许可、公开审核。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ycp424c/dsh-feishu
在飞书群里接入可持久对话的机器人并审批外部写入
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化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
这是你的仓库?认领条目