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

多智能体协作台 firstintent/ccteam

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

ccteam 把你已经在跑的编码智能体Claude Code、Codex、Grok、Kimi、Deepseek…

67.9/100
综合分
642
GitHub 星标
55
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @ccteam/ccteam-ui
npm 源 · @ccteam/ccteam-ui 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过

安装清单取自 dsh-plugins/ccteam-ui/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@ccteam/ccteam-ui @ 0.13.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 02:38:17

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 21 条)
  • 发起网络请求
    lib/index.js:232
    const doFetch = options.fetchImpl ?? ((input, init) => fetch(input, init));
  • 执行外部命令来自配置/变量
    lib/index.js:1475
    execFile(bin, [...args], {
  • 读取本地文件
    lib/index.js:1565
    parsed = JSON.parse(readFileSync(endpointPath(home), "utf8"));
  • 读取本地文件
    lib/index.js:1614
    if (!statSync(path).isFile()) return false;
  • 读取本地文件
    lib/index.js:1615
    accessSync(path, constants.X_OK);
  • 读取本地文件
    lib/index.js:1776
    if (lstatSync(dest).isSymbolicLink()) {
  • 读取本地文件
    lib/index.js:1807
    if (!statSync(dir).isDirectory()) return false;
  • 写入本地文件
    lib/index.js:1813
    writeFileSync(probe, "");
  • 删除本地文件
    lib/index.js:1819
    rmSync(probe, { force: true });
  • 读取本地文件
    lib/index.js:1890
    if (existsSync(candidate)) return candidate;
  • 写入本地文件
    lib/index.js:1921
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/index.js:1931
    copyFileSync(source, staged);
  • 写入本地文件
    lib/index.js:1932
    chmodSync(staged, 493);
  • 写入本地文件
    lib/index.js:1959
    renameSync(staged, dest);
  • 删除本地文件
    lib/index.js:1977
    rmSync(path, { force: true });
  • 发起网络请求
    lib/index.js:2082
    this.doFetch = options.fetchImpl ?? ((input, init) => fetch(input, init));
  • 发起网络请求
    lib/index.js:2712
    const doFetch = options.fetchImpl ?? ((input, init) => fetch(input, init));
  • 发起网络请求
    lib/index.js:3585
    if (await this.request("initialize", {
  • 发起网络请求
    lib/index.js:3599
    const result = await this.request("tools/call", {
  • 写入本地文件
    lib/index.js:4146
    mkdirSync(dirname(path), { recursive: true });
  • 删除本地文件
    lib/index.js:4149
    unlinkSync(path);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

4 张 · 点击查看大图

功能亮点

  • 跨厂商智能体组队
  • 跨机器派发任务
  • 远程指挥协作
展开完整介绍(125 字)↓

ccteam 把你已经在跑的编程智能体(Claude Code、Codex、Grok、DeepSeek Harness、Kimi、Pi)编成一支团队,任何会话都能向任意厂商、任意机器派活并收回结果,你从 Telegram、飞书或浏览器标签页统一指挥。

v0.13.02026-10-22
· ccteam v0.13.0 预编译二进制:Linux(x86_64 + aarch64,静态链接 musl libc,任何 glibc 版本都能跑)和 macOS(Intel + Apple Silicon)。无运行时依赖:不需要 Rust 工具链,不需要 Node,不需要 tmux。Windows 用户:用 linux-x64 二进制在 WSL2 里跑 ccteam(ccteam 依赖 POSIX 信号、unix socket 和文件系统监听)。 · 安装(单个预编译二进制,约 14 MB) 不用编译,也不用装工具链——下面每个压缩包都只有一个自包含的 ccteam 可执行文件。 curl -sSL | sh 或者下载对应平台的压缩包,把 ccteam 解压到 PATH 里的某个目录(比如 ~/.local/bin)。 · 校验 sha256sum -c SHA256SUMS # linux shasum -a 256 -c SHA256SUMS # macOS · macOS Gatekeeper macOS 二进制没有公证。下载后执行: xattr -d com.apple.quarantine ccteam
v0.12.02026-10-06
· ccteam v0.12.0 预编译二进制:Linux(x86_64 + aarch64,静态链接 musl libc,任何 glibc 版本都能跑)和 macOS(Intel + Apple Silicon)。无运行时依赖:不用 Rust 工具链,不用 Node,不用 tmux。Windows 用户:用 linux-x64 二进制在 WSL2 里跑 ccteam(ccteam 依赖 POSIX 信号、unix socket 和文件系统监听)。 · 安装(单个预编译二进制,约 14 MB) 不用编译,也不用装工具链——下面每个压缩包都只有一个自包含的 ccteam 可执行文件。 curl -sSL | sh 或者下载对应平台的压缩包,把 ccteam 解压到 PATH 里的目录(比如 ~/.local/bin)。 · 校验 sha256sum -c SHA256SUMS # linux shasum -a 256 -c SHA256SUMS # macOS · macOS Gatekeeper macOS 二进制没做公证。下载后执行: xattr -d com.apple.quarantine ccteam
v0.11.22026-09-23
· ccteam v0.11.2 预编译二进制:Linux(x86_64 + aarch64,静态链接 musl libc,任何 glibc 版本都能跑)和 macOS(Intel + Apple Silicon)。无运行时依赖:不需要 Rust 工具链,不需要 Node,不需要 tmux。Windows 用户:在 WSL2 下用 linux-x64 二进制跑 ccteam(ccteam 依赖 POSIX 信号、unix socket 和文件系统监听)。 · 安装(单个预编译二进制,约 14 MB) 不用编译,也不用装工具链——下面每个压缩包都只有一个自包含的 ccteam 可执行文件。 curl -sSL | sh 或者下载对应平台的压缩包,把 ccteam 解压到 PATH 里的目录(比如 ~/.local/bin)。 · 校验 sha256sum -c SHA256SUMS # linux shasum -a 256 -c SHA256SUMS # macOS · macOS Gatekeeper macOS 二进制没有公证。下载后执行: xattr -d com.apple.quarantine ccteam
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
ccteam ccteam 把你已经在跑的编码智能体(Claude Code、Codex、Grok、Kimi、Deepseek Harness)拧成一支团队——任何会话都能派生子会话、派活、收活,跨厂商、跨机器,而你只需在 Telegram、Lark、Slack 或浏览器标签页里统一指挥。 每个编码命令行工具单打独斗都很强,但彼此孤立——一个终端、一份上下文、没有同事: - Claude Code——规划最深 - Codex——啃长活不晃 - Grok——答得最快 - Kimi——干粗活,账单很小 - DSH——在你自己的 DeepSeek Harness 网页空间里招人,和你并肩干活 - Pi——一个命令行工具统管多个服务商(anthropic/…、openai/…),跑在你自己的机器上 ccteam 补上它们缺的那层连接组织——身份、路由、投递保证、护栏、成本账本——至于团队如何组织自己,交给你用提示词版本化决定。 团队页的一个下午——四个厂商共 50 个活跃会话,每次委派都是一条可追溯的父→子边,每一分钱都记在账本上。
展开完整文档(README 剩余 1 节)
ccteam
ccteam 把你已经在跑的编码智能体(Claude Code、Codex、Grok、Kimi、Deepseek Harness)拧成一支团队——任何会话都能派生子会话、派活、收活,跨厂商、跨机器,而你只需在 Telegram、Lark、Slack 或浏览器标签页里统一指挥。

每个编码命令行工具单打独斗都很强,但彼此孤立——一个终端、一份上下文、没有同事:

- Claude Code——规划最深
- Codex——啃长活不晃
- Grok——答得最快
- Kimi——干粗活,账单很小
- DSH——在你自己的 DeepSeek Harness 网页空间里招人,和你并肩干活
- Pi——一个命令行工具统管多个服务商(anthropic/…、openai/…),跑在你自己的机器上

ccteam 补上它们缺的那层连接组织——身份、路由、投递保证、护栏、成本账本——至于团队如何组织自己,交给你用提示词版本化决定。

团队页的一个下午——四个厂商共 50 个活跃会话,每次委派都是一条可追溯的父→子边,每一分钱都记在账本上。

用法

1 · 从 Telegram / Lark / Slack 远程控制 在 Settings → Access 粘贴一次 bot token,聊天窗口就变成完整控制台——完成通知、HITL [approve] [deny] 按钮、交付的文件,全都落在同一个会话线程里。半夜派发任务,合上笔记本,早饭时看结果。在群组或频道里,bot 会回复允许成员发来的每条消息——或者按每个 IM 一个开关,只在 @ 提及时才回复。在 Slack 上,每个会话都有自己的线程:顶层消息开启会话,线程里的回复只跟它对话,并行会话永不交错(Slack 把 / 留给自己,所以命令以 ! 开头——!status、!model;Settings → Access 一键为你创建 Slack 应用):

/cd demo # pick a project; your next message talks to it
/new codex effort=high # more sessions: /new [vendor] [role] [model=…] [effort=…] @s2 run the test suite # address any session directly /status /sessions /stop s3 # health · fleet · cost · stop /inbox +30m remind me … # schedule a one-shot user turn; /inbox lists · cancel dN

Telegram 就是整个控制台——切换项目、直呼任意会话,一张 /status 卡片展示主脑和它雇来的每个下属。

2 · 从 Web 控制台远程操控

安装器会启动守护进程;ccteam status 重新打印你的链接(http://<lan-ip>:7331/?token=…)——在局域网内任意设备上打开即可。它是聊天外壳,不是仪表盘:

没有「创建会话」表单——在一个胶囊里选好项目 · 主机 · 服务商 · 模型,直接打字;下方的阵型剧本会预填整套阵容。

- 六套阵型剧本(指挥官与队员、驾驶员与顾问、交叉评审、对决、研究三角、成本金字塔),为启动器预填服务商阵容
- 每个会话一个聊天窗口,带紧凑的标题/模型头部和统一的 Files / Context 工具栏,输入框上还有时钟,可在输入框上方排队延迟的用户轮次;一轮的折叠活动行可展开成各步骤,每个步骤又能展开成完整思考文本或工具输入输出
- 每个会话一个上下文侧边栏:会话状态、harness/模型/主机、委派父级、累计成本和最近活动,后面是 harness 自己的上下文核算——Claude 显示详细分类;Codex 显示窗口总计和最近一次请求的 input/cache/output/reasoning 用量——回合结束时刷新,发布后保留带日期的快照
- Team 页面:实时委派拓扑——厂商、每个会话实际运行的模型和推理强度、成本,每一行都是真实链接,父级和它的委派可以并排打开——外加一份分工章程(每个项目的 routing.md,智能体通过 status 读取),就地编辑;还有一个 Runs 标签页,列出每次 ccteam Flow 运行及其雇佣的会话
- DSH 页面:通过同一个 web origin 在 ccteam 里打开 DeepSeek Harness Web,HTTPS 反向代理后面也能用:守护进程验证请求,启动或接入正确的本地 DSH web 实例,给每个登录用户一个独立的 DSH home
- Status 页面:按会话的成本和每日预算上限
- 侧边栏里每个项目的 ⋯ 菜单:在那里启动会话、复制路径,或把项目移出 ccteam(注销 + 停掉它的活跃会话——你的目录和代码绝不会被动到)
- 市场和设置

控制台做的每件事也都是 /api/v1(OpenAPI 在 /api/docs)。

3 · 在 claude 会话内部编排团队

任何已注册的会话都能雇佣其他会话——用大白话说出来,agent / agent_read 在底层执行(带诚实的 working / idle 信号,没人需要靠沉默去猜):

Spawn a codex session, have it implement RFC-12 and run the tests; report back when green.

Plan this refactor, then delegate: codex implements, grok profiles the hot path in
parallel, kimi sweeps the rename across the repo. Collect everything into one summary.

Spawn a claude reviewer on s2's diff — I'm not merging until it signs off.

4 · 多台机器,一个控制台

用 join token 注册卫星机(Settings → Access)——它主动拨号连你的守护进程,所以 NAT 后面的笔记本也能正常工作。项目绑定到主机,在它所在的地方运行:往 GPU-box 项目里 spawn,测试就在 GPU box 上跑,而转录、成本和团队视图都留在一个控制台里。切换机器就是切换项目。

卫星机执行目前运行 Claude 会话;其他厂商在守护进程所在的机器上运行。

5 · 用代码编排,而不是用提示词

当工作的形状已知,把它写下来,而不是问出来。flow 是 ccteam runner 执行的普通 JS 脚本——agent() / parallel() / pipeline() / phase() 建立在真实的跨 harness 雇佣之上,每个叶子节点都是账本上自己的会话:

ccteam flow new branch-review # scaffold a script + the API it can call
ccteam flow run branch-review.flow.js --args '{"base":"main"}' --budget 5
ccteam flow eval <run-id> # grade a finished run with a flow of your own
运行过程会写入日志,所以守护进程重启后运行仍能恢复,--resume 会接着上次继续——worker 的生命周期比 runner 更长。--parallel / --max-agents / --max-cost 是刹车,Team 页面的 Runs 标签会列出每次运行以及它招募的会话。

另外还有一条独立的 policy hook——<project>/.ccteam/hooks/pre-agent,任意可执行文件,每次调用都会重新读取——它拦截每一次委派,无论发起者是人、智能体还是 flow。调用时通过 stdin 传入调用方、请求和实时的 per-harness 配额表;退出码 0 放行,退出码 2 拒绝,并把你的 stderr 原样转给发起调用的智能体;脚本本身出错时会以可区分的方式拒绝,而不是悄悄放行。

五种模式之下是同一套 六个 MCP 工具,每个会话都能用,你手动启动的普通命令行注册后也能用,任何外部智能体只要通过 POST /mcp 出示注册凭据也能用——每份 vendor 配置或每次点复制按钮对应一个凭据,守护进程会在每个进程连接时给它单独的身份,所以两个智能体共用一份配置,仍然是两个调用方,各有自己的账本行和自己的子进程:

agent · agent_read · agent_stop
status (+ its discovery alias grok_claude_codex_kimi) · chat_send_file

守护进程负责路由和记录——跨重启的至少一次通知、幂等键、子进程的一轮对话先落盘再通知父进程、对失控扇出带原因拒绝的护栏。当 Web 驱动的会话在没人盯着控制台时完成自主工作,最终答案会镜像到你的 IM;IM 的 /status 卡片一眼就能看到你会话下正在工作的子进程。它从不做调度;何时委派写在你自己做版本管理的提示词里。

- 白话讲解 → orchestration guide
- MCP 工具参考(全部六个工具、各个面、协议)→ mcp.md
- Policy hooks 与 flows(脚本 API、运行日志、评估循环)→ hook-dynamic-workflows.md(中文)
- 全部命令 → 手册(English · 中文)

Inside DeepSeek Harness

ccteam 也原生运行在 DeepSeek Harness 自己的 Web UI 里,作为一个 DSH 客户端插件——@ccteam/ccteam-ui,它不是上面那个控制台的移植版,而是用 DSH 自己的 slot、基础组件和 locale 构建的。安装一次就能得到三个面和一套引擎监管:

| 面 | 面向 | 提供什么 |
| Workbench | 使用 DSH Web 的人 | 从 DSH 侧边栏底部的按钮打开的全页 ccteam 工作台:跨 harness 的团队树(搜索、按项目折叠/展开、悬停 ⋯ 菜单)、原生级对话(流式 Markdown、工具步骤、选择提示、附件、轮次中途切换模型/effort、中断),以及一列详情——可以停靠在 DSH 自己的面板旁边,也可以展开成全页。 |
| 工具 | DSH 智能体(LLM) | 就是上面说的那六个 MCP 工具,可以在 DSH 会话里直接调用。 |
| 传输 | ccteam | 一条通道,让 ccteam 像雇佣其他 harness 一样雇佣 DSH 会话。 |
| 引擎 | 你 | ccteam 守护进程本身,随插件以平台包(@ccteam/engine-<os>-<cpu>)的形式发布:在插件设置卡片的 Engine 区域完成安装、启动和监管——状态、版本、Start / Stop / Restart / Update engine、Start the engine when the plugin loads 开关、引擎日志。 |

用 dsh plugin --profile web add @ccteam/ccteam-ui 安装,然后重启 dsh web:插件会带上引擎,启动守护进程,并从同一台机器的 ~/.ccteam 读取你的控制台 token——不用粘贴任何东西。如果你的 DSH 本来就跑在 ccteam 里(/new dsh、ccteam 的 DSH 页面,或带 vendor:"dsh" 的 agent),插件和它的凭据会自动准备好。不管走哪条路,都是同一个守护进程,与命令行和 ccteam web 共用:插件只连接到已在运行的守护进程,绝不会针对另一个 ~/.ccteam 再起一个,DSH 重启时也不会把它停掉。完整安装说明(两种安装方式、共存规则、故障排查)见 DSH 插件指南(中文)。

安装

支持 macOS、Linux 和 Windows(通过 WSL)。

[!IMPORTANT]
自带编码命令行——开始之前,先安装并认证至少一个。 ccteam 是桥,不是智能体:它启动的是项目所绑定机器上已有的厂商命令行,所以某个厂商缺失(或装了但没认证)就没法承载会话。

- Claude Code — 安装 Claude Code,然后执行 claude auth login
- Codex — 安装 Codex CLI,然后执行 codex login
- Grok Build — 安装 Grok CLI,然后执行 grok login
- OpenCode — 安装 OpenCode,然后执行 opencode auth login
- Kimi Code — 安装 Kimi Code,然后执行 kimi login
- DSH — 用 npm i -g @deepseek-ai/dsh 安装 DeepSeek Harness。DSH 会话和 DSH Web 优先使用 DEEPSEEK_API_KEY,没设置时用该身份的 DSH Settings → Models 配置。
- Pi — 安装 Pi,然后设置服务商密钥,用 pi auth check --provider <provider> 检查

任意一个就够开始。之后 ccteam status 和 Settings → Hosts 会按机器报告:装了哪些厂商、各自版本、是否真的认证过——只在 PATH 里躺着不算登录。

1 · 一键脚本

curl -sSL https://raw.githubusercontent.com/firstintent/ccteam/main/install.sh | sh
一个静态二进制文件装进 ~/.local/bin,不用 sudo。所有安装方式——脚本、make install、ccteam update、DSH 插件——都走同一套查找顺序(CCTEAM_INSTALL_DIR → ccteam 已在的位置 → ~/.local/bin),所以升级会替换你正在运行的那份,不会留下第二份把它盖住。

2 · 从 DeepSeek Harness 安装 —— 一条命令,引擎自带:

dsh plugin --profile web add @ccteam/ccteam-ui

重启 dsh web,插件会按同一套查找顺序,从平台包安装 ccteam 引擎,启动守护进程,并在设置卡片里显示 Engine 区域。守护进程是共享的:ccteam 命令行、ccteam web 和插件都用同一个 ~/.ccteam——谁先启动谁生效,其余的都连上去(详情)。

3 · 让智能体来装 —— 粘贴到你已有的任意智能体里:

安装 https://github.com/firstintent/ccteam —— 按仓库里的 INSTALL.md 操作。

4 · 从源码安装(Rust + Node):

git clone https://github.com/firstintent/ccteam && cd ccteam && make install

启动 —— ccteam start 在后台运行 ccteam,关掉终端也继续跑(make install 和 DSH 插件已经替你做了这一步)。这是启动守护进程的唯一方式,而且幂等:第二次 ccteam start——不管来自 shell、脚本还是 DSH 插件——只会报告已在运行的那一个,不会再起一个。随时管理它:

ccteam start # start in the background; prints your web console link
ccteam daemon status # is it running, and on which version?
ccteam daemon restart # restart it
ccteam stop # stop it (your sessions come back next time you start)
ccteam daemon logs -f # watch the logs live

重启电脑后,再跑一次 ccteam start 把 ccteam 拉起来。

在浏览器里配置 —— 打开打印出来的链接(ccteam status 也会显示),创建项目,直接打字;会话在你发出第一条消息时诞生。然后:

- Settings → Access —— 所有连到 ccteam 的东西都在这一页:给外部智能体用的 MCP 配置,复制即用(凭据限定在一个项目内,按各服务商期望的真实配置渲染,或按纯文本渲染给 DSH 这类插件式流程;之后可列出、可吊销——密钥只显示一次,之后不再显示);给新机器用的卫星加入令牌;你自己的 Telegram/Lark/Slack 机器人(每个平台一张两步编号卡片——先保存凭据,再绑定机器人回应谁,发送者捕获会自动开始);以及按用户区分的登录链接
- Settings → Hosts — 每台机器的厂商面板(安装状态 / 版本 / 就绪状态),还能一键把 ccteam 的 MCP 工具注册进各厂商命令行,前提是配置可写(Claude Code、Codex、Grok、OpenCode、Kimi)。这样即使会话是手动启动的,也能雇佣团队。同一页面上 DSH 的一键注册,则是把 ccteam 的插件注册进你自己的 ~/.dsh Web 配置档(你的 DSH 会话粘贴 Access 凭据后也能编排)。Pi 通过 ccteam 自有的桥接获得团队工具,桥接只加载进 ccteam 启动的会话,所以你在 shell 里手动起的 pi 完全不受影响
- Workflow → Marketplace — 安装技能(装进用户级库 ~/.ccteam/skills;技能标签页排在最前)和角色(装进项目),全程校验和验证;在输入框里可以把库中的技能附加到任意消息
- DSH — 把原生 DSH Web 作为一等控制台页面打开。每个身份运行一个 DSH 运行时,ccteam 是它的第二个客户端:在 ccteam 任意位置雇佣的 DSH 会话都创建在同一个运行时里,实时出现在本页侧边栏该项目的工作空间下,任务进行中也能打开围观或插话——智能体下一次派发会接着同一段对话继续。所有者看到的是真实的 ~/.dsh 空间(如果 127.0.0.1:3080 上已有 DSH Web,ccteam 会直接接入);普通用户各自拿到隔离的 $CCTEAM_HOME/runtime/dsh/web/<user>/ 空间,并预加载 ccteam 客户端插件。开箱即用,跟随本机的 DSH 登录,直到用户在 DSH Settings → Models 里改动;整个身份——菜单会话和雇佣的会话都一样——跑在这一份配置上。用户自己安装的 DSH 插件会保留。

工作流中心 — 技能、角色、市场和 MCP 服务器集中在一处,旁边是项目的经验账本(轮次记录 + 角色/技能指纹)。

控制台绑定 0.0.0.0:7331,用 token 认证,不走 TLS——请放在可信局域网内。DSH Web 默认使用配套监听端口,即 Web 端口 + 1;用 --dsh-web-bind <addr:port> 覆盖,或用 --dsh-web-bind off 关闭。如果在 ccteam 前面加 HTTPS,配套监听也要一并代理(通常是另一个 HTTPS 端口或子域名)。只代理 :7331 会让 DSH iframe 因混合内容而失败,而且 DSH Web 无法安全地挂载在路径前缀下。
DSH Web 的诚实说明:原生 DSH 轮次在 DSH 内部运行,不算 ccteam 会话,因此不会出现在 ccteam 成本账本里——包括你从 DSH 一侧往已雇会话里输入的轮次(ccteam 只记录它路由过的轮次;DSH 主目录保留完整对话)。通过 ccteam DSH 插件委派的工作会正常记账。租户 DSH Web 是同一操作系统用户隔离:DSH 智能体能执行 shell 命令,自行安装的 DSH 插件是任意 npm 代码,信任级别等同于该用户账号。

串联会话

委派是显式的——智能体(或你)说清楚谁做什么,桥接层负责身份、路由、投递和记账:

agent{vendor:"codex", title:"impl", task:"implement RFC-12, run tests, report"}
agent{vendor:"grok", title:"probe", task:"profile the hot path", wait:120}
agent{vendor:"kimi", title:"chore", task:"apply the rename across every module"}

默认异步:完成通知会落到父会话的聊天里,就像同事回来汇报。wait 用于需要当场拿到、一分钟内能答完的问题。

常见工作流:

- 规划 → 构建 → 把关——claude 拆解任务、设定约束;codex 实现;合并前由对手模型审查 diff。
- 长活 + 快问——codex 扛长任务,grok 在 codex 跑完一步之前先把快问题答掉。
- 批量省预算——把重复性的 80% 分给 kimi;判断类的事留给 claude。

谁适合干什么,从事实出发,不靠猜:调一次 status 就是花名册——项目主机上已安装、已认证、在预算内的服务商,各自最近一次声明的模型和推理强度档位,以及你的路由备注(<project>/.ccteam/routing.md 优先于全局兜底)。

每个生成入口都为每个服务商接受 model 和 effort,并原样转发——取值是否合法由服务商自己裁决,所以它拒绝的档位会作为真实错误返回,而不是让会话悄悄按默认值跑。不填就沿用服务商自己的默认值。各家的档位阶梯不同(claude low…max,codex low…xhigh,grok low|medium|high,kimi low|high|max,pi 的按模型而定——它会声明所选模型实际支持哪些档位),所以别猜,去问:智能体查 status,程序查 GET /api/v1/models,Web 编辑器的菜单渲染自同一来源。

项目上下文

ccteam 给你的仓库加一支团队,但不接管它:

- 默认无角色——大脑通过服务商自己的机制读你的 CLAUDE.md / AGENTS.md;ccteam 从不改写项目知识。
- 占用小 — 每个项目创建入口都会写入 .ccteam/state.json,把 .ccteam/ 加进 .gitignore,并且只在 AGENTS.md 和 CLAUDE.md 都不存在时,才放入一个 AGENTS.md 占位文件。它不会创建 CLAUDE.md、workflow.yaml、角色或 Claude 设置。你安装的角色放在 .claude/agents/;显式指定的插件与 effort 设置只用自己的键写在 .claude/settings.local.json,绝不碰你的 settings.json。只有冻结的终端协议会安装钩子。
- 会话持久 — id(s1、s2、……)能扛过守护进程重启,也能从磁盘冷恢复;状态就是你仓库里的普通文件。你没在对话的会话,空闲一段时间后(默认 250 分钟)会释放它的 harness 进程,你下一条消息一到就立刻回来,还是同一个 id、同一段对话——所以三十个会话只花三十份 transcript,而不是三十个常驻进程。一个会话,一个进程:重启绝不会在回合中途杀掉智能体,也绝不会在旁边再起一个——守护进程让进程跑完,期间你发来的消息先排队,再从服务商自己的记录里取回它给出的回答,最后按 id 恢复会话。

附加功能

- 市场 — 角色从 ccteam-hub 安装到你项目的 .claude/agents/;技能安装到用户级全局库 ~/.ccteam/skills(支持嵌套 id,整仓来源用 ccteam skill source add),然后按消息挂到会话上——这个库从不向项目里链接或复制,项目自有的技能则放在 .agents/skills/,是普通的、git 可见的文件(ccteam skill ensure-project)。所有内容都从固定的上游拉取,做 sha256 校验,原样复制,从不执行。服务商原生的 Claude Code 插件交给 Claude Code 自己处理(ccteam 只翻转那两个设置键)。
- HITL 审批 — 用审批模式启动会话,它的权限请求会以 [approve] [deny] 按钮的形式发到你的 IM,走的是服务商原生闸门;deny 会拦下工具调用,但不会杀掉回合。

为什么

两年里出了七个优秀的编码命令行,每个都假设自己独行。结果就是:你在各家之间来回切换,反复粘贴上下文,充当消息总线。解法不是在上面再套一层框架——服务商的 harness 本身已经很好。缺的是它们之间的连接组织:身份、路由、投递、成本、可观测性,跨服务商、跨机器。这就是 ccteam——cc 来自它脱胎的 Claude Code,team 是你的智能体最终成为的样子。

它刻意待在底层:

- 不注入提示词 — 角色通过服务商原生机制加载;任务文本原样转发。
- 不抓终端 — 状态来自 transcript 和结构化事件。
- 只给实测值,不给占位符 — 你看到的上下文读数确实由该服务商上报,并且能扛过重启;它还没上报的读数显示为未知,而不是 0%。
- 本地优先 — 状态放在 ~/.ccteam 和你的仓库里,全程不经过云端。
- 预算只做护栏,绝不杀进程 — 按服务商设置的每日上限是唯一的自动刹车。

更新

ccteam update # update in place; restarts the daemon onto the new binary

ccteam status 会显示当前版本,并在有新版本时给出提示。在 DSH 里,插件的 Engine 区块做同样的事,点 Update engine 即可(引擎来自它对应的平台包,走同一套 drain + restart + verify 流程);dsh plugin --profile web update @ccteam/ccteam-ui 更新插件本身。(详见:usage。)

卸载

curl -sSL https://raw.githubusercontent.com/firstintent/ccteam/main/install.sh | sh -s -- --uninstall
rm -rf ~/.ccteam # state, secrets, hub cache — keep it if you may return

每个项目还要删掉 .ccteam/;或者在卸载之前先跑 ccteam project rm --purge <slug>,它会顺带清掉旧版 ccteam 留在 .claude/settings.local.json 里的钩子条目和插件锁定。

支持

- 有问题、报 bug、提想法 → issues;欢迎 PR。
- Telegram: @cryptorobsu
- 如果这个团队帮你省下了一次 alt-tab,点个 star 让杂耍人继续耍下去。

许可证

MIT — 见 LICENSE。基于 Claude Code 构建,驱动 Codex、Grok、OpenCode、Kimi、DSH 和 Pi。
预览分享卡片长什么样 ↓firstintent/ccteam
分享 · DeepSeek Harness Hub
firstintent/ccteam

ccteam 把你已经在跑的编码智能体Claude Code、Codex、Grok、Kimi、Deepseek…

回到顶部