乐于分享
好东西不私藏

从实际项目分析软件工程的未来:AI Native Coder的思考

从实际项目分析软件工程的未来:AI Native Coder的思考

说起来,上周在分析一个知识图谱项目,代码写得很规范,分层架构清晰,事件驱动设计也很优雅。但让我惊讶的是,团队还在用传统方式开发:需求文档→接口设计→编码→测试→上线,一个都不少。

作为AI NativeCoder,我一直在思考一个问题:AI时代的软件工程应该是什么样子?直到看到最近开发的一个项目,我突然有了答案。

这个项目本身很棒——基于Spring Boot的微服务架构,知识图谱管理、向量嵌入、多模型集成,技术栈现代化程度很高。但更重要的是,它的架构特点让它特别适合拆解为Agent Skills:模块化程度高、职责边界清晰、接口契约完善。

为什么这很重要?因为我们正在进入软件3.0时代。

一、从确定性到非确定性:软件工程的范式转移

我花了很多时间研究AI对软件工程的影响。有个观点很深刻:软件工程的传统范式建立在确定性之上——相同的输入必然产生相同的输出,程序行为完全可预测。

而LLM的引入,打破了这一模式。

Andrej Karpathy(前OpenAI、特斯拉AI负责人)把编程范式分为三个阶段:

  • 软件1.0:规则驱动的传统软件,本质是有限状态机
  • 软件2.0:数据驱动的人工神经网络,本质是统计模型
  • 软件3.0:上下文驱动的大模型应用,以自然语言为接口

这不是从汇编语言到高级语言的抽象层次提升,而是更根本的跨越:从确定性编程到非确定性编程。

Martin Fowler(软件大师)也表达了相似的观点:LLM带来的变化,本质上是编程方式的范式转移。

这个转移带来的最直接影响,是开发者角色的重塑。

去年有个数据挺猛:某电商平台双十一系统迭代中,AI生成代码占比达52%。GitHubCopilot已覆盖37%的基础代码编写。但更关键的是,初级开发者的招聘量减少了60%。

为什么?因为纯粹执行者的岗位正在消亡。

如果你的工作主要是把StackOverflow上的代码搬运到IDE里,或者只掌握规范化知识(语法、API调用),那危机已经兵临城下了。AI在处理这些”确定性任务”上,比你更快、更准、更不爱发牢骚。

但另一组数据让我意外:系统分析师岗位需求增长8%,而AI伦理顾问、多智能体架构师等新兴岗位需求激增380%。

这个分化说明什么?软件工程师的核心价值正在从”代码编写速度”转向”问题定义深度”。

二、这个项目为什么适合Agent化拆解?

回到项目上,让我先说说它的技术架构。

这是一个基于知识图谱、向量嵌入和大语言模型技术的企业级AI数据管理平台。技术栈包括Spring Boot、Dubbo、Neo4j、Redis、LangChain4j,支持通义千问、Ollama等多种模型。

