Cocurdex

团队与编排

Agent 团队、会话间消息和脚本编排——Cocurdex 中的 Agent 如何在你的掌控下协调其他 Agent。

一个会话就是一个 Agent 的一段对话。当任务宽到值得拆分时,Cocurdex 为 Agent 提供三种由 daemon 托管的方式来协调其他 Agent:

原语形态适用场景
Agent 团队一个主会话 + 若干具名队友,共享一份任务清单同一目标下彼此独立、可并行的切片
会话间消息任意主会话可以给另一个会话发消息在你已开着的会话之间交接
脚本编排一段沙箱中的 JavaScript,把工作分发给子 Agent大量同构单元:按文件、按模块、按 Issue

这些能力以 Cocurdex Agent 工具(daemon 为每个会话挂载的本地 MCP 服务)的形式提供给 Agent,也可以通过桌面 UI 和 CLI 使用。状态是持久化的:运行、团队和任务在应用重启后依然保留。

工具可用范围

只有主会话可以派生团队或提出脚本编排。队友可以使用共享任务清单和消息工具。脚本编排启动的子 Agent 不获得任何协调工具。

Agent 团队

团队归属于一个主会话(lead)。主会话派生队友——并行运行的独立 Agent 会话——并通过共享任务清单协调它们。

  • 每个队友每轮的最终回复会自动送回主会话。
  • 队友停在权限请求或提问上时,主会话会收到「正在等待用户」的通知(每轮最多一次),从而提醒你去处理,而不是默默等待。
  • 队友之间、队友与主会话之间可以互发消息。
  • 一个团队最多 8 名队友。队友不能再派生自己的队友。
  • 队友可以运行在自己的托管工作树中,并行编辑互不干扰。
  • 队友可以使用已保存的 Agent 角色或指定 Agent id;默认继承主会话的 Agent。OpenCode 会话不能担任 lead,也不能加入团队。

共享任务清单

每个团队有自己独立的任务清单,与你的 Issue 分开:Agent 创建的任务不会出现在你的 Issue 看板上。任务包含标题、状态(backlog、doing、review、done)、负责人、前置依赖和审阅证据。

规则行为
前置依赖任务可以列出 blockedBy 任务 id;前置任务完成前,任何人都不能开始它
归属认领任务(doing)时只能分配给一个会话
证据把任务移到 review 必须附带证据:运行过的命令与结果,或需要检查的文件
签收只有另一个会话——通常是主会话或审阅者——可以把已审阅任务移到 done

团队模板

在 设置 → 团队 中定义可复用的团队:为每个队友命名、选择已保存的角色、写好固定提示词。主会话 Agent 可以一次性派生整个模板,你也可以在 CLI 中执行。

cocurdex team templates
cocurdex team spawn-template --lead <session-id> --template <template-id> [--prompt "<给团队的任务>"]

通过 CLI

cocurdex team get --lead <session-id>
cocurdex team create --lead <session-id> --template <template-id>
cocurdex team spawn --lead <session-id> --name reviewer --prompt "审阅 auth 相关改动" \
  [--role <role-id>] [--agent codex] [--worktree]
cocurdex team roles
cocurdex team stop-member --team <team-id> --session <session-id>
cocurdex team stop --team <team-id>

队友名是小写 slug(a-z、0-9、-)。桌面端会在主会话中显示团队:每个成员的状态(启动中、运行中、空闲、错误、已停止)、队友需要输入时的回复框,以及全部停止。

可选的 /cocurdex-team skill 会教主会话 Agent 判断何时真的需要团队、如何给队友下达简报、如何合并它们的报告。

会话间消息

主会话之间可以通过会话 id 互发消息。接收方空闲时,消息作为新一轮开始;否则排在当前一轮之后。

cocurdex session peers <session-id>
cocurdex session send-peer <from-session-id> <to-session-id> "API 契约已合并,rebase 后继续"
cocurdex session peer-inbound <session-id> deliver|refuse
保护机制行为
入站策略refuse 让会话拒收其他会话的消息;deliver(默认)接收
循环上限两个会话在没有用户输入的情况下往来 12 次后,投递返回 loop_limit,Agent 会被要求停止并向你总结

脚本编排

脚本编排(Script run) 让 Agent 用代码描述一次扇出。Agent 提出一段简短的 JavaScript,你审阅并批准之后它才会运行。运行结束后,结果以消息形式送回发起的会话。

脚本是带顶层 await 和 return 的普通 JavaScript,运行在沙箱中:不能导入模块,不能访问文件系统、网络或 shell——真正干活的只有子 Agent。

函数行为
agent(prompt, options?)以全新上下文运行一个子 Agent;返回其最终回复,失败或取消时为 null
parallel(tasks)并发执行一组函数,按顺序返回结果
pipeline(items, fn)对每个元素并发调用 fn(item),按元素顺序返回结果
log(...values)记录一条进度信息

agent() 选项:label;agentRoleId(使用已保存角色,而不是继承发起会话的 Agent、模型和权限);worktree: true(隔离文件编辑);schema(JSON Schema——回复会被解析和校验,失败自动重试)。

const modules = await agent("以 JSON 数组列出 packages/ 下的包路径", {
  schema: { type: "array", items: { type: "string" } },
});

const reports = await pipeline(modules, (dir) =>
  agent(`为 ${dir} 补齐缺失的单元测试,用一行话总结。`, {
    label: dir,
    worktree: true,
  }),
);

return reports;

限制

限制值
每次运行的 Agent 数批准时设定(默认 5,硬上限 1000)
并发子 Agent16
parallel / pipeline 列表长度4096
Schema 重试次数默认 3

运行状态依次为 draft(等待批准)→ running → completed、failed、cancelled 或 interrupted。桌面端的脚本运行面板会显示每个子 Agent 的状态,并提供取消操作。

cocurdex script-run list [--session <session-id>] [--workspace <workspace-id>]
cocurdex script-run get --run <run-id>
cocurdex script-run create --session <session-id> --name <kebab-name> --file script.js
cocurdex script-run start --run <run-id> [--max-agents <n>]
cocurdex script-run cancel --run <run-id>

如何选择

  • 同一功能的两三个独立切片 → 团队;凡是会改文件的队友都开工作树。
  • 几十个近乎相同的单元 → 脚本编排,配合 schema 让结果结构化返回。
  • 两个已在运行的会话需要同步 → 会话间消息。

相关

本页目录