AI Coding 如何重塑软件架构师的工作方式

以 SkyWalking GraalVM Distro 为例,看 AI Coding 如何把一批探索性 PoC 打磨成一条可重复的迁移流水线。

作者:吴晟

这个项目给我最大的启发,不是 AI 能写多少代码,而是 AI Coding 改变了架构设计的试错成本。当一个想法可以很快做成 PoC、跑起来验证、不行就推翻重来时,架构师就更有机会逼近自己真正想要的设计,而不是过早停在"团队现在做得出来"的折中方案上。

这种变化在成熟开源系统里尤其重要。Apache SkyWalking OAP 长期以来一直是一个功能强大且经过生产验证的可观测性后端,但大型 Java 平台该有的问题它一个不少:运行时字节码生成、重反射初始化、classpath 扫描、基于 SPI 的模块装配,以及动态 DSL 执行------这些机制方便扩展,但做 GraalVM Native Image 时全是障碍。

SkyWalking GraalVM Distro 的出现,源于我们把这个挑战当成一个架构设计问题来处理,而不是一次性的移植工程。目标不仅是让 OAP 能以原生二进制运行,更是把 GraalVM 迁移本身做成一条可重复执行、能够持续跟上上游演进的自动化流水线。

如果你想看完整的技术设计、基准数据和上手方式,请阅读配套文章:SkyWalking GraalVM Distro:设计与基准测试

从停滞的想法到可运行的系统

这件事其实很多年前就开始了。在这个仓库创建不久之后,yswdqz 曾花了数个月探索迁移方案。真正做下来才发现,这个项目远比 GraalVM 文档里列出的那些单点限制复杂得多,这项工作最终也因此搁置了很多年。

这段停滞很重要。缺少的并不是想法。成熟维护者通常从来不缺想法,真正稀缺的,是把这些想法真正做出来的时间、人力和精力。即使架构师已经看到了几条很有前景的路线,有限的开发资源也会迫使大家更早做出权衡:优先选择实现成本最低的方案,而不是那个更干净、更可复用、更经得起未来变化的方案。

这种情况非常普遍,并不特殊。在开源社区里,很多工作依赖志愿者或有限的企业赞助;在商业产品里,约束的形式不同,但本质仍然一样:路线图承诺、团队规模和交付压力都会让工程资源始终紧张。在这两种环境里,很多好想法被放弃,并不是因为它们错了,而是因为要把它们真正验证清楚、实现完整,成本太高。

还有一个同样重要的约束:架构师通常同时也是非常资深的工程师,而不是一个可以全职扑在实现细节上的人。问题在于个人编码精力有限、时间高度碎片化,同时还要在代码尚未出现之前,不断向其他资深工程师解释自己的设计意图。传统上,这种解释主要通过图、文档和沟通完成。它很慢、信息损失大,而且充满不确定性。我们都体验过"传话游戏":哪怕是很简单的意思,也很容易被误解,而等误解真正暴露出来时,时间已经过去很多了。

到了 2025 年末,AI Coding 让"同时尝试多条路线"这件事终于变得现实。我们不必再因为实现能力稀缺而过早接受折中,而是可以在多个设计之间来回切换,用代码验证,快速淘汰弱方案,持续迭代,直到架构本身变得足够稳固、足够实用、足够高效。

这种设计自由度至关重要。GraalVM 文档对单个限制讲得很清楚,但成熟 OSS 平台遇到的是一整套彼此牵连的系统性问题。只修补一个动态机制远远不够。要让 native image 真正落地,我们必须把整类运行时行为改造成构建期产物和自动生成的元数据。

在这条路的早期历史中,还有一座非常具体的大山。那时上游 SkyWalking 仍然大量依赖 Groovy 来处理 LAL、MAL 和 Hierarchy 脚本。理论上,这只不过是另一个"不支持运行时动态行为"的例子;但在实践中,Groovy 是整条路径上最大的障碍。它不仅意味着脚本执行,还意味着一整套在 JVM 里极其便利、在 native image 里却极其不友好的动态模型。

为了跨过这道坎,我们围绕 AOT-first 模式重新设计了 OAP 的核心引擎。早期实验必须直接面对 Groovy 时代的运行时行为,并尝试不同的脚本编译方案来绕过去。最终方案走得更远:对齐上游编译器流水线,把动态生成前移到构建期,并引入自动化机制,让这条迁移路径在上游持续演进时依然保持可控。具体来说,就是把 OAL、MAL、LAL 和 Hierarchy 的生成过程变成构建期预编译器的输出,而不是继续保留为启动期的动态行为。

