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

飞书机器人基座 ycp424c/dsh-feishu

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

在飞书群里接入可持久对话的机器人并审批外部写入

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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 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、依赖许可、公开审核。
预览分享卡片长什么样 ↓ycp424c/dsh-feishu
分享 · DeepSeek Harness Hub
ycp424c/dsh-feishu

在飞书群里接入可持久对话的机器人并审批外部写入

这是你的仓库?认领条目

回到顶部