跳转到主要内容

多平台与团队配置

Trellis 支持 17 个平台(Claude Code、Cursor、OpenCode、Codex、Kiro、Kilo、Gemini CLI、Antigravity、Devin(原 Windsurf)、Qoder、CodeBuddy、GitHub Copilot、Droid、Pi Agent、Oh My Pi、Reasonix、ZCode),以及任何读取 .agents/skills/ 规范的 AI 编码 agent(Amp、Cline、Deep Agents、Firebender、Kimi Code CLI、Warp 等)。.trellis/ 核心跨平台一致;差异在于各平台如何交付 hook、extension、skill、sub-agent、command

加入已初始化的 Trellis 项目

项目已经被别人 trellis init 过了,你作为新成员加入——直接跑 trellis init,CLI 会识别出已初始化,给你三个选项:
新成员选第 2 个。CLI 会问你想用的开发者名(默认取自 Git user),然后:
  • .trellis/.developer 记录你的开发者名(gitignored,每台机器独立)
  • .trellis/workspace/<your-name>/ 下建你自己的 journal 目录
完成后,在支持 SessionStart hook 或 extension 的平台上开新会话就自动注入 Trellis 上下文;没有自动会话注入的平台跑 /trellis:start 或对应平台的 start workflow。
不要选 Full re-initialize——那会覆盖 .trellis/.claude/ 等已有配置,影响全团队。

能力矩阵

图例:✅ Trellis 写入配置并由平台执行 · ⚡ 部分支持(Codex 使用 AGENTS.mdUserPromptSubmit;workflow breadcrumb 需要 features.hooks = true,0.129+ 还要走一次 /hooks 审批;Kiro 在 trellis agent 上带了每回合 userPromptSubmit hook,但用户需激活该 agent —— chat.defaultAgent trellis/agent swap) · ❌ 平台不暴露这个事件 · — 该平台没有命令原语,start / finish-work / continue 作为 skill 交付。Qoder 用的是 /trellis-{name}(连字符,不是冒号),通过原生 Custom Commands 交付 finish-work / continuestart 由 SessionStart hook 自动注入。Pi Agent 走 extension,不走 Python hook 文件, 但行为一致:会话上下文、Bash 环境变量传递、sub-agent context 注入都在 agent 动作前完成。 .kilocode/.agent/(Antigravity)、.devin/ 只有 workflow 和 skill,没有 sub-agent 也没有 hook。.agents/skills/ 在所有平台都会写一份,作为跨平台共享层。

Claude Code

自动化最完整。Hook 布局: Sub-agent:trellis-implementtrellis-checktrellis-research,在 .claude/agents/。 Skill:trellis-brainstormtrellis-before-devtrellis-checktrellis-update-spectrellis-break-loop,在 .claude/skills/。 Command:startfinish-workcontinue,在 .claude/commands/trellis/

Cursor

