跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.trytrellis.app/llms.txt

Use this file to discover all available pages before exploring further.

本文档从一个新 AI 会话开始,一直走到任务归档,说明 Trellis 的标准任务流程。重点是运行时行为:读哪些文件、写哪些文件、哪些 hook 会触发,以及不同平台的差异。
这是日常使用流程。模块边界、定制入口、实现细节看 架构全景

1. 会话启动

一个 Trellis 项目是带 .trellis/ 的仓库,再加上 .claude/.codex/.cursor/.opencode/.kiro/.pi/ 等平台目录。 AI 会话启动时,Trellis 会先给主会话加载足够的项目上下文,让它能判断下一步怎么走。启动 payload 是索引和状态报告,不是把所有项目文件全量塞进去。 常见启动上下文包括:
上下文来源
开发者身份.trellis/.developer
Git 状态当前分支、脏文件、最近提交
Active task pointer.trellis/.runtime/sessions/<session-key>.json.trellis/.current-task 作为 fallback
Active task 列表.trellis/tasks/*/task.json
Workflow 摘要.trellis/workflow.md
Spec 索引.trellis/spec/**/index.md
Workspace memory.trellis/workspace/<developer>/index.md 和近期 journal
不同平台的交付方式不同:
平台组启动行为
Claude Code、Cursor、OpenCode、Gemini CLI、Qoder、CodeBuddy、Copilot、Droid、PiSessionStart hook、plugin 或 extension 自动注入启动上下文。
CodexAGENTS.md 自动加载;开启 codex_hooks = true 后 SessionStart hook 也会运行。
KiroTrellis 内容通过 .kiro/ 下的 skill 和 agent 文件交付;默认没有 Trellis SessionStart hook。
Kilo、Antigravity、Windsurf主会话显式读取 workflow 或 skill 入口。
这一步结束后,AI 应该知道当前有没有 active task、workflow 在哪里、项目 spec 索引在哪里。真正执行任务时,它仍然需要打开具体文件。

2. 每条消息带当前工作流状态

在支持 hook 的平台上,每条用户消息都会触发一次轻量的 workflow-state 注入。这是让主会话跟当前任务状态对齐的 per-turn guardrail。 Hook 会解析当前 session 的 active task:
cwd
  -> find .trellis/
  -> resolve session key
  -> read .trellis/.runtime/sessions/<session-key>.json
  -> read .trellis/tasks/<task>/task.json
  -> read task.json.status
然后它到 .trellis/workflow.md 里找匹配的 block:
[workflow-state:STATUS]
...
[/workflow-state:STATUS]
正文会被包进 <workflow-state>...</workflow-state> 注入当前 turn。 关键细节:
  • Hook 只负责解析。Breadcrumb 文案写在 .trellis/workflow.md
  • Python 和 JavaScript hook 不保存重复的 fallback 字典。
  • 没有 active task 时,pseudo-status 是 no_task
  • 缺少匹配 block 时,hook 输出 Refer to workflow.md for current step.
  • Sub-agent 不靠这个 breadcrumb;它们通过自己的注入或 prelude 路径拿 task/spec context。
所以要改 workflow-state 行为,入口是 .trellis/workflow.md,不是 hook 脚本。

3. Trellis 选择当前 prompt 的路线

主会话会把你的 prompt 和当前 workflow-state block 一起读,然后选择三条路径之一。
路径适用情况会发生什么
直接回答不写文件;简单问答、解释、查询、闲聊AI 回答后停止。
Trellis 任务实现、文档改动、重构、构建、迁移,或任何需要交付产物的工作Trellis 创建或继续 .trellis/tasks/ 下的任务。
Inline escape hatch你明确要求本轮跳过 TrellisAI 只在本轮 inline 改文件。
默认严格进入任务流程,是因为工作产物需要持久任务文件。对话会压缩、重启、跨工具迁移;task 文件不会。 下面继续走 Trellis 任务路径。

4. 创建任务写入 planning 状态

真正要做事时,主会话创建任务:
python3 ./.trellis/scripts/task.py create "<title>" --slug <name>
这个命令写入任务目录:
.trellis/tasks/<MM-DD-name>/
├── task.json
├── implement.jsonl
└── check.jsonl
初始 task.json status 是 planningtask.py create 还会尽量设置当前 session 的 active-task pointer,所以不用等 task.py start,下一轮就可以看到 [workflow-state:planning] 生成的 JSONL 文件一开始只有示例行。规划阶段必须把示例行换成真实 spec/research 条目,任务才算准备好实现。

5. 规划阶段把请求落成文件

规划阶段负责把用户请求转换成 implement 和 check 可以信任的任务文件。 主会话加载 trellis-brainstorm 并写 prd.md。清楚的小任务可以写得短;模糊任务需要把每个决策记录下来。 prd.md 通常包含:
Section作用
Goal这个任务改什么、为什么改。
Requirements必须改变的行为或文档。
Acceptance Criteria证明任务完成的检查点。
Definition of Done质量标准:检查、文档同步、必要测试。
Out of Scope本任务明确不改什么。
Technical Notes已检查文件、约束、相关任务。
需要调研时,Trellis 把结论写进任务目录:
.trellis/tasks/<task>/research/<topic>.md
Research 文件优先于只留在聊天里,因为 sub-agent 和未来 session 在对话消失后仍能读取它们。

6. 规划阶段整理实现上下文