架构上采用经典的四层设计:

  • 应用层(App):核心业务逻辑实现
  • 客户端层(Client):对外暴露的服务接口和DTO
  • 领域层(Domain):核心业务模型和领域实体
  • 基础设施层(Infrastructure:数据库访问、外部服务集成

这个分层架构让职责边界非常清晰。再加上它的事件驱动设计,工厂模式的应用,以及策略模式的实践。

这些设计模式的组合,让它天然适合拆解为独立的、可复用的Skills。

为什么说”天然适合”?因为:

第一,模块化程度高。每个模块职责单一,高内聚低耦合。

第二,接口契约完善。Service接口与实现类的解耦机制让协作变得容易。

第三,配置与代码分离。动态加载机制支持热更新,不需要重启服务。

第四,可扩展性强。插件化设计支持新功能模块的快速接入。

这些都是Agent Skills协作需要的特质。如果一个系统本身就很混乱,想拆解成Skills只会更乱。但这个项目不是这样,它的架构设计已经为Agent化拆解奠定了基础。

三、12个Agent Skills:从人力驱动到智能体协作

那么,如何把该项目拆解为Agent Skills?

我根据产品设计、需求设计、架构设计、代码实现四个维度,拆解出12个独立的Skills。每个Skill都有明确的职责、输入输出标准和协作机制。

产品设计类Skills
1. 需求分析Skill

应用场景:当业务方提出新功能需求时(如”支持新的向量数据库”)

触发条件:收到自然语言描述的需求

输入标准

  • 需求背景描述
  • 目标用户画像
  • 预期业务价值

输出标准

  • 结构化需求文档(Markdown格式)
  • 用户故事列表(As a…I want…So that…)
  • 优先级建议(MoSCoW原则)

与其他Skills的协作:将需求传递给功能模块划分Skill

核心逻辑:利用LLM理解自然语言需求,提取关键信息,转化为技术可理解的结构化文档。

2. 用户故事编写Skill

应用场景:将复杂需求拆解为可执行的用户故事

触发条件:收到结构化需求文档

输入标准:需求分析Skill的输出

  • 用户故事卡片(包含验收标准)
  • 故事依赖关系图

协作机制:与功能模块划分Skill同步进行,确保故事与模块匹配

3. 竞品分析Skill

应用场景:设计新功能前,了解业界最佳实践

触发条件:需求涉及新领域或重大变更

输入标准:功能描述、目标市场

  • 竞品功能对比表
  • 最佳实践总结
  • 创新机会点

协作机制:为技术选型Skill提供参考

4. PRD生成Skill

应用场景:基于需求和用户故事生成产品需求文档

触发条件:用户故事编写完成

输入标准:用户故事列表、需求文档

输出标准:标准PRD(包含功能描述、交互流程、验收标准)

协作机制:PRD是功能模块划分Skill和接口设计Skill的输入

需求设计类Skills
5. 功能模块划分Skill

应用场景:将PRD拆解为技术可实现的模块

触发条件:PRD生成完成

输入标准:PRD文档、现有架构文档

  • 模块划分方案(树形结构)
  • 模块依赖关系图
  • 接口边界定义

协作机制:与架构设计Skill协同,确保模块划分符合整体架构

核心逻辑:基于项目的四层架构,遵循高内聚低耦合原则,结合领域驱动设计(DDD)思想,进行模块拆分。

6. 接口定义Skill

应用场景:为每个模块定义对外接口

触发条件:功能模块划分完成

输入标准:模块划分方案、PRD

  • RESTfulAPI规范(OpenAPI 3.0格式)
  • DTO定义(Java POJO)
  • 接口文档(Markdown)

协作机制:输出是代码生成Skill的输入

核心逻辑:参考项目的Service接口定义风格,遵循RESTful最佳实践,确保接口语义清晰、版本可控。

7. 测试用例设计Skill

应用场景:基于需求生成测试用例

触发条件:PRD或用户故事完成

输入标准:需求文档、用户故事

  • 测试用例清单(按优先级分类)
  • 测试数据准备清单
  • 自动化测试框架建议

协作机制:与代码生成Skill同步,确保代码可测试

架构设计类Skills
8. 技术选型Skill

应用场景:为新功能选择合适的技术方案

触发条件:涉及新领域或性能敏感的功能

输入标准:需求文档、性能指标、成本约束

  • 技术方案对比表(包含优劣势分析)
  • 推荐方案(含风险评估)
  • PoC验证计划

协作机制:为代码生成Skill提供技术约束

核心逻辑:参考项目的技术选型实践(如多向量数据库支持、多模型提供商集成),建立评估维度(性能、成本、生态、维护性)。

9. 系统架构设计Skill

应用场景:设计或优化整体系统架构

触发条件:重大功能变更或新项目启动

输入标准:需求文档、性能指标、现有架构

  • 架构设计文档(C4模型)
  • 技术栈清单
  • 部署架构图

协作机制:与功能模块划分Skill协同,确保架构与模块匹配

核心逻辑:遵循项目的分层架构原则,结合微服务设计模式,确保系统的可扩展性、可维护性和高可用性。

10. 数据库设计Skill

应用场景:设计或优化数据库schema

触发条件:功能模块划分完成,涉及数据存储

输入标准:功能模块、数据模型需求

  • ER图(实体关系图)
  • 表结构定义(DDL)
  • 索引优化建议

核心逻辑:参考项目的Neo4j图数据库设计和MySQL关系型数据库设计,结合业务场景选择合适的存储方案。

代码实现类Skills
11. 模块开发Skill

应用场景:生成可运行的业务代码

触发条件:接口定义、数据库设计完成

  • 接口定义(OpenAPI规范)
  • DTO定义
  • 数据库schema
  • 技术栈约束
  • Service接口和实现类
  • Repository层代码
  • Controller层代码
  • 单元测试代码

协作机制:接收来自上游Skills的输入,输出到单元测试Skill

核心逻辑:基于项目的代码风格,遵循Clean Code原则,生成高质量、可维护的代码。支持Dubbo微服务框架集成,LangChain4j AI框架集成。

12. 单元测试编写Skill

应用场景:为生成的代码编写单元测试

触发条件:模块开发Skill完成

  • 源代码
  • 测试用例清单(来自测试用例设计Skill)
  • JUnit测试类
  • Mock对象配置
  • 测试覆盖率报告

协作机制:验证代码质量,反馈给模块开发Skill进行迭代

核心逻辑:遵循测试金字塔原则,优先编写单元测试,使用Mock隔离外部依赖,确保测试的独立性和可重复性。参考项目的测试实践,确保核心逻辑的测试覆盖率≥90%。

四、协作机制:Skills如何像一个团队一样工作?

拆解出12个Skills只是第一步。真正让它们像一个团队一样协作,需要设计一套协作机制。

标准化的输入输出协议

每个Skill的输入输出都必须标准化,这样Skills之间才能无缝对接。

我定义了一套JSONSchema作为Skills之间的通信协议:

json

{"task_id": "string","skill_name": "string","input": {"type": "string","data": "object"},"output": {"type": "string","data": "object"},"metadata": {"timestamp": "datetime","version": "string"}}

这套协议包含:

  • task_id:全局唯一的任务标识,用于全链路追踪
  • skill_name:当前执行Skill的名称
  • input:标准化输入(包含类型和数据)
  • output:标准化输出(包含类型和数据)
  • metadata:元数据(时间戳、版本等)
基于状态机的任务编排

Skills之间的协作不是硬编码的调用链,而是基于状态机的任务编排。

我参考LangGraph框架的设计,用有向图来描述Skills之间的流转:

节点(Nodes):每个Skill是一个节点

边(Edges):描述Skills之间的流转逻辑

状态(State):共享的工作记忆

状态机的设计决定了协作的灵活性。例如:

  • 顺序流转:需求分析→用户故事编写→PRD生成
  • 条件分支:如果需求涉及新领域,触发竞品分析Skill
  • 并行执行:接口定义和数据库设计可以并行进行
  • 循环迭代:代码生成后,如果测试不通过,触发重构
事件驱动的通信机制

Skills之间的通信采用事件驱动机制,参考项目的消息订阅设计。

当某个Skill完成时,它会发布一个事件:

{"event_type": "skill_completed","skill_name": "requirement_analysis","task_id": "task_001","output": {...},"timestamp": "2026-02-11T11:30:00Z"}

订阅该事件的Skills会自动接收并处理。这种异步解耦的方式让协作更灵活。

全链路追踪与可观测性

Skills协作最大的挑战是:当某个环节出错时,如何快速定位问题?

我引入了全链路追踪机制:

每个任务都有一个唯一的taskid,从需求分析到代码上线,所有Skills的日志都绑定这个taskid。配合OpenTelemetry,可以在Grafana上实时查看Skills的执行情况:

  • 每个Skill的执行时长
  • Skills之间的调用关系
  • 哪个Skill出现了异常
  • 输入输出的原始JSON
五、实施路径:从试点到全面铺开

理论说完了,怎么落地?我建议分三个阶段:

阶段一:试点验证(1-2个月)

目标:验证Skills协作的可行性,积累经验

选择项目:找一个规模较小、交付压力不大的项目

实施步骤

  • 选型Skills:先从非核心的Skills开始试点
  • 需求分析Skill
  • 用户故事编写Skill
  • PRD生成Skill
  • 建立标准:
  • 定义输入输出JSONSchema
  • 编写Skills的测试集
  • 设计协作流程
  • 小步快跑:
  • 每个Skill都要有测试验证
  • 每次改动都要能快速回滚
  • 收集参与者的反馈

预期成果

  • 验证3个Skills的协作可行性
  • 收集至少10个真实案例
  • 总结出最佳实践
阶段二:扩展推广(3-4个月)
  • 扩展Skills:
  • 新增功能模块划分Skill
  • 新增接口定义Skill
  • 新增模块开发Skill
  • 优化协作:
  • 引入LangGraph框架进行任务编排
  • 建立Skills的能力图谱
  • 实现Skills的版本管理
  • 团队培训:
  • 培训第一批”AI教练”
  • 在组织内做布道
  • 至少6个Skills稳定运行
  • 覆盖20%的项目
  • 开发效率提升30%
阶段三:全面铺开(6个月+)

目标:Skills协作成为团队的标准工作方式

  • 完善生态:
  • 新增剩余6个Skills
  • 建立Skills市场(复用历史Skills)
  • 实现Skills的自动评估和优化
  • 深度集成:
  • Skills与CI/CDpipeline集成
  • Skills与代码仓库关联
  • Skills与项目管理工具打通
  • 持续演进:
  • 建立反馈闭环
  • 定期评估模型能力
  • 优化协作流程
  • 12个Skills全部上线
  • 覆盖80%的项目
  • 开发效率提升60%以上
六、挑战与解决方案:真实世界的坑

理论上听起来很美好,但实际落地会遇到很多问题。我把最常见的问题和解决方案列出来。

挑战一:AI幻觉

问题:AI生成的需求分析可能包含不真实的信息,比如虚构竞品功能、编造技术细节。

解决方案:三层验证机制

  • 第一层:交叉验证
  • 用两个不同的模型独立生成需求分析
  • 对比结果,找出差异点
  • 差异点需要人工确认
  • 第二层:外部验证
  • 连接外部数据源(如产品官网、技术文档)
  • 验证关键信息的准确性
  • 标注信息来源
  • 第三层:人工审计
  • 对高风险模块(如支付、安全)进行人工审计
  • 建立审计日志
  • 定义审计标准
挑战二:认知债务

问题:AI能在一天内生成10万行代码,但人类理解的速度跟不上。代码库充斥着虽然能跑但没人真正读懂的逻辑。

解决方案:重构与AI协同进化

  • 小步重构
  • 将AI生成的”一次性代码”拆解为可理解的小模块
  • 提取函数、简化逻辑
  • 增加注释和文档
  • 定期审计
  • 每个迭代进行代码审计
  • 识别重复代码和复杂逻辑
  • 生成重构建议
  • 知识沉淀
  • 将重构经验存入知识库
  • 训练AI生成更易维护的代码
  • 形成持续优化的闭环
挑战三:协作复杂性

问题:12个Skills协作,出错率会指数级上升。A说该派单,B说直接回复,怎么裁决?

解决方案:清晰的职责边界和冲突解决机制

  • 职责边界
  • 每个Skill只做一件事
  • 不要让一个Skill既做需求又做设计又做编码
  • 定义清晰的输入输出
  • 优先级机制
  • 定义Skills的优先级
  • 当发生冲突时,优先级高的Skill决策
  • 优先级根据业务价值动态调整
  • 人工介入点
  • 在关键决策点设置人工介入
  • 定义人工介入的条件
  • 记录人工决策的依据
挑战四:团队接受度

问题:团队成员担心被AI取代,抗拒改变工作方式。

解决方案:角色重塑和价值重塑

  • 角色定位
  • 强调AI是工具,不是替代
  • 开发者从”代码编写者”转变为”智能体教练”
  • 人类的核心价值是定义问题、做决策、守底线
  • 价值展示
  • 展示Skills协作带来的效率提升
  • 让参与者看到自己的成长
  • 培训支持
  • 提供Skills使用的培训
  • 建立 mentorship 机制
七、未来展望:软件工程的下一个十年

写到这里,我想起之前和几个技术Leader聊天,大家都在问同一个问题:AI时代的软件工程师,到底需要什么能力?

我认为,未来需要构建”技术深度 × 行业广度 × 伦理认知”的三维能力体系。

技术深度:掌握智能体架构、多模型协作、系统设计等前沿技术。不是会用API,而是能设计和优化整个系统。

行业广度:理解业务场景,知道哪些问题值得用AI解决,哪些不该。AI不是万能的,能用最简单方案解决问题的才是高手。

伦理认知:理解AI系统的潜在风险,设计防护机制。当AI生成代码涉及版权或安全问题时,需要有人把关。

卡帕西(前OpenAI、特斯拉AI负责人)有个判断我很认同:2026年将迎来模型层与智能体层的”乘积式进化”。一方面AI基础模型的能力会持续突破,另一方面智能体的自主规划执行能力会爆发式提升。

这带来的影响是两极分化。

掌握智能体工程的开发者,能凭借AI的助力一个人完成过去团队级的任务,实现”一人公司”级的效率跃迁。

而那些只依赖随机生成代码,缺乏架构判断力的开发者,很可能被市场淘汰。

但我想强调的是:AI的出现不是对软件工程的否定,而是对人类劳动价值的重新发现。

当我们看到AI生成的代码通过单元测试,当我们见证Skills协作完成任务,当我们体验自然语言驱动的开发流程,我们正在重新定义”工作”的本质——从知识重复到价值创造,从经验决策到数据智能,从个体劳动到人机共生。

作为AI NativeCoder,我的核心观点很简单:

软件工程的未来,不是AI取代程序员,是程序员和Agent协作创造更大的价值。

人做什么?定义问题、做决策、守底线。

Agent做什么?执行任务、生成代码、跑测试。

这个分工,比谁都清楚。

写在最后

回想起上周三那个下午,分析项目的时候,我看到的不仅是一个技术架构优秀的产品,更是一个软件工程范式转移的缩影。

它的分层架构、事件驱动、设计模式应用,让Agent Skills的拆解成为可能。而Agent Skills的协作,又会反过来推动软件工程的智能化。

这不是一蹴而就的。它需要试点验证、需要团队磨合、需要持续优化。

但方向已经明确:从人力驱动到智能体协作,这是软件工程的生产力变革。

而你,准备好了吗?

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 从实际项目分析软件工程的未来:AI Native Coder的思考

评论 抢沙发

4 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