diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index 607b5d2..7470d28 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -50,10 +50,17 @@
| 类型 | 行动 |
|------|------|
-| **缺陷修复** | 资源泄漏、空引用风险、并发问题、逻辑错误 → 直接修复 |
-| **性能优化** | 无用分配、重复计算、可池化资源 → 评估后优化 |
+| **架构梳理** | 梳理代码架构并进行重构,让代码结构更清晰易懂 |
+| **语法现代化** | 使用最新的 C# 语法来简化代码,提升可读性 |
+| **缺陷修复** | 资源泄漏、空引用风险、并发问题、逻辑错误 → 直接修复,让代码更健壮 |
+| **性能优化** | 无用分配、重复计算、可池化资源 → 通过缓存减少耗时的重复计算 |
| **代码简化** | 重复代码提取、冗余判断合并、现代语法替换 → 在不影响可读性前提下简化 |
-| **注释完善** | 缺失的参数注释、过时的描述 → 补充或修正 |
+| **注释完善** | 补充类、接口、属性、方法头部的注释,以及方法内部重要代码的注释 |
+| **架构参考** | 参考网络上同类功能的优秀架构,给出架构调整建议 |
+
+**架构调整策略**:
+- **改动较小**:直接调整,完成后说明变更内容
+- **改动较大**:先列出调整方案,询问用户意见,待确认后再修改
**不应过度保守**:
- ❌ 仅添加注释而忽略明显的代码问题
@@ -66,6 +73,33 @@
- 性能关键路径 → 需有依据或说明推理
- 大范围重构 → 需先与用户确认范围
+### 3.2 防御性注释规则
+
+在旧有代码中,经常可以看到**被注释掉的代码**,这些注释代码前面通常带有说明文字。
+
+**这些是防御性注释**:
+- 记录了过去曾经踩过的坑
+- 目的是告诉后来人不要按照注释代码去写,否则会有问题
+- **禁止删除此类防御性注释**,用于警示后人
+
+**识别特征**:
+```csharp
+// 曾经尝试过 xxx 方案,但会导致 yyy 问题
+// var result = DoSomethingWrong();
+
+// 不要使用 xxx,否则会造成 yyy
+// await client.SendAsync(data);
+
+// 这里不能用 xxx,因为 yyy
+// stream.Flush();
+```
+
+**处理原则**:
+- ✅ 保留这类带说明的注释代码
+- ✅ 可以补充更详细的说明,解释为什么不能这样做
+- ❌ 不要删除这类防御性注释
+- ❌ 不要尝试"恢复"这些被注释的代码
+
---
## 4. 编码规范
@@ -151,7 +185,7 @@ public class MyService : DisposeBase
public void Start() { }
#endregion
- #region 辅助
+ #region 日志
/// <summary>日志</summary>
public ILog Log { get; set; } = Logger.Null;
@@ -163,7 +197,13 @@ public class MyService : DisposeBase
}
```
-**Region 顺序**:`属性` → `静态`(如有)→ `构造` → `方法` → `辅助`/`日志`
+**Region 顺序**:`属性` → `静态`(如有)→ `构造` → `方法` → `辅助`(如有)→ `日志`
+
+**日志 Region 规则**:
+- 类代码中如果带有 `ILog Log { get; set; }` 和 `WriteLog` 方法
+- **必须放在类代码的最后**
+- **必须用名为"日志"的 region 包裹**
+- 不要放在"辅助" region 中,应单独作为"日志" region
### 4.5 现代 C# 语法
@@ -395,7 +435,7 @@ var flag = str.ToBoolean();
## 8. 日志与追踪
```csharp
-#region 辅助
+#region 日志
/// <summary>日志</summary>
public ILog Log { get; set; } = Logger.Null;
@@ -492,6 +532,7 @@ catch (Exception ex)
- 伪造测试结果/性能数据
- 擅自删除公共/受保护成员
- 擅自删除已有代码注释(除非注释本身错误)
+- **删除防御性注释**(带说明的注释代码,记录历史踩坑经验)
- 仅删除空白行制造"格式优化"提交
- 删除循环体的花括号
- 将 `<summary>` 拆成多行
@@ -535,6 +576,46 @@ catch (Exception ex)
| **热点路径** | 经性能分析或高频调用栈确认的关键执行段 |
| **基线** | 变更前的功能/性能参考数据 |
| **顺带修复** | 在完成主任务过程中,修复发现的相关问题 |
+| **防御性注释** | 被注释掉的代码,前面带有说明,记录历史踩坑经验,用于警示后人 |
+
+---
+
+## 15. 代码优化检查清单
+
+当进行代码优化时,按以下清单逐项检查:
+
+### 架构与结构
+- [ ] 代码架构是否清晰?是否需要重构?
+- [ ] 类的职责是否单一?是否需要拆分?
+- [ ] 是否有重复代码可以提取为公共方法?
+- [ ] Region 组织是否符合规范(属性→静态→构造→方法→辅助→日志)?
+
+### 语法现代化
+- [ ] 是否可以使用更简洁的 C# 语法?(switch 表达式、模式匹配等)
+- [ ] 集合初始化是否使用了集合表达式 `[]`?
+- [ ] 是否可以使用 null 条件运算符 `?.` 简化代码?
+
+### 健壮性
+- [ ] 是否存在空引用风险?
+- [ ] 资源是否正确释放?(IDisposable、流、连接等)
+- [ ] 异常处理是否完善?
+- [ ] 并发场景是否线程安全?
+
+### 性能
+- [ ] 是否存在可以缓存的重复计算?
+- [ ] 是否有不必要的对象分配?
+- [ ] 热点路径是否避免了反射和复杂 Linq?
+- [ ] 是否使用了对象池/ArrayPool 等池化技术?
+
+### 注释与文档
+- [ ] 类、接口是否有 `<summary>` 注释?
+- [ ] 公共方法是否有完整的参数和返回值注释?
+- [ ] 方法内重要逻辑是否有注释说明?
+- [ ] 防御性注释是否保留?
+
+### 日志
+- [ ] `ILog Log` 和 `WriteLog` 是否放在类的最后?
+- [ ] 是否用名为"日志"的 region 包裹?
---