Glean 拾遗
← 所有期号
#018 最新 9/21–9/27 9 月 28 日发布

写得比读得快

本期主线很清楚:机器写代码的速度,已经超过人理解代码的速度。Anthropic 的 CI 在半年里被 25 倍任务量压垮,瓶颈从写码转移到 PR 审核;行为指南提醒我们,Agent 不担责、PR 应压到 600 行内。但这期不只谈效率——Bob Nystrom 说名字太长是病、意义无法外包;ACID 与「让非法状态无法表示」则一遍遍说明,真正稀缺的不是产出,而是约束与结构。当生成变便宜,设计、审查与治理的手艺反而更贵。

12 篇 5 章 约 2 小时
章节 01

管道先崩

3 / 12
claude.com · 10 min
01

Agent 写代码把 CI 压垮:Anthropic 测试影响分析服务的三次续命与重构How Anthropic scaled test impact analysis as agentic coding broke CI

Anthropic 的 CI 在六个月内承受了 25 倍任务量增长:Claude 编写 80% 的代码,工程师人均季度产出是 2021–2025 均值的 8 倍,测试总量涨了 10 倍而人数几乎没变。瓶颈从写代码转到 PR 审核,再落到测试影响分析服务上。该服务由 listener 和 selector 两个确定性组件构成,因为需要单写入者维护每个测试的历史,v0 只能单进程运行,无法水平分片。作者记录了三轮续命:加核心数撑了 70 天,按包分片撑了 29 天,每日重启撑了不到一天;期间内存见底、只找到四个 bug、换内存分配器无效,重启还让 listener 越追越远。最终方案是把历史状态搬进内存数据存储:任意 listener worker 把结果追加进 journal 即可无状态退出,单独的 consumer 每几秒把 journal 汇总成 per-test 历史,selector 再查询。单人三周完成,积压事件归零。作者的建议是:假设两个季度内负载达 25 倍,把状态移出进程,别把关键服务跑成单实例。

www.piglei.com · 3 min
02

AI 编程行为指南:Agent 不担责,PR 控制在 600 行内A Behavioral Guide to AI-Assisted Programming

作者面向软件工程师群体,总结了在项目中实践 AI 编程的通用行为准则,刻意弱化工具与技巧之争(如是否 Spec 驱动),聚焦于协作方式本身。核心主张包括:AI Agent 拓展了人的能力但不对代码担责,人始终是代码的最终责任人,不提交自己不理解的代码;用「协作」而非「委派」的心智模型与 Agent 共事,不做只提需求不问实现的产品经理;拆分 PR(推荐 600 行以内),创建前用 AI 前置 review;先启用 Plan 模式做前置探索,理解了需求再写码;工具函数与库倾向采纳成熟方案而非让 AI 从零手撸;改动必须可自动验证,避免让 Review 兜底。文章后半部分针对初级工程师给出定制建议:质量优先于效率、用聊天模式参与修 Bug 而非全自动委派、先花固定时间独立设计再与 AI 对答案、回归官方文档、补齐设计模式与 DDD 等设计能力、有意识关注安全与并发等非功能性需求。

skillselion.com · 10 min
03

i-have-adhd:让 Claude Code 先说动作、少铺垫的输出风格 skilli-have-adhd: a Claude Code output style that leads with the next action

i-have-adhd 是 ayghri 写的一个 output-style skill,只改 Claude Code 回复的形态,不改它的知识:首行直接给命令、路径或代码片段,多步任务编号,每轮复述「第 3 步 / 共 5 步」,列表可见项不超过 5 条,结尾给一个两分钟内可执行的动作。全部内容是 10 条规则加 5 项发送前删除检查(删掉开场白、「还有别的问题吗」、插叙、无信息量的模糊副词和 idiom),v0.3.0 打包在单个 SKILL.md 里,不带工具、不带 MCP server。安装用仓库 INSTALL.md 的两条 plugin 命令;frontmatter 写着 disable-model-invocation: true,所以不手动输入 /i-have-adhd 就完全不起作用,想让它在每个会话常驻需配合 SessionStart hook 与 touch ~/.claude/.i-have-adhd-always。目录页显示 14,235 installs、质量 A 级、LOW risk,同期 GitHub 仓库 43,673 star、2,494 fork、MIT 许可。读者若在时间压力下读 agent 输出,可先输入一次,只看下一轮回复的首行与末行判断是否留下;同时注意 star 数是全仓统计,别当成单个 skill 的质量分。

章节 02

把 AI 当框架的隐债

2 / 12
www.piglei.com · 4 min
04

AI 编程是框架还是库:抽象泄露与认知债务AI Coding Is a Framework, Not a Library

