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