Trellis:把规范、任务、记忆放进仓库

3,512 字 · 预计阅读 10 分钟

前面几个框架回答的是同一个问题:一个功能怎么做完。

Trellis 关心的是另一个问题:做了一百个功能之后,项目积累下来的知识放在哪?

  • 这个项目的接口错误码要统一用 AppError,上周跟 Agent 说过,这周它又忘了
  • 新同事加入,他的 Agent 完全不知道团队的约定
  • 子代理去写代码,看不到主会话里你们讨论了半天的结论

Trellis 把项目规范、任务和会话记录都存成仓库里的文件,再由 Hook 在合适的时机,把对应的文件送给对应的 Agent。

我自己觉得,Trellis 更符合国人的习惯。


一、安装

需要 Node.js 18 以上和 Python 3.9 以上(它的脚本和 Hook 是 Python 写的)。

bash
npm install -g @mindfoldhq/trellis@latest

在项目里初始化,-u 后面是你的名字,--claude 表示生成 Claude Code 的配置:

bash
trellis init -u your-name --claude

以后升级:先 trellis upgrade 升级 CLI,再在项目里 trellis update 更新项目文件。如果提示需要迁移,加上 --migrate。


初始化

第一次在项目里初始化时,Trellis 会:

  1. 在 .trellis/spec/ 下生成十几个占位的规范文件(后端、前端、通用指南……),内容是空的模板
  2. 创建一个引导任务 00-bootstrap-guidelines

然后你的第一件事,就是让 Agent 完成这个引导任务:读你的代码,把项目真实的约定填进这些规范文件里,比如目录结构、错误处理方式、命名规则。

团队里其他人后来加入时,用自己的名字初始化,会得到一个 00-join-<名字> 任务,帮他熟悉已有的规范。

Trellis 自己的仓库就在用 Trellis,初始化之后的目录可以直接看:

Trellis 仓库里的 .trellis/ 和 .claude/


二、仓库里多了什么

Trellis:文件放在仓库里,Hook 负责在对的时间送到对的地方

初始化之后,项目里多了两个目录。

.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 里:

Trellis 在 settings.json 里登记的三个 Hook

  • SessionStart(开会话、/clear、压缩之后)→ session-start.py
  • PreToolUse(派子代理时,匹配 Task 和 Agent 工具)→ inject-subagent-context.py
  • UserPromptSubmit(你每发一条消息)→ inject-workflow-state.py

Hook 1:session-start,会话一开始就知道项目状况

每次开新会话,Agent 都是一张白纸。SessionStart 这个 Hook 会把这些内容注入上下文:

本文是会员内容

全文 3,512 字,已试读约 30%。开通专业版可阅读全文,并解锁全部官方课程与后续更新。

开通专业版

支持 7 天无理由退款 · 早鸟价 99 元/年(售完恢复365/年)

课程中涉及的第三方项目,其著作权与商标归各自权利人所有;引用处的署名与许可见《开源与来源说明》。