DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

hankniu77 /

hankniu77/dsh-botcrew

Verified

BotCrew - one DSH group chat for WorkBuddy and QwenWork, with members, permissions, artifacts and a live work panel. Local-first Windows.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@33ac97e2
BotCrew

BotCrew

One chat. Your whole bot crew.

一个群聊,指挥整组桌面 Bot。

DSH release license platform

BotCrew group chat

BotCrew turns WorkBuddy and 千问办公 into members of one DSH group chat. You write one instruction, @WorkBuddy extracts the source material, @千问办公 re-lays it out, and a reviewer checks the result — while a live panel shows both desks.

It is local-first: no cloud sandbox, no API keys for the office apps, no screen streaming. It drives the apps already signed in on your PC through Chromium DevTools Protocol, and exposes the same operations as mcp__office__* tools.


Why

Most agent tools stop at a chat box. Real office work already lives in desktop apps: a report in WorkBuddy, a deck in 千问, a PDF on disk, an approval in a group chat.

BotCrew connects those pieces:

  • One place to command — a group chat with members, @ mentions and attachments.
  • Real executors — WorkBuddy and 千问 are operated as apps, not reimplemented as prompts.
  • Work stays in the thread — task state, files and answers sit next to the instruction instead of being copy-pasted.
  • Human approval stays human — publishing, paying and deleting can be gated behind approval cards.

Features

🧠 Multi-agent group chat Chief, WorkBuddy, 千问办公 and custom members in one thread.
🖥️ Real desktop control WorkBuddy :9331 and 千问 :9444 over CDP; qoder CLI for custom members.
🔁 One thread, multiple agents Assign WorkBuddy, 千问办公 and reviewers in the same thread; outputs stay next to the task.
🧑‍💻 Custom members Name + role, executed for real by the qwen CLI. Up to 10 members.
📎 Files in / out Paste a path, drag a file, or upload; artifacts come back as cards.
🛂 Approvals office_request_approval / office_resolve_approval; pending items surface in the panel.
📊 Live work panel Side-by-side WorkBuddy and 千问 screenshots, current task, queue, artifacts.
🔌 MCP-native Every chat action is also a tool: office_send, office_wait, office_artifacts…
🔒 Local-only Panel binds 127.0.0.1; no account passwords are stored.

How it works

flowchart LR
  U["You"] --> DSH["DSH Desktop"]
  DSH --> UI["Group chat UI"]
  DSH --> MCP["MCP tools<br/>mcp__office__*"]
  UI --> API["Panel server<br/>127.0.0.1:8765"]
  MCP --> WB["WorkBuddy<br/>CDP :9331"]
  MCP --> QW["千问办公<br/>CDP :9444"]
  API --> WB
  API --> QW
  API --> CLI["qoderclicn"]
  WB --> ART["Artifacts / approvals"]
  QW --> ART

The plugin has three parts:

  • Host plugin — starts the local panel service.
  • Client plugin — group chat, member panel, @ chips, attachments, right-side work panel.
  • MCP server — the same operations as tools, so an agent can drive the office apps without the UI.

Install

DSH Plugin Market (recommended)

Open DSH Desktop → Plugins → Discover, search BotCrew, install, then open Workspace → 对话群聊.

If the listing is not live yet, use the local bundle below.

Local bundle

plugin_manager install_bundle { "target": "C:/path/to/dsh-botcrew" }

GitHub Release

Download the prebuilt tarball from Releases, extract it, then install the folder with plugin_manager:

plugin_manager install_bundle { "target": "C:/path/to/dsh-botcrew" }

From source

git clone https://github.com/hankniu77/dsh-botcrew.git
cd dsh-botcrew

Then install the directory through plugin_manager as above (no build step; the package has no npm dependencies).


First run: automatic setup

Open the group chat for the first time. BotCrew checks the machine and shows a setup card:

First-run setup

示意:检测到 WorkBuddy 未开调试端口、千问未运行、CLI 未登录。

State What the plugin does
Installed, not running Starts it automatically with the debug port.
Running, no debug port Shows Restart WorkBuddy / Restart 千问 — never silently kills an app with unsaved work.
千问 CLI not logged in Starts qoderclicn login, opens the browser authorization page, then polls.
Everything ready Card closes automatically.

The 环境 button in the header reopens the same checker at any time.


Use it

  1. Workspace → 对话群聊 → + 新建群聊
  2. Type an instruction, optionally @ a member:
@WorkBuddy 把这份 PDF 提炼成 8 页汇报,先出大纲,数字要能追溯。
@千问办公 按公司模板 v3 重排,不要改数字。
@Reviewer 检查第 4 页的口径,只回复问题清单。
  1. Add files with + 附件 (paste a local path) or drag them into the composer.
  2. Watch progress in the chat; open 工位面板 for both desktops side by side.
  3. Switch output mode with 标准 ▾, and switch threads with 会话 N ▾.

Members and permissions