Piglei 用「框架 vs 库」的区分来审视 AI 编程:框架掌握程序的整体结构,以极低的表面认知成本换取便利,而当下 AI 编程工具正被普遍当作这样的框架使用。文章以 Django REST Framework 为例——继承 ModelViewSet 只需一个 class 加三个属性就能生成整套 CRUD API,但要定制 create 的响应体、或给 list 加过滤条件,就得重写 get_queryset 等多个方法并堆上 if/else 补丁;改用不含魔法的 ViewSet 后代码变长,被藏起来的认知债务却浮出水面。作者认为框架的两个固有问题在 AI 编程上同样成立:抽象泄露(自然语言提示词失灵时,只能撕开抽象、精确到变量名去定位根因)与控制权丧失(Vibe Coding 把结构决策全交给 Agent)。他的建议是把 AI 当库用:寻找提示词的甜蜜区而非追求绝对最少的提示词,作为总设计师关注程序结构并把约束写进 AGENTS.md,并审查 AI 生成的代码。适合正在把 AI 引入日常开发的工程师。

www.piglei.com · 10 min
05

编程 14 年:好代码稀少,复杂度才是真正的敌人After 14 Years of Programming, Complexity Is Still the Enemy

Piglei 入行 14 年后,把对编程的 8 条感触写成此文。核心判断有三:好代码在真实项目里始终是小概率事件,即便是服务千万用户的大厂项目也不例外;理想的编程体验接近 LeetCode 刷题——关注点分离、快速精准反馈、零成本试错,团队该用模块化、自动化测试和缩短反馈回路去逼近它;程序员最大的敌人不是反复改需求的产品经理,而是持续膨胀的复杂度。文章还谈了创造者思维、代码完美主义陷阱、SRP 背后其实是人在提修改请求、按性价比分配学习精力,以及尽早开始写单元测试。适合有一线项目经验、正在反思工程质量与职业成长的工程师。

章节 03

评测、发布与治理

2 / 12
www.anthropic.com · 23 min
06

Claude Opus 5.5 发布:成本降四成,对齐审计得分居首Claude Opus 5.5: 40% cheaper, best alignment scores

Anthropic 发布 Claude 5.5 家族首个模型 Opus 5.5,官方称其在多数工作上达到 Claude Fable 5.1 的水平,服务成本比 Opus 5 低 40%。每百万 token 输入 $4、输出 $20,缓存读取降至 $0.20(降幅 60%),默认设置下典型负载成本下降四成,输出速度提升 30% 以上。在近 2000 个模拟场景的自动化行为审计中取得迄今最高分,越界与越狱行为少于前代;因生物与网络安全能力接近 Fable 5.1,采用同类 safeguard——多数网络安全任务回退至 Opus 4.8,并引入 preserved thinking 反蒸馏机制。性能表格附有标准误差与第三方评测来源,Anthropic 也承认在该能力区间上 benchmark 分差已不足以反映真实差异。适合评估模型选型、agent 成本与部署合规的工程团队。

claude.com · 8 min
07

380 亿美元基金的模型评测与 Agent 治理:Balyasny 访谈Balyasny: evaluating and governing frontier models at $38B scale

Anthropic 与 Balyasny Asset Management(BAM)首席 AI 官 Charlie Flanagan 的访谈,记录这家管理约 380 亿美元资产的机构如何把前沿模型接入生产。BAM 用数千条有可验证答案的真实金融任务(股票、宏观、大宗商品)做评测,既测模型单体表现,也测它在自建 agentic 环境中的表现。相关子集上 Fable 5 得 89.4%,上一代生产模型 86.1%;有一组经济学题此前没有任何模型通过,团队先怀疑评测本身出错,独立复核任务与评分逻辑后才确认提升为真。并购套利分析由 3-5 天缩短到 1 天以内,agent 单次运行约 30 分钟,实质输出前仍需人工复核。安全被当作产品与运营模型问题:已批准的数据边界、最小权限、工具级授权、日志与人工审批;模型更强不会自动获得更大权限。自建 BAMAgent 平台已承载数千个 7×24 agent。适合关注企业级模型评测、agent 治理与部署的工程师,需注意全文出自厂商客户访谈。

章节 04

约束比产出更稀缺

4 / 12
kevinmahoney.co.uk · 6 min
08

让非法状态无法表示:两个数据库建模案例Applying "Make Invalid States Unrepresentable" to Schema Design

