惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
V
Visual Studio Blog
有赞技术团队
有赞技术团队
U
Unit 42
D
Docker
小众软件
小众软件
F
Full Disclosure
I
Intezer
Scott Helme
Scott Helme
P
Privacy International News Feed
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
B
Blog
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
S
Security Affairs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
Schneier on Security
Schneier on Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Threat Research - Cisco Blogs
量子位
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Heimdal Security Blog
N
Netflix TechBlog - Medium
H
Hacker News: Front Page
P
Proofpoint News Feed
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
S
Schneier on Security

Posts on WKLKEN THINKING

apisix 中的 lrucache apisix 中的服务发现机制 apisix 中的负载均衡 apisix etcd机制 聊聊框架 关于 k8s 的 zero downtime deployment 一些建议 apisix 遇到的一些问题 关于在除夕前一天换了一个洗衣机的故事 Django DRF 性能优化 DRF 的一些实践 Part1: Serializer DRF继承关系图 Better Code: 关于接口的灵活性 新的仓库: wklken/naming 缓存使用的一些经验 Better Code: 抽象: 可扩展性与可维护性的抉择 Better Code: 异常时, 该提示用户哪些信息? Better Code: 更好的异常日志打印 Go: some libs Go: go-redis/cache升级的坑 Go: logrus性能提升 Go: gin validation 远程办公的一点总结 Go: 开发过程中的一些bug 项目管理实践: 风险驱动开发 Go: 一种error wrap调用链处理方式 漫谈技术选型 Go: 基于 apitest 做handler层单元测试 Go: go-sql-driver interpolateparams参数优化 [分享]深度工作 你需要更多的思考时间 Django项目重构小结 工作七年小结: 学习,生活及其他 [分享]bash日常: bash-utils 极客时间推广海报 2017总结: 予时光以意义 k8s APIServer源码: api注册详细细节 k8s APIServer源码: api注册主体流程 k8s APIServer源码: 服务启动 k8s APIServer源码: go-restful框架 重构 - 读书笔记(Python示例) 写给新人的沟通建议 vim 杂谈 - 关于快速编辑 vim 杂谈 - 关于移动 读书笔记-重构: 章11 处理概括关系 读书笔记-重构: 章10 简化函数调用 读书笔记-重构: 章9 简化表达式 读书笔记-重构: 章8 重新组织数据 读书笔记-重构: 章7 在对象之间搬移特性 读书笔记-重构: 章6 重新组织函数 Python 代码规范小结 [分享]关于vim ElasticSearch集群部署文档 Logstash+ElasticSearch处理mysql慢查询日志 [分享]关于代码调试DE那些事 Logstash+ElasticSearch+Kibana- 实现相对通用的数据收集分析 ELK维护的一些点(二) [分享]Python源码剖析-数据结构 一些Centos Python生产环境的部署命令 摘录<<6个月学会任何一种外语>> ELK 维护的一些点 也许是一个新的开始 一些vim的个性化配置 读书笔记-调试九法 这段时间的一些想法 Python 源码阅读 - 垃圾回收机制 我为什么要写博客 APUE笔记-第一章 UNIX基础知识 Python源码阅读-闭包的实现 Python源码阅读-内存管理机制(二) Python源码阅读-内存管理机制(一) Python-基础-数据结构小结 '活动'设计的一些trick 一些简单的Python测试题 我的tmux配置及说明【k-tmux】 Review and Restart 工作四周年小结 vim插件: surround & repeat[成对符号编辑] vim插件: gundo[时光机] vim插件: expand-region[区域选中] vim插件: quickrun[快速执行] vim插件: trailing-whitespace[行尾空格处理] vim插件: closetag[成对标签补全] vim插件: ctrlp[文件搜索] vim插件: airline[状态栏增强] vim插件: theme[主题] vim插件: tagbar[大纲式导航] vim插件: nerdcommenter[快速注释] vim插件: rainbow_parentheses[括号高亮] vim插件: syntastic[语法检查] vim插件: delimitmate[符号自动补全] vim插件: matchit[成对标签跳转] vim插件: easy-align[快速对齐] vim插件: multiple-cursors[多光标操作] vim插件: vim-signature[快速标记跳转] vim插件: easymotion[快速跳转] vim插件: vundle[管理插件] Elasticsearch几个问题的解决 分享一份 Vim 简介PPT k-vim 更新9.0版本 关于知识管理工具的思考
AI 重构的那些 bad case
2026-05-27 · via Posts on WKLKEN THINKING

