两看相厌:Agent 和传统软件,都觉得对方是屎山

硅星人Pro 2026-03-30 11:11

ESSAY

 

一个传统后端工程师看 Claude Code 自动生成的代码,命名混乱,不遵守团队规范,几百行逻辑挤在一个文件里。他的评价:屎山

反过来,一个跑在 Claude Code 上的 agent 试图调用这位工程师维护了三年的系统。登录要 session,改个配置要导航五层菜单,接口文档是给人类读的散文体,报错信息是一句自然语言弹窗。agent 的评价大概也差不多

两边都觉得对方不堪用。这个状态,叫「两看相厌」

                      人类工程师                               Agent                               命名混乱,不遵守规范                            几百行塞一个文件                            没有模块化,写完就扔                            不可维护                               鉴权体系对 agent 无效                            状态绑在 UI 组件里                            更新了没人通知 agent                            配置要导航五层菜单                                                                    两边都对,两边都嫌弃                    历史上每次出现这种互相嫌弃,都是范式切换的信号        

历史上每次出现这种互相嫌弃,都是范式切换最诚实的信号。汇编程序员嫌高级语言臃肿浪费,高级语言嫌汇编不可维护。C 程序员嫌 Java 慢得离谱,Java 嫌 C 的手动内存管理是野蛮操作。每一次,双方在各自的评价体系里都是对的

但最终的结局,都是出现了一个新的中间层,让两边不再需要直接面对对方

过去每一次,都是两代程序员之间的事。这一次,其中一方换了物种

 

人类工程师的嫌弃清单

AI 写的代码确实有一堆问题

不遵守团队约定的命名规范、目录结构、注释风格。几百行逻辑塞进一个文件。没有模块化,没有抽象层,写完就扔。在任何一个 code review 里,这种代码都会被打回

这些嫌弃完全合理,在人类工程师的评价体系里

但这里有一个前提值得拆开看:人类对「代码质量」的直觉,建立在一个假设上。这段代码要被人读很多遍。要被维护,要被改,要被另一个人在凌晨三点 debug 的时候读懂

如果代码只被执行一次然后丢弃呢?评价标准就应该从「可读性」变成「执行正确性」。这两个标准选出来的代码,长得完全不一样

屎山之所以是屎山,前提是有人要维护它。取消这个前提,评价就翻转了

而且这一侧的问题有一个重要特征:它在自动消解。明年的模型写出来的代码就比今年干净一大截,后年更好。这条曲线在自动上升

记住这个特征,后面会用到

 

Agent 那边嫌弃什么

Agent 看传统软件,嫌弃的东西更多,也更根本

鉴权。传统软件的登录、session、cookie,整套体系围绕一个假设设计:有一个人坐在屏幕前,持续操作。agent 的调用模式是无状态的、高并发的、随时中断再随时恢复的。这套假设从根上就不匹配

状态耦合。传统前端框架把数据状态绑在 UI 组件树上。agent 想操作一个数据,必须先理解组件的嵌套层级。CLI Anything 做的事情之一,就是把数据从 UI 组件里解绑出来,让 agent 能直接触达

版本更新。人类有 changelog 和迁移指南可以读。agent 需要的是机器可读的接口变更 diff。现在几乎没有软件提供这个东西。每次软件更新,agent 之前建立的调用逻辑就可能失效

配置体系。传统软件的设置页面有几十上百个选项,散落在各处,给人类慢慢调。agent 需要的是一个声明式的配置 schema,一次性把所有偏好注入进去。要改一个设置项,可能得导航五层菜单

           Agent 眼中的传统软件                               鉴权                假设有人坐在屏幕前                agent 无状态、高并发                               状态耦合                数据绑在 UI 组件树上                改数据必须理解组件嵌套                               版本更新                changelog 是给人读的                agent 需要机器可读 diff                               配置体系                设置散落在各层菜单                agent 需要声明式 schema                                共同根源                全部围绕「操作者是人类」这个假设设计                当操作者换成 agent,假设本身就塌了                               这些问题不会随模型迭代自动消解        

这四件事有一个共同点:全部围绕「操作者是人类」这个假设设计。当操作者换成 agent,假设本身就塌了

几百万个已经部署的服务不会自己长出给 agent 用的接口

和上一段对比一下。人类嫌 AI 代码烂,这个问题会随着模型变强自动消解。但 AI 嫌传统软件不好用,这个问题不会自动消解。已经部署的几百万个服务,不会自己重新设计鉴权体系,不会自己把状态从 UI 组件里解绑,不会自己生成机器可读的版本 diff

这是一个根本性的不对称

 

心智模型断了

上面讲的是接口层面的冲突。再往下一层,还有一个更深的断裂

人类程序员理解一个系统,靠的是「心智模型」。入职一家公司,花几周甚至几个月,把整个系统的架构、数据流、模块关系内化成脑子里的一张地图。之后的每一次修改,都在这张地图上定位、操作

Agent 没有这张地图。每次进入一个代码库,都是从零开始构建上下文

过去几十年的代码组织方式,都预设了一件事:读者已经了解整体架构。文件拆分、模块划分、命名约定,全部建立在这个预设上。一个有心智模型的人,看到 UserService 就知道去哪里找 UserRepository。agent 不知道,它需要先遍历目录结构,读若干个文件,才能建立起局部的上下文