实现前,Trellis 会整理 implement.jsonlcheck.jsonl 示例:
{"file": ".trellis/spec/docs-site/docs/style-guide.md", "reason": "Docs writing style"}
{"file": ".trellis/tasks/04-30-example/research/platforms.md", "reason": "Platform behavior research"}
规则:
  • 放 spec 文件和 research 文件。
  • 不放马上要修改的源文件。
  • 不只留下 seed _example 行。
  • implement.jsonl 放写实现需要的上下文。
  • check.jsonl 放验证和质量检查需要的上下文。
这是主要的 read-before-write 机制。它让 sub-agent prompt 聚焦在当前任务的规则和背景上,而不是把整个仓库 dump 进去。

7. 激活任务进入实现阶段

prd.md 和 JSONL context 准备好后,Trellis 激活任务:
python3 ./.trellis/scripts/task.py start <task-dir>
这个命令把 task.json.statusplanning 改成 in_progress 下一轮 prompt 里,workflow-state hook 会注入 [workflow-state:in_progress] block。这个 block 覆盖实现、验收、最终验证、spec update,以及 required 的 Phase 3.4 commit plan。

8. 实现阶段读取 PRD 和 spec

执行一定从 active task 目录开始。不同平台只是在“上下文怎么交给执行者”这件事上不同。
执行路径平台上下文加载方式
Hook-push sub-agentClaude Code、Cursor、OpenCode、CodeBuddy、Droid、PiSub-agent 启动前,hook 注入 prd.mdinfo.mdimplement.jsonl 列出的文件。
Pull-prelude sub-agentCodex、Copilot、Gemini CLI、Qoder、KiroSub-agent 定义要求 agent 启动后读取 active task、PRD 和 JSONL。
主会话 skill 流程Kilo、Antigravity、Windsurf主会话加载 Trellis skill,并内联读取同一批 task/spec 文件。
正常实现顺序是:
  1. prd.md
  2. 读可选的 info.md
  3. implement.jsonl
  4. 读每个列出的 spec/research 文件。
  5. 检查相关源文件。
  6. 写改动。
  7. 运行任务需要的项目检查,通常是 lint 和 type-check。
Implement 路径不提交代码。它产出工作 diff,并说明改了什么。

9. Check 复核并自修

实现之后,Trellis 运行 trellis-check Check 路径读取:
  • prd.md
  • check.jsonl
  • 相关 spec 和 research
  • 改动文件
  • 本地 test / lint / type-check 命令
它的目标不是只报告问题。trellis-check 可以直接修 finding,然后重跑检查。 常见 finding:
Finding 类型示例
PRD drift实现改变了 acceptance criteria 没写到的行为。
Spec drift代码违反 .trellis/spec/ 里的本地约定。
Missing sync英文文档改了,中文镜像没改。
Broken checksMarkdown lint、type-check、unit tests 或 formatting 失败。
Wrong task boundarydiff 包含无关文件或格式化噪音。
如果 check 暴露的是需求问题,Trellis 回到 planning,更新 prd.md,再重新实现。如果只是实现质量问题,check 路径直接修并重跑。

10. 收尾阶段更新持久知识

检查通过后,主会话做最终验证,并加载 trellis-update-spec 这一步判断任务有没有产生可复用规则。如果有,就写进 .trellis/spec/,让未来任务可以通过 JSONL 读取。 适合进入 spec 的例子:
  • 新的 docs 写作约定
  • 命令契约或状态转换规则
  • 平台特定 gotcha
  • 防止重复 bug 的测试模式
不适合进入 spec 的例子:
  • 一次性任务细节
  • 当前实现的临时 notes
  • 只对当前 PRD 有意义的事实
Task-local facts 留在 .trellis/tasks/<task>/;稳定团队规则提升到 .trellis/spec/

11. 主会话驱动工作 commit

Commit 边界独立于实现阶段,也独立于 /trellis:finish-work Phase 3.4 里,主会话会:
  1. 读取 git status --porcelain
  2. 区分本任务改动和无关脏文件。
  3. 把任务文件分成逻辑 commit。
  4. 打印 commit plan。
  5. 等一次用户确认。
  6. 对确认的批次运行 git addgit commit
主会话不 push,也不会把无关脏文件静默放进 commit。 对于 docs-site 这类 submodule 改动,通常有两层边界:
  1. 先在 docs-site/ 里提交。
  2. 回到父仓库。
  3. 提交更新后的 docs-site submodule pointer。

12. /trellis:finish-work 归档和写 journal

只有工作 commit 已经存在后,才应该运行 /trellis:finish-work /trellis:finish-work 做收尾记账:
  • 工作树仍然脏时拒绝运行
  • 把任务归档到 .trellis/tasks/archive/YYYY-MM/
  • 把 session 总结追加到 .trellis/workspace/<developer>/journal-N.md
  • 更新 workspace 索引
它不是提交功能代码的命令。

会话结束后留下什么

整套流程完成后,持久状态都在文件里:
存放位置留下的内容
.trellis/tasks/<task>/PRD、research、context manifest、metadata、归档任务历史。
.trellis/spec/团队约定和可复用经验。
.trellis/workspace/<developer>/开发者 journal 和跨会话 notes。
Git commits可 review 的代码、文档、spec、archive、journal 改动单元。
下一次 AI 会话会重新读取仓库状态。它不需要上一段聊天记录,也能知道任务是什么、哪些 spec 适用、下一步该执行哪个 workflow step。