diff --git a/slidev/pages/day2.md b/slidev/pages/day2.md index 620b2ab..20db772 100644 --- a/slidev/pages/day2.md +++ b/slidev/pages/day2.md @@ -73,7 +73,7 @@ background: https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1920&q=8
-今天要把这些隐性开发要求写成中文规则,让 TRAE 长期遵守 +今天要把这些隐性开发要求写成规则,让 TRAE 长期遵守
--- @@ -299,7 +299,7 @@ background: https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1920&q=8 --- -# 模块 5:.trae/rules.md 中文安全规则 +# 模块 5:.trae/rules.md 安全规则
@@ -498,7 +498,7 @@ layout: center
02 上下文引用模板
03 幻觉控制 Prompt
04 .gitignore 配置样例
-
05 若依中文安全规则
+
05 若依安全规则
06 若依编码测试规则
07 若依前端规则
08 若依 AI 资产库目录
@@ -531,7 +531,7 @@ layout: center - 组织上下文 — 精准任务五要素 - 控制幻觉 — 证据→原因→方案 -- 编写 rules — 中文可执行规则 +- 编写 rules — 可执行规则 - 沉淀资产 — 团队长期复用
diff --git a/slidev/pages/day2/m1-context-engineering.md b/slidev/pages/day2/m1-context-engineering.md index 77fae9b..0fe5c45 100644 --- a/slidev/pages/day2/m1-context-engineering.md +++ b/slidev/pages/day2/m1-context-engineering.md @@ -38,7 +38,7 @@ --- @@ -72,6 +72,40 @@ AI 可能在页面里直接新增接口调用;只做前端按钮隐藏;没 --- +# 第 2 天训练主线 + +
+
+
1. 组织上下文
+
把任务、范围、文件和验收讲清楚
+
+
+
2. 收集证据
+
让 TRAE 先找文件、函数、注解和调用链
+
+
+
3. 写成 rules
+
把隐性要求变成可执行约束
+
+
+
4. 资产化复用
+
沉淀 Prompt、清单、模板和验收标准
+
+
+ +
+课堂总产出:围绕若依“用户管理删除权限”完成一次证据审查,并产出一版可落地的 .trae/rules.md v0.1。 +
+ + + +--- + # 模块 1:若依任务为什么要讲清楚?
@@ -110,6 +144,39 @@ AI 可能在页面里直接新增接口调用;只做前端按钮隐藏;没 --- +# 贯穿案例:用户管理删除权限审查 + +
+
+
业务动作
+
管理员在用户管理页面删除用户。
+
前端按钮、接口调用、后端权限、操作日志都会被牵连。
+
+
+
训练目标
+
让 TRAE 不凭印象判断,而是按证据给出风险、修改建议和验证方式。
+
+
+ +
+ +| 审查点 | 必须找到的证据 | +|---|---| +| 前端按钮 | 页面路径、权限字符、按钮显示判断 | +| 后端接口 | Controller 方法、权限注解、请求路径 | +| 操作审计 | 日志注解、操作类型、异常路径 | +| 验证方式 | 无权限账号、正常账号、日志查询 | + +
+ + + +--- + # 若依坏 Prompt 示例
@@ -155,6 +222,30 @@ AI 可能在页面里直接新增接口调用;只做前端按钮隐藏;没 --- +# 上下文包模板 + +
+ +```md +任务:审查若依用户管理删除权限是否完整 +范围:用户管理页面、用户 API、后端用户 Controller/Service、操作日志相关代码 +不做:不要修改代码;不要输出泛泛安全建议;不要猜测未看到的实现 +必须标注:文件路径、函数/方法名、权限字符、注解、无法确认项 +输出:证据表 + 风险判断 + 修改建议 + 验证步骤 +验收:至少覆盖前端按钮、后端接口、权限注解、操作日志、无权限访问验证 +``` + +
+ + + +--- + # 上下文组织清单
diff --git a/slidev/pages/day2/m10-summary.md b/slidev/pages/day2/m10-summary.md index 1758d9b..0918341 100644 --- a/slidev/pages/day2/m10-summary.md +++ b/slidev/pages/day2/m10-summary.md @@ -22,6 +22,27 @@ --- +# 最后 30 分钟:交付验收会 + +
+ +| 时间 | 动作 | 输出 | +|---|---|---| +| 10 分钟 | 小组整理上下文包、证据表、rules 草案 | 一份 v0.1 规则草案 | +| 10 分钟 | 交叉 Review:用“四问”检查可执行性 | 改写建议 | +| 5 分钟 | 补充验证步骤 | 无权限、正常、日志验证 | +| 5 分钟 | 选出可进入团队资产库的条款 | 候选 rules | + +
+ + + +--- + # 第 2 天交付物
@@ -29,7 +50,7 @@
02 上下文引用模板
03 幻觉控制 Prompt
04 gitignore 忽略配置样例
-
05 若依中文安全规则
+
05 若依安全规则
06 若依编码测试规则
07 若依前端规则
08 若依 AI 资产库目录
@@ -43,6 +64,28 @@ 以后团队在若依或类似后台系统中使用 TRAE,就可以复用这些清单、Prompt、规则和模板。 --> +--- + +# 交付物验收标准 + +
+ +| 交付物 | 通过标准 | +|---|---| +| 上下文组织清单 | 有目标、范围、约束、输出、验收和不确定点 | +| 证据收集 Prompt | 要求先找证据,且禁止直接修改代码 | +| rules.md v0.1 | 每条规则能回答触发场景、必须动作、禁止动作、验收方式 | +| 代码生成 Review 清单 | 覆盖权限、日志、校验、异常、测试 | +| 资产库目录 | 有 prompts、rules、templates、checklists、examples | + +
+ + + --- layout: center class: text-center diff --git a/slidev/pages/day2/m2-four-references.md b/slidev/pages/day2/m2-four-references.md index a9600e4..1fa0906 100644 --- a/slidev/pages/day2/m2-four-references.md +++ b/slidev/pages/day2/m2-four-references.md @@ -29,6 +29,31 @@ --- +# 上下文选择决策树 + +
+ +| 你现在的问题 | 优先引用 | 典型指令 | +|---|---|---| +| 不知道入口在哪 | @workspace | 先找相关文件和函数,不要下结论 | +| 已经知道关键文件 | #File | 分析这些文件之间的调用关系 | +| 某个函数行为不清 | #Code | 拆参数、分支、异常和副作用 | +| 项目内没有依据 | #Web | 查框架资料,再回代码验证 | + +
+ +
+判断原则:先宽后窄,先找路再聚焦,先项目证据再外部资料。 +
+ + + +--- + # @workspace 找路示例
@@ -49,6 +74,30 @@ --- +# @workspace 输出验收 + +
+ +| 合格输出 | 不合格输出 | +|---|---| +| 列出文件路径和函数/类名 | 只说“大概在权限模块” | +| 区分前端、后端、配置文件 | 把前后端逻辑混在一起 | +| 标注依据和不确定点 | 直接给安全结论 | +| 给出下一步建议引用哪些文件 | 一次性要求 AI 修改代码 | + +
+ +
+课堂要求:每组至少让 TRAE 找出 3 个前端文件、2 个后端文件、1 个权限或日志相关依据。 +
+ + + +--- + # #File 聚焦示例
@@ -69,6 +118,31 @@ --- +# #File 调用链模板 + +
+ +```md +#File 请基于已选文件输出调用链: + +1. 入口动作:用户点击了什么 +2. 前端函数:调用哪个 API 方法 +3. 请求接口:method + url +4. 后端入口:Controller 类和方法 +5. 业务处理:Service/Mapper 关键方法 +6. 权限与日志:注解、拦截器或 AOP 依据 +7. 不确定点:哪些文件仍需补充引用 +``` + +
+ + + +--- + # #Code 抠细节示例
@@ -89,6 +163,35 @@ --- +# #Code 细节检查清单 + +
+
+
输入
+
参数来源、默认值、空值、权限字符
+
+
+
分支
+
成功、失败、取消、异常、无权限
+
+
+
副作用
+
token、store、路由、列表刷新、日志
+
+
+
恢复
+
loading、弹窗、错误提示、状态回滚
+
+
+ + + +--- + # #Web 使用边界
diff --git a/slidev/pages/day2/m3-hallucination.md b/slidev/pages/day2/m3-hallucination.md index 28155cd..ecce8e1 100644 --- a/slidev/pages/day2/m3-hallucination.md +++ b/slidev/pages/day2/m3-hallucination.md @@ -44,6 +44,31 @@ --- +# 证据矩阵:事实、推测、不确定 + +
+ +| 类型 | 判断标准 | 输出写法 | +|---|---|---| +| 已确认事实 | 能指向文件、函数、注解、配置或测试结果 | “在 xxxController#remove 看到 @PreAuthorize...” | +| 合理推测 | 有局部证据,但缺少完整链路 | “可能依赖全局拦截器,仍需查看配置” | +| 无法确认 | 当前上下文没有证据 | “未引用到日志 AOP,暂不能判断是否记录日志” | + +
+ +
+课堂红线:没有证据时,禁止写“已完成”“一定安全”“肯定没有问题”。 +
+ + + +--- + # 若依证据收集 Prompt
@@ -70,6 +95,29 @@ --- +# 证据表输出模板 + +
+ +```md +| 审查项 | 证据位置 | 证据内容 | 结论等级 | 不确定点 | +|---|---|---|---|---| +| 前端删除按钮 | 文件 + 行为 | 权限字符/显示条件 | 已确认/推测/未知 | 需要补充什么 | +| 后端删除接口 | Controller + 方法 | 请求路径/权限注解 | 已确认/推测/未知 | 需要补充什么 | +| 操作日志 | 注解/AOP/配置 | 日志类型/触发条件 | 已确认/推测/未知 | 需要补充什么 | +| 验证方式 | 测试步骤 | 账号/操作/预期结果 | 已确认/待执行 | 需要谁确认 | +``` + +
+ + + +--- + # 原因判断 Prompt
@@ -93,6 +141,29 @@ --- +# 追问模板:把 AI 拉回证据 + +
+ +```md +你刚才的结论缺少代码依据。 +请重新输出: +1. 每条结论对应的文件路径和函数/注解 +2. 哪些是已确认事实,哪些只是推测 +3. 哪些文件还需要我补充引用 +4. 在证据不足前不要给最终安全结论 +``` + +
+ + + +--- + # 方案生成 Prompt
@@ -111,3 +182,31 @@ 如果敏感操作缺少日志,才建议补操作日志。 每个方案都要说明文件、方法、影响范围、验证方式和测试建议。 --> + +--- + +# 幻觉控制验收 + +
+
+
通过
+ +- 结论能追溯到文件/函数/注解 +- 风险分为事实、推测、未知 +- 修改建议包含影响范围 +- 验证步骤能被人工执行 +
+
+
不通过
+ +- 只有“建议加强权限”这类空话 +- 把前端按钮隐藏当安全边界 +- 看不到后端代码却断言接口安全 +- 没有无权限账号验证步骤 +
+
+ + diff --git a/slidev/pages/day2/m4-gitignore.md b/slidev/pages/day2/m4-gitignore.md index 78d5897..1e9b17b 100644 --- a/slidev/pages/day2/m4-gitignore.md +++ b/slidev/pages/day2/m4-gitignore.md @@ -2,9 +2,10 @@
-- .env · application-dev.yml 中真实密码 · 数据库账号 · Redis 密码 -- target/ · node_modules/ · dist/ -- 日志文件 · IDE 本地配置 +- 真实配置:.env · application-dev.yml 中真实密码 · 数据库账号 · Redis 密码 +- 构建产物:target/ · node_modules/ · dist/ +- 本地痕迹:日志文件 · IDE 本地配置 · 临时导入导出文件 +- AI 上下文:不要把密钥、客户数据、生产日志喂给 AI
+ +--- + # 若依忽略配置检查 Prompt
@@ -32,3 +54,40 @@ 重点看后端 target、前端 node_modules 和 dist、日志文件、本地配置、数据库密码、Redis 密码、IDE 配置。 同样,不要让 AI 直接改,先给审查报告。 --> + +--- + +# .gitignore 建议样例 + +
+ +```text +# backend build +target/ +*.log +logs/ + +# frontend build +node_modules/ +dist/ +.vite/ + +# local secrets +.env +.env.local +application-*.local.yml + +# IDE +.idea/ +.vscode/ +*.iml +``` + +
+ + diff --git a/slidev/pages/day2/m5-security-rules.md b/slidev/pages/day2/m5-security-rules.md index 6c44a85..9451dfe 100644 --- a/slidev/pages/day2/m5-security-rules.md +++ b/slidev/pages/day2/m5-security-rules.md @@ -2,7 +2,7 @@
-账号密码 · Token · 接口权限注解 · 菜单与按钮权限 · 数据权限 · 操作日志 · 敏感配置 · 日志脱敏 +账号密码 · Token · 接口权限注解 · 菜单与按钮权限 · 数据权限 · 操作日志 · 敏感配置 · 日志脱敏 · 导入导出
@@ -14,7 +14,28 @@ --- -# 中文安全规则示例 +# 安全规则写法 + +
+ +| 规则组成 | 写法 | 示例 | +|---|---|---| +| 触发场景 | 哪类文件/功能/接口触发 | 用户、角色、菜单、部门、岗位 | +| 必须动作 | AI 必须检查或执行什么 | 检查 Controller 权限注解 | +| 禁止动作 | AI 不能偷懒或绕过什么 | 不能只做前端按钮隐藏 | +| 验收方式 | 怎么确认规则被遵守 | 文件路径、注解、无权限测试 | + +
+ + + +--- + +# 安全规则示例
前端按钮权限只能作为交互控制,不能作为安全边界
@@ -32,6 +53,30 @@ --- +# 权限与日志 rules 片段 + +
+ +```md +## 权限与审计规则 + +- 涉及用户、角色、菜单、部门、岗位的新增、修改、删除、导出接口时, + 必须检查后端 Controller 是否有权限控制,不能只依赖前端按钮权限。 +- 涉及新增、修改、删除、导入、导出等敏感操作时, + 必须检查是否记录操作日志,并说明日志注解或 AOP 依据。 +- 如果当前上下文无法确认权限或日志实现,必须标注“不确定”, + 并请求补充 Controller、Service、权限配置或日志切面相关文件。 +``` + +
+ + + +--- + # 敏感配置规则
@@ -47,3 +92,27 @@ 不得提交真实 application-dev.yml、.env、本地配置文件。 示例配置必须使用占位符。 --> + +--- + +# 安全规则课堂练习 + +
+ +| 小组任务 | 产出 | +|---|---| +| 选择一个敏感动作 | 删除用户、导出用户、重置密码任选一个 | +| 用上下文包提问 | 要求 TRAE 先收集证据,不改代码 | +| 抽取安全规则 | 写出 3 条可执行 rules | +| 设计验证步骤 | 正常账号、无权限账号、日志检查各 1 条 | + +
+ +
+验收:规则必须能回答“什么时候触发、检查哪里、怎么证明、证据不足怎么办”。 +
+ + diff --git a/slidev/pages/day2/m6-coding-rules.md b/slidev/pages/day2/m6-coding-rules.md index 90df4b3..9bace7b 100644 --- a/slidev/pages/day2/m6-coding-rules.md +++ b/slidev/pages/day2/m6-coding-rules.md @@ -18,6 +18,50 @@ --- +# 编码 rules 片段 + +
+ +```md +## 若依编码规则 + +- 前端页面不得直接手写请求地址;新增接口调用必须放入对应 api 模块。 +- 后端新增业务必须保持 Controller -> Service -> Mapper 分层,不得把 SQL 或复杂业务逻辑写入 Controller。 +- 新增枚举/状态类字段时,优先检查项目是否已有字典配置;不要在页面硬编码展示文本。 +- 代码生成结果必须经过权限、日志、校验、异常处理和测试审查后才能合入。 +``` + +
+ + + +--- + +# 代码生成 Review 清单 + +
+ +| 检查项 | 必看位置 | 常见问题 | +|---|---|---| +| 权限控制 | Controller、菜单权限字符 | 只生成页面,没配后端权限 | +| 操作日志 | 新增/修改/删除/导出方法 | 敏感操作缺日志 | +| 表单校验 | 前端 rules、后端参数校验 | 前端校验有,后端缺 | +| 数据权限 | 列表查询、部门/用户过滤 | 不同角色看到同一批数据 | +| 异常处理 | Service、前端 catch/finally | 失败后 loading 不恢复 | + +
+ + + +--- + # 若依测试规则重点
@@ -41,3 +85,27 @@ 敏感操作要验证操作日志记录。 代码生成 CRUD 要验证增删改查、权限和日志。 --> + +--- + +# 测试 Prompt 模板 + +
+ +```md +@workspace 请为“用户管理删除用户”设计测试清单。 +要求: +1. 覆盖正常删除、取消删除、删除失败 +2. 覆盖无权限账号访问后端删除接口 +3. 覆盖删除后列表刷新和错误提示 +4. 覆盖操作日志是否记录 +5. 输出表格:场景、前置条件、操作步骤、预期结果、验证位置 +``` + +
+ + diff --git a/slidev/pages/day2/m7-frontend-rules.md b/slidev/pages/day2/m7-frontend-rules.md index dbc4d53..9a6aba1 100644 --- a/slidev/pages/day2/m7-frontend-rules.md +++ b/slidev/pages/day2/m7-frontend-rules.md @@ -20,6 +20,27 @@ api 目录调用 · 权限指令 · 动态路由 · 列表 loading · 表单校 --- +# 前端改动流程 + +
+ +| 阶段 | TRAE 应先做什么 | 不允许什么 | +|---|---|---| +| 找入口 | 找页面、api 模块、权限字符、字典 | 直接改页面 | +| 改代码 | 保持 api 分层、权限指令、loading/finally | 页面里硬编码请求地址 | +| 查风险 | 检查按钮权限、二次确认、错误提示 | 只看前端不看后端 | +| 验证 | 给出手工验证和必要测试建议 | 只说“已完成” | + +
+ + + +--- + # 用户管理页面规则示例
@@ -39,3 +60,47 @@ api 目录调用 · 权限指令 · 动态路由 · 列表 loading · 表单校 修改用户后列表必须刷新。 密码、手机号、邮箱等敏感字段不得随意明文展示或输出日志。 --> + +--- + +# 按钮权限审查表 + +
+ +| 按钮 | 前端权限字符 | 前端位置 | 后端接口 | 后端权限 | 日志 | +|---|---|---|---|---|---| +| 新增 | system:user:add | 页面按钮/指令 | POST /system/user | 待核对 | 待核对 | +| 修改 | system:user:edit | 页面按钮/指令 | PUT /system/user | 待核对 | 待核对 | +| 删除 | system:user:remove | 页面按钮/指令 | DELETE /system/user/{ids} | 待核对 | 待核对 | +| 导出 | system:user:export | 页面按钮/指令 | POST /system/user/export | 待核对 | 待核对 | + +
+ + + +--- + +# 前端 rules 片段 + +
+ +```md +## 若依前端规则 + +- 新增页面按钮时,必须复用项目已有权限指令或权限判断方法。 +- 新增接口调用时,必须放在对应 api 文件中,页面只调用封装方法。 +- 删除、重置密码、导出等敏感按钮必须有二次确认、loading 恢复和错误提示。 +- 涉及字典字段展示时,必须优先使用项目已有字典组件或字典工具。 +- 前端权限只控制交互显示,不能作为接口安全结论。 +``` + +
+ + diff --git a/slidev/pages/day2/m8-asset-library.md b/slidev/pages/day2/m8-asset-library.md index 6bcfc21..4a35d09 100644 --- a/slidev/pages/day2/m8-asset-library.md +++ b/slidev/pages/day2/m8-asset-library.md @@ -14,6 +14,31 @@ --- +# 资产入库标准 + +
+ +| 标准 | 说明 | +|---|---| +| 可复用 | 不是一次性聊天记录,而是下个项目能直接改名使用 | +| 可验证 | 包含输出格式、验收标准和不确定点处理 | +| 可追溯 | 标注来源项目、适用版本、作者和更新时间 | +| 可演进 | 有版本号,允许从 v0.1 逐步迭代到团队规范 | + +
+ +
+不要把所有好回答都叫资产;能被团队重复使用、能被检查,才叫资产。 +
+ + + +--- + # 若依资产库目录
@@ -37,3 +62,53 @@ templates 存若依代码理解报告、权限链路报告模板。 checklists 存权限检查、日志检查、代码生成检查清单。 examples 存优秀案例和反面案例。 --> + +--- + +# 推荐资产文件 + +
+ +| 文件 | 用途 | +|---|---| +| prompts/若依/用户权限链路分析.md | 分析按钮、接口、权限字符、后端注解 | +| prompts/若依/证据收集优先.md | 防止 AI 直接下结论 | +| rules/若依/rules.v0.1.md | 团队 TRAE 协作规则 | +| templates/权限审查报告.md | 固定报告结构 | +| checklists/代码生成Review.md | 生成 CRUD 上线前检查 | +| examples/好规则与坏规则对照.md | 训练新成员写规则 | + +
+ + + +--- + +# 资产版本管理 + +
+
+
命名建议
+ +- rules.v0.1.md +- 权限审查报告.template.md +- 用户权限链路分析.prompt.md +
+
+
更新记录
+ +- 适用项目/版本 +- 新增规则 +- 删除规则 +- 触发案例 +
+
+ + diff --git a/slidev/pages/day2/m9-rules-check.md b/slidev/pages/day2/m9-rules-check.md index 1dcbc7d..6ed7540 100644 --- a/slidev/pages/day2/m9-rules-check.md +++ b/slidev/pages/day2/m9-rules-check.md @@ -22,6 +22,35 @@ --- +# 规则可执行性四问 + +
+
+
什么时候触发?
+
文件、功能、接口、操作类型
+
+
+
必须做什么?
+
检查、修改、输出、标注
+
+
+
不能做什么?
+
禁止猜测、绕过、硬编码、直接上线
+
+
+
怎么验收?
+
证据、测试、报告、人工确认
+
+
+ + + +--- + # 若依好规则示例
@@ -41,6 +70,26 @@ --- +# 好规则拆解 + +
+ +| 原文片段 | 它解决了什么 | +|---|---| +| 涉及用户、角色、菜单、部门、岗位 | 明确触发范围 | +| 新增、修改、删除、导出接口 | 明确敏感动作 | +| 必须检查后端权限控制和操作日志 | 明确 AI 必须动作 | +| 上线前检查权限、日志、校验、异常和测试 | 明确验收项 | + +
+ + + +--- + # 若依 rules 检查 Prompt
@@ -61,6 +110,30 @@ --- +# rules 审查报告模板 + +
+ +```md +| 规则编号 | 当前规则 | 问题 | 改写建议 | 验收方式 | +|---|---|---|---|---| +| R-001 | 注意权限安全 | 太泛,无法触发 | 涉及敏感接口时必须检查... | 标注 Controller 权限注解 | +``` + +
+ +
+要求 TRAE 输出审查报告后,再由人决定是否写入 .trae/rules.md。 +
+ + + +--- + # 若依版 rules.md 结构
diff --git a/第 2 天:TRAE 上下文工程与规则体系.md b/第 2 天:TRAE 上下文工程与规则体系.md index 3f0f5cf..43d827f 100644 --- a/第 2 天:TRAE 上下文工程与规则体系.md +++ b/第 2 天:TRAE 上下文工程与规则体系.md @@ -54,7 +54,7 @@ 比如 AI 可能在页面里直接新增接口调用,可能只做前端按钮隐藏,可能没有检查后端权限注解,可能新增敏感操作但没有操作日志,可能用代码生成器生成 CRUD 后直接上线。 -所以今天我们要把这些隐性开发要求写成中文规则,让 TRAE 在后续协作中长期遵守。 +所以今天我们要把这些隐性开发要求写成规则,让 TRAE 在后续协作中长期遵守。 --- @@ -555,7 +555,7 @@ IDE 配置 --- -# 模块 5:\.trae/rules\.md 中文安全规则 +# 模块 5:\.trae/rules\.md 安全规则 --- @@ -586,7 +586,7 @@ Token --- -## Slide 5\-2:中文安全规则示例 +## Slide 5\-2:安全规则示例 ### PPT 页面内容 @@ -640,7 +640,7 @@ Token --- -# 模块 6:中文编码与测试规则 +# 模块 6:编码与测试规则 --- @@ -714,7 +714,7 @@ Token --- -# 模块 7:中文前端专项规则 +# 模块 7:前端专项规则 --- @@ -1012,7 +1012,7 @@ examples 存优秀案例和反面案例。 02_上下文引用模板 03_幻觉控制 Prompt 04_gitignore 忽略配置样例 -05_若依中文安全规则 +05_若依安全规则 06_若依编码测试规则 07_若依前端规则 08_若依 AI 资产库目录