用途
nav-simplify 是 Navigator 工作流中的代码简化技能,目标是在不改变代码行为的前提下,让最近修改的代码更清晰、更一致、更易维护。其核心原则是“清晰优先于简短,功能绝对保留”,参考 Anthropic 内部代码简化模式实现。
主要能力
- 确定修改范围:优先使用 git diff 检测当前会话或提交涉及的源代码文件(.ts、.tsx、.js、.jsx、.py、.go、.rs),也支持用户指定文件或目录,以及从会话上下文推断。
- 加载项目配置:读取 .agent/.nav-config.json 中的 simplification 配置段,决定是否启用、触发时机、作用范围、跳过模式、最大文件大小、是否自动应用、是否保留注释等。
- 读取项目规范:从 CLAUDE.md 提取编码标准,包括首选模式、命名约定、导入顺序、错误处理与框架特定指南。
- 分析简化机会:通过 scripts/code_analyzer.py 检测深层嵌套(超过 3 层)、长函数(超过 50 行)、冗余模式、命名不清、嵌套三元、过度抽象、死代码和不一致模式,并输出复杂度评分与建议动作。
- ROI 门控(可选):当评分模式设为 roi 时,分析器额外输出收益分、成本分、ROI 分和门控动作(skip、suggest、apply),并可按阈值跳过低收益文件。默认使用 complexity 模式,此时该步骤不生效。
- 应用简化规则:在不改变功能的前提下减少嵌套、消除冗余、改进命名、合并相关逻辑、移除描述显而易见的注释、避免嵌套三元表达式,并遵循 CLAUDE.md 中的项目标准。
- 生成差异与摘要:对每个文件列出具体变更原因与 diff,结束时输出文件数、简化数、各类别变更数量等汇总。
使用方式
自动触发:在后端接口、前端组件、数据库迁移等实现类技能完成后触发,或在存在代码改动的实现任务后触发;也可集成到自主完成流程(实现 → 验证 → 简化 → 提交 → 归档)、多角色工作流(简化者角色)或循环模式的验证阶段。
手动触发:用户说出“simplify this code”“review for clarity”“clean up recent changes”“refactor for readability”“simplify modified files”等指令时调用。
不触发的情况:仅文档改动、用户明确要求跳过、仅配置文件(JSON、YAML)改动。
执行模式:根据是否自主运行与 auto_apply 配置决定行为——自主运行且 auto_apply 为 true 时直接应用;自主运行且 auto_apply 为 false 时跳过并给出提示,不阻塞自主流程;交互模式且 auto_apply 为 true 时直接应用并展示摘要;交互模式且 auto_apply 为 false 时逐文件展示 diff 并请求确认。
配套脚本:scripts/code_analyzer.py 分析文件并输出问题列表与评分;scripts/simplification_rules.py 按项目规则生成简化代码,支持 --dry-run 预览;scripts/change_reporter.py 生成可读的变更报告。
配置示例:在 .agent/.nav-config.json 中设置 simplification.enabled、trigger、scope、model、skip_patterns、max_file_size、auto_apply、preserve_comments、rules(如 avoid_nested_ternary、max_nesting_depth、max_function_length)以及 scoring 相关阈值。
适用场景
适用于需要持续保持代码质量的开发项目,尤其是采用 Navigator 工作流、要求提交前完成代码梳理的团队;适合在实现任务完成后统一处理最近改动的代码,避免对稳定代码造成无谓改动。
限制
默认只分析最近修改的文件,避免大范围改动;测试文件通常被跳过;建议使用 Opus 模型进行质量判断;强调清晰优先,不追求最少行数,避免过度简化导致可读性下降。文件超过 max_file_size 时会被跳过,可用 --force 覆盖。若检测到潜在行为变化,需人工审查后再应用。具体收费、平台支持范围与效果数据暂未提供。