AI Coding 如何改写架构迭代

这次转变的关键,并不只是"写代码更快了"。AI 真正改变的,是想法、原型、验证和重设计之间来回迭代的速度。围绕同一个问题,我们可以很快做出几个可运行的 PoC,迅速淘汰不成立的方向,再把值得保留的抽象慢慢沉淀成一套连贯的迁移系统。

这并不会削弱人的架构价值,反而会放大它。哪些行为应该前移到构建期,哪些地方应该保留可配置性,哪里应该引入 same-FQCN 替换,如何让上游同步保持可控,以及哪些抽象值得不惜代价保留下来,这些判断仍然只能由人来做。不同的是,AI 的速度让我们终于有机会把这些更好的设计真正做出来,而不是过早退回到更简单、也更差的折中方案。

这才是软件架构师工作方式真正发生变化的地方。过去,架构师往往已经知道更干净的方向在哪里,但有限的工程产能会逼着那个愿景退回到一个更便宜的妥协方案。现在,架构师在某种意义上又重新变回了"能快速动手的人":可以直接用代码把思路搭出来,把高层抽象落成接口,再用真实运行的实现去证明设计。

这不仅改变了实现,也改变了沟通方式。在开源里,我们常说:talk is cheap, show me the code。在 AI Coding 时代,"把代码拿出来"这件事变得容易多了。设计不再那么依赖一个缓慢的、自上而下的翻译过程:从想法到文档,再到解释,再到实现。代码可以更早出现,也可以更早跑起来。

这也让其他资深工程师受益。他们不必只靠图、会议或长篇解释来还原整个设计,而是可以直接审查抽象、阅读真实代码、运行它、质疑它,并在具体实现上一起打磨。这让架构协作更快、更清晰,也少了很多沟通误差。

也正因为如此,我总觉得今天很多 AI 讨论有点跑偏。很多项目确实很有趣、也很好玩,拿来体验当然没问题,但高级工程工作并不会因为"给代码库接了个 agent"就自然变好。真正重要的,不是哪个 demo 看起来最炫,而是哪些工程能力真的被放大了,同时软件开发本身的纪律有没有被保留下来。

对于架构师和资深工程师来说,这里真正重要的能力包括:

  • 快速做对比式原型验证:不是只用 slides 和文档去论证某个想法,而是直接把多个方案做成可运行代码来比较。
  • 大规模代码理解能力:能在大量模块之间快速阅读,同时保持对整个系统的全局认识。
  • 系统性的重构能力:把基于反射、依赖运行时动态行为的路径,系统性地改造成适配 AOT 约束的设计。
  • 搭建自动化的能力:当一个迁移步骤在每次上游同步时都必须重做一次,靠手工处理本身就很费时费力,而且越往后只会越累。AI 让我们真正有条件去投资生成器、清单、一致性检查和漂移检测,把重复的人力劳动变成可重复的自动化流程。
  • 大范围审查能力:在很大的代码面上检查边界条件、兼容性约束,以及方案是否经得起反复执行。

这些能力也都体现在最终的设计结果里。same-FQCN 替换为 GraalVM 特定行为建立了清晰、受控的边界;反射元数据不再依赖手工维护的猜测清单,而是直接从构建产物中生成;各种清单机制和漂移检测,则把原本模糊的"上游同步风险"变成了显式的工程工作流。

对于初级工程师,我觉得这里的启发同样重要。AI 不会让架构设计、系统约束、接口设计、测试和可维护性这些基本功变得不重要。恰恰相反,这些能力只会变得更重要,因为它们决定了"被加速的实现"最终产出的是一个可持续演进的系统,还是只是更快地制造出更多代码。真正的杠杆来自工程判断力,而不是新鲜感。

Claude CodeGemini AI 在整个过程中都扮演了工程加速器的角色。在 GraalVM Distro 这个项目里,它们具体帮我们做了几件事:

  • 把迁移思路直接做成可运行代码:不是争论哪个方向可能行得通,而是把多个真实原型做出来、跑起来、比较掉,把不成立的方向淘汰掉。
  • 重构重反射、重动态的代码路径:把不适合运行时的模式系统性替换成 AOT 友好的实现方式。
  • 让上游同步真正可持续:每次 distro 从上游 SkyWalking 拉取变更后,元数据扫描、配置再生成和重新编译都必须再来一次。AI 帮助我们把这些过程做成流水线,使每次同步都变成一个可控、且大部分自动化的过程,而不是一次比一次更长的手工重复劳动。
  • 在大范围内审查逻辑和边界情况:特别是在功能对等性比纯实现速度更重要的地方。

