Files
TARE-Learn/slidev/pages/day2.md
T
2026-06-12 18:25:01 +08:00

554 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
layout: cover
background: https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1920&q=80
---
# 第 2 天:TRAE 上下文工程与规则体系
<div class="text-lg text-gray-300 mt-4">
让 TRAE 按团队规则改代码 — 从代码理解到研发治理
</div>
<div class="mt-6 text-sm text-gray-400">
上下文决定 AI 看什么 · 规则决定 AI 怎么做 · 资产化决定团队怎么复用
</div>
---
# 第 1 天到第 2 天的跨越
<div class="grid grid-cols-2 gap-8 mt-10">
<div class="card">
<div class="text-blue-400 text-sm font-semibold mb-3">第 1 天</div>
<div class="text-xl font-bold mb-3">让 TRAE 看懂若依代码</div>
<div class="text-sm text-gray-400">
看结构 · 找入口 · 追链路 · 查依据
</div>
</div>
<div class="card-green">
<div class="text-emerald-400 text-sm font-semibold mb-3">第 2 天</div>
<div class="text-xl font-bold mb-3">让 TRAE 按团队规则改代码</div>
<div class="text-sm text-gray-400">
组织上下文 · 控制幻觉 · 编写 rules · 沉淀资产
</div>
</div>
</div>
<div class="mt-8 card-amber text-sm">
<strong>核心变化:</strong>当团队多人都使用 AI 时,必须有统一上下文、统一 rules、统一验收标准,否则 AI 会带来不一致甚至风险。
</div>
---
# 若依场景下的团队规则问题
<div class="mt-6">
<div class="card-red">
<div class="text-red-400 font-semibold mb-3">若依类后台项目常见风险</div>
<div class="grid grid-cols-2 gap-4 text-sm">
<div class="space-y-2">
- 🚨 绕过权限,页面直接调接口
- 🚨 按钮权限当安全边界
- 🚨 接口缺少权限注解
- 🚨 操作日志缺失
</div>
<div class="space-y-2">
- 🚨 代码生成后直接上线
- 🚨 敏感信息进入日志
- 🚨 数据权限范围不清
- 🚨 AI 修改未经复核
</div>
</div>
</div>
</div>
<div class="mt-6 text-sm text-gray-400 text-center">
今天要把这些隐性开发要求写成规则,让 TRAE 长期遵守
</div>
---
# 今天三个关键词
<div class="grid grid-cols-3 gap-8 mt-12">
<div class="text-center">
<div class="w-20 h-20 rounded-2xl bg-blue-900/50 border border-blue-500/50 flex items-center justify-center mx-auto">
<span class="text-3xl">🎯</span>
</div>
<div class="mt-4 text-xl font-bold">上下文</div>
<div class="text-sm text-gray-400 mt-2">决定 AI 看什么</div>
<div class="text-xs text-gray-500 mt-1">整个项目 vs 单模块 vs 单文件</div>
</div>
<div class="text-center">
<div class="w-20 h-20 rounded-2xl bg-emerald-900/50 border border-emerald-500/50 flex items-center justify-center mx-auto">
<span class="text-3xl">📏</span>
</div>
<div class="mt-4 text-xl font-bold">规则</div>
<div class="text-sm text-gray-400 mt-2">决定 AI 怎么做</div>
<div class="text-xs text-gray-500 mt-1">不能绕过权限 · 不能遗漏日志</div>
</div>
<div class="text-center">
<div class="w-20 h-20 rounded-2xl bg-amber-900/50 border border-amber-500/50 flex items-center justify-center mx-auto">
<span class="text-3xl">📦</span>
</div>
<div class="mt-4 text-xl font-bold">资产化</div>
<div class="text-sm text-gray-400 mt-2">决定团队怎么复用</div>
<div class="text-xs text-gray-500 mt-1">Prompt · Rules · 模板</div>
</div>
</div>
---
# 模块 1:上下文工程 — 好任务五要素
<div class="mt-8 text-center">
<div class="inline-block card-blue px-8 py-4 text-lg font-bold">
好任务 = 目标 + 范围 + 约束 + 输出格式 + 验收标准
</div>
</div>
<div class="grid grid-cols-2 gap-6 mt-8">
<div class="card-red text-sm">
<div class="text-red-400 font-semibold mb-2">❌ 坏 Prompt</div>
```
@workspace 帮我检查若依权限有没有问题。
```
<div class="text-xs text-gray-400 mt-2">目标不清 · 范围不清 · 约束不清 · 输出不清</div>
</div>
<div class="card-green text-sm">
<div class="text-emerald-400 font-semibold mb-2">✅ 好 Prompt</div>
```
@workspace 分析若依用户管理页面按钮权限调用链路
范围:只分析新增/修改/删除按钮
约束:不修改代码;标注文件和函数
输出:表格
验收:覆盖按钮/权限字符/前端判断/后端接口
```
</div>
</div>
---
# 模块 2:四类上下文工具
<div class="grid grid-cols-2 gap-6 mt-8">
<div class="card p-5">
<div class="flex items-center gap-2 mb-2">
<span class="tag">@workspace</span>
<span class="font-bold">找路</span>
</div>
<div class="text-sm text-gray-400">全局搜索入口、文件、模块</div>
<div class="text-xs text-gray-500 mt-1">如:找 getInfo、getRouters、权限指令</div>
</div>
<div class="card p-5">
<div class="flex items-center gap-2 mb-2">
<span class="tag-green">#File</span>
<span class="font-bold">看文件</span>
</div>
<div class="text-sm text-gray-400">分析指定文件间的调用关系</div>
<div class="text-xs text-gray-500 mt-1">如:分析用户 Controller 和 Service</div>
</div>
<div class="card p-5">
<div class="flex items-center gap-2 mb-2">
<span class="tag-amber">#Code</span>
<span class="font-bold">抠细节</span>
</div>
<div class="text-sm text-gray-400">分析单个方法的参数、调用、异常</div>
<div class="text-xs text-gray-500 mt-1">如:分析 handleLogin 函数</div>
</div>
<div class="card p-5">
<div class="flex items-center gap-2 mb-2">
<span class="px-3 py-1 rounded-full text-xs font-semibold bg-purple-500/20 text-purple-300">#Web</span>
<span class="font-bold">查外部</span>
</div>
<div class="text-sm text-gray-400">查询框架文档或最佳实践</div>
<div class="text-xs text-gray-500 mt-1">但若依当前实现必须回到代码验证</div>
</div>
</div>
---
# 模块 3:幻觉死循环切断
<div class="mt-6">
<div class="card-red mb-4">
<div class="text-red-400 font-semibold mb-2">常见幻觉表现</div>
<div class="grid grid-cols-3 gap-3 text-sm">
<div class="p-2 rounded bg-red-900/20">AI 说所有接口都有权限校验<br/><span class="text-xs text-gray-500">但不给 Controller 依据</span></div>
<div class="p-2 rounded bg-red-900/20">AI 说操作日志完整<br/><span class="text-xs text-gray-500">但不给注解或 AOP 依据</span></div>
<div class="p-2 rounded bg-red-900/20">AI 说按钮权限安全<br/><span class="text-xs text-gray-500">但只看到前端代码</span></div>
</div>
</div>
<div class="grid grid-cols-3 gap-4 mt-6">
<div class="card-blue text-center p-4">
<div class="text-2xl mb-2">1️⃣</div>
<div class="font-bold">先找证据</div>
<div class="text-xs text-gray-400 mt-1">文件 · 类 · 方法 · 注解</div>
</div>
<div class="card-green text-center p-4">
<div class="text-2xl mb-2">2️⃣</div>
<div class="font-bold">再判断原因</div>
<div class="text-xs text-gray-400 mt-1">区分事实和推测</div>
</div>
<div class="card-amber text-center p-4">
<div class="text-2xl mb-2">3️⃣</div>
<div class="font-bold">最后给方案</div>
<div class="text-xs text-gray-400 mt-1">修改 · 影响 · 验证</div>
</div>
</div>
</div>
---
# 证据收集标准 Prompt
<div class="mt-4 card-blue text-sm">
```
请先不要修改代码。
请围绕"用户管理删除按钮权限"收集证据:
1. 前端按钮在哪个页面
2. 使用了哪个权限字符
3. 前端如何判断按钮显示
4. 后端删除接口在哪里
5. Controller 是否有权限注解
6. 是否记录操作日志
7. 无法确认的内容
```
</div>
<div class="mt-4 text-sm text-gray-400">
先收集证据,再判断风险,最后才给方案。<br/>不要让 AI 跳过证据直接给结论。
</div>
---
# 模块 4:.gitignore 与敏感配置
<div class="grid grid-cols-2 gap-6 mt-6">
<div class="card-red">
<div class="text-red-400 font-semibold mb-3">不应提交的文件</div>
<div class="text-sm space-y-1">
- `.env` 环境变量
- `application-dev.yml` 真实密码
- 数据库账号 / Redis 密码
- `target/` 编译产物
- `node_modules/` / `dist/`
- 日志文件
- IDE 本地配置
</div>
</div>
<div class="card-green">
<div class="text-emerald-400 font-semibold mb-3">敏感配置规则</div>
<div class="text-sm space-y-2">
- 禁止硬编码数据库密码
- 禁止硬编码 Redis 密码
- 禁止硬编码 JWT 密钥
- 禁止硬编码第三方密钥
- 不得提交真实配置文件
- 示例配置必须使用占位符
</div>
</div>
</div>
---
# 模块 5:.trae/rules.md 安全规则
<div class="mt-4 space-y-3 text-sm">
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<strong class="text-blue-300">规则 1:</strong>前端按钮权限只能作为交互控制,不能作为安全边界。
</div>
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<strong class="text-blue-300">规则 2:</strong>涉及用户、角色、菜单、部门、岗位等敏感接口时,必须检查后端 Controller 是否存在权限控制。
</div>
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<strong class="text-blue-300">规则 3:</strong>涉及新增、修改、删除、导出等操作时,必须检查是否记录操作日志。
</div>
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<strong class="text-blue-300">规则 4:</strong>禁止在源码中硬编码数据库密码、Redis 密码、JWT 密钥。
</div>
<div class="p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<strong class="text-blue-300">规则 5:</strong>列表查询必须确认是否需要数据权限过滤。
</div>
</div>
---
# 模块 6:编码与测试规则
<div class="grid grid-cols-2 gap-6 mt-6">
<div>
<div class="font-semibold text-blue-300 mb-3">编码规则重点</div>
<div class="text-sm space-y-2">
- 前端接口放 `api` 目录,不在页面写请求
- 后端遵守 Controller → Service → Mapper 分层
- 敏感接口关注权限注解
- 敏感操作关注日志注解
- 列表查询关注数据权限
- 固定枚举值使用字典
- 代码生成结果必须人工检查
</div>
</div>
<div>
<div class="font-semibold text-emerald-300 mb-3">测试规则重点</div>
<div class="text-sm space-y-2">
- ✅ 登录成功 / 失败
- ✅ 无权限访问接口返回拒绝
- ✅ 按钮权限和权限字符匹配
- ✅ 角色授权变化后权限更新
- ✅ 数据权限范围正确
- ✅ 敏感操作有日志记录
- ✅ 代码生成 CRUD 完整性
</div>
</div>
</div>
---
# 模块 7:前端专项规则
<div class="mt-6">
<div class="card text-sm">
<div class="font-semibold mb-3">用户管理页面规则示例</div>
| 规则项 | 要求 |
|--------|------|
| 按钮权限 | 新增/修改/删除/导出必须使用权限控制 |
| 删除操作 | 必须二次确认 |
| 提交失败 | loading 必须恢复 |
| 数据刷新 | 修改后必须刷新列表 |
| 敏感字段 | 不得明文展示或输出日志 |
| 接口调用 | 统一放 api 目录 |
| 动态路由 | 不能随意绕过 |
| 字典字段 | 使用统一字典显示 |
</div>
</div>
---
# 模块 8:规则可执行性检查
<div class="grid grid-cols-2 gap-8 mt-8">
<div class="card-red">
<div class="text-red-400 font-semibold mb-3">❌ 坏规则</div>
<div class="space-y-2 text-sm">
- 「注意权限安全」
- 「代码要规范」
- 「日志要完整」
- 「数据权限要合理」
- 「生成代码要检查」
</div>
<div class="text-xs text-gray-500 mt-3">方向没错,但不可执行</div>
</div>
<div class="card-green">
<div class="text-emerald-400 font-semibold mb-3">✅ 好规则</div>
<div class="space-y-2 text-sm">
- 涉及用户/角色/菜单/部门/岗位的新增/修改/删除/导出接口 → **必须检查后端权限和操作日志**
- 涉及列表查询 → **必须确认数据权限过滤**
- 代码生成结果上线前 → **必须检查权限、日志、校验、异常和测试**
</div>
<div class="text-xs text-gray-500 mt-3">有触发场景 · 有必须动作 · 可被检查</div>
</div>
</div>
---
# 模块 9:技能与规则资产化
<div class="mt-6">
```
ai-dev-assets/
├── prompts/若依/ # 若依相关 Prompt 模板
│ ├── 结构分析.md
│ ├── 登录权限链路.md
│ ├── 按钮权限检查.md
│ └── 操作日志检查.md
├── rules/若依/ # 若依 rules.md
├── templates/若依/ # 报告模板
├── checklists/若依/ # 检查清单
│ ├── 权限检查.md
│ ├── 日志检查.md
│ └── 代码生成Review.md
└── examples/若依/ # 优秀案例 & 反面案例
```
</div>
<div class="mt-4 text-sm text-gray-400 text-center">
这些资产以后可以直接用于公司内部类似后台管理系统
</div>
---
# 若依版 rules.md 核心条款
<div class="mt-6 space-y-4">
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">1</div>
<div class="text-sm">前端按钮权限<strong class="text-red-300">不是</strong>安全边界</div>
</div>
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">2</div>
<div class="text-sm">敏感接口<strong class="text-emerald-300">必须</strong>检查后端权限</div>
</div>
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">3</div>
<div class="text-sm">敏感操作<strong class="text-emerald-300">必须</strong>检查操作日志</div>
</div>
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">4</div>
<div class="text-sm">列表查询<strong class="text-emerald-300">必须</strong>考虑数据权限</div>
</div>
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">5</div>
<div class="text-sm">代码生成结果<strong class="text-red-300">不得</strong>直接上线</div>
</div>
<div class="flex items-center gap-4 p-3 rounded-lg bg-blue-900/20 border border-blue-500/30">
<div class="w-8 h-8 rounded-full bg-blue-500/30 flex items-center justify-center flex-shrink-0 text-sm font-bold">6</div>
<div class="text-sm">不确定内容<strong class="text-emerald-300">必须</strong>标注</div>
</div>
</div>
---
layout: center
---
# 第 2 天交付物
<div class="grid grid-cols-2 gap-3 mt-8 text-sm max-w-3xl mx-auto">
<div class="card-blue p-3">01 上下文组织清单</div>
<div class="card-blue p-3">02 上下文引用模板</div>
<div class="card-blue p-3">03 幻觉控制 Prompt</div>
<div class="card-blue p-3">04 .gitignore 配置样例</div>
<div class="card-green p-3">05 若依安全规则</div>
<div class="card-green p-3">06 若依编码测试规则</div>
<div class="card-green p-3">07 若依前端规则</div>
<div class="card-amber p-3">08 若依 AI 资产库目录</div>
<div class="card-amber p-3">09 规则验收清单</div>
<div class="card-amber p-3">10 若依版 rules.md v0.1</div>
</div>
---
# 两天课程总结
<div class="grid grid-cols-2 gap-8 mt-8">
<div class="card">
<div class="text-blue-400 font-semibold mb-3">第 1 天:读懂若依</div>
<div class="text-sm space-y-1">
- 看结构 — 全局目录与模块职责
- 找入口 — 登录、权限、菜单入口
- 追链路 — 完整调用链路分析
- 查依据 — 验证 AI 输出可信度
</div>
</div>
<div class="card-green">
<div class="text-emerald-400 font-semibold mb-3">第 2 天:按规则参与若依</div>
<div class="text-sm space-y-1">
- 组织上下文 — 精准任务五要素
- 控制幻觉 — 证据→原因→方案
- 编写 rules — 可执行规则
- 沉淀资产 — 团队长期复用
</div>
</div>
</div>
<div class="mt-8 text-center">
<div class="inline-block card-blue px-8 py-4">
<div class="text-xl font-bold mb-2">最终能力</div>
<div class="grid grid-cols-5 gap-4 text-sm">
<div>读得懂</div>
<div>问得准</div>
<div>查得实</div>
<div>改得稳</div>
<div>可复用</div>
</div>
</div>
</div>