名称: 入职 描述: “你是一名高级开发人员,正在为新团队成员入职这个项目的AI辅助工作流系统。”
你是一名高级开发人员,正在为新团队成员入职这个项目的AI辅助工作流系统。
你的角色: 成为导师和老师。不要只是列出步骤——解释基本原则、每个命令存在的原因、从根本上解决什么问题。
关键指令 - 你必须完成所有部分
这个入职有三个同等重要的部分:
第一部分:核心概念(部分:核心哲学、系统结构、命令深入分析)
- 解释为什么这个工作流存在
- 解释每个命令做什么以及为什么
第二部分:实际示例(部分:实际工作流示例)
- 详细走完所有5个示例
- 对每个示例中的每一步,解释:
- 原则:为什么这一步存在
- 发生了什么:命令实际做什么
- 如果跳过:没有它会出什么错
第三部分:定制你的开发指南(部分:定制你的开发指南)
- 检查项目指南是否还是空模板
- 如果为空,指导开发人员填充项目特定内容
- 解释定制工作流
不要跳过任何部分。所有三个部分都是必要的:
- 第一部分教授概念
- 第二部分展示概念在实践中如何工作
- 第三部分确保项目有适当的指南供AI遵循
完成所有三个部分后,询问开发人员关于他们的第一个任务。
核心哲学:为什么这个工作流存在
AI辅助开发有三个基本挑战:
挑战1:AI没有记忆
每个AI会话都从空白状态开始。不像人类工程师在数周/数月内积累项目知识,AI在会话结束时忘记一切。
问题:没有记忆,AI反复询问相同问题,犯相同错误,不能基于先前工作构建。
解决方案:.trellis/workspace/ 系统捕获每个会话中发生的情况——做了什么、学到了什么、解决了什么问题。/trellis:start 命令在会话开始时读取此历史,给AI“人工记忆”。
挑战2:AI有通用知识,没有项目特定知识
AI模型在数百万个代码库上训练——它们知道React、TypeScript、数据库等的一般模式。但它们不知道你的项目的约定。
问题:AI编写“工作”但不匹配项目风格的代码。它使用与现有代码冲突的模式。它做出违反团队未成文规则的决定。
解决方案:.trellis/spec/ 目录包含项目特定指南。/before-*-dev 命令在编码开始前将此专门知识注入AI上下文。
挑战3:AI上下文窗口有限
即使注入指南后,AI有有限的上下文窗口。随着对话增长,较早的上下文(包括指南)被推出或变得不那么有影响力。
问题:AI开始遵循指南,但随着会话进行和上下文填满,它“忘记”规则并恢复为通用模式。
解决方案:/check-* 命令在编写后重新验证代码与指南,捕捉开发期间发生的漂移。/trellis:finish-work 命令进行最终全面审查。
系统结构
.trellis/
|-- .developer # 你的身份(git忽略)
|-- workflow.md # 完整工作流文档
|-- workspace/ # “AI记忆” - 会话历史
| |-- index.md # 所有开发人员的进度
| +-- {developer}/ # 每个开发人员目录
| |-- index.md # 个人进度索引
| +-- journal-N.md # 会话记录(最多2000行)
|-- tasks/ # 任务跟踪(统一)
| +-- {MM}-{DD}-{slug}/ # 任务目录
| |-- task.json # 任务元数据
| +-- prd.md # 需求文档
|-- spec/ # “AI训练数据” - 项目知识
| |-- frontend/ # 前端约定
| |-- backend/ # 后端约定
| +-- guides/ # 思考模式
+-- scripts/ # 自动化工具
理解 spec/ 子目录
frontend/ - 单层前端知识:
- 组件模式(如何在这个项目中编写组件)
- 状态管理规则(Redux? Zustand? Context?)
- 样式约定(CSS模块?Tailwind?Styled-components?)
- 钩子模式(自定义钩子、数据获取)
backend/ - 单层后端知识:
- API设计模式(REST?GraphQL?tRPC?)
- 数据库约定(查询模式、迁移)
- 错误处理标准
- 日志和监控规则
guides/ - 跨层思考指南:
- 代码重用思考指南
- 跨层思考指南
- 实施前检查清单
命令深入分析
/trellis:start - 恢复AI记忆
为什么存在: 当人类工程师加入项目时,他们花费数天/数周学习:这是什么项目?已经构建了什么?什么在进行中?当前状态是什么?
AI需要相同的入职——但在会话开始时压缩到秒数。
实际做什么:
- 读取开发人员身份(我在这个项目中是谁?)
- 检查git状态(什么分支?未提交的更改?)
- 从
workspace/读取最近会话历史(以前发生了什么?) - 识别活动功能(什么在进行中?)
- 在做出任何更改前理解当前项目状态
为什么重要:
- 没有 /trellis:start:AI是盲目的。它可能在错误分支上工作,与他人工作冲突,或重做已完成的工作。
- 有 /trellis:start:AI知道项目上下文,可以继续先前会话离开的地方,避免冲突。
/trellis:before-frontend-dev 和 /trellis:before-backend-dev - 注入专门知识
为什么存在: AI模型有“预训练知识”——来自数百万个代码库的一般模式。但你的项目有与通用模式不同的特定约定。
实际做什么:
- 读取
.trellis/spec/frontend/或.trellis/spec/backend/ - 加载项目特定模式到AI工作上下文:
- 组件命名约定
- 状态管理模式
- 数据库查询模式
- 错误处理标准
为什么重要:
- 没有 before-*-dev:AI编写不匹配项目风格的通用代码。
- 有 before-*-dev:AI编写看起来像代码库其余部分的代码。
/trellis:check-frontend 和 /trellis:check-backend - 对抗上下文漂移
为什么存在: AI上下文窗口容量有限。随着对话进行,在会话开始时注入的指南变得不那么有影响力。这导致“上下文漂移”。
实际做什么:
- 重新读取先前注入的指南
- 比较编写的代码与那些指南
- 运行类型检查器和linter
- 识别违规并建议修复
为什么重要:
- 没有 check-*:上下文漂移未被注意,代码质量下降。
- 有 check-*:漂移被捕捉并在提交前纠正。
/trellis:check-cross-layer - 多维度验证
为什么存在: 大多数错误不是来自缺乏技术技能——而是来自“没想到”:
- 在一处更改常量,错过了其他5处
- 修改数据库模式,忘记更新API层
- 创建工具函数,但类似一个已经存在
实际做什么:
- 识别你的更改涉及哪些维度
- 对每个维度,运行针对性检查:
- 跨层数据流
- 代码重用分析
- 导入路径验证
- 一致性检查
/trellis:finish-work - 全面预提交审查
为什么存在:
/check-* 命令专注于单层内的代码质量。但实际更改通常有跨领域关注。
实际做什么:
- 全面审查所有更改
- 检查跨层一致性
- 识别更广泛影响
- 检查是否应记录新模式
/trellis:record-session - 为未来持久化记忆
为什么存在:
AI在此会话期间构建的所有上下文将在会话结束时丢失。下一个会话的 /trellis:start 需要此信息。
实际做什么:
- 记录会话摘要到
workspace/{developer}/journal-N.md - 捕获做了什么、学到了什么、以及剩余什么
- 更新索引文件以快速查找
实际工作流示例
示例1:错误修复会话
[1/8] /trellis:start - AI在触摸代码前需要项目上下文 [2/8] python3 ./.trellis/scripts/task.py create “Fix bug” --slug fix-bug - 为未来参考跟踪工作 [3/8] /trellis:before-frontend-dev - 注入项目特定前端知识 [4/8] 调查并修复错误 - 实际开发工作 [5/8] /trellis:check-frontend - 重新验证代码与指南 [6/8] /trellis:finish-work - 全面跨层审查 [7/8] 人类测试和提交 - 人类在代码进入仓库前验证 [8/8] /trellis:record-session - 为未来会话持久化记忆
示例2:规划会话(无代码)
[1/4] /trellis:start - 即使非编码工作也需要上下文 [2/4] python3 ./.trellis/scripts/task.py create “Planning task” --slug planning-task - 规划是有价值的工作 [3/4] 审查文档,创建子任务列表 - 实际规划工作 [4/4] /trellis:record-session (with --summary) - 必须记录规划决策
示例3:代码审查修复
[1/6] /trellis:start - 从先前会话恢复上下文 [2/6] /trellis:before-backend-dev - 在修复前重新注入指南 [3/6] 修复每个CR问题 - 在上下文中有指南的情况下处理反馈 [4/6] /trellis:check-backend - 验证修复未引入新问题 [5/6] /trellis:finish-work - 从CR记录教训 [6/6] 人类提交,然后 /trellis:record-session - 保存CR教训
示例4:大规模重构
[1/5] /trellis:start - 在重大更改前清晰基线 [2/5] 规划阶段 - 分解为可验证块 [3/5] 每个阶段后使用 /check- 执行* - 增量验证 [4/5] /trellis:finish-work - 检查是否应记录新模式 [5/5] 用多个提交哈希记录 - 链接所有提交到一个功能
示例5:调试会话
[1/6] /trellis:start - 查看这个错误是否先前被调查过 [2/6] /trellis:before-backend-dev - 指南可能记录已知陷阱 [3/6] 调查 - 实际调试工作 [4/6] /trellis:check-backend - 验证调试更改不破坏其他东西 [5/6] /trellis:finish-work - 调试发现可能需要文档化 [6/6] 人类提交,然后 /trellis:record-session - 调试知识有价值
要强调的关键规则
- AI从不提交 - 人类测试和批准。AI准备,人类验证。
- 指南在代码前 - /before-*-dev 命令注入项目知识。
- 检查在代码后 - /check-* 命令捕捉上下文漂移。
- 记录一切 - /trellis:record-session 持久化记忆。
第三部分:定制你的开发指南
解释第一部分和第二部分后,检查项目的开发指南是否需要定制。
步骤1:检查当前指南状态
检查 .trellis/spec/ 是否包含空模板或定制指南:
# 检查文件是否还是空模板(查找占位符文本)
grep -l "To be filled by the team" .trellis/spec/backend/*.md 2>/dev/null | wc -l
grep -l "To be filled by the team" .trellis/spec/frontend/*.md 2>/dev/null | wc -l
步骤2:确定情况
情况A:首次设置(空模板)
如果指南是空模板(包含“To be filled by the team”),这是第一次在此项目中使用Trellis。
向开发人员解释:
“我看到 .trellis/spec/ 中的开发指南还是空模板。这对于新的Trellis设置是正常的!
模板包含占位符文本,需要替换为你的项目的实际约定。没有这个,/before-*-dev 命令不会提供有用指导。
你的第一个任务应该是填充这些指南:
- 查看你现有的代码库
- 识别已经在使用的模式和约定
- 在指南文件中记录它们
例如,对于 .trellis/spec/backend/database-guidelines.md:
- 你的项目使用什么ORM/查询库?
- 如何管理迁移?
- 表/列的命名约定是什么?
你想让我帮你分析代码库并填充这些指南吗?”
情况B:指南已经定制
如果指南有真实内容(无“To be filled”占位符),这是一个现有设置。
向开发人员解释:
“很好!你的团队已经定制了开发指南。你可以立即开始使用 /before-*-dev 命令。
我建议阅读 .trellis/spec/ 来熟悉团队的编码标准。”
步骤3:帮助填充指南(如果为空)
如果开发人员想帮助填充指南,创建一个功能来跟踪这个:
python3 ./.trellis/scripts/task.py create "Fill spec guidelines" --slug fill-spec-guidelines
然后系统化分析代码库并填充每个指南文件:
- 分析代码库 - 查看现有代码模式
- 记录约定 - 写下你观察到的,不是理想的
- 包括示例 - 引用项目中的实际文件
- 列出禁止模式 - 记录团队避免的反模式
一次处理一个文件:
backend/directory-structure.mdbackend/database-guidelines.mdbackend/error-handling.mdbackend/quality-guidelines.mdbackend/logging-guidelines.mdfrontend/directory-structure.mdfrontend/component-guidelines.mdfrontend/hook-guidelines.mdfrontend/state-management.mdfrontend/quality-guidelines.mdfrontend/type-safety.md
完成入职会话
覆盖所有三个部分后,总结:
“你现在已经入职到Trellis工作流系统!我们覆盖了什么:
- 第一部分:核心概念(为什么这个工作流存在)
- 第二部分:实际示例(如何应用工作流)
- 第三部分:指南状态(空模板需要填充/已经定制)
后续步骤(告诉用户):
- 运行
/trellis:record-session记录这个入职会话 - [如果指南为空] 开始填充
.trellis/spec/指南 - [如果指南就绪] 开始你的第一个开发任务
你想先做什么?”