最终产出的,不只是一次大重写,而是一套可重复的系统:预编译器、manifest 驱动的加载、反射配置生成、替换边界,以及让上游迁移可审查、可自动化的漂移检测机制。

如果你想看这种开发方法背后的更广泛背景,可以读这篇文章:在成熟开源大型项目中实践 Agentic Vibe Coding:软件工程与工程控制论还在延续。这篇文章则是这个故事的下一步:不仅是在一个成熟代码库里增强功能,而是重新激活一项曾经停滞的工作,并把它真正做成可运行系统。

真正改变的到底是什么

这个项目最重要的结果,并不是一张 benchmark 表。基准数据当然属于 distro 本身,而且它们很重要,因为它们证明这套系统是真实可运行的。但对这篇文章来说,更深层的变化发生在方法论层面:AI Coding 改变了我们探索、验证和打磨架构方案的方式。

过去,架构往往更像一项以文档为主、后面拖着漫长而昂贵实现过程的活动。现在,我们可以更快地在想法、原型、比较和重设计之间切换。这让我们真正有机会去追求更高抽象层次的方案,保留更干净的边界,并建设那些让迁移过程可持续维护的自动化机制。

这项工作的技术证据,就是 SkyWalking GraalVM Distro 本身:它不仅是一个可运行的系统,更是一条由预编译器、自动生成的反射元数据、受控替换边界和漂移检查组成的迁移流水线。基准数据之所以重要,是因为它们证明这套系统在实践里是成立的;但从架构角度看,真正的结果是:这次迁移不再是一场一次性的移植,而是变成了一套可重复执行的系统工程。关于完整测试方法、原始数据和技术设计,请阅读配套文章:SkyWalking GraalVM Distro:设计与基准测试

项目仓库位于 apache/skywalking-graalvm-distro。我们欢迎社区成员测试这个新发行版、提交 issue,并帮助它逐步走向生产可用。

对我来说,更深层的启发并不止于这个发行版。AI Coding 不会让架构变得不重要,反而会让架构更值得被认真追求。当实现速度提升到一定程度时,我们终于有机会在真实代码里验证更多想法,保留那些真正好的抽象,并把那些过去常常因为投入太大而半途妥协的系统真正做出来。

对于资深工程师来说,瓶颈正在从单纯的代码实现速度,转向品味、系统判断力,以及定义稳定边界的能力。对于初级工程师来说,真正该走的路不是追逐每一种看上去都很刺激的 AI 工作流,而是把基础能力练得更扎实,让加速真正产生复利:理解需求、阅读陌生系统、质疑假设,并识别出在系统快速变化时仍然必须保持正确的那些部分。AI Coding 降低了验证好设计的代价,但并没有降低工程判断本身的门槛。

相关推荐
Android出海1 小时前
2026主流AI工具对比:ChatGPT、Gemini、Claude、Grok深度分析与选择
人工智能·ai·chatgpt·claude·grok·ai工具·gemini
Soari15 小时前
【稳定性增强】Claude Code v2.1.140:优化 /goal 异常处理,解决后台服务连接问题
claude
AI_paid_community17 小时前
25k Star 登顶 GitHub:这个专门吃 K 线图长大的 AI,让我意识到之前三年都在裸奔
javascript·claude
HLAIA光子18 小时前
Claude Code、Codex 为什么都选了 Grep 而不是 RAG
ai编程·claude
Dvesiz20 小时前
【ClaudeCode平替(免费)】OpenCode 完整安装与 VSCode 使用指南
ide·vscode·编辑器·github·ai编程·claude·visual studio code
用户0437676615031 天前
关于我 vibecoding 了一个 vibecoding 模拟器这件事
vibecoding
YoungHong19921 天前
Pi Coding Agent : AI时代的“VSCode“
ide·人工智能·gpt·claude·claudecode
闵孚龙1 天前
Claude Code 缓存架构与断点设计全解析:Prompt Cache、上下文工程、Token 成本优化、AI Agent 长会话性能治理
人工智能·缓存·架构·prompt·claude
花椰菜菜1 天前
Claude Code 产品负责人 Kat Wu 的深度访谈,AI 时代的进化方法论
claude
十八旬2 天前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude