前面几个框架回答的是同一个问题:一个功能怎么做完。
Trellis 关心的是另一个问题:做了一百个功能之后,项目积累下来的知识放在哪?
- 这个项目的接口错误码要统一用
AppError,上周跟 Agent 说过,这周它又忘了 - 新同事加入,他的 Agent 完全不知道团队的约定
- 子代理去写代码,看不到主会话里你们讨论了半天的结论
Trellis 把项目规范、任务和会话记录都存成仓库里的文件,再由 Hook 在合适的时机,把对应的文件送给对应的 Agent。
我自己觉得,Trellis 更符合国人的习惯。
一、安装
需要 Node.js 18 以上和 Python 3.9 以上(它的脚本和 Hook 是 Python 写的)。
npm install -g @mindfoldhq/trellis@latest在项目里初始化,-u 后面是你的名字,--claude 表示生成 Claude Code 的配置:
trellis init -u your-name --claude以后升级:先 trellis upgrade 升级 CLI,再在项目里 trellis update 更新项目文件。如果提示需要迁移,加上 --migrate。
初始化
第一次在项目里初始化时,Trellis 会:
- 在
.trellis/spec/下生成十几个占位的规范文件(后端、前端、通用指南……),内容是空的模板 - 创建一个引导任务
00-bootstrap-guidelines
然后你的第一件事,就是让 Agent 完成这个引导任务:读你的代码,把项目真实的约定填进这些规范文件里,比如目录结构、错误处理方式、命名规则。
团队里其他人后来加入时,用自己的名字初始化,会得到一个 00-join-<名字> 任务,帮他熟悉已有的规范。
Trellis 自己的仓库就在用 Trellis,初始化之后的目录可以直接看:

二、仓库里多了什么
初始化之后,项目里多了两个目录。
.trellis/
.trellis/
├── workflow.md ← 工作流的唯一来源:每个阶段做什么
├── config.yaml ← 项目配置
├── spec/ ← 项目规范
│ ├── backend/
│ ├── frontend/
│ └── guides/
├── tasks/ ← 任务,一个任务一个文件夹
│ └── 10-19-order-export/
│ ├── task.json ← 任务状态
│ ├── prd.md ← 需求
│ ├── design.md ← 设计(复杂任务才有)
│ ├── implement.jsonl ← 实现时要读哪些规范
│ ├── check.jsonl ← 检查时要读哪些规范
│ └── research/ ← 调研结论
├── workspace/ ← 每个人的会话日志
│ └── your-name/
│ └── journal-1.md
└── scripts/ ← task.py、get_context.py 等脚本.claude/:Claude Code 的接线
.claude/
├── commands/trellis/ ← /trellis:start、/trellis:continue、/trellis:finish-work
├── agents/ ← trellis-implement、trellis-check、trellis-research 三个子代理
├── skills/ ← trellis-brainstorm、trellis-check、trellis-update-spec ……
└── hooks/ ← 三个 Hook 脚本.trellis/ 里是数据,.claude/ 是接线。换一个 Agent 工具,.trellis/ 完全不变,只是接线换成那个工具的格式。
三、Trellis 的三个阶段
Trellis 的一个任务分三个阶段:
| 阶段 | 做什么 | 交出什么 | 谁来做 | 关卡 |
|---|---|---|---|---|
| 计划 | 创建任务、头脑风暴、写需求、选出要读的规范 | prd.md、implement.jsonl、check.jsonl |
主会话和你 | 你确认 PRD |
| 执行 | 写代码,然后检查 | 代码改动 | trellis-implement 写,trellis-check 查 |
check 跑 lint、类型检查、测试 |
| 收尾 | 最终检查、更新规范、提交、归档 | 更新后的规范、提交、会话日志 | 主会话 | 你确认提交计划 |
任务状态写在 task.json 里,只有四种:
没有任务 → planning(创建任务)→ in_progress(开始执行)→ completed(归档)日常用起来,你几乎不用记命令,描述需求就行:
给订单列表加一个 CSV 导出,按当前筛选条件,最多 10 万行Agent 会根据 workflow.md 里的规则,先判断这件事的大小,然后问你要不要建一个 Trellis 任务:小事你说不用,这次会话就不走 Trellis;复杂的事你同意了,才建任务、进入计划阶段。
之后走哪个阶段,也由 workflow.md 决定。
如果它卡住了,或者你想让它推进到下一步,用 /trellis:continue。
四、精读:三个 Hook 各管一件事
Trellis 用三个 Hook 把文件送到该去的地方,三个都登记在 .claude/settings.json 里:

SessionStart(开会话、/clear、压缩之后)→session-start.pyPreToolUse(派子代理时,匹配Task和Agent工具)→inject-subagent-context.pyUserPromptSubmit(你每发一条消息)→inject-workflow-state.py
Hook 1:session-start,会话一开始就知道项目状况
每次开新会话,Agent 都是一张白纸。SessionStart 这个 Hook 会把这些内容注入上下文: