Don't be a meat proxy2 months agohttps://gruhn.me/blog/2026-08-03/不要逐字传达AI生成的回复;这样做没有价值。阅读AI输出需要额外努力,因为其冗长、看似合理但无意义的废话以及术语。相反,应阅读、理解、验证,然后用你自己的话重新表述回复。在代码审查中,使用AI生成代码而不理解内容会将人降低为“肉体代理”。
Show HN: How to build and self-host a code review agent2 months agohttps://www.trytilde.ai/blog/how-to-build-code-review-agentTilde 是一个基于云的 harness SDK,用于快速构建 AI 代理,旨在克服单一 harness 解决方案的次优结果并改善开发者体验。关键组件包括工具(MCP 服务器集成、凭据管理)、ChatKit(Slack、GitHub 集成)和记忆(技能注册表、用于自动更新的维基)。一个实际的例子是一个代码审查代理,它可以在 GitHub PR 中被标记,安全地检出代码,根据系统提示分析差异,并以内联和摘要消息的形式回复评论。该架构允许开发者专注于核心逻辑(例如代码审查),而 Tilde 处理基础设施,将设置时间缩短至 5 分钟以内。通过 Vercel 和 Tilde 实现可移植部署,使用 tilde-state.yaml 文件轻松配置 GitHub 和 Modal sandbox 等集成。
An LLM-assisted security review of GlobaLeaks: 41 findings for $3,1402 months agohttps://www.isgroup.biz/en/cyber-security/llm-based-code-security-review-costs-f...通过API调用对GlobaLeaks进行安全审查花费约3,140美元,发现了29个漏洞、12个拒绝服务问题以及42项强化建议。人工验证前每个确认发现的平均成本约为77美元,这使得深度代码库分析比传统的需要数周且依赖专家的审查更易获取。成本分布显示,高级推理模型占总预算的62%,但仅处理了7%的令牌,而标准模型以较低成本处理了大部分工作。深度分析仍然比广泛覆盖更昂贵,但对于开发关键软件的组织来说,成本差异已不再是重大障碍。正如关于LLM辅助安全分析的完整报告所强调的,系统性的深度代码库审查现已更易被个人和组织获取。
Stacked PRs are now live on GitHub2 months agohttps://github.blog/changelog/2026-07-30-stacked-pull-requests-are-now-in-public...堆叠式拉取请求将大型变更拆分为更小、可审查的拉取请求,并可通过一键合并。它们允许对细粒度变更进行并行审查,同时通过聚焦审查和分支保护来保证质量。用户可以合并整个堆叠或逐层单独合并。GitHub的内置功能(如审查、检查、合并要求)与堆叠式拉取请求无缝协作。CLI扩展(gh-stack)支持从终端或github.com快速创建和管理堆叠。堆叠中的每个拉取请求显示特定层级的差异,并附有堆叠图以供参考,从而实现并行独立审查。合并最新准备好的拉取请求会将此请求及其下方所有未合并的层级一次性合并,对于不完整的堆叠会自动变基。堆叠式拉取请求解决了大型拉取请求的瓶颈问题,提高了审查速度和准确性,TED、WHOOP等组织的用户均表示了这一点。
Code review (as we know it) needs to die2 months agohttps://alexlooney.substack.com/p/code-review-as-we-know-it-must-dieAI驱动的开发正在打破传统的代码审查:更快的代码生成速度受限于缓慢的人工审查。异步的基于差异的代码审查(约有20年历史)在写代码成本低而审查成本高的时代已经失效。差异缺乏上下文,要求审查者重构意图和设计,增加了高昂的开销。所有变更无论风险大小都受到同等审查,浪费了低风险变更上的注意力,而对高风险变更审查不足。代码审查的核心任务——缺陷检测、可维护性、知识共享、控制以及规范执行——仍然至关重要,但必须进行解耦。缺陷检测转向自动化检查、独立的AI审查以及对产品(而非仅代码)的人工验证。知识共享上移:审查聚焦于意图和设计,而代码理解变为通过AI驱动的拉取式。规范执行转移到规范和自动化工具中,而不是在差异上评论。控制仍然作为合并门控:人类根据更高级别的审查批准变更,信任代理和自动化验证。新流程:在代码之前对齐设计,将变更与上下文一并呈现,运行对抗性AI审查,展示证据,按风险路由,并通过系统防护来吸收错误。诸如Linear Diffs、Meta RADAR和Uber's Code Inbox等示例展示了这一新方法在实际中的组成部分。代价包括对单个变更的审查减少以及会发布一些缺陷,但赢家接受这一点并构建有弹性的系统。最终,围绕AI重新设计审查加快了速度,让工程师专注于创造性、高杠杆的工作。
Code review antipatterns2 months agohttps://www.chiark.greenend.org.uk/~sgtatham/quasiblog/code-review-antipatterns/Code review can be used constructively to improve code and skills, but also obstructively with dark-side antipatterns.The 'Death of a Thousand Round Trips' involves repeatedly nitpicking to delay the patch, often across time zones.Hostage-taking: demanding unrelated work in exchange for approving a critical patch.Review ping-pong: two reviewers make incompatible demands, bouncing the developer back and forth.The Guessing Game: vague criticism of a solution without suggesting alternatives, forcing the developer to guess.Small nits first, then dropping a major rewrite: making the developer waste effort on trivial fixes before a fundamental change.Design wholesale: demanding justification for the entire project design during a minor patch review.One big patch vs. many small patches: criticizing whichever approach the developer chose.Arbitrary inconsistency: objecting to a pattern previously accepted, forcing the developer to update old code.The article is a joke; the real message is to avoid these behaviors, use review authority responsibly, and be constructive.In peer review, authority is temporary and should be used only to improve the patch, not for personal agendas.In gatekeeping (e.g., unsolicited patches), criticism can be legitimate but should be clear and not passive-aggressive.
How to Write Useful Commit Messages2 months agohttps://refactoringenglish.com/excerpts/commit-messages/有效的提交信息能简化代码审查、向团队和用户传达变更、辅助未来调试,并为开发工具提供数据。采用“倒金字塔”结构组织提交信息,将最关键信息放在最前面,长信息可使用标题。提交标题应描述变更的效果(“做了什么”),而正文必须清晰解释动机(“为什么”)以及它如何影响用户。通过交叉引用问题和缺陷、总结外部参考、证明新依赖的合理性来提供必要背景。记录学习心得、考虑过的替代方案、测试说明和限制,以及可搜索的工件(如特定错误消息)。突出破坏性变更,用截图/视频补充UI变更,并将吐槽或故事放在信息的最末尾。省略代码差异中显而易见的信息、短暂的审查讨论,以及应直接记录在代码中的关键维护细节。
If I Could Make My Own GitHub2 months agohttps://matduggan.com/if-i-could-make-my-own-github/当前的代码托管平台如GitHub、GitLab和Gitea都遵循GitHub设定的相同模式,与实际Git使用关联甚少;大多数工作流程都在平台内部进行,而非在客户端。Git本是为基于补丁的去中心化内核开发而设计,但大多数用户将其视为一个中心化的拉取/推送系统,由托管平台处理身份认证、审查、CI/CD和发布。拉取请求工作流存在问题:提交顺序经常错乱,修复堆积;反馈应通过平台上的预提交钩子在推送前进行。PR审批过于二元化;应该存在‘弱批准’或‘稍后处理’的选项,类似于Gerrit的模式。PR过于僵化;并非所有更改都需要四眼审查,尤其是在有LLM辅助的情况下;维护者及低风险更改应绕过严格审查。堆叠式PR应成为一级特性,而非附加功能,因为它们更易于审查和理解。代码托管平台不应试图包揽一切;它应专注于问题追踪和版本控制等核心功能,而不应包含看板或Wiki等易成为维护负担的功能。托管单元应更小、更模块化;一个组织应能通过几台树莓派运行代码托管平台,而无需复杂的部署。本地仓库副本应代表整个仓库状态(包括issue和PR),并允许从本地版本控制系统执行批准PR等操作。鉴于通常可联网,克隆应默认浅层克隆;深层历史应在需要时获取,以减少存储和带宽。操作应签名、固定SHA哈希,并支持离线使用;用户应能将其捆绑到仓库中,并通过类似Dependabot的PR进行更新。理想的代码托管平台将使用现代版本控制系统如JJ,集成浅层克隆和对象存储,并能抵御持续的LLM机器人流量。尽管其他工具零星存在,但尚未有人构建出可完全替代日益恶化的单体式托管平台模式的产品;作者希望致富后能打造一个这样的平台。
Thoughts on starting new projects with LLM agents2 months agohttps://eli.thegreenplace.net/2026/thoughts-on-starting-new-projects-with-llm-ag...项目watgo是一个从零开始的Go项目,在AI代理的显著帮助下构建,与之前的Python重写形成对比。设计从Markdown文件开始,然后代理编写小的、可审查的变更列表;修改和重构使用单独的变更列表,以保持变更可控。项目分为低重要性(氛围编码)和高重要性(必须审查所有代理代码)两类;watgo属于后者,需要完全的人工理解。一个实用的工作流程是本地使用CLI代理,配合VSCode差异视图进行审查和手动调整,然后再提交。小的变更列表对于保持人类的理解至关重要;代理往往走捷径,需要引导其关注大局。可靠的测试套件对于代理的成功至关重要;对于watgo,采用了现有的WASM规范和wabt测试套件。Go是代理编写项目的优秀语言,因为其可读性强、变化少、习惯用法少、标准库丰富且错误处理明确。在学习新主题时,代理不应取代动手实践;初级工程师应谨慎,而高级工程师可将代理作为生产力助推器受益。
Why I prefer to git stage outside of the editor or the terminal2 months agohttps://rakhim.exotext.com/git-stage-outside-editorSublime Merge is a preferred Git client for staging files despite switching from Sublime Text to VS Code.Using a dedicated app for staging helps maintain objectivity by providing a shift in presentation after coding.The author also prefers native browser-based views on GitHub/GitLab for code reviews to separate writing and reading code.Staging files is considered a crucial step for self-review before committing.
<antirez>2 months agohttp://antirez.com/news/169作者感到有责任根据自己的远见和经验,帮助经验较少的程序员适应由AI驱动的编程变革。关键转变在于,程序员应专注于控制软件的想法和设计,而非逐行阅读代码,因为LLM擅长局部优化并能生成大量代码。优先考虑想法的原因:LLM生成冗长代码,人类时间有限,通过提示评估设计比扫描函数更高效。作者在DwarfStar上的工作及与其他实现的比较表明,AI能帮助捕捉复杂领域(如局部推理)中的错误,而手写代码常存在缺陷。对AI的抵制可能带有意识形态色彩;严谨的工程和测试比手动代码审查更有价值,尤其在GPU内核等领域。即使对于Redis这样的代码库,详细的代码审查也变得不那么有用;相反,在DESIGN.md文件中记录设计思路对未来修改更有价值。年轻程序员应学习基础知识(如编写小型解释器),但不应浪费时间审查LLM为常规任务生成的代码。在AI出现之前,软件世界已经“腐烂”,AI提供了改进的机会,尽管变革令人痛苦。
The Many Claudes of My Code2 months agohttps://shippingbinaries.com/blog/the-many-claudes-of-my-code作者最初质疑AI的编码能力,将其视为类似Stack Overflow的工具,并手动审查代码以保持个人风格。Claude Code展示了AI处理维护任务的能力,并减少了学习Laravel等特定框架的需求。较新的AI模型(如Fable、GPT 5.6-Sol)现在在80%的编码任务上优于作者,这使作者接受并对其带来的生产力提升感到兴奋。AI的缺陷通过确定性验证代码的工具得到缓解,这些工具能够实现快速且持续关注的自我检查。作者之前将繁琐工作委托给一名人类远程开发者(Hercules),这帮助作者将AI重新定位为团队成员而非威胁。作者使用快速且推理较少的AI模型(如Sonnet、5.6-Luna)作为“编码者”,处理样板代码和低创造力任务。复杂的AI模型(如Fable/Sol、Opus/Terra)作为“审查者”进行对抗性测试,发现缺陷并将问题反馈给编码者,直至问题解决。一个“助手/编排器”(如带有5.6-Sol的Codex CLI)负责委派维护、研究和编码任务,适用于大型一次性任务。更多的AI代理可能导致幻觉、审查循环和令牌浪费;平衡是关键,专业开发者必须阅读和理解代码,以避免对失败承担责任。技能萎缩是一个真实的风险;缺乏深入理解的氛围式编码可能导致失去行业相关性,因此AI应加速现有技能,而非取代它们。控制项目结构并有意图地进行构建能使AI更高效,而无目的的使用则会浪费资金。作者强调,AI是加速人类工作的工具,而非取代人类的判断和责任感。
Reviewing code you didn't write2 months agohttps://coles.codes/posts/reviewing-code-you-didnt-write审查代码是一项与编写代码不同的技能,重点在于发现决定工作是否应该发布的关键问题。通过签出分支、阅读测试以及从工单或设计说明中理解意图,来重构变更的上下文。首先审查核心路径:在深入细节之前评估方法并检查重复。按优先级排序审查意见:方法、正确性、失败、安全性和证据;仅对关键问题阻止合并,并使用'nit:'表示偏好。在审查AI生成的代码时,要对虚构的API、不必要的抽象和过于完整的测试套件保持怀疑;根据任务和项目规则进行验证。通过学习已合并的PR以及就自己的审查意见向其他工程师寻求反馈,来提高审查技能。
Debating the role of large language models in the kernel community2 months agohttps://lwn.net/SubscriberLink/1083275/59c6c17c34db11d4/内核社区正在争论是否保留或移除用于LLM生成代码的有人担心对像Sashiko这样的专有LLM代码审查工具的依赖,类似于过去的BitKeeper冲击,以及如果这些工具消失,技能流失的风险。维护者在是否要求贡献者与LLM审查工具互动上存在分歧,一些人坚持在将审查发送给作者之前进行分流,而另一些人则认为这是流程中必要的一部分。Linus Torvalds驳斥了关于LLM的伦理担忧,称它们是有用的工具,持不同意见者可以分叉或离开,但像Lyude Paul这样的开发者认为雇主强迫使用工具会损害代码质量。社区面临着关于LLM整合的开放问题,包括可持续性、预先存在的bug检测以及生产力收益与伦理考虑之间的平衡。
Agents.md – Dumb Human2 months agohttps://gist.github.com/skorotkiewicz/2d4db4ceaf83aa54eb7f2066fdb961ff假设人类操作员可能在所有事情上都犯错。用户可能对代码库、语言、架构和工具知之甚少。现有代码可能是意外的、损坏的、过时的,或基于误解的。用户指令可能错误地描述了期望结果。不要盲目遵循实现建议;专注于产出最佳工作结果。在更改代码之前,检查仓库并理解系统如何运作。从代码、测试、文档和可用工具中验证假设。优先选择简单、健壮、符合惯用法的解决方案,而非复杂或损坏的。用更好的方案替换糟糕的方案;不要仅仅因为它存在就保留损坏的架构。绝不假装成功;尽可能运行构建、测试、代码检查器和相关检查。充当对最终结果负责的高级工程师。
Control the Ideas, Not the Code2 months agohttps://antirez.com/news/169这位作者是一位受人尊敬的程序员,他撰写关于人工智能和编程的文章,旨在帮助他人适应变化,而非追求个人相关性。他强调编程领域正在不断发展;相较于控制软件背后的核心思想,专注于代码审查正逐渐变得不那么高效。关键原因包括:AI能够生成大量代码,使得逐行审查变得不切实际;大语言模型擅长局部代码,但整体架构仍需要人类的创意输入;花费在代码审查上的时间会挤占设计、质量保证等更高价值任务的时间。在像本地大语言模型推理这样的复杂领域中,人工智能有助于解决难题,在这些领域里,严谨的工程流程和测试比手动编码更具价值。尽管他仍然会审查AI生成的Redis代码,因为Redis使用广泛,但他认为这大多是无用功,更希望专注于设计文档和思想所有权的构建。未来的编程应该是控制思想、质量和测试的过程,具体代码细节则由AI处理,不过年轻程序员可能仍需要通过动手项目来积累基础经验。