如何让AI写代码越写越像你
让 AI 越写越像你用 Hook 自动积累编码规范的实践问题的起点用 AI 写了一段时间代码之后我开始觉得有点别扭。功能是实现了逻辑也没错但代码不像我写的。方法命名的习惯不一样返回值的处理方式不同注释的位置也不对。每次让 AI 改代码我都要再花时间把风格对齐或者直接忍着。解决这个问题最直接的办法是把自己的编码规范写进CLAUDE.md让 AI 每次都照着来。这个方向没错但有个问题——规范是写不完的。写出来的规范都是大原则真正让代码有个人味的那些东西是在一次次具体的改动中体现出来的。比如我偏好把 null 判断前置而不是嵌套、比如我不喜欢在 Service 层里写if/else分支、比如我觉得方法名里的do前缀是多余的。这些东西你事先想不到只有在被触动的时候才知道。所以真正的问题变成了怎么把这些被触动的瞬间自动记录下来思路整个方案的核心逻辑很简单每次让 AI 改代码自动抓下「改了什么」用 AI 对这次改动生成一句话摘要说清楚背后的设计意图按时间归档成 Markdown 文件定期人工复盘把高频模式提炼进正式的编码规范关键在第一步和第二步——把人工成本压到几乎为零记录才能持续。Claude Code 有一个 Hook 机制可以在工具调用前后、对话开始时、对话结束时执行自定义脚本。这是整个方案的技术基础。Hook 架构整体数据流如下整个系统由四个脚本组成分别挂在四个 Hook 事件上UserPromptSubmit → opt_track.py 检测关键词初始化追踪轮次 PreToolUse → opt_capture_before.py 修改前拍快照只取最原始状态 PostToolUse → opt_capture_after.py 修改后拍快照始终取最新状态 Stop → opt_write_record.py 生成 diff调 AI 摘要写文件Hook 配置在~/.claude/settings.json里hooks:{UserPromptSubmit:[{matcher:,hooks:[{type:command,command:python3 ~/.claude/hooks/opt_track.py}]}],PreToolUse:[{matcher:Edit|Write|MultiEdit,hooks:[{type:command,command:python3 ~/.claude/hooks/opt_capture_before.py}]}],PostToolUse:[{matcher:Edit|Write|MultiEdit,hooks:[{type:command,command:python3 ~/.claude/hooks/opt_capture_after.py}]}],Stop:[{hooks:[{type:command,command:python3 ~/.claude/hooks/opt_write_record.py}]}]}各脚本逻辑opt_track.py — 关键词触发并不是每一轮对话都值得记录。我只想抓有意识地让 AI 改代码的那些时刻所以用关键词做过滤KEYWORDS[优化,重构,改进]has_keywordany(kwinpromptforkwinKEYWORDS)命中关键词时创建一个新的追踪轮次index 自增记录下 prompt 内容和当前工作目录。没命中但当前有活跃追踪的把这条 prompt 追加为执行步骤方便后续理解完整上下文。所有中间状态都写在/tmp/claude-opt-{session_id}/里按 session 隔离。opt_capture_before.py — 修改前快照每次 AI 调用Edit/Write/MultiEdit前把文件当前内容备份到{session_dir}/changes/{index}/{safe_name}.before。有个细节每个文件每轮只拍一次。如果 AI 对同一个文件做了多次修改只保留最原始的版本这样生成的 diff 才能反映完整的变化量。opt_capture_after.py — 修改后快照每次修改完把文件内容备份到.after文件。这里是每次都覆盖保留最终状态。beforeafter凑成一对就能算出本轮的完整 diff。opt_write_record.py — 生成记录对话结束时Stop事件触发做三件事1. 生成 diff用 Python 标准库difflib对 before/after 文件生成 unified diffdifflist(difflib.unified_diff(before_lines,after_lines,fromfile修改前,tofile修改后,n3))2. 调 AI 生成摘要把本轮的 prompt意图 执行步骤 diff 喂给 Claude Haiku让它用 2~4 句话总结核心改动和设计原则summary_prompt(以下是一次代码优化会话的内容请用 2~4 句话总结核心改动是什么体现了哪些代码设计原则或最佳实践。\n\ncontext\n\n只输出总结内容不要其他说明。)用 Haiku 而不是主模型是为了省成本——摘要任务不需要很强的模型。3. 写入 Markdown 文件同一个 session 的多轮记录追加到同一个文件里文件按时间戳命名归档到代码规范积累/YYYY-MM/目录代码规范积累/ └── 2026-04/ ├── 20260401-143022.md ├── 20260415-090531.md └── 20260428-165847.md每个文件的结构大致是# 代码优化记录 2026-04-28 16:58:47 项目目录/Users/.../my-project ## 摘要2026-04-28 16:58:47 本次优化将 Service 层中散落的 null 判断统一前置 避免了深层嵌套。提取了重复的校验逻辑为私有方法 体现了单一职责原则。 --- ## 优化 1 **意图** 重构 UserService把 null 判断统一提到方法入口 ### 文件src/main/java/...UserService.java \\\diff - if (user ! null) { - if (user.getStatus() ! null) { Objects.requireNonNull(user, user must not be null); if (user.getStatus() null) { \\\整理流程自动记录只是第一步记录本身不会让 AI 变聪明。真正起作用的是定期复盘把模式提炼进规范。我大概每两周会做一次整理翻看代码规范积累/下最近的文件找出多次出现的同类改动这意味着这是我真实的习惯提炼成一条规则写进代码风格.md代码风格.md会被同步到工作项目的CLAUDE.md里作为 AI 的编码约束这个循环跑起来之后规范会越来越准确AI 的初稿也会越来越像我的风格需要手动对齐的次数自然减少。几个实际体感记录比想象中多。开始以为一周也就几条实际跑起来发现每天都有。原来在无意识的情况下已经在持续地用 AI 做小规模的代码调整了。摘要质量够用。Haiku 生成的摘要不够精炼但信息量足够判断这条记录值不值得提炼成规范。复盘时扫一眼摘要再看 diff效率还不错。关键词过滤有局限。用优化/重构/改进触发追踪会漏掉一些有价值的改动。比如直接说把这个方法改一下就不会被记录。后续可以考虑换成所有有文件修改的对话都记录让整理阶段来做筛选而不是记录阶段。这套东西的本质是个反馈回路。用 AI 改代码 → 自动记录 → 人工提炼 → 写进规范 → AI 按规范写代码。规范的准确性会随着时间提升因为它是从真实行为里归纳出来的而不是提前猜测的。最后这套方案没有什么神奇的地方核心是把总结经验这件本来需要主动去做的事变成被动自动发生的。如果你也在用 Claude Code可以把这几个脚本直接拿去用按自己的关键词触发逻辑和归档路径改一改就行。Hook 安装格式说明脚本通过 stdin 接收 JSON 数据包含session_id、tool_input、prompt等字段正常退出码为 0。PreToolUse的脚本若返回非 0会阻断当次工具调用——所以opt_capture_before.py在找不到 session 追踪时直接sys.exit(0)而不报错。配置写在~/.claude/settings.json的hooks字段下支持matcher正则过滤触发的工具名。四个脚本见https://download.csdn.net/download/wsss_fan/92842958opt_track.py— 关键词检测追踪轮次初始化opt_capture_before.py— 修改前快照opt_capture_after.py— 修改后快照opt_write_record.py— 生成 diff 摘要 写入归档让 AI 越写越像你不是靠提示词技巧是靠把你自己的行为模式系统性地反馈给它。最后补充一句积累下来的素材也是代码规范分享的好案例。自荐一下我的微信小程序 - “两步动态验证”超级好用有任何建议或需求可以直接联系我免费云端加密备份换机不丢失安全又便捷API快速集成提供开放API实现自动化验证码获取多端共享基于微信小程度可同时在手机PC端共同使用一键复制扫描二维码试用,或微信小程序搜索两步动态验证
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2572570.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!