Cursor 是完整 class-1 平台:真 hook、真 sub-agent、真 skill。 布局:
  • .cursor/commands/trellis-{name}.mdstartfinish-workcontinue(扁平命名加 trellis- 前缀,调用形式 /trellis-start 等)
  • .cursor/skills/trellis-{name}/SKILL.md:5 个 trellis skill
  • .cursor/agents/trellis-implement.mdtrellis-check.mdtrellis-research.md
  • .cursor/hooks/:共享 Python hook 脚本(与 Claude Code 兼容)
  • .cursor/hooks.json:hook 配置(Cursor 用独立文件,不是 settings.json

OpenCode

OpenCode 1.2.x 是 class-1 平台(真 hook + 真 sub-agent):
  • .opencode/commands/trellis/:start / finish-work / continue
  • .opencode/agents/trellis-implement.mdtrellis-check.mdtrellis-research.md
  • .opencode/skills/:5 个 trellis skill
  • .opencode/plugins/:JS 插件:session-start.jsinject-subagent-context.jsinject-workflow-state.js
插件是 factory function(OpenCode 1.2+)。Trellis 生成的版本对齐 Claude Code 行为。

Codex

布局:
  • AGENTS.md(仓库根):入口文件,Codex 每个 session 自动读取(作为 prelude)
  • .codex/prompts/trellis-start.mdtrellis-finish-work.mdtrellis-continue.md
  • .codex/skills/:5 个 trellis skill
  • .codex/agents/:TOML sub-agent:trellis-implement.tomltrellis-check.tomltrellis-research.toml
  • .codex/hooks/inject-workflow-state.py + .codex/hooks.jsonUserPromptSubmit workflow-state hook
  • .codex/hooks/session-start.py:保留的紧凑 SessionStart 兼容脚本,默认不 wiring
Codex hook 必须开启,否则聊天界面输入 / 检索不到 Trellis 的三大命令(/start/finish-work/continue),也无法用 /start 启动会话。~/.codex/config.toml 加:
Codex 0.129+ 还要在 TUI 里跑一次 /hooks 命令,审批 Trellis 安装的 UserPromptSubmit hook,否则 hook 不会激活、Trellis 的 command / skill 不会出现在 / 菜单、workflow 指引也不会自动注入。不开启这两项时,Codex 只走纯 prelude(每次读 AGENTS.md)——上下文还在,但你无法从 / 里点用 Trellis 命令。

Kiro

布局:
  • .kiro/agents/trellis.json:主 Trellis agent —— 每回合 userPromptSubmit hook + 开场 agentSpawn hook + 把 .trellis/workflow.md 作为常驻 resource
  • .kiro/agents/trellis-{implement,check,research}.json:子代理(agentSpawn 注入任务上下文)
  • .kiro/hooks/*.py + .kiro/hooks/trellis-workflow-state.kiro.hook:每回合 workflow-state 注入器(CLI agent hook + IDE .kiro.hook
  • .kiro/skills/*/SKILL.md:auto-trigger skill
启用(必做,否则工作流不会激活):
  • Kiro CLI:把 trellis 设为当前 agent,它的 hook 才会触发 —— kiro-cli settings chat.defaultAgent trellis(持久)或 /agent swap trellis(按 session)。否则 Kiro 跑内置 kiro_default
  • Kiro IDE.kiro/hooks/trellis-workflow-state.kiro.hook(一个 promptSubmit hook)默认 enabled;在 Kiro 的 Agent Hooks 界面确认它已开启/信任。
每回合注入打印纯文本,Kiro 会把它加入对话上下文(依 Kiro 官方 hooks 文档)。stdout→上下文的确切行为(以及 IDE runCommand 是否注入 stdout)待 Kiro 真机验证;若不生效,退化为静态 steering 提示。

Gemini CLI

布局:
  • .gemini/commands/trellis/{name}.toml:TOML 命令文件——start.tomlfinish-work.tomlcontinue.toml
  • .gemini/skills/trellis-{name}/SKILL.md:5 个 trellis skill
  • .gemini/agents/{name}.md:带 pull-based prelude 的 sub-agent 定义(sub-agent 自己 Read 自己的 JSONL,因为 Gemini 没有 sub-agent PreToolUse hook)
  • .gemini/hooks/session-start.py:SessionStart hook
  • .gemini/settings.json:hook 配置(只有 SessionStart)

Qoder

Qoder 原生支持 Custom Commands(在 Agent 输入框输入 / 调用,项目级存放在 <项目>/.qoder/commands/{name}.md,要求 YAML frontmatter 包含 namedescription 字段)。Trellis 把 session-boundary 命令放到这里,让你可以显式地调用;阶段级工作流则保留为 auto-trigger skill。 布局:
  • .qoder/commands/trellis-{name}.md:session-boundary 命令 —— finish-workcontinue,用 /trellis-finish-work/trellis-continue 调用(start 由 Qoder 的 SessionStart hook 自动注入,无需命令)
  • .qoder/skills/trellis-{name}/SKILL.md:auto-trigger 工作流 skill —— brainstormbefore-devcheckupdate-specbreak-loop
  • .qoder/agents/{name}.md:带 pull-based prelude 的 sub-agent 定义
  • .qoder/hooks/session-start.py:SessionStart hook
  • .qoder/settings.json:hook 配置(只有 SessionStart——Qoder 没有 sub-agent PreToolUse hook)

CodeBuddy

CodeBuddy 是完整 class-1 平台(真 hook + 真 sub-agent)。 布局:
  • .codebuddy/commands/trellis/{name}.mdstartfinish-workcontinue
  • .codebuddy/skills/trellis-{name}/SKILL.md:5 个 trellis skill
  • .codebuddy/agents/{name}.md:sub-agent 定义
  • .codebuddy/hooks/*.py:共享 Python hook 脚本
  • .codebuddy/settings.json:hook 配置(SessionStart + sub-agent PreToolUse 注入)

GitHub Copilot

布局:
  • .github/copilot-instructions.md:Trellis prelude,每个 session 自动加载
  • .github/prompts/trellis-{name}.prompt.mdstart / finish-work / continue 的 prompt 文件
  • .github/skills/trellis-{name}/SKILL.md:5 个 trellis skill
  • .github/agents/{name}.agent.md:带 pull-based prelude 的 sub-agent 定义(Copilot 的 sub-agent hook 触发不稳定,所以让 sub-agent 自己 Read 自己的 JSONL)
  • .github/copilot/hooks/*.py:Copilot 专属 + 共享 Python hook 脚本
  • .github/copilot/hooks.json:hook 配置(只有 SessionStart——sub-agent PreToolUse 不可用)

Droid

Droid(factory.ai)是 class-1 平台,有 hook + sub-agent:
  • .factory/commands/trellis/:start / finish-work / continue
  • .factory/agents/:三个 trellis-* sub-agent
  • .factory/skills/:5 个 trellis skill
  • .factory/hooks/:SessionStart + sub-agent injection

Pi Agent

Pi Agent 走 extension,不走 Python hook。Trellis 写入同样的 workflow 原语,然后 extension 解析当前 session id,在 Bash 命令和 sub-agent 运行前注入任务上下文。 布局:
  • .pi/prompts/trellis-{name}.md:会话边界 prompt(finish-workcontinuestart 只在需要手动入口的平台存在)
  • .pi/skills/trellis-{name}/SKILL.md:5 个 Trellis 工作流 skill
  • .pi/agents/{name}.mdtrellis-implementtrellis-checktrellis-research
  • .pi/extensions/trellis/index.ts:会话上下文、Bash TRELLIS_CONTEXT_ID 传递、sub-agent JSONL 注入
  • .pi/settings.json:extension 注册
extension 把当前任务状态存在 .trellis/.runtime/sessions/<session-key>.json,所以每个 Pi 窗口/会话都可以有自己的任务,不会抢别的窗口。

Oh My Pi

Oh My Pi 与 Pi Agent 一样走 extension。Trellis 写入同样的 workflow 原语,然后 extension 解析当前 session id,在 Bash 命令和 sub-agent 运行前注入任务上下文。与 Pi Agent 不同,Oh My Pi 没有 settings.json —— 原生 provider 会自动发现 .omp/ 下的所有子目录。 布局:
  • .omp/commands/trellis-{name}.md:会话边界 prompt(finish-workcontinuestart 只在需要手动入口的平台存在)
  • .omp/skills/trellis-{name}/SKILL.md:5 个 Trellis 工作流 skill
  • .omp/agents/{name}.mdtrellis-implementtrellis-checktrellis-research
  • .omp/extensions/trellis/index.ts:会话上下文、Bash TRELLIS_CONTEXT_ID 传递、sub-agent JSONL 注入
extension 把当前任务状态存在 .trellis/.runtime/sessions/<session-key>.json,所以每个 Oh My Pi 窗口/会话都可以有自己的任务,不会抢别的窗口。

其他支持平台

Trellis 还原生带有上面能力矩阵之外几个平台的配置器:
  • Kilo--kilo):写 .kilocode/workflows/(命令:startfinish-work)和 .kilocode/skills/trellis-{name}/SKILL.md(5 个 trellis skill)。没有 hook 集成。
  • Antigravity--antigravity):写 Antigravity 原生的 workflow 文件(3 个命令)。
  • Devin--devin,原 Windsurf):写 Devin 原生的 workflow 和 skill 文件。旧的 --windsurf flag 仍作为已废弃的别名可用。
除了 17 个已配置平台,Trellis 还能被任何遵循 .agents/skills/ 约定(agentskills.io 规范)的 AI 编码 agent 直接使用。Codex 的 skill 就写在这个目录下,这些文件也能被该生态的其他 agent(Amp、Cline、Deep Agents、Firebender、Kimi Code CLI、Warp 等)直接读取。这些平台上你通过 .trellis/ 核心加上各自 agent 读取的 prelude 文件来管理 Trellis。

操作系统

.trellis/scripts/ 和 Python hook 需要 Python 3.9+。OpenCode 插件需要 Node.js 18+。

多开发者协作

按开发者隔离(不冲突):
  • .trellis/workspace/{name}/:各自的 journal 和索引
  • .trellis/.developer:gitignored
  • .trellis/.runtime/:gitignored 的会话运行时状态;每个 AI 会话/窗口有自己的 active task 文件
共享状态(通过 PR 协调):
  • .trellis/spec/:团队约定,和代码一样走 PR review
  • .trellis/tasks/:task JSON;显式 --assignee 避免冲突
Spec 的重要改动应在 review 中讨论;把 spec 库当成团队代码来对待。

trellis update 与版本管理

模板 hash 机制(.trellis/.template-hashes.json):
  1. 计算本地文件 hash。
  2. 和记录的模板 hash 对比。
  3. 一致 ⇒ 用户未改 ⇒ 安全更新。
  4. 不一致 ⇒ 询问(覆盖 / 跳过),或根据 -f / -s 策略静默处理。
破坏性变更(比如 0.5.0 移除 Multi-Agent Pipeline)以 migration manifest 形式发布。对破坏性 manifest 跑 trellis update 而不加 --migrate 会退出并打印说明,不会静默重命名。trellis update --migrate 应用 rename / delete 条目,每个冲突询问一次。