AI Agent 项目重构(三)架构设计和 AI Agent 思想
在前两篇文章中,介绍了一个 AI Agent,用来辅助将 Legacy Django 项目重构为新的 Django6 架构。
构建一个 AI Agent:为什么大模型不能直接重构代码?
在前两篇文章中,介绍了一个 AI Agent,用来辅助将 Legacy Django 项目重构为新的 Django6 架构。
Agent 的整体流程如下:
Legacy Django Project
│
▼
Project Scan
│
Model Analysis
│
Model Mapping
│
LLM Mapping Review
│
Semantic Analysis
│
Relationship Graph
│
Domain Graph
│
Project Structure Learning
│
AI Model Generation
很多人看到这里会产生一个疑问:
为什么这么复杂?为什么不直接把旧代码丢给大模型让它重写?
一、大模型为什么不能直接重构系统
很多开发者第一次尝试 AI 重构代码时,通常会这么做:
把 legacy model 代码
复制给 LLM
让它重写为 Django6
例如:
class VirtualServer(models.Model):
user = models.CharField(max_length=255)
image = models.ForeignKey(Image)
然后让 AI 生成:
Rewrite this model for Django6
这种方式的问题非常明显。
问题一:AI 不理解系统
大模型看到的只有一个文件:
virtual_server.py
但一个真实系统里:
VirtualServer
├── Customer
├── Image
├── PhysicalServer
└── IPAddress
如果 AI 看不到这些关系,它只能:
猜
于是经常会生成:
ForeignKey(User)
但实际上正确的关系是:
ForeignKey(Customer)
问题二:AI 不理解业务领域
Legacy 系统中经常出现:
user
owner
customer
admin
这些字段看起来类似,但含义完全不同。
例如:
VirtualServer.user
实际上是:
Customer
而不是 Django 的:
auth.User
如果没有语义分析,AI 很容易生成错误结构。
问题三:AI 不理解系统架构
新系统往往有明确架构,例如:
core
asset
network
compute
storage
ops
但 AI 并不知道:
VirtualServer 应该放在哪个 app
于是可能生成:
apps/core/models/virtual_server.py
而正确结构应该是:
apps/compute/models/virtual_server.py
问题四:AI 不知道代码风格
新系统通常有自己的规范:
BaseModel
related_name
choices
service layer
serializer layer
如果 AI 没看到真实代码,它只能使用“通用 Django 风格”。
结果往往与项目不一致。
二、正确的 AI 重构思路
因此我们设计了一个原则:
AI 不应该直接生成代码,而应该先理解系统。
换句话说:
Code Generation
必须建立在
System Understanding
之上
于是整个 Agent Pipeline 被设计为两大阶段:
系统理解阶段
+
代码生成阶段
三、阶段一:系统理解
这一阶段的目标是:
让 AI 完整理解 Legacy 系统
包括:
1 项目结构
modules
templates
settings
urls
2 数据模型
提取:
models
fields
relations
constants
choices
生成:
db_models_analysis.json
3 架构映射
将旧模型映射到新架构:
VirtualServer → compute
IPAddress → network
Region → asset
生成:
db_to_target_mapping.json
4 字段语义
分析字段真实含义:
VirtualServer.user → customer
LoadBalancer.user → customer
生成:
field_semantics.json
5 模型关系图
构建:
Relationship Graph
例如:
VirtualServer
├── Image
├── Customer
├── PhysicalServer
└── IPAddress
生成:
relationship_graph.json
6 领域结构
将模型归类为领域:
compute
network
asset
core
生成:
domain_graph.json
这一阶段完成后,Agent 实际上已经做了一件非常重要的事情:
对 Legacy 系统进行了结构化逆向工程
四、阶段二:学习新系统
理解旧系统还不够,AI 还必须:
学习新系统架构
Agent 会扫描:
apps
models
serializers
services
views
生成:
project_structure_graph.json
这样 AI 就能知道:
app
├── models
├── serializers
├── services
└── views
五、Reference Learning
为了让 AI 学习代码风格,Agent 会自动选择:
Reference Models
例如:
PhysicalServer
Image
Customer
IPAddress
这些真实代码会作为:
Prompt Context
提供给 LLM。
这样 AI 生成的代码会自动遵循:
BaseModel
ForeignKey
related_name
choices
等项目规范。
六、AI 生成代码
最后一步才是:
AI Model Generation
AI 生成代码时会参考:
Legacy Model
Mapping
Field Semantics
Relationship Graph
Reference Models
Project Structure
这使得生成的代码:
不是猜的
而是推理出来的
七、Agent 设计思想
这套系统其实体现了一个重要思想:
AI ≠ Code Generator
AI = Reasoning Agent
也就是说:
AI 不是简单写代码,而是:
理解系统
推断结构
生成代码
更多推荐



所有评论(0)