Files

75 lines
2.9 KiB
Markdown

---
name: optimize-target-code
description: "分析并优化用户指定的函数、类、文件或小范围功能,改善实现效率、复杂度、数值稳定性、健壮性或可读性,并进行必要验证。仅在用户显式调用 $optimize-target-code 时使用。"
---
# 优化指定代码
对用户指定的小范围代码进行针对性优化,避免扩大修改范围。
## 执行流程
1. 读取适用的 `AGENTS.md`,确认目标文件、函数或功能。
2. 读取目标代码、直接调用方、相关数据结构和测试,不扫描整个项目。
3. 明确当前接口、输入输出、副作用、边界条件和预期行为。
4. 检查:
- 不必要的循环、遍历、排序和重复计算;
- 不合适的数据结构和算法复杂度;
- 多余的对象创建、内存分配和数据复制;
- 浮点精度、除零、溢出、NaN 和边界输入;
- 过深嵌套、复杂条件和难以理解的代码结构;
- 热路径中的日志、IO、阻塞和共享状态。
5. 选择收益明确、风险最低、修改最小的方案。
6. 如果用户只要求“分析”或“检查”,给出建议但不修改代码。
7. 如果用户要求“优化”或“改进”,直接实施行为保持型优化。
8. 修改后运行最相关的测试或构建,并检查 diff。
## 修改原则
默认保持以下内容不变:
- 公共接口和函数签名;
- 输入输出含义;
- 返回值和异常行为;
- 状态修改和副作用;
- 结果顺序和确定性;
- 线程和异步语义;
- 单位、坐标系、阈值和数值容差;
- 配置和序列化兼容性。
如果优化需要更换算法,并且可能改变结果、精度或适用范围,先说明新旧方案和风险,获得用户确认后再修改。
不要:
- 顺便重构其他模块;
- 格式化整个文件或项目;
- 修改无关代码;
- 为了减少代码行数而过度抽象;
- 在没有测量时声称性能已经提升;
- 为通过测试而降低断言标准;
- 覆盖或回退用户原有改动。
## 性能验证
只有用户关注性能,或者修改明显针对性能时才进行基准测量。
优化前后使用相同输入、环境和构建模式,并重复运行。无法可靠测量时,只说明理论复杂度和预期收益,不声称实际性能提升。
## 特殊情况
对于数学、机器人、控制和实时代码,重点检查浮点误差、单位、坐标系、采样周期、角度归一化、饱和处理和实时周期,不擅自修改公式或参数。
硬件控制、部署和实机测试需要用户明确授权。
## 完成报告
简要报告:
- 优化了哪个文件或函数;
- 发现了什么问题;
- 做了什么修改;
- 复杂度或预期收益;
- 执行了哪些测试或构建;
- 哪些内容尚未验证。
如果没有值得实施的安全优化,明确说明,不要强行修改代码。