dsh-company-collab
Verifieddsh-company-collab · v1.4.0 · MIT · Web UI
DSH company collaboration mode: companies, employee accounts, groups with an auto-joined AI member, persistent server-side DSH ACP host with SSE streaming activity and group approvals, and local Git AI tasks.
Install
dsh plugin add dsh-company-collab Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-company-collab
DSH 的「公司项目专用工作模式」:公司、员工账号、通讯录、群聊、AI 同事,以及每个群一个 Git 仓库的本地协作方式。
- 左侧栏:企业协作主面板(联系人、群组、群聊、AI 任务、仓库绑定)。
- 右侧栏:协作标签页,查看群消息、AI 任务和仓库状态。
- AI 是群成员:建群时自动加入。
- 直接
@AI是群聊对话:配置服务器 DSH 主机后,由服务器上的完整 DSH 执行(文件、shell、Git、测试、MCP);未配置时退回服务端聊天 API; - 勾选「作为 AI 任务发送」才是本机任务,由提出者电脑上的 DSH AI 修改本地 Git 仓库、运行测试并 push。
- 直接
- 谁提出,谁的本机执行:任务派给提出者本人,其他成员
git pull获取结果。 - 服务端两种角色:DSH 主机 / 聊天 AI + 账号/群聊/任务队列/每群 Git 裸仓库。
安装
要求:DSH 桌面端、Node.js 24+、Git。
在 DSH 的插件管理安装入口填入:
github:MZHuangJie/dsh-company-collab
安装后按 DSH 提示启用插件并刷新页面。
目前包名保留为
@local/dsh-company-collab,GitHub 安装可直接使用上面的 spec。
启动自己的协作服务器
服务器脚本随插件提供,只依赖 Node.js 与 Git:
$env:DEEPSEEK_API_KEY="sk-..."
node "<插件目录>\server\company-hub-server.mjs" --port 8477 --data "$env:USERPROFILE\company-hub-data"
DEEPSEEK_API_KEY 只用于服务端群聊 AI 回复;未配置时 @AI 会提示无法回复,勾选任务的本地执行不受影响。可选 DEEPSEEK_BASE_URL、DEEPSEEK_MODEL(默认 https://api.deepseek.com、deepseek-flash)。
局域网内其他同事可连:
node "<插件目录>\server\company-hub-server.mjs" --port 8477 --host 0.0.0.0 --data "D:\company-hub-data"
- 默认监听
127.0.0.1:8477;对外部署请放在 HTTPS 反向代理后。 - 数据目录包含
db.json和默认的git/仓库根;可用COMPANY_GIT_ROOT指定单独的仓库根目录。 - Git 仓库通过 HTTPS 的
/git/路径访问,反向代理需要允许较大的请求体(push):
location /git/ {
proxy_pass http://127.0.0.1:8477;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 200m;
}
服务器 DSH 主机(完整 DSH 能力)
要让群聊像 DSH 会话一样持续执行、显示思考与工具调用,在服务器安装 DSH CLI,并使用 ACP 持久会话模式:
npm install @deepseek-ai/[email protected]
# 以运行 Hub 的用户初始化 ACP profile
DSH_HOME=/var/lib/dsh-host/home dsh --profile acp
Hub 环境变量:
DSH_HOST_ENABLED=1
DSH_HOST_MODE=acp
DSH_HOST_BIN=/opt/dsh-host/node_modules/@deepseek-ai/dsh/lib/bin.js
DSH_HOST_HOME=/var/lib/dsh-host/home
DSH_HOST_WORKSPACE_ROOT=/var/lib/dsh-host/workspaces
DSH_HOST_PERMISSION_MODE=workspace-write
DEEPSEEK_API_KEY=sk-...
- 每个群一个持久 ACP 会话,跨消息保留上下文;创建会话时尝试把
reasoning_effort设为 high,让模型输出思考步骤; - 群里显示
💭 正在思考、🔧 工具调用、✅ 工具结果和最终回复; - 这些过程消息会合并成一张「处理过程」卡片,按 DSH 风格显示思考/工具/结果步骤,最终回复出现后自动折叠,可点开查看;
- 危险操作由 ACP 权限请求转成群审批:
允许 <审批编号>
拒绝 <审批编号>
120 秒未处理自动拒绝。
旧的一次性 headless 模式仍保留(
DSH_HOST_MODE=headless+server/host-approval插件),ACP 模式不需要该插件。
第一次使用
- 打开左侧栏「企业协作」,填服务器地址(本机默认
http://127.0.0.1:8477)并连接。 - 插件自动识别当前 DSH 登录账号作为员工身份;创建公司,或搜索公司名加入。
- 新建群组:服务端会初始化该群的 Git 裸仓库。
- 进群后点标题栏「仓库」:
- 选择空目录/不存在的目录 → 自动
git clone; - 选择已有 Git 仓库 → 校验
origin是否指向该群仓库; - 已绑定后点「仓库」执行
git pull --ff-only。
- 选择空目录/不存在的目录 → 自动
- 在群里和 AI 协作:
- 输入
@会弹出群成员列表,输入名字可过滤,↑/↓ 选择、Enter/Tab 确认; - 直接
@AI 助理 ...是群聊对话:由服务器 DSH 主机执行(完整工具)或退回服务端聊天 API,不创建任务; - 危险操作会发审批消息,管理员/提出者回复「允许 <编号>」或「拒绝 <编号>」;
- 勾选「作为 AI 任务发送」才是本机任务:服务端创建任务并派给提出者;
- 提出者打开着「企业协作」面板、且有可用 DSH 会话时,本机 AI 会认领并在本地仓库执行;
- AI 应建
ai/<task>分支、改文件、测试、commit/push、合并 main、push、删除分支,然后回群汇报并标记任务完成; - 其他成员只需在自己的绑定目录
git pull。
- 输入
- 提出者 90 秒无心跳时,任务自动取消并在群里提示。
数据与安全
- 本机状态:
$DSH_HOME/storages/company-collab/state.json(服务器地址、登录令牌、Git Token、群组本地目录映射)。 - 服务端数据:
<--data>/db.json、<--data>/git/<companyId>/<groupId>.git。 - DSH 主机数据:
DSH_HOST_HOME(profile/会话)与DSH_HOST_WORKSPACE_ROOT(每群服务器 checkout)。 - 审批记录存在
db.json,批准/拒绝/超时都会在群里留系统消息。 - 每位员工有独立 Git Token,服务端只保存 hash;clone/pull/push 通过 HTTPS Basic Auth。
- 本机仓库使用本地
url.<...>.insteadOf写入认证信息,因此 Token 会明文存在本地.git/config;请勿把该仓库目录公开或打包分享。 - 删除群组:删除群聊历史、任务、服务端 Git 仓库和本机映射;不会自动删除你选择的本地仓库目录。
- 服务端账号体系是「DSH 账号 + 设备密钥 + 访问码兜底」,适合公司内部/小团队,不是企业级 SSO。
AI 工具(company_hub)
| action | 作用 |
|---|---|
status |
公司、身份、服务器、群组/任务概览 |
groups / messages |
群组列表、读群消息 |
send |
在群里发言(默认 AI 身份;asAi=false 以本人身份) |
tasks / task_done |
查看、完成 AI 任务 |
contacts / directory / add_contact |
通讯录与公司成员 |
create_group |
建群(AI 自动加入) |
job_list / job_complete / job_fail |
查看、完成或失败本机 AI 任务 |
当前限制
- 员工侧目前只
pull,不提供 push/提交 UI;只有本机 AI 会推送。 - 消息约 5 秒轮询,不是实时推送。
- 本地 AI 执行依赖提出者开着「企业协作」面板和 DSH 会话;离线任务会取消。
- 删除群组不会删除员工本地 clone,也不会向其他人传播本地目录删除。
- 仓库不做 LFS/大文件优化;大仓库请自行控制体积。
开发
index.js:DSH Host 插件(Git 绑定、任务轮询、本机会话注入、company_hub工具)。client.js:DSH Web 客户端(左/右栏 UI)。server/company-hub-server.mjs:自托管 Hub(账号、群聊、任务、Git Smart HTTP)。cordis.patch.yml:DSH bundle 补丁。
许可证:MIT。