DeepSeek Harness 插件

dsh-office-cli

A secure DeepSeek Harness plugin for the official WeCom, DingTalk, and Feishu/Lark office CLIs(英文原文)

跳到安装方式

来源信息

GitHub 仓库
meliwanx/dsh-office-cli
最近更新
2026年8月19日
分类
工具与能力
GitHub stars
1
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/meliwanx/dsh-office-cli
插件名:dsh-office-cli
作者:meliwanx

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh-CN.md来源说明 · 只读预览
README 语言

dsh-office-cli

English | 中文

把企业微信、钉钉、飞书三家的官方办公 CLI 作为一个安全、原生的 DeepSeek Harness(DSH)插件提供给 Agent。

这不是另一个聊天机器人桥。现有 DSH 社区已经有不少“从飞书/钉钉/企微聊天远程控制 DSH”的项目;本项目解决另一层问题:让 DSH 在一次安装后,以统一工具操作三家的消息、通讯录、文档、表格、日程、会议、待办、审批、邮件等办公能力,同时继续使用厂商 CLI 自己的鉴权、命令发现和 API 兼容层。

> 当前适配 DSH 0.1.0-rc.7。DSH 仍处于 Developer Preview,后续版本可能需要同步适配。

能力

平台官方 CLI插件平台名能力发现本地鉴权
企业微信 / WeCom@wecom/cliwecomschema list/get--doc--schemawecom-cli auth init
钉钉 / DingTalkdwsdingtalkdws schema ... --compactdws auth login
飞书 / Larklark-clifeishu分层 --help、快捷命令与 API 命令lark-cli config init + auth login

插件提供:

  • office_cli:统一的模型工具,输入平台、argv 数组、用途和可选 dry_run
  • office_cli_doctor:只检查三家 CLI 是否能运行及其版本,不读取账号身份或凭据。
  • dsh-office:用户在终端执行的诊断和交互式鉴权助手。
  • dsh-office-cli 内置 Skill:教 Agent 渐进发现命令、先 dry-run、检查退出码,并正确处理三家差异。
  • 安全策略:无 shell 执行、输出/超时上限、凭据参数拦截、工作区路径限制、危险与未知写操作审批。

安装

要求 Node.js >=22.19 和可运行的 DeepSeek Harness。

从 GitHub 安装

dsh plugin --profile web add github:meliwanx/dsh-office-cli
dsh plugin --profile web exec dsh-office install
dsh plugin --profile web exec dsh-office doctor
dsh --profile web --dump-config
dsh --profile web

插件安装本身没有 postinstall,不会触发 pnpm 的依赖脚本拦截。第二条命令是用户明确授权的准备步骤:它通过 npm 把三个精确版本的官方 CLI 安装到 $DSH_HOME/office-cli,供所有 DSH profile 共用,不污染全局 npm。

# 也可以只装需要的平台
dsh plugin --profile web exec dsh-office install wecom
dsh plugin --profile web exec dsh-office install dingtalk
dsh plugin --profile web exec dsh-office install feishu

如果不想使用受管目录,也可以手工把官方 CLI 安装到 PATH,或把它们作为 profile 的相邻依赖安装。插件按“显式配置 → $DSH_OFFICE_HOME/$DSH_HOME/office-cli → 相邻 npm 包 → PATH”的顺序查找。

本地开发安装

npm install
npm run check
dsh plugin --profile web add .
dsh plugin --profile web exec dsh-office install

首次发布到 npm 后,安装命令可简化为:

dsh plugin --profile web add dsh-office-cli

诊断与鉴权

凭据由三家官方 CLI 写入自己的系统 Keychain/加密存储,本插件不接收、不保存、不代理 App Secret 或 Token。

dsh plugin --profile web exec dsh-office doctor
dsh plugin --profile web exec dsh-office install
dsh plugin --profile web exec dsh-office auth wecom
dsh plugin --profile web exec dsh-office auth dingtalk
dsh plugin --profile web exec dsh-office auth feishu

也可直接使用厂商命令:

wecom-cli auth init
dws auth login
lark-cli config init
lark-cli auth login --recommend

使用

安装并完成对应平台鉴权后,直接对 DSH 说:

查看我今天的飞书日程。
先 dry-run,然后在企业微信里给张三创建一个明天下午 5 点到期的待办。
查钉钉里本周待我审批的流程,只读,不要做任何审批操作。

Agent 会先加载随包提供的 Skill;命令不确定时,先用厂商 schema/help 发现最小命令面,再调用 office_cli。写操作默认进入 DSH 的一次性审批流程。

配置

覆盖 profile 的 cordis.patch.yml 中同一个 id,并重述完整配置:

- id: dsh-office-cli
  config:
    approval: writes
    timeoutMs: 120000
    killGraceMs: 2000
    maxOutputBytes: 262144
    maxArgs: 128
    maxArgLength: 65536
    allowRawApi: false
    workspaceFilesOnly: true
    # 仅在自动发现失败时设置;值是单个可执行文件路径,不是 shell 命令。
    # wecomCommand: /opt/bin/wecom-cli
    # dingtalkCommand: /opt/bin/dws
    # feishuCommand: /opt/bin/lark-cli
字段默认值含义
approvalwriteswrites 仅审批写/删除/未知操作;all 审批全部调用;off 关闭本插件审批。
timeoutMs120000每个前台 CLI 调用的超时。
killGraceMs2000超时/取消后从 SIGTERM 升级到强制终止的宽限时间。
maxOutputBytes262144stdout + stderr 的总捕获上限,超出后截断。
maxArgs128单次 argv 数量上限。
maxArgLength65536单个 argv 的字符上限,兼容文档正文。
allowRawApifalse是否允许三家 CLI 的低层 api 模式。
workspaceFilesOnlytrue拒绝明显指向会话工作区之外的文件参数。
*Command未设置指定对应 CLI 的可执行文件路径或 PATH 名。不会进行 shell 拆词。

workspaceFilesOnly 是参数级防护,不是操作系统沙箱。高安全部署应把 DSH 和厂商 CLI 放进专用容器/账号,并限制企业应用本身的 API 权限。详见 [SECURITY.md](SECURITY.md)。

为什么做成一层统一插件

三家官方 CLI 都已经针对 Agent 提供 JSON 输出、帮助/schema 发现、dry-run 或风险元数据,并负责不断跟进各自开放平台。重新手写数百个 API 包装会迅速漂移;单纯让模型走 bash 又缺少统一审批、参数审计、超时和凭据防泄漏。

本项目因此只拥有四件事:DSH 工具契约、三家进程适配、跨平台安全策略、Agent 使用方法。业务 API 与 OAuth 生命周期仍由官方 CLI 拥有。完整设计见 [架构说明](docs/architecture.zh-CN.md),生态调研见 [GitHub 调研](docs/research.zh-CN.md)。

范围与路线

0.1 版本专注 DSH → 办公平台 的出站办公能力。办公平台消息 → DSH 的入站 IM channel 涉及长期连接、会话映射、多租户身份、幂等/重放、远程审批与媒体流,不能和一次性 CLI 调用混成一个不可靠进程。后续会在同一适配器契约上增加独立的 channel-* 插件,不改变现有工具接口。

开发

npm install
npm run check
npm run pack:check

本项目不采用 TDD 强制流程;实现完成后使用单元、类型和打包检查验证。贡献前请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。

许可证

[MIT](LICENSE)。由安装助手获取的三个厂商 CLI 是独立软件,分别遵循其自身许可证;见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。