以下 case 使用模型均为 gpt5.5 xhigh

TLDR

当前最厉害的模型之一

  • 做事靠谱吗? 大部分靠谱
  • 会有幻觉吗? 会
  • 会偷懒取巧吗? 会
  • 会为了做而做吗?会
  • 会生成屎山代码吗? 会
  • 会使得整体项目更复杂还是更简单? 看你怎么用

所以

  • 我们要 review 生成的代码吗? 要
  • 当前能做到交给 Agent 一个任务,之后看都不用看直接合并吗? 暂时不能,大概率翻车
  • 要为代码负责吗? 废话,你的 PR,你的代码,你的锅

建议:

  • 复杂任务尽量用最好的模型
  • Agent 说 job done 之后,用另一个 模型 交叉 review 【重点:交叉验证,不同模型能力、关注点不一样】
  • 提交 PR 前后,人工 review 【重点:为自己的产出负责】
  • 对于 review comment(不管是来自于 Agent,还是人), 先阅读,反向读代码,理解后做判断 【重点:不要让 Agent 直接去修 comments,修多了或修少了都有可能,没有自己的理解和判断,永远积累不到经验】

过度防御

某些模型(gpt) 或者某些场景下, Agent 总是过度防御

例子: 命名 view 层有限制大于零,调用链上每一层都防御 【大概率是没读到,没理解上下文】

代码能用是能用,可读性非常差

无意义到包装或转发

Proxy function or methods

@staticmethod
def wait_release_done(release_history_id: int, timeout: int = DEFAULT_WAIT_RELEASE_TIMEOUT) -> str:
    return wait_release_done(release_history_id, timeout=timeout)

这个更过分, 先封装成对象 - 在 proxy method 中再转成id

image-20260602232443128

image-20260602232336527

Proxy constants

image-20260527232050538

甚至,模块 export 代理

image-20260602234716305

不会删掉没有调用的dead code

image-20260602234055431

只要能解决问题,什么方法都行

lazy import to avoid cycle import

image-20260528234918701

其实应该 break the cycle

丢失掉所有有用的注释

怎么写着写着,注释越来越少,干净又整洁

image-20260602232155194

image-20260602225050389

超级复杂的实现 vs 看似取巧的变通

你告诉它这个字段会导致一个注入,然后,它就去解决这个注入

增加一个非常复杂的 escape 方法 vs 舍弃掉这个字段

image-20260602225333542

你告诉它这个 version 有个注入, 它专心去解决注入,但是实际上这只是一个版本号,合法就不会出现注入问题

解决注入 vs 校验合法性

image-20260602225833153

相对保守不改变函数的协议带来的复杂度

image-20260602233101283

半吊子的封装

嗯,复杂的逻辑封装成函数了, 但是,这两个 except 是怎么回事?

image-20260602231108403

LockTimeout 和 ReleaseError 实际上也属于 release_to_stages 的上下文

image-20260602231312144

看一个更典型的, 你或许不会犯第二次错误,但是 Agent 会

image-20260602231455870

小心 noqa

如果我的变更命中的你的规则,那么一定是你的规则有问题,改一下绕过去好了

规则存在的目的并不是为了被破坏

注:这是个proxy method, 最终删掉了

image-20260602233315414

image-20260602234351439

image-20260602235238977

下面这个就厉害了,为了解 import 顺序导致的循环引用, 偷偷塞了一个 (其实我第一轮都没注意到,review 其他 noqa 的时候搜到的)

应该去解决循环引用,而不是通过 import 顺序绕过循环引用, 然后通过 noqa 绕过import order 检查

image-20260602234453500