跳转到主要内容

快速开始

安装

# 全局安装
npm install -g @mindfoldhq/trellis@latest

# 在项目目录初始化
cd your-project
操作系统要求: Mac、Linux、Windows 完整支持。脚本已全部迁移为 Python,跨平台兼容。
初始化命令根据你使用的平台选择:
trellis init -u your-name —— 自动检测 Claude Code,配置 .claude/(commands、agents、hooks)。
一条命令可以带多个平台 flag:trellis init --codex --gemini --copilot -u your-name your-name 会成为你的开发者身份标识,并创建个人工作区 .trellis/workspace/your-name/

平台配置

trellis init 会自动检测并配置已安装的平台:
平台配置目录命令格式
Claude Code.claude/commands/trellis/.claude/agents/.claude/hooks//trellis:start
Cursor.cursor/commands/*.md/trellis-start
OpenCode.opencode/commands/trellis/.opencode/agents/.opencode/plugins//trellis:start
CodexAGENTS.md.agents/skills/.codex/agents/.codex/hooks/$start
iFlow.iflow/commands/trellis/.iflow/hooks//trellis:start
Gemini CLI.gemini/commands/trellis/*.toml/trellis:start
Kilo.kilocode/workflows//start.md
Kiro.kiro/skills/*/SKILL.md@start
Qoder.qoder/skills/skill 自动匹配
GitHub Copilot.github/copilot-instructions.md.github/prompts/Run Prompt
Windsurf.windsurf/workflows/.windsurf/rules/workflow 选择器
CodeBuddy.codebuddy/commands/trellis/*.md/trellis:start
Antigravity.agent/workflows/*.mdworkflow 选择器
Factory Droid.factory/commands/trellis/.factory/agents/.factory/hooks//trellis:start

平台能力对比(0.4.0 GA——14 个平台)

能力CCCursorOpenCodeCodexiFlowGeminiKiloKiroQoderCopilotWindsurfCodeBuddyAntigravityDroid
会话自动注入
子 Agent 规范注入
Ralph Loop 质量门
Multi-Agent Pipeline
CC = Claude Code。图例:✅ 完整 / ⚡ 部分(通过手动调用或 opt-in 平台 flag)/ ❌ 不支持。

首次使用三步走

# 步骤 1:打开 Claude Code 终端
# Hook 自动注入上下文,你可以直接描述任务(也可运行 /start 了解完整流程)

# 步骤 2:描述你要做什么

"添加用户登录功能"

# 步骤 3:AI 自动工作

# AI 会读取规范 → 创建任务 → 调用 Agent 实现 → 自我检查

# 完成后你测试、提交、记录会话即可

上面 Tab 展示的是最常用平台。另外 8 个平台(Gemini CLI、iFlow、Qoder、GitHub Copilot、Windsurf、CodeBuddy、Antigravity、Factory Droid)安装后工作流跟 Claude Code 一致——详见第 13 章各平台章节。

远程 Spec 模板

你可以在初始化时直接拉取现成的 Spec 模板,而不用从零开始写。

官方 Marketplace

# 交互模式:浏览并选择可用模板
trellis init -u your-name

# 非交互模式:指定模板 ID
trellis init -u your-name --template electron-fullstack
交互式选择器会展示官方 Marketplace 中的所有模板。你也可以选择空白模板从头开始。

自定义仓库(--registry

从你自己的 GitHub、GitLab 或 Bitbucket 仓库拉取 Spec:
# 直接下载:仓库目录直接成为 .trellis/spec/
trellis init --registry gh:myorg/myrepo/my-team-spec

# Marketplace 模式:仓库包含 index.json 和多个模板
trellis init --registry gh:myorg/myrepo/marketplace

# 从自定义 Marketplace 选择特定模板
trellis init --registry gh:myorg/myrepo/marketplace --template my-template

# 指定分支
trellis init --registry gh:myorg/myrepo/specs#develop

# GitLab 或 Bitbucket
trellis init --registry gitlab:myorg/myrepo/specs
trellis init --registry bitbucket:myorg/myrepo/specs
源格式provider:user/repo[/subdir][#ref]
Provider前缀
GitHubgh:github:
GitLabgitlab:
Bitbucketbitbucket:
ref(分支/标签)省略时默认为 main

处理已有 Spec

.trellis/spec/ 已存在时,使用策略参数:
参数行为
--overwrite删除现有 spec 目录后重新下载
--append只复制目标目录中不存在的文件
(都不加)交互式询问如何处理

搭建自定义 Marketplace

在你的仓库中创建 index.json
{
  "version": 1,
  "templates": [
    {
      "id": "my-backend-spec",
      "type": "spec",
      "name": "My Backend Spec",
      "description": "Backend conventions for our team",
      "path": "marketplace/specs/my-backend-spec",
      "tags": ["backend", "node"]
    }
  ]
}
path 字段相对于仓库根目录。目前仅支持 type: "spec" 类型。

私有仓库

对于私有仓库,通过 GIGET_AUTH 环境变量设置个人访问令牌:
GIGET_AUTH=ghp_xxxxx trellis init --registry gh:myorg/private-repo/specs
GitHub fine-grained token 需要 ContentsMetadata 读权限。

目录结构全貌

your-project/
├── .trellis/                          # Trellis 核心目录
│   ├── .developer                     # 开发者身份 (gitignored)
│   ├── .current-task                  # 当前活跃任务指针
│   ├── .version                       # Trellis 版本号
│   ├── .template-hashes.json          # 模板文件哈希 (用于 update)
│   ├── workflow.md                    # 开发工作流指南
│   ├── worktree.yaml                  # Multi-Agent worktree 配置
│   │
│   ├── spec/                          # 项目规范库
│   │   ├── frontend/                  #   前端规范
│   │   │   ├── index.md               #     规范索引
│   │   │   ├── component-guidelines.md
│   │   │   ├── hook-guidelines.md
│   │   │   ├── state-management.md
│   │   │   ├── type-safety.md
│   │   │   ├── quality-guidelines.md
│   │   │   └── directory-structure.md
│   │   ├── backend/                   #   后端规范
│   │   │   ├── index.md
│   │   │   ├── database-guidelines.md
│   │   │   ├── error-handling.md
│   │   │   ├── logging-guidelines.md
│   │   │   ├── quality-guidelines.md
│   │   │   └── directory-structure.md
│   │   └── guides/                    #   思维指南
│   │       ├── index.md
│   │       ├── cross-layer-thinking-guide.md
│   │       └── code-reuse-thinking-guide.md
│   │
│   ├── workspace/                     # 开发者工作区
│   │   ├── index.md                   #   工作区总索引
│   │   └── {developer-name}/          #   每人独立目录
│   │       ├── index.md               #     个人索引
│   │       └── journal-N.md           #     会话日志
│   │
│   ├── tasks/                         # 任务目录
│   │   ├── {MM-DD-task-name}/         #   活跃任务
│   │   │   ├── task.json              #     任务元数据
│   │   │   ├── prd.md                 #     需求文档
│   │   │   ├── info.md                #     技术设计 (可选)
│   │   │   ├── implement.jsonl        #     Implement Agent 上下文
│   │   │   ├── check.jsonl            #     Check Agent 上下文
│   │   │   └── debug.jsonl            #     Debug Agent 上下文
│   │   └── archive/                   #   已归档任务
│   │       └── {YYYY-MM}/
│   │
│   └── scripts/                       # 自动化脚本
│       ├── task.py                    #   任务管理 (14 个子命令)
│       ├── get-context.py             #   获取会话上下文
│       ├── get-developer.py           #   获取开发者身份
│       ├── init-developer.py          #   初始化开发者
│       ├── add-session.py             #   记录会话
│       ├── common/                    #   公共库
│       │   ├── paths.py
│       │   ├── developer.py
│       │   ├── git-context.py
│       │   ├── task-utils.py
│       │   ├── task-queue.py
│       │   ├── phase.py
│       │   ├── registry.py
│       │   └── worktree.py
│       └── multi-agent/               #   并行开发脚本
│           ├── plan.py
│           ├── start.py
│           ├── status.py
│           ├── create-pr.py
│           └── cleanup.py

├── .claude/                           # Claude Code 配置
│   ├── settings.json                  #   Hook 和权限配置
│   ├── commands/                      #   Slash 命令
│   │   └── trellis/                   #     Trellis 命令集
│   │       ├── start.md
│   │       ├── parallel.md
│   │       ├── record-session.md
│   │       ├── finish-work.md
│   │       ├── onboard.md
│   │       ├── before-dev.md
│   │       ├── before-dev.md
│   │       ├── check.md
│   │       ├── check.md
│   │       ├── check-cross-layer.md
│   │       ├── break-loop.md
│   │       ├── create-command.md
│   │       └── integrate-skill.md
│   ├── agents/                        #   Agent 定义
│   │   ├── dispatch.md
│   │   ├── plan.md
│   │   ├── implement.md
│   │   ├── check.md
│   │   ├── debug.md
│   │   └── research.md
│   ├── hooks/                         #   Hook 脚本
│   │   ├── session-start.py
│   │   ├── inject-subagent-context.py
│   │   └── ralph-loop.py
│   └── skills/                        #   Skill 目录

├── .cursor/                           # Cursor 配置
│   └── commands/
│       └── trellis-*.md               #   Cursor 版命令集

├── AGENTS.md                          # Codex 入口文件
├── .agents/                           # Agent Skills (Codex / OpenCode)
│   └── skills/

├── .kilocode/                         # Kilo Code 配置
│   ├── rules/                         #   项目规则(所有模式通用)
│   ├── workflows/                     #   Workflow 命令
│   └── skills/                        #   Agent Skills

├── .kiro/                             # Kiro 配置
│   ├── steering/                      #   项目上下文(Steering 系统)
│   ├── hooks/                         #   Agent Hooks(事件驱动自动化)
│   ├── prompts/                       #   自定义提示词
│   └── specs/                         #   Spec-Driven Development 文档

├── .iflow/                            # iFlow 配置
│   ├── commands/trellis/              #   Slash 命令
│   └── hooks/                         #   SessionStart hook

├── .gemini/                           # Gemini CLI 配置
│   └── commands/trellis/              #   TOML 命令

├── .qoder/                            # Qoder 配置
│   └── skills/                        #   12 个 auto-trigger skill

├── .github/                           # GitHub Copilot 配置
│   ├── copilot-instructions.md        #   自动加载的 prelude
│   └── prompts/                       #   各命令 prompt

├── .windsurf/                         # Windsurf 配置
│   ├── workflows/                     #   命令 workflow
│   └── rules/                         #   常驻 prelude

├── .codebuddy/                        # CodeBuddy 配置
│   └── commands/trellis/              #   12 个 slash 命令

├── .agent/                            # Antigravity 配置
│   └── workflows/                     #   Workflow 文件

└── .factory/                          # Factory Droid 配置
    ├── commands/trellis/              #   Slash 命令
    ├── agents/                        #   Sub-agent 定义
    └── hooks/                         #   SessionStart hook

你的第一个任务

启动会话

打开 Claude Code 终端,session-start.py Hook 自动触发,上下文已注入。你可以直接描述任务,也可以运行 /start 了解完整流程。AI 会自动执行以下操作:
  1. 读取 workflow.md 了解开发流程
  2. 运行 get-context.py 获取当前状态(你的身份、Git 状态、活跃任务)
  3. 读取 spec/frontend/index.mdspec/backend/index.md 了解项目规范
  4. 问你:“What would you like to work on?”

AI 创建任务并开发

你说:“添加用户登录功能”。AI 会:
1. 调用 Research Agent 分析代码库
   → 找到相关 spec 文件和代码模式

2. 创建任务目录
   → .trellis/tasks/02-27-user-login/
   → 生成 task.json、prd.md、implement.jsonl 等

3. 激活任务
   → task.py start(设置 .current-task)

4. 调用 Implement Agent
   → Hook 自动注入 implement.jsonl 中配置的所有 spec
   → Agent 按规范实现功能

5. 调用 Check Agent
   → Hook 注入 check.jsonl 中配置的检查规范
   → Agent 检查代码质量并自动修复
   → Ralph Loop 确保 lint/typecheck 通过

测试和提交

AI 完成后会提示你:
# 运行项目测试
pnpm lint && pnpm typecheck && pnpm test

# 确认功能正常后提交
git add src/components/LoginForm.tsx src/api/auth.ts
git commit -m "feat(auth): add user login feature"

记录会话

/record-session
AI 会调用 add-session.py,将本次会话内容追加到你的 journal 文件中,并更新个人索引。

第二天回来 — 跨会话记忆

第二天打开新会话,输入 /start
AI: "Hi Alice! 昨天你完成了用户登录功能 (commit abc1234),
     包括: LoginForm 组件、JWT middleware、users 表。
     今天想做什么?"
AI 通过 session-start.py Hook 读取了你的 workspace journal,记住了上次的工作内容。
平台差异: Claude Code 和 OpenCode 通过 Hook 自动读取 journal 实现跨会话记忆。 Cursor、Codex 用户需要通过 /start(或 $start)命令手动触发上下文加载,才能获得跨会话记忆。