Members

  • Add WorkBuddy / 千问 if they are not already in the group.
  • Add a custom member with a name and role; it is executed by the qwen CLI.
  • Each member has 读 / 写 / 命令 / 外发 switches.
  • Removing a member with a running task asks 停止并移除 / 仅移除 / 取消.
  • At least one member must remain; the limit is 10.

Work panel

Work panel

http://127.0.0.1:8765 is a local, read-mostly view of both desks: current title, queue, debug port, screenshots, and pending approvals.


MCP tools

mcp__office__* tool reference
Tool Purpose
office_status WorkBuddy port, active thread, sidebar count, recent tasks.
office_launch Start WorkBuddy with the debug port (optionally restart).
office_list_threads List WorkBuddy conversations.
office_open_thread Open a conversation by alias / title.
office_new_thread Start a new WorkBuddy task.
office_send Send a task; returns a T-… task id.
office_wait Poll a task for a bounded interval.
office_read_last Read the last assistant reply.
office_stop Stop the active run.
office_artifacts List files produced by a task.
office_tasks Recent task records.
office_set_alias Bind an alias to a conversation.
office_delete_thread Delete a conversation (explicit confirm).
office_request_approval Create a pending approval card.
office_resolve_approval Record a human decision.
office_approvals List pending approvals.
qwen_status Check the qoder CLI / login state.
qwen_run Run a one-shot qwen CLI task.
qwen_ui_status 千问 desktop status.
qwen_ui_list_tasks 千问 recent tasks.
qwen_ui_read_last 千问 last reply.
qwen_ui_send Send a task in the 千问 UI.

Configuration

Default config lives in the package (config.json); user overrides go to:

~/.dsh/botcrew/data/config.json
{
  "port": 9331,
  "panelPort": 8765,
  "workbuddyExe": "C:/Program Files/WorkBuddy/WorkBuddy.exe",
  "qwen": {
    "exe": "C:/.../QwenWorkCN/QwenWorkCN.exe",
    "cli": "C:/.../resources/bin/qoderclicn.exe",
    "gitBashPath": "C:/Program Files/Git/bin/bash.exe"
  }
}
Key Meaning
port WorkBuddy CDP port, default 9331.
panelPort Local panel port, default 8765.
workbuddyExe Path to WorkBuddy.exe; auto-detected if omitted.
qwen.exe Path to QwenWorkCN.exe; auto-detected.
qwen.cli Path to qoderclicn.exe; auto-detected.
qwen.gitBashPath Git Bash used by the qwen CLI on Windows.
home Data directory, default ~/.dsh/botcrew/data.

Environment override: BOTCREW_CONFIG=/path/to/config.json (legacy OFFICE_BUS_CONFIG is also accepted).


Security model

See SECURITY.md for the full threat model.

  • Local only. The panel listens on 127.0.0.1; there is no cloud relay.
  • No credentials. BotCrew uses the apps you are already signed into; it does not read passwords.
  • Explicit restarts. Apps running without a debug port are never killed silently.
  • Approvals for side effects. Publishing, paying and deleting should be gated with an approval card.
  • Permission switches are best-effort. Custom members can be restricted through read/write/command/external switches and the qwen permission mode; for WorkBuddy and 千问 the restriction is a task-level instruction, not a hard sandbox.

Troubleshooting

Symptom Fix
WorkBuddy port 9331 not reachable Open 环境 → 重启 WorkBuddy, or launch it with the debug port.
千问 port 9444 not reachable Open 环境 → 重启千问办公.
千问 CLI not logged in Open 环境 → 打开千问登录, finish the browser flow.
Panel page does not load Check http://127.0.0.1:8765; another process may own the port.
Workspace row missing after DSH upgrade Reinstall/update the plugin; the row is injected into the session tree.
@WorkBuddy sends nothing Confirm WorkBuddy is on the target conversation and the debug port is open.

Roadmap

  • WeCom / WeChat gateway: send instructions from a real chat.
  • Hard permission isolation for WorkBuddy / 千问.
  • Parallel task scheduling across members.
  • macOS adapters.
  • Conversation export and richer artifacts.

Development

node src/mcp-server.js     # MCP over stdio
node src/panel-server.js   # local panel only
node src/doctor.js         # environment check
node src/mcp-smoke.js      # MCP smoke test
npm pack                   # verify the published file list

No build step and no npm runtime dependencies. The client is a prebuilt DSH module loader bundle.


Publishing

  1. Bump version and add a CHANGELOG.md entry.
  2. npm pack and attach the tarball to a GitHub Release (gh release create vX.Y.Z botcrew.tgz).
  3. Update the registry entry at awesome-dsh-plugin with the release tarball: URL.
  4. Optional: publish to npm; if the package name changes, update lib/client.js loader id and cordis.patch.yml paths.

Contributing

See CONTRIBUTING.md. Keep it local-first, include a screenshot for UI changes, and never commit credentials or personal task data.

License

MIT © BotCrew contributors

—/ 5

No ratings yet

Verified DSH bundle

Commit 33ac97e2ef0a

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout