他们的动态

  1. 2026年11月
  2. Tibo
  3. poteto
  4. poteto
  5. poteto
  6. poteto
  7. poteto
  8. Tibo
  9. Tibo
  10. Tibo
    Tibo ·
  11. Tibo
  12. Tibo
  13. Tibo
  14. poteto
  15. Tibo
  16. Tibo
  17. poteto
  18. Tibo
  19. Tibo
  20. Tibo
  21. poteto
    poteto ·
    虽然我挺看好形式化方法的,但我觉得还是值得降低一下预期,自己去研究研究(免责声明:我不是这方面的专家)。它没法保证你的代码没有 bug,只能保证在某些假设下代码符合 spec,而 spec 来自人们想要什么,不是来自数学。只要我们还在为人类写软件,就没有什么能证明你的 spec 是对的,只有你自己能判断。 我在 pstack 里做 /statechart 这个 skill,主要是因为它能让你代码里隐含的状态机变得更明显、更好读,这样你就能缩小 review 的范围,在更高的层面去审:它到底符不符合你的意图和目标?我做游戏 tibo.dog 的时候狂用这个 skill,下面是故事模式的 statechart,我靠它找出了好多 bug。 从这个角度看,我觉得模型检测(比如 TLA+ 配 TLC)对端到端理解和检查系统的属性挺有用的,而且你不用写一大堆新的验证代码。spec 不是你真正的代码,所以总有漂移的风险,但到目前为止我用它找到真 bug 的体验都还不错。我一般也会配合经验验证(实际跑代码)来确认 bug 是真的。 其他类型的形式化验证,比如定理证明(如 Lean、Dafny)、有界模型检测(如 CBMC、Kani)等,各有各的取舍。证明能覆盖所有可能的输入,但只针对你写明的属性,而且要多写很多代码、多花很多功夫。有界模型检测可以直接跑在你真正的代码上,避免了漂移,但它只检查到一定步数,所以更擅长找 bug,而不是证明没有 bug。 所以我觉得在近中期,你还是得给代码库分层:约束和护栏(类型、lint 规则、API 设计、重构)、经验验证(测试、evals、真实使用),以及对真正需要的部分做形式化验证。单靠哪一个都抓不全,但叠在一起能抓到多得多的问题,也能缩小留给你 review 的部分。 不过也许到了极限,bitter lesson 会胜出,每次都能完美地打印出零 bug 的代码。就算是那样,/statechart 在确认 agent 有没有正确理解你的意图这件事上,看起来还是很有用。还没试过的话就去试试吧!
  22. Tibo
  23. Tibo
  24. Tibo
  25. Tibo
  26. Tibo
  27. poteto
  28. poteto
  29. Tibo
  30. poteto
  31. Tibo
    Tibo ·
  32. Tibo
  33. poteto
  34. Tibo
    Tibo ·
  35. poteto
  36. Tibo
  37. poteto
  38. poteto
  39. Tibo
  40. Tibo
  41. poteto
  42. 2026年10月
  43. poteto
  44. poteto
  45. Tibo
  46. poteto
  47. poteto
  48. Tibo
  49. poteto
  50. Tibo
  51. poteto
  52. Tibo
  53. Tibo
  54. poteto
  55. poteto
  56. poteto
  57. poteto
  58. Tibo
  59. poteto
  60. poteto
  61. poteto
  62. Tibo
  63. poteto
  64. poteto
  65. poteto
  66. poteto
  67. Tibo
  68. Tibo
  69. poteto
  70. Tibo
  71. poteto
  72. Tibo
  73. Tibo
  74. Tibo
  75. poteto
  76. Tibo
  77. poteto
  78. Tibo
  79. poteto
  80. poteto
  81. poteto
  82. Tibo
  83. Tibo
  84. Tibo
  85. Tibo
  86. Tibo
  87. Tibo
  88. poteto
  89. Tibo
    Tibo ·
  90. poteto
  91. poteto
  92. poteto
  93. poteto
  94. poteto
  95. poteto
  96. poteto
  97. poteto
    poteto ·
    一直让我挺在意的一点是,有些人把 slop 当成是发生在自己身上的事,好像自己只是个无能为力的旁观者,什么都做不了 不好意思,你可是软件工程师啊,你 literally 学会了怎么让沙子思考、让电脑听你指挥?!现在你却说你对这事没办法?拜托 想穿过这些噪音,你其实只需要知道两件事: 1. 你得给你的 agent 一个能验证自己工作的方式(我刚发过,就不重复了) 2. 你的代码库就是记忆 第 2 点也不是什么新鲜事,我们一直都有 lint 规则、诊断做得好的编译器和强类型系统、LSP 等等,帮我们写出更好的代码。写代码的人换成 agent 也没什么不同,你只是需要更多、更强的这些。 先别管 rules 和 skills,这些以后再加。 是的,你的代码库对 agent 来说就是一种记忆!agent 特别喜欢在已经存在的东西上继续扩展。所以你见过的每一个小毛病、每一个烦人的点,你从 agent 身上看到的每一个错误和坏模式,都得变成一条约束,否则 agent 就会像病毒一样在你的代码里不断重复同样的错误。然后你不断观察、不断重复这个过程,直到你的代码库被锁得足够紧,哪怕是上下文很少的 agent 也能一发打出一个高质量的 PR。 更好的方向是重构/重写你的代码,让 agent 的反模式在类别上就不可能发生。把类型系统用起来,用那些能缩小架构搜索空间的库/框架,或者干脆像我们给 grok bot 做的那样,自己造一个框架,设计高质量的底层原语和想清楚的 API
  98. poteto
  99. poteto
  100. Tibo
  101. Tibo
  102. poteto
  103. poteto
    poteto ·
  104. poteto
  105. poteto
  106. poteto
    poteto ·
    代码库里一直都有糊弄出来的东西。我们一直都能接受,因为除了任务关键的“硬”软件(比如嵌入式),代码很少需要完美。 swe 是一种很独特的工程,因为你经常在造一个不断演化、几乎有生命的东西——用户口味会变,你的心智模型会变,功能来了又走。 说实话,我和很多写了很久代码的人一开始(比如 2024 年那会儿)都怀疑 agent 会不会写生产代码。“那我们漂亮的代码库里混进来的那些垃圾怎么办?” 可是以前就有人类写的垃圾,而且多得是!说真的,大多数人把“不是我写的代码”叫垃圾。现实是 99% 的人(包括我自己)根本不知道好代码长什么样,更别说写得出来。我斗胆说,好代码是: • 正确 • 没有 bug • 跑起来又快又省钱 真正的好代码一直都是又难又贵,因为很长一段时间里(也许 @bendlang 会改变这一点),代码并不是能便宜、形式化地保证同时具备这三点。这就是为什么写硬核软件更难更贵,因为看场景,你可能只有一次机会,所以一开始就得对。 但我们用的大多数软件并不需要是好代码才有价值。事实上,我们用的软件很可能大多都没法形式化验证!我们用一些 bug 换速度和进步,所以靠测试和 o11y,采取更迭代的方式。这是好事! agent 帮我们跑得更快,如果你愿意接受,它也能帮我们写出更好的代码。它不会是“好代码”(那还是很贵),但平均下来、规模化之后很可能是好得多。 swe 的新手艺就是搞明白怎么做这件事。现在这是你的活了!如果你用不用 agent 的生产力没差多少,那你是哪里做错了。但现在接受它、把它当成学一整棵新技能树的机会,还不算晚。
  107. poteto
  108. poteto
  109. poteto
  110. poteto
  111. poteto
  112. poteto
  113. poteto
  114. poteto
  115. poteto
  116. poteto
    poteto ·
    量确实重要 听着,我懂。如果你在 agent 出现之前就是工程师,那你对拿代码行数和 PR 数量来衡量任何形式的生产力持怀疑态度,完全合理。我也同意!或者说,至少我以前同意。为了方便解释,我会从一个至少 50 人的大团队里的工程师视角来讲。 以前量不重要,因为我们看的是影响力。就算 PR 不多,你也可以有很大的影响:比如改一行配置,就可能给公司省下几百万美元。 但在 agent 出现之前,我看到量被拿出来讨论的时候,基本都是针对极端情况。差的一端可能是表现吃力的人,另一端可能是“编码机器”型的人。所谓编码机器,就是那种能把自己关在房间里,出来时抱着一摞 PR、解决了一大堆问题的人。所以量确实重要,但只在分布的两端,而且要和影响力结合起来看。 如果你在大厂干过,你就懂我的意思。agent 的特点是,大厂的问题现在也成了中小公司的问题。 agent 怎么改变了这笔账?嗯,现在每个人都有能力成为编码机器。你手里有极其强大的前沿模型,写代码比我们任何人都好,速度也比我们快得多。在这样的世界里,如果你产出的 PR 数量还和以前一样,你难道不会停下来想想,为什么自己没有变得更高效?外星智能都来了,你却还比不过一个人类编码机器? 这又回到我为什么一直在讲信任。如果你没下功夫去建立对 agent 输出的信任,就很难把生产力规模化。 没错,这种做法确实需要更多 token,但我是从“每单位智能的成本”来考虑的。在 agent 之前,这个成本非常高——你得雇很多拿六位数高位年薪的软件工程师来干活。token 现在还是贵,但算上智能的成本,它很可能会随着时间变便宜。今天看起来离谱的开销,6 个月到一年后很可能就负担得起了。一个用 agent 的工程师,能干几十甚至上百个工程师的活,成本只是零头。 我觉得大家还没真正意识到的现实是:软件工程师的工作真的变了。我们的工作不再只是生产软件(好吧说实话从来都不只是写代码,但为了解释先忍我一下),而是打造那台写软件的机器。这种软件工厂的想法,或者我喜欢叫它米其林厨房,现在还是个研究课题。这也是我喜欢分享的东西,不是为了炫耀,而是想让你们看看,当你在大规模使用 agent 时投入大量严谨性,能做到什么。
  117. poteto
  118. poteto
  119. poteto
  120. poteto
  121. Tibo
  122. Tibo
  123. poteto
  124. poteto
  125. Tibo
  126. Tibo
  127. poteto
  128. poteto
  129. Tibo
  130. Tibo
  131. Tibo
  132. poteto
  133. Tibo
  134. Tibo
  135. poteto
  136. Tibo
  137. Tibo
  138. Tibo
  139. Tibo
  140. poteto
  141. poteto
  142. poteto
  143. poteto
  144. poteto
  145. 2026年9月
  146. poteto
  147. Tibo
  148. 2026年8月
  149. Tibo
  150. poteto
  151. 2026年6月
  152. Tibo
  153. 2026年5月
  154. Tibo
  155. Tibo
看完整时间线 →