这也解释了一个让人类工程师很难接受的现象:agent 倾向于把逻辑集中在一个文件里。从 context window 管理的角度看,减少文件跳转就是减少 token 消耗,集中在一起反而是最高效的组织方式

你把代码拆成 200 个文件叫工程规范,agent 把代码写进 1 个文件叫 context 效率。谁是屎山,取决于你问谁

人类几十年积累下来的工程规范(模块化、关注点分离、DRY 原则),在 agent 的评价体系里,大概率需要被重新审视。这些规范存在的理由是帮助人类协作。如果协作者换了物种,规范本身就得跟着变

 

GitHub 上出现了非人类的绿点

Agent 已经开始往 GitHub 上提交 PR 了

传统开源社区有一套围绕「人」建立的协作制度。人类写 PR,人类 review,人类 merge。你的 GitHub profile、commit 历史、社区里的口碑,构成了一个完整的声誉体系。谁靠谱、谁的代码可以信任,大家心里有数

但当 agent 开始参与,这套体系就遇到一个很实际的问题:你怎么给一个 agent 建立 reputation?一个 agent 的 PR 应该由谁来 review?如果答案是「由另一个 agent 来 review」,那人类在这个闭环里扮演什么角色?

GitHub 的 contribution graph 里开始出现非人类的绿点,但没有人知道该怎么给它们算 reputation

开源社区大概是第一个正面撞上这个问题的地方。但这个问题会蔓延到所有围绕「人」组织的协作制度里:代码审查、质量认证、专业资质、知识产权归属

这些制度的底层假设都是:参与者是人。当参与者不全是人的时候,制度本身需要重建

 

这个不对称里的机会

「两看相厌」里最值得盯住的,是那个不对称

AI 对传统软件的嫌弃,催生的是一个真实的改造市场。谁帮传统软件长出 agent 可用的接口,谁就是这次范式切换里的基础设施提供商。CLI Anything、MCP、飞书 CLI,都是这个方向上不同的入口

它们做的是同一件事:帮现有软件「再接口化」,从为人类编译,变成同时为 agent 编译

           四类服务的「数字层占比」与被接管速度                                                        接管快   接管慢                       纯数据服务                Boss 直聘、小红书、Twitter                数字层占比最高,被接管速度最快                               物理交付服务                美团、Uber、顺丰                agent 做前半段,最后一公里需要物理介入                               法人背书服务                银行转账、合同签署、投行报告                数字层可自动化,但合规要求真实责任主体                               专业黑盒服务                FFmpeg、Blender、CAD 引擎                agent 离不开它们,但会重新定义入口        

纯数据驱动的服务(Boss 直聘的工作信息、小红书的用户内容),数字层占比最高,被 agent 接管的速度最快

触发物理世界交付的服务(美团、Uber、顺丰),数字端的操作本身很简单,但最后一公里需要物理实体介入。agent 只能完成前半段

需要法人背书的服务(银行转账、合同签署、投行报告),数字层完全可以自动化,但合规框架要求背后有真实的责任主体

依赖几十年积淀的专业黑盒的服务(FFmpeg、Blender 的几何求解器、CAD 引擎),agent 离不开它们,但会重新定义入口

一个判断框架:你投的公司,在这四类里属于哪一类?它的服务中,数字层占整个价值链的比例有多大?这个比例越高,被 agent 接管的速度越快,被「再接口化」的价值也越大

 

「两看相厌」不会永远持续

历史上每次范式冲突的结局,都是出现了一个第三方的中间层,让双方各自面对中间层,不再直接面对彼此。汇编和高级语言之间出现了编译器,C 和 Java 之间出现了 JVM

历史上每次「两看相厌」的结局,都是第三个物种出现

这次的「第三个物种」,大概率是一种「双栖软件」。天然同时暴露人类界面和 agent 接口,两边的数据和状态实时同步。人类在 GUI 里编辑到一半的东西,agent 可以在 CLI 里接着完成。agent 在 CLI 里产出的东西,人类可以在 GUI 里继续调整

最先做出这种双栖架构的团队,可能拿到下一代软件基础设施的定义权

AI 不吃软件,AI 吃接口

软件会活着。FFmpeg 会活着,Blender 会活着,CAD 求解器会活着。但它们的入口会被重新定义

说不准这个中间层最终长什么样。MCP 是一种可能,CLI Anything 是一种可能,某种还没被命名的东西也是一种可能。窗口期大概率很短,一两年内就会有一个被广泛采纳的方案出现

现在唯一确定的是:两边都在嫌弃对方,而两边都是对的

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
软件
more
TASKING携手芯来科技推动RISC-V汽车软件创新
汽车早餐 | 东风香港拟增持岚图汽车不超2.5亿元股份;恒大汽车母公司案一审开庭;汽车软件标准工作组正式成立
美防务技术企业Anduril发起AI无人机竞速赛,聚焦自主飞行软件能力
App 开始消失,我们正在进入一个「不会用软件」的时代
蔚来启动大规模软件升级召回,24.6万辆初代车型涉仪表黑屏隐患
西门子,重磅收购!工业软件“超级闭环!
从 openEuler 兼容性测试看 RISC-V 软件生态协同缺口
西门子、PTC等全球工业软件巨头,押注三大前沿领域!
美国金融科技公司Marquis遭勒索软件攻击,超67万人敏感金融信息被盗
编程奇点逼近,程序员斩杀线就在眼前!软件版YouTube时刻在发生
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号