Skip to content
dsh.fish
Bundle

dsh-office-cli

A secure DeepSeek Harness plugin for the official WeCom, DingTalk, and Feishu/Lark office CLIs

Source
meliwanx
stars
1 stars
License
MIT
Updated
Updated 13 days ago

Readme

# dsh-office-cli

[中文](README.zh-CN.md) | English

A secure DeepSeek Harness plugin that exposes the official WeCom, DingTalk, and Feishu/Lark office CLIs through one native DSH tool.

This is an outbound office-capability plugin, not another chat-to-agent bridge. It lets a DSH agent work with messages, contacts, docs, sheets, calendars, meetings, tasks, approvals, mail, and other vendor-supported services while the official CLIs continue to own authentication, API discovery, and compatibility.

> Currently targets DeepSeek Harness `0.1.0-rc.7`, which is still a Developer Preview.

## Included

- `office_cli`: shell-free argv execution across `wecom`, `dingtalk`, and `feishu`.
- `office_cli_doctor`: version-only availability checks with no credential reads.
- `dsh-office`: terminal-side doctor and interactive auth helper.
- A bundled DSH Skill for progressive schema discovery and dry-run-first mutations.
- Default blocking for auth/config/upgrade/listener commands, credential arguments, raw API mode, and workspace-escaping paths.
- DSH one-time approval for writes, destructive operations, and unknown commands.

| Platform | Official CLI | Auth |
|---|---|---|
| WeCom | [`@wecom/cli`](https://github.com/WecomTeam/wecom-cli) | `wecom-cli auth init` |
| DingTalk | [`dws`](https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli) | `dws auth login` |
| Feishu/Lark | [`lark-cli`](https://github.com/larksuite/cli) | `lark-cli config init && lark-cli auth login --recommend` |

## Install

Requires Node.js `>=22.19` and DeepSeek Harness.

```bash
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
```

The plugin package has no install script. The explicit second command installs pinned official CLI versions under `$DSH_HOME/office-cli`, shared by all DSH profiles and isolated from global npm.

```bash
# Install only one platform when preferred
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
```

Alternatively, install the official CLIs on PATH or as adjacent profile dependencies. Resolution order is explicit plugin config, `$DSH_OFFICE_HOME`/`$DSH_HOME/office-cli`, an adjacent npm package, then PATH.

For local development:

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

## Authenticate and diagnose

Credentials stay in each vendor CLI's own keychain or encrypted store. The model-facing tool never accepts auth commands or secret-bearing flags.

```bash
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
```

## Configuration

Override the bundle row in the profile's `cordis.patch.yml` and restate its complete config:

```yaml
- id: dsh-office-cli
  config:
    approval: writes       # writes | all | off
    timeoutMs: 120000
    killGraceMs: 2000
    maxOutputBytes: 262144
    maxArgs: 128
    maxArgLength: 65536
    allowRawApi: false
    workspaceFilesOnly: true
    # wecomCommand: /opt/bin/wecom-cli
    # dingtalkCommand: /opt/bin/dws
    # feishuCommand: /opt/bin/lark-cli
```

`workspaceFilesOnly` is argument-level defense, not an OS sandbox. Use a dedicated container/account and least-privilege vendor apps for high-security deployments. See [SECURITY.md](SECURITY.md).

## Scope

Version 0.1 focuses on **DSH → office platform** operations. Inbound chat channels require long-lived connections, durable chat/session mapping, replay protection, remote approvals, and media streaming. They belong in separate future `channel-*` plugins sharing the adapter model rather than in the foreground CLI tool.

See the [architecture](docs/architecture.md) and [GitHub ecosystem research](docs/research.md) for the design rationale.

## Development

```bash
npm install
npm run check
npm run pack:check
```

Licensed under [MIT](LICENSE). CLIs fetched by the setup helper remain independent software under their own licenses; see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).

Install

dsh plugin --profile web add github:meliwanx/dsh-office-cli

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source