ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI时代人机协作新范式:从代码评审到内容去AI味的四大开源实践

AI时代人机协作新范式:从代码评审到内容去AI味的四大开源实践 1. 这期周刊里真正值得花时间看的四件事Github周刊2026W38这一期信息密度比前几期明显高了一截。四个条目分别落在四个完全不同的方向上阿里把内部用了多年的代码评审工具开源了、有人做了一套对ADHD注意力缺陷多动障碍人群友好的输出方案、智能体运行底座ECC正式露面、以及一个专门给文本去AI味的项目。这四个东西乍看没什么关联但如果你把它们放在一起看会发现它们其实都在回答同一个问题——当AI把内容生产的门槛拉到地板之后人到底该在哪个环节重新介入。代码评审工具解决的是人怎么审机器写的代码ADHD友好输出解决的是信息怎么排布才不让人崩溃ECC解决的是智能体跑起来之后怎么不失控去AI味解决的是机器写的东西怎么才能被人接受。四个方向一个内核。这篇我会按我自己的使用顺序来拆先讲阿里那个代码评审工具因为它是这期里最重的一个工程价值最高再讲ECC这个智能体运行底座因为它是基础设施层的东西理解它之后你看其他智能体项目会顺很多然后是ADHD友好输出这个偏方法论但实操性极强最后是文本去AI味这个最容易被当成小工具但其实背后的思路值得单独拎出来说。适合谁看如果你在团队里负责代码质量、在折腾智能体落地、或者单纯觉得AI生成的内容读起来不对劲这篇应该都能给你一些能直接抄的东西。我会尽量把每个项目的核心机制、我实际跑下来的感受、以及踩到的坑都写清楚不堆概念。2. 阿里代码评审工具开源它到底解决了评审里的哪个环节2.1 为什么大厂内部工具一开源就容易水土不服先说一个我观察到的现象大厂开源的内部工具落地成功率其实不高。原因不是工具本身差而是大厂内部工具是长在特定土壤里的——它有配套的代码规范、有强制的CI流程、有一整套内部平台做支撑。一旦脱离那个环境工具就变成了半成品。所以拿到阿里这个代码评审工具的第一件事不是急着装而是先搞清楚它到底切的是评审流程里的哪一段。代码评审这件事粗分可以拆成四段提交前的静态检查lint、格式、明显的空指针、未使用变量这类机器能100%判定的问题。变更影响面分析这次改动动了哪些模块、哪些调用方可能受影响、有没有漏改的地方。逻辑与设计评审这段代码写得对不对、设计合不合理、有没有更好的写法。规范与风格一致性命名、注释、分层是否符合团队约定。大部分开源评审工具做的是第1段和第4段因为这两段最容易规则化。但真正吃掉评审者大量时间的其实是第2段和第3段。阿里这个工具的价值点我判断主要落在第2段——变更影响面分析这也是大厂内部评审最痛的地方。2.2 变更影响面分析评审里最容易被低估的环节我举个具体的场景你就明白了。假设你改了一个工具类里的方法签名把参数从两个变成三个。这个改动本身可能就十行代码review的时候看起来人畜无害。但这个方法的调用方可能有三十处分布在八个模块里其中有两处是反射调用的静态扫描扫不出来。评审者如果只看diff是绝对发现不了这个问题的。他要么靠记忆要么靠全局搜索要么就漏了。漏了的后果就是上线之后某个边缘路径报错排查半天。变更影响面分析要做的就是给定一个diff自动算出它的影响半径。技术上通常靠调用图call graph加数据流分析。调用图告诉你谁调用了这个方法数据流分析告诉你这个参数的变化会传播到哪里。两者结合才能给出一个相对完整的影响面。阿里这个工具在这块的实现思路我推测是基于它们内部的代码索引服务做的——因为纯靠单机静态分析跨模块、跨仓库的调用关系是算不出来的必须有一个全局的代码图谱。这也是为什么这类工具脱离大厂环境会打折你没有那个全局索引。2.3 实际接入时我建议的落地顺序如果你打算在团队里试这个工具我的建议是不要一上来就全量接入按下面这个顺序来成功率会高很多第一步只开只读模式。让它跑分析、出报告但不阻断任何提交。先跑两周看看它的误报率和漏报率让团队对它的输出建立信任。第二步挑一个模块试点。选那种调用关系相对清晰、改动频率中等的模块不要选核心链路风险太高也不要选边缘模块样本太少看不出效果。第三步把它的输出接进现有的评审流程。注意是接进不是替换。评审者该看的还是得看工具的输出作为参考信息附在MR描述里。第四步根据误报情况调规则。这一步最花时间但也是最关键的。默认规则一定不完全适配你的代码库必须调。提示接入这类工具时最大的阻力往往不是技术而是评审者的心理。如果工具一上来就报一堆问题评审者会觉得你在教我做事抵触情绪一起来后面就推不动了。所以第一步的只读模式非常重要先让它证明自己靠谱。2.4 一个容易被忽略的坑反射和动态调用我在测试类似工具时踩过最深的坑就是反射调用和动态派发。静态分析工具对这两类调用基本是瞎的。比如Java里的Class.forName、Spring的依赖注入、Python里的getattr这些在调用图里都是断的。阿里这个工具应该也逃不过这个限制。所以你在看它的影响面报告时要特别留意那些看起来影响面很小的改动——如果这个改动涉及的是接口、抽象类、或者任何可能被动态调用的地方报告很可能是低估的。我的做法是对涉及接口和反射的改动人工再补一轮全局搜索。搜索方法名、搜索字符串常量、搜索配置里的类名。这一步花不了几分钟但能堵住最大的漏网之鱼。3. ECC智能体运行底座智能体从Demo到生产之间缺的那一层3.1 为什么大部分智能体项目卡在Demo阶段智能体这个东西做个Demo太容易了。调个模型API写个循环让它能调几个工具半小时就能跑起来一个能查天气、能算数、能搜网页的智能体。但你要把它放到生产环境里让它7x24小时跑、让它处理真实用户的请求、让它出错的时候能恢复那就是另一回事了。中间缺的那一层就是运行底座。ECC我理解它的定位是Execution Control Core执行控制核心要解决的就是这一层的问题。具体来说它要管四件事生命周期管理智能体什么时候启动、什么时候销毁、异常了怎么重启。资源隔离多个智能体同时跑怎么保证它们不互相干扰一个崩了不拖垮全部。状态持久化智能体跑到一半挂了重启之后能不能从断点继续。可观测性智能体在干什么、调了哪些工具、花了多少token、哪一步慢了这些得能看见。这四件事Demo阶段一件都不用管生产阶段一件都不能少。3.2 ECC的执行模型把智能体当成有状态的进程来管我研究了一下ECC的设计思路它最核心的一个决策是把智能体当成有状态的进程来管理而不是当成无状态的函数。这个决策听起来很技术但影响很大。无状态函数的意思是每次调用都是独立的输入一样输出就一样不需要记住任何东西。有状态进程的意思是它有一个持续存在的上下文会随着时间变化需要被保存和恢复。大部分智能体框架是按无状态函数设计的——每次对话重新组装上下文重新开始。这在简单场景下没问题但一旦智能体需要执行长任务比如帮我调研十个竞品然后写份报告无状态设计就崩了跑到第五个竞品的时候进程挂了前面四个的成果全丢。ECC的有状态设计意味着它需要一套检查点checkpoint机制。智能体每完成一个关键步骤就把当前状态序列化存下来。挂了之后从最近的检查点恢复而不是从头再来。3.3 检查点机制的设计取舍检查点这件事做起来有一堆取舍我列几个关键的取舍点存得频繁存得稀疏恢复精度高几乎不丢进度低可能丢一大段存储开销大小性能影响每次存都有IO开销影响小实现复杂度高要处理并发写低ECC具体怎么选的我没有看到详细文档但从它的定位生产级底座推测应该是分级检查点关键节点比如工具调用完成、外部API返回强制存中间过程比如模型推理的token流不存。这样在恢复精度和性能之间取了个平衡。还有一个更隐蔽的取舍检查点存的是什么。是存完整的对话历史还是存一个可以重建对话历史的引用前者简单但占空间后者省空间但重建逻辑复杂。如果智能体调用了外部工具工具的执行结果要不要存存了可能过期不存恢复之后要重跑。注意如果你自己在设计智能体的状态管理我的经验是优先存决策依据而不是决策结果。比如智能体决定调用某个工具你要存的是它为什么决定调这个工具当时的上下文和推理而不是工具返回了什么。因为工具返回的结果可能变化但决策逻辑是稳定的。恢复的时候用旧逻辑加新结果往往比直接用旧结果更合理。3.4 资源隔离为什么智能体比普通服务更难隔离普通微服务的资源隔离相对成熟每个服务一个容器CPU内存限额网络策略控制。但智能体的隔离要复杂得多因为它有三类特殊资源模型调用配额一个智能体如果把token额度跑光了其他智能体就没得用了。这需要配额管理。工具调用权限智能体A能调的文件系统、能访问的数据库智能体B不一定能调。这需要权限隔离。上下文窗口这个是模型层面的限制但多个智能体共享一个模型实例时上下文怎么分配是个问题。ECC作为底座这三类资源都得管。我特别想说的是工具调用权限这块因为它直接关系到安全。一个能执行shell命令的智能体如果权限没管好理论上可以删掉整个服务器。生产环境里智能体的工具权限必须是白名单制而且最好在底座层面强制而不是靠智能体自己遵守。3.5 可观测性智能体的黑盒问题怎么破智能体最难调试的地方在于它是个黑盒。你给它一个输入它经过一堆推理和工具调用给你一个输出。中间发生了什么如果不做记录你完全不知道。ECC的可观测性设计我理解至少要覆盖三个层次Trace层一次完整的智能体执行从头到尾的调用链。哪个步骤调了哪个工具耗时多少。Span层每个步骤内部的细节。比如模型推理这一步输入是什么、输出是什么、用了多少token。Metric层聚合指标。成功率、平均耗时、token消耗趋势、工具调用分布。这三层里Trace层最重要因为它能让你复现问题。我见过太多团队智能体出了问题只能靠再跑一次看看因为没有trace根本不知道上次为什么错。4. ADHD友好输出信息排布本身就是一种工程4.1 为什么输出格式值得单独做一个项目第一次看到ADHD友好输出这个项目名我以为是给ADHD人群做的辅助工具。看了之后发现不是——它是一套通用的输出格式规范只是这套规范恰好对ADHD人群特别友好但对普通人同样有效。这就很有意思了。ADHD人群的核心困难是什么注意力难以维持、工作记忆容量小、容易被无关信息干扰、需要即时反馈。你把这四条翻译成信息设计的语言就是信息要短不能有大段文字。重点要前置不能让人找。结构要清晰不能有歧义。反馈要及时不能让人等。这四条其实对所有人都是好的信息设计原则。只是普通人能忍受糟糕的格式ADHD人群不能。所以这个项目的价值在于它把信息设计的标准拉到了最不能忍受糟糕格式的人也能接受的水平。4.2 具体怎么排布几个可以直接抄的规则我看了这个项目的输出示例总结了几条可以直接用的规则第一条结论先行而且要用视觉上突出的方式。不是综上所述我们认为……而是把结论放在最上面加粗或者用引用块。读者扫一眼就知道你要说什么。第二条每段不超过三行。超过三行的段落强制拆开。这不是为了好看是因为工作记忆一次只能装这么多。三行以上的信息读者读到后面就忘了前面。第三条用列表代替并列关系的长句。这个方案有三个优点第一是……第二是……第三是……这种句子改成列表。列表的视觉边界清晰读者可以逐个处理不用在脑子里做切分。第四条重要信息重复。这个反直觉——我们从小被教育不要重复。但对ADHD人群以及所有注意力容易断的人重复是必要的。开头说一遍结尾再说一遍中间用加粗强调一遍。三次重复才能保证记住。第五条给出明确的下一步。不要以以上就是全部内容结尾要以接下来你可以做X结尾。ADHD人群需要即时反馈和明确指令模糊的结尾会让他们卡住。4.3 把这套规则用在技术文档上的效果我试着把这套规则用在我自己写的技术文档上效果比我预期的好。最明显的变化是文档的阅读完成率。以前一份设计文档发出去之后大部分人只看开头现在因为结论前置、段落短、有明确的下一步看完的人明显多了。还有一个意外收获写文档的时间反而短了。因为规则强制我把信息拆细、把重点前置我在写的过程中就被迫想清楚了到底什么是最重要的。以前写文档是想到哪写到哪现在是先定结论再补论据思路清晰很多。提示这套规则用在代码注释上也很有效。我现在的习惯是每个函数的注释第一行必须是这个函数做什么结论第二行才是怎么做的细节。这样别人扫一眼就知道要不要细看。4.4 一个反例什么时候不该用这套规则这套规则不是万能的。我踩过一个坑在需要建立信任的场景里过度精简反而有害。比如你要向一个不熟悉你的团队解释一个复杂的技术决策如果你上来就是结论用方案A然后列三条理由对方很可能会觉得你凭什么这么说。这时候你需要的是先建立上下文再给结论——先讲清楚问题的背景、约束条件、考虑过的方案最后才落到结论。所以这套规则的适用边界是读者已经信任你、或者读者只想要答案的场景。如果读者需要被说服你需要的是另一套结构——先共情、再论证、最后结论。5. 文本去AI味不是改词是改信息的组织方式5.1 AI味到底是什么味先定义问题。AI味这个词大家都在用但很少有人能说清楚它到底是什么。我总结了一下AI生成的文本有几个特征过度使用连接词首先其次然而因此综上所述这些词在AI文本里的密度远高于人类写作。对称结构泛滥三个并列的短句、四个并列的要点人类写作不会这么整齐。空洞的形容词强大的高效的全面的深入的这些词不携带信息。回避具体不说这个函数耗时200毫秒说这个函数性能良好。总结癖每段都要总结一下每节都要收个尾。这些特征单独看都不致命但叠在一起读起来就有一种说了很多但什么都没说的感觉。5.2 去AI味的三个层次去AI味这件事我实践下来发现分三个层次难度递增第一层改词。把首先删掉把强大的换成具体的数字把综上所述改成直接说结论。这一层最容易用工具就能做但效果也最浅。改完词之后文本读起来不那么像AI了但骨子里还是AI的。第二层改句。把对称结构打散把长句拆短把被动改主动。这一层需要理解句子的意思工具做不好得人来。改完句之后文本开始有人味了。第三层改信息的组织方式。这是最深的一层。AI组织信息的方式是总-分-总人类组织信息的方式是想到哪说到哪但重点突出。AI喜欢把话说满人类喜欢留白。AI喜欢按逻辑顺序人类喜欢按重要性顺序。这个去AI味的项目我理解它主要做的是第一层和第二层第三层可能有一些规则但很难自动化。因为第三层涉及意图——你得知道作者到底想说什么才能决定怎么组织。5.3 我自己的去AI味流程我现在的流程是这样的分享出来供参考先让AI生成初稿。不纠结AI味先把内容铺出来。通读一遍标出读起来别扭的地方。别扭的地方通常就是AI味重的地方。逐段改。改的时候问自己如果我要跟同事口头说这件事我会怎么说然后按口头说的方式改。删掉所有总结句。AI写的总结句90%是废话删掉不影响理解。加一个具体的例子。每篇至少加一个真实场景的例子这是AI最难伪造的东西。最后读一遍看有没有说了等于没说的句子。有就删。这个流程走下来文本的AI味能去掉七八成。剩下的两三成说实话很难完全去掉因为我自己写东西也受AI影响——用多了AI人的写作习惯也会变。5.4 一个判断标准能不能通过口头测试我判断一段文本有没有AI味用的是一个很土的方法口头测试。把这段文字念出来如果念着别扭、不像人话那就是有AI味。比如通过采用先进的算法我们实现了效率的显著提升——这句话你念出来试试正常人不会这么说话。正常人会怎么说换了个算法快了不少。口头测试的好处是它绕过了所有技巧直接检验文本的人味。因为口语是人类最自然的表达方式AI最难模仿的就是口语的随意性和具体性。注意口头测试不是让你把书面语全改成口语。技术文档该正式还是要正式。口头测试是帮你发现那些书面语伪装下的AI味——那些看起来正式、实际上空洞的句子。6. 把这四个项目串起来看AI时代的内容生产分工6.1 四个项目其实在回答同一个问题回到开头说的。这四个项目表面上是四个独立的方向但内核是一致的AI负责生成人负责判断和介入。代码评审工具AI生成代码人通过评审工具判断代码能不能合。ECCAI智能体执行任务人通过底座控制它别失控。ADHD友好输出AI生成内容人通过格式规范让内容可读。去AI味AI生成文本人通过改写让文本可接受。四个项目四个人介入AI产出的接口。这其实揭示了一个趋势当生成变得廉价判断和介入就变得昂贵。未来的核心竞争力不在于你能生成多少而在于你能判断多少、介入得多准。6.2 我实际用下来的组合建议如果你想把这几类工具用起来我的建议是不要贪多按你的实际场景选如果你是开发团队优先上代码评审工具因为它直接减少线上事故。ECC可以等你有智能体落地需求了再说。如果你在做内容优先用ADHD友好输出的规则因为它零成本、见效快。去AI味工具作为辅助。如果你在搭智能体ECC这类底座是刚需但先想清楚你的智能体要跑多长、要多可靠再决定要不要上这么重的东西。我自己的组合是代码评审工具常开ADHD输出规则内化成写作习惯去AI味工具偶尔用ECC还在观望——因为我的智能体场景还没复杂到需要它。6.3 一个我踩过的坑工具用多了会工具化最后说一个我自己的教训。有段时间我把去AI味工具、格式检查工具、代码评审工具全用上了结果发现自己写东西越来越工具化——每句话都在想这个工具会不会报错写出来的东西虽然挑不出毛病但也没了锐气。后来我调整了策略工具用来做最后一道检查不用来做第一道生成。先按自己的想法写写完再用工具过一遍。这样既保证了质量又保留了个人风格。工具是拐杖不是腿。这个道理说起来简单但用着用着就容易忘。
返回列表