# 阶段 7:记录当前会话技能书 ## A. 元数据 (Metadata) **name**: `phase7-session-recording` **description**: 在 Datai 项目中,基于已完成的代码生成,完整记录当前会话的所有信息,包括对话记录、生成的文档和代码、关键决策等,并更新索引和会话记录。此技能确保会话的可追溯性和完整性。 --- ## B. 触发与定位 (Triggers & Scope) ### 触发关键词 当用户输入包含以下关键词时,必须觉醒此技能: - "记录会话"、"会话记录"、"记录当前会话" - "进入阶段 7"、"下一阶段" - "会话"、"记录"、"日志" ### 触发场景 - 用户确认阶段 6 完成,要求进入阶段 7 - 用户要求记录当前会话 - 用户询问如何记录会话 - 用户提到"按照项目规则"或"SSOT 流程"进行会话记录 ### 操作路径 此技能涉及以下文件和目录的操作: - **读取**: `docs/sessions/YYYY-MM-DD-00X-session.md` (阶段 1 创建的会话记录) - **更新**: `docs/sessions/YYYY-MM-DD-00X-session.md` - **更新**: `docs/index.md` - **读取**: `.trae/rules/project_rules.md` (项目规则) - **读取**: `docs/Prompt/0004-单一真源文档驱动架构师.md` (SSOT 架构师提示词) ### SSOT 依赖 必须参考以下"唯一真源": - [会话记录](file:///d:\idea_demo\datai\docs\sessions\YYYY-MM-DD-00X-session.md) - 阶段 1 创建的会话记录 - [project_rules.md](file:///d:\idea_demo\datai\.trae\rules\project_rules.md) - 项目规则和阶段定义 - [0004-单一真源文档驱动架构师.md](file:///d:\idea_demo\datai\docs\Prompt\0004-单一真源文档驱动架构师.md) - SSOT 架构师提示词 --- ## C. 核心指令集 (Instructions) ### 架构约束 #### 1. 会话记录约束(强制) - 必须更新 `docs/sessions/YYYY-MM-DD-00X-session.md` - 必须包含完整的对话记录 - 必须包含所有生成的文档和代码的链接 - 必须记录关键决策和理由 - 必须记录回退记录(如果有) #### 2. 索引更新约束(强制) - 必须在更新会话记录后立即更新 `docs/index.md` - 必须更新会话记录链接 - 采用增量更新策略,**严禁**删除现有内容 - 索引链接格式:`[文档名](./相对路径/文件名.md)` #### 3. 会话记录结构约束(强制) 会话记录必须包含以下章节: - 元数据 - 需求描述 - 执行阶段 - 对话记录 - 生成的文档 - 回退记录(如果有) ### 业务逻辑 SOP(标准操作流程) #### 步骤 1:会话分析(Let's think step by step) 在更新会话记录前,必须执行以下分析: 1. **回顾整个会话过程** - 从阶段 1 到阶段 6 的完整过程 - 识别关键节点和里程碑 - 识别会话的起止时间 2. **识别关键决策和讨论点** - 需求分析阶段的关键决策 - 设计阶段的关键决策 - 决策记录阶段的关键决策 - 代码生成阶段的关键决策 - 任何讨论和争议点 3. **整理所有生成的文档和代码** - 需求文档 - 设计文档 - 决策记录 - SQL 脚本(如果有) - 提示词 - 代码文件 - 参考代码文档 - 实施方案文档 #### 步骤 2:更新会话记录 1. **读取现有会话记录** - 使用 Read 工具读取 `docs/sessions/YYYY-MM-DD-00X-session.md` - 了解现有会话记录的内容和结构 2. **更新元数据** - 更新"结束时间"为当前时间 - 更新"当前阶段"为"阶段 7:记录当前会话" - 更新"状态"为"已完成" 3. **更新执行阶段** - 更新所有阶段的状态: - 阶段 1:已完成 - 阶段 2:已完成 - 阶段 3:已完成 - 阶段 4:已完成/跳过 - 阶段 5:已完成 - 阶段 6:已完成 - 阶段 7:已完成 - 阶段 8:未开始 - 阶段 9:未开始 - 阶段 10:未开始 - 为每个已完成的阶段添加: - 生成的文档链接 - 关键决策 - 状态 4. **添加完整的对话记录** - 记录用户的原始需求 - 记录 AI 的分析和决策 - 记录用户的反馈和确认 - 记录任何回退操作和原因 - 记录关键讨论和争议点 5. **添加所有生成的文档** - 需求文档 - 设计文档 - 决策记录 - SQL 脚本(如果有) - 提示词 - 参考代码文档 - 实施方案文档 - API 文档(如果有) - 复盘文档(如果有) 6. **添加回退记录(如果有)** - 记录回退的阶段 - 记录回退的原因 - 记录回退的操作 - 记录回退后的处理 7. **会话记录质量检查** - 使用 Read 工具读取更新后的会话记录 - 检查是否包含所有必需章节 - 检查是否包含完整的对话记录 - 检查是否包含所有生成的文档和代码的链接 - 检查是否包含关键决策和理由 - 检查是否包含回退记录(如果有) #### 步骤 3:更新索引 1. **读取现有索引** - 使用 Read 工具读取 `docs/index.md` - 找到"会话记录"部分 - 如果不存在,则创建该部分 2. **更新会话记录链接** - 更新"会话记录"部分的会话记录链接 - 确保链接指向最新的会话记录 - 格式:`- [会话记录](./sessions/YYYY-MM-DD-00X-session.md) - [需求名]` - 示例:`- [会话记录](./sessions/2026-01-21-001-session.md) - 用户登录功能` 3. **保存索引** - 使用 Write 工具更新 `docs/index.md` - **严禁**删除现有内容,只更新会话记录链接 #### 步骤 4:确认与询问 1. **向用户确认** - 显示更新后的会话记录的链接 - 询问:"会话记录是否完整?" - 询问:"是否进入下一阶段(变更记录与归档)?" 2. **等待用户反馈** - 如果用户不满意,询问具体需要修改的地方 - 如果用户要求回退,执行回退机制(见错误陷阱部分) - 如果用户确认,标记阶段 7 为已完成,准备进入阶段 8 ### 工具调用 #### 必须使用的工具 1. **Read 工具**:读取现有文件 - 使用场景:读取会话记录、读取索引 - 命令:`Read(file_path="d:\\idea_demo\\datai\\docs\\sessions\\2026-01-21-001-session.md")` 2. **Write 工具**:创建或更新文件 - 使用场景:更新会话记录、更新索引 - 命令:`Write(file_path="d:\\idea_demo\\datai\\docs\\sessions\\2026-01-21-001-session.md", content="...")` 3. **LS 工具**:检查目录是否存在 - 使用场景:确认 `docs/sessions/` 目录存在 - 命令:`LS(path="d:\\idea_demo\\datai\\docs")` #### 可选使用的工具 1. **TodoWrite 工具**:管理任务 - 使用场景:跟踪阶段执行进度 - 命令:`TodoWrite(todos=[...])` --- ## D. 错误陷阱与验证 (Anti-Patterns & Checklist) ### 常见错误(Anti-Patterns) #### 错误 1:不完整记录对话 **错误示例**: ```markdown ## 对话记录 用户:实现用户登录功能 AI:好的,开始执行... AI:完成 ``` **问题**: - 对话记录过于简单 - 没有记录具体的分析过程 - 没有记录关键决策 - 没有记录用户的反馈和确认 **正确示例**: ```markdown ## 对话记录 2026-01-21 10:00:00 用户:请实现一个用户登录功能,包括用户名和密码验证、记住密码、自动登录等功能。 2026-01-21 10:01:00 AI:好的,我将按照 SSOT 流程执行。首先进入阶段 1:需求定义与入库。 2026-01-21 10:02:00 AI:我需要分析您的需求,将其拆解为用户故事和验收标准。 2026-01-21 10:03:00 用户:好的,麻烦了。 2026-01-21 10:10:00 AI:已创建需求文档:[链接],需求文档是否符合预期? 2026-01-21 10:11:00 用户:符合预期,可以进入下一阶段。 2026-01-21 10:12:00 AI:好的,进入阶段 2:方案设计。 ...(完整的对话记录) ``` #### 错误 2:不记录生成的文档和代码 **错误示例**: ```markdown ## 生成的文档 无 ``` **问题**: - 没有记录生成的文档和代码 - 违反了 SSOT 原则 - 无法追溯生成的内容 **正确示例**: ```markdown ## 生成的文档 - [需求文档](../requirements/2026-01-21-001-用户登录功能.md) - [设计文档](../design/2026-01-21-001-用户登录功能-设计.md) - [决策记录](../decisions/2026-01-21-001-ADR-用户登录功能-技术选型.md) - [提示词](../prompts/2026-01-21-001-prompt-用户登录功能.md) - [参考代码文档](../reference-code/2026-01-21-001-code-用户登录功能.md) - [实施方案文档](../implementation/2026-01-21-001-implementation-用户登录功能.md) ## 生成的代码文件 - `datai-modules-system/src/main/java/com/datai/modules/system/controller/SysLoginController.java` - `datai-modules-system/src/main/java/com/datai/modules/system/service/SysLoginService.java` - `datai-modules-system/src/main/java/com/datai/modules/system/mapper/SysUserMapper.java` - `datai-modules-system/src/main/java/com/datai/modules/system/domain/SysUser.java` - `datai-modules-system/src/main/java/com/datai/modules/system/config/SecurityConfig.java` - `datai-modules-system/src/test/java/com/datai/modules/system/service/SysLoginServiceTest.java` ``` #### 错误 3:不记录关键决策 **错误示例**: ```markdown ## 执行阶段 ### 阶段 3:方案决策 - 状态:已完成 - 生成文档:[决策记录](../decisions/2026-01-21-001-ADR-用户登录功能-技术选型.md) - 关键决策:无 ``` **问题**: - 没有记录关键决策 - 无法追溯决策的理由和过程 - 违反了 SSOT 原则 **正确示例**: ```markdown ## 执行阶段 ### 阶段 3:方案决策 - 状态:已完成 - 生成文档:[决策记录](../decisions/2026-01-21-001-ADR-用户登录功能-技术选型.md) - 关键决策: 1. 选择 Spring Security + JWT 作为认证方案 2. 拒绝 Shiro + Redis 方案,因为与 Spring Boot 集成不如 Spring Security 紧密 3. 拒绝自定义认证方案,因为开发成本高,安全性难以保证 ``` #### 错误 4:不更新索引 **错误示例**: ``` AI:更新会话记录 AI:完成(忘记更新索引) ``` **正确示例**: ``` AI:更新会话记录 AI:更新 docs/index.md,更新会话记录链接 AI:完成 ``` #### 错误 5:不询问用户确认就进入下一阶段 **错误示例**: ``` AI:更新会话记录 AI:进入阶段 8:变更记录与归档(未询问用户) ``` **正确示例**: ``` AI:更新会话记录 AI:会话记录已更新:[链接] AI:会话记录是否完整? AI:是否进入下一阶段(变更记录与归档)? ``` ### 验收清单(Checklist) 在完成阶段 7 前,必须检查以下项目: #### 会话记录完整性检查 - [ ] 会话记录已更新 - [ ] 会话记录包含完整的元数据(需求编号、开始时间、结束时间、当前阶段、状态) - [ ] 会话记录包含完整的需求描述 - [ ] 会话记录包含所有执行阶段的状态和生成文档 - [ ] 会话记录包含完整的对话记录 - [ ] 会话记录包含所有生成的文档和代码的链接 - [ ] 会话记录包含关键决策和理由 - [ ] 会话记录包含回退记录(如果有) #### 会话记录质量检查 - [ ] 对话记录按时间顺序排列 - [ ] 对话记录包含用户和 AI 的所有交流 - [ ] 生成的文档和代码链接正确 - [ ] 关键决策描述清晰、准确 - [ ] 会话记录格式规范、易读 #### 索引更新检查 - [ ] `docs/index.md` 已更新 - [ ] 会话记录链接已更新 - [ ] 索引链接格式正确:`[文档名](./相对路径/文件名.md)` - [ ] 索引更新采用增量策略,未删除现有内容 #### 用户确认检查 - [ ] 已向用户显示更新后的会话记录链接 - [ ] 已询问用户"会话记录是否完整?" - [ ] 已询问用户"是否进入下一阶段?" - [ ] 已等待用户反馈 #### 回退机制检查(如果需要) - [ ] 如果用户不满意,已询问具体需要修改的地方 - [ ] 如果用户要求回退,已删除相关文档 - [ ] 如果用户要求回退,已撤销索引更新 - [ ] 如果用户要求回退,已更新会话记录 ### Correct vs Incorrect 代码对比 #### Incorrect(错误示例) ```markdown # 会话记录 ## 元数据 - 需求编号:001 - 开始时间:2026-01-21 10:00:00 - 结束时间:2026-01-21 12:00:00 - 当前阶段:阶段 7:记录当前会话 ## 需求描述 实现用户登录功能 ## 执行阶段 ### 阶段 1:需求定义与入库 - 状态:已完成 - 生成文档:[需求文档](../requirements/2026-01-21-001-用户登录功能.md) ### 阶段 2:方案设计 - 状态:已完成 - 生成文档:[设计文档](../design/2026-01-21-001-用户登录功能-设计.md) ## 对话记录 用户:实现用户登录功能 AI:好的,开始执行... AI:完成 ## 生成的文档 - [需求文档](../requirements/2026-01-21-001-用户登录功能.md) - [设计文档](../design/2026-01-21-001-用户登录功能-设计.md) ``` #### Correct(正确示例) ```markdown # 会话记录 ## 元数据 - 需求编号:001 - 开始时间:2026-01-21 10:00:00 - 结束时间:2026-01-21 12:00:00 - 当前阶段:阶段 7:记录当前会话 - 状态:已完成 ## 需求描述 实现用户登录功能,包括用户名和密码验证、记住密码、自动登录、登录失败提示、登录成功后跳转到首页等功能。 ## 执行阶段 ### 阶段 1:需求定义与入库 - 状态:已完成 - 生成文档:[需求文档](../requirements/2026-01-21-001-用户登录功能.md) - 关键决策:确定需求优先级为高,复杂度为中等 ### 阶段 2:方案设计 - 状态:已完成 - 生成文档:[设计文档](../design/2026-01-21-001-用户登录功能-设计.md) - 关键决策: 1. 采用 Spring Security + JWT 作为认证方案 2. 采用 Redis 存储 Token 3. 采用 BCrypt 进行密码加密 ### 阶段 3:方案决策 - 状态:已完成 - 生成文档:[决策记录](../decisions/2026-01-21-001-ADR-用户登录功能-技术选型.md) - 关键决策: 1. 选择 Spring Security + JWT 作为认证方案 2. 拒绝 Shiro + Redis 方案,因为与 Spring Boot 集成不如 Spring Security 紧密 3. 拒绝自定义认证方案,因为开发成本高,安全性难以保证 ### 阶段 4:数据库结构生成 - 状态:已完成 - 生成文档:[SQL 脚本](../sql/2026-01-21-001-user-login.sql) - 关键决策:修改 sys_user 表,添加 login_ip 和 login_date 字段 ### 阶段 5:提示词生成 - 状态:已完成 - 生成文档:[提示词](../prompts/2026-01-21-001-prompt-用户登录功能.md) - 关键决策:定义了详细的输出格式要求和代码规范 ### 阶段 6:执行代码生成 - 状态:已完成 - 生成文档: - [参考代码文档](../reference-code/2026-01-21-001-code-用户登录功能.md) - [实施方案文档](../implementation/2026-01-21-001-implementation-用户登录功能.md) - 生成代码文件: - `SysLoginController.java` - `SysLoginService.java` - `SysUserMapper.java` - `SysUser.java` - `SecurityConfig.java` - `SysLoginServiceTest.java` - 关键决策:按照提示词要求生成了所有代码文件和单元测试 ### 阶段 7:记录当前会话 - 状态:已完成 - 生成文档:无 - 关键决策:完整记录了当前会话的所有信息 ## 对话记录 2026-01-21 10:00:00 用户:请实现一个用户登录功能,包括用户名和密码验证、记住密码、自动登录等功能。 2026-01-21 10:01:00 AI:好的,我将按照 SSOT 流程执行。首先进入阶段 1:需求定义与入库。 2026-01-21 10:02:00 AI:我需要分析您的需求,将其拆解为用户故事和验收标准。 2026-01-21 10:03:00 用户:好的,麻烦了。 2026-01-21 10:10:00 AI:已创建需求文档:[链接],需求文档是否符合预期? 2026-01-21 10:11:00 用户:符合预期,可以进入下一阶段。 2026-01-21 10:12:00 AI:好的,进入阶段 2:方案设计。 ...(完整的对话记录) 2026-01-21 12:00:00 AI:会话记录已更新:[链接],会话记录是否完整? ## 生成的文档 - [需求文档](../requirements/2026-01-21-001-用户登录功能.md) - [设计文档](../design/2026-01-21-001-用户登录功能-设计.md) - [决策记录](../decisions/2026-01-21-001-ADR-用户登录功能-技术选型.md) - [SQL 脚本](../sql/2026-01-21-001-user-login.sql) - [提示词](../prompts/2026-01-21-001-prompt-用户登录功能.md) - [参考代码文档](../reference-code/2026-01-21-001-code-用户登录功能.md) - [实施方案文档](../implementation/2026-01-21-001-implementation-用户登录功能.md) ## 生成的代码文件 - `datai-modules-system/src/main/java/com/datai/modules/system/controller/SysLoginController.java` - `datai-modules-system/src/main/java/com/datai/modules/system/service/SysLoginService.java` - `datai-modules-system/src/main/java/com/datai/modules/system/mapper/SysUserMapper.java` - `datai-modules-system/src/main/java/com/datai/modules/system/domain/SysUser.java` - `datai-modules-system/src/main/java/com/datai/modules/system/config/SecurityConfig.java` - `datai-modules-system/src/test/java/com/datai/modules/system/service/SysLoginServiceTest.java` ## 回退记录 无 ``` --- ## 附录:快速参考 ### 文件路径速查 - 会话记录:`docs/sessions/YYYY-MM-DD-00X-session.md` - 主索引:`docs/index.md` - 项目规则:`.trae/rules/project_rules.md` - SSOT 架构师提示词:`docs/Prompt/0004-单一真源文档驱动架构师.md` ### 工具命令速查 ```powershell # 读取会话记录 Read(file_path="d:\\idea_demo\\datai\\docs\\sessions\\2026-01-21-001-session.md") # 更新会话记录 Write(file_path="d:\\idea_demo\\datai\\docs\\sessions\\2026-01-21-001-session.md", content="...") # 读取索引 Read(file_path="d:\\idea_demo\\datai\\docs\\index.md") # 更新索引 Write(file_path="d:\\idea_demo\\datai\\docs\\index.md", content="...") ``` ### 阶段 7 输出清单 - [ ] 完整的会话记录:`docs/sessions/YYYY-MM-DD-00X-session.md` - [ ] 更新的索引:`docs/index.md` ### 下一阶段提示 如果用户确认进入下一阶段,请参考: - [project_rules.md](file:///d:\idea_demo\datai\.trae\rules\project_rules.md) 的"阶段 8:变更记录与归档" - 准备创建变更日志 - 准备更新 CHANGELOG.md 和 docs/changelog/ - 准备在 docs/index.md 中标注该需求已完成