构建一个 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 不是简单写代码,而是:

理解系统
推断结构
生成代码
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