作者用两个生产案例说明如何把「让非法状态无法表示」落到数据建模上。案例一:把连续时间线表示为 List (Date, Date) 会留下空隙和重叠,改为只存切分日期的 Set Date,连续与不重叠约束就天然成立,再切一刀只需往集合里加一个日期。案例二:合约系统把 fixed 与 default 合约都塞进同一张表,结束日期是可空字段,加上按单份合约修改的 API 毫无防护,线上确实出现过合约空缺,排查耗费数小时工程时间;把 default 合约从表中移除、由「没有 fixed 合约」推断得出后,空缺与可选结束日期同时消失。作者认为根源是用 OO 思维把每个概念都物化成一行,把行当作序列化对象而非命题,这会反过来污染整个系统设计。文末给出禁止合约重叠的两种做法:数据库 excludes 约束,或写模型允许重叠、读模型投影时用下一份合约的起始日截断。适合做数据建模与后端 schema 设计的工程师阅读。

kevinmahoney.co.uk · 5 min
09

被长期低估的一致性:拆服务之前先算清 ACID 的账Consistency is Consistently Undervalued

作者指出,微服务与非 ACID 数据库流行之际,最容易被忽略的代价是 ACID 事务。文章以「一个用户必须有一个 profile」为约束,展示单库事务如何同时保证原子性与隔离性:创建、外键校验都在一个事务内完成。一旦把 users 与 profiles 拆成两个服务,原子性、隔离性、外键约束全部失效。作者逐一推演失败路径:profile 服务失败会留下裸 user;补写的 delete 回滚本身会失败,或进程断电留下中间态;即使两个服务 100% 可靠,并发线程仍会看到 user 无 profile 并重复创建;外键失效后 profile 可指向已删除或改过的 user ID;定时清理 dangling 数据也仍存在不一致窗口。结论是应用层的补偿逻辑最终等价于重造一个半成品、带 bug 的分布式 ACID 数据库,采用微服务或 NoSQL 之前应先理解自己引入了什么复杂度。适合准备拆分服务或迁移 NoSQL 的后端工程师。

journal.stuffwithstuff.com · 20 min
10

函数着色:async 如何把语言劈成两半What Color is Your Function?

作者用一个自造的“红蓝函数”语言作寓言:每个函数必须选颜色,红函数只能被红函数调用,调用方式更繁琐,且部分核心库函数只有红色。谜底是——红即异步。JS/Node、C#、Dart、Python 都把世界切成同步与异步两半,根因是异步 IO 必须退掉整个 C 调用栈才能回到事件循环,于是回调、promise、async-await、生成器只能把调用栈手工具体化到堆上(CPS 变换)。async-await 治好了“调用很痛”,却没有消除颜色:同步函数返回值,异步函数返回 Future/Task 包装,仍需 await 拆包。Go、Lua、Ruby 靠 goroutine/协程/fiber 挂起整条线程,同步与异步的区分因此消失。C# 若改用线程同样可避开。适合关心并发模型与语言设计的工程师。

journal.stuffwithstuff.com · 9 min
11

标识符过长也是病:四个删词规则砍掉名字里的水分Long Names Are Long

Bob Nystrom 在 Google 做 Dart 的 readability 代码审查,见过超过 60 字符的标识符。他给出四条删词规则:类型已由静态类型或参数列表说明,就不该再写进名字(nameString → name,holidayDateList → holidays);对每个限定词追问“去掉它名字还成立吗”,recentlyUpdatedAnnualSalesBid 就这样逐词落马;类名和方法名已经提供了上下文,AnnualHolidaySale.promote 不必再叫 promoteHolidaySale;manager、data、state、engine 这类词不传递任何图像,可以直接删。文末用一个反面例子,把 DeliciousBelgianWaffleObject.garnishDeliciousBelgianWaffleWithStrawberryList 一步步砍成 Waffle.garnish,演示四条规则如何叠加生效。适合每天在 code review 里跟命名较劲的工程师。

章节 05

无法外包的意义

1 / 12
journal.stuffwithstuff.com · 16 min
12

效率的滑块:AI 造得出有用之物,造不出意义The Value of Things: Utility, Meaning, and Generative AI

编程语言设计师 Bob Nystrom 用两个自己的故事——为岳母手织的围巾、为弟弟写的短片剧本——把「价值」拆成两半:utility(效用)来自物品能做的事,meaning(意义)来自制作者为他人花费的、不可回收的时间,且不可转让。生成式 AI 能把前者放大,却无法生成后者:ChatGPT 或许能在十分之一的时间里写出更好的剧本,但给弟弟的意义也只剩十分之一。作者由此提出一个粗糙模型——效率是滑块,决定成品中效用与意义的配比——并给出选择标准:只需要「能用的东西」时放手用(他引用华盛顿州生态部的招聘启事,其中明确鼓励用 AI 写样板代码、生成测试、做安全重构);涉及人与人的连接时,尽量少让机器介入。他同时承认模型的两个漏洞:刻意加大难度不会线性地增加意义,而制作过程本身也能带来快乐。全文只看个人层面的使用,未涉及 AI 的全局外部性。