AI Agent 项目重构(二)AI 生成与架构重建
生成模型时,Agent 不仅提供 legacy 模型信息,还会构建一个。为了避免 AI 生成“想象中的 Django 代码”,这样开发者可以进行人工 review。否则 AI 只能凭经验猜测。这个上下文会被送入 LLM。这些都来自之前的分析阶段。
构建一个 AI Agent:自动生成 Django 6 新架构代码
项目代码
在上一篇中,我们介绍了如何通过 AI Agent 对 Legacy Django 项目进行结构分析,包括:
- 项目扫描
- 模型解析
- 架构映射
- 字段语义推断
- 模型关系图
- 领域结构图
经过这些步骤,AI Agent 已经完成了一件关键事情:
理解旧系统
而本篇的重点是:
AI 如何学习新系统架构,并自动生成 Django6 模型代码
一、从“理解旧系统”到“生成新系统”
完成上篇的分析之后,Agent 已经拥有以下信息:
旧系统结构
│
├─ Models
├─ Fields
├─ ForeignKey
├─ Constants / Choices
├─ Field Semantics
├─ Relationship Graph
└─ Domain Graph
但是要生成新架构代码,还缺少一件事情:
学习新项目的代码结构
因为 AI 必须知道:
- 新项目的 app 结构
- 模型命名规范
- 代码组织方式
- service / serializer / view 的结构
否则 AI 只能凭经验猜测。
因此 Agent 增加了一步:
New Project Structure Learning
二、学习新项目架构
Agent 会分析新项目:
python main.py analyze-project-structure
扫描内容包括:
apps/
models/
serializers/
services/
views/
permissions/
queries/
Agent 会生成:
project_structure_graph.json
该文件描述:
{
"app": "asset",
"layers": [
"models",
"serializers",
"services",
"views"
]
}
这样 AI 就可以理解:
app
├── models
├── serializers
├── services
└── views
这种结构。
三、Reference Selector:让 AI 学习真实代码
为了避免 AI 生成“想象中的 Django 代码”,
Agent 设计了一个模块:
ReferenceSelector
它的作用是:
为当前生成的模型选择最相关的参考代码
例如生成:
VirtualServer
Agent 会自动寻找参考:
apps/asset/models/physical_server.py
apps/network/models/ipaddress.py
apps/core/models/customer.py
apps/compute/models/image.py
这些真实代码会被送入 Prompt:
Reference Models:
PhysicalServer
Image
Customer
IPAddress
这样 AI 生成的代码会自动遵循:
- 字段命名
- ForeignKey 写法
- BaseModel 继承
- related_name 规范
四、Model Context Enricher
生成模型时,Agent 不仅提供 legacy 模型信息,还会构建一个 完整上下文包。
这个过程由 ModelContextEnricher 负责。
它会收集:
Legacy Model Info
Mapping Info
Usage Snippets
Field Hints
Target Related Files
Base Model Rules
Suggestions
例如:
Model: VirtualServer
Fields:
- user
- image
- physical_server
Field Semantics:
user → customer
Relationships:
VirtualServer → Image
VirtualServer → PhysicalServer
VirtualServer → IPAddress
最终生成一个完整上下文:
{
"model_name": "VirtualServer",
"target_app": "compute",
"target_domain": "compute",
"field_hints": [
"user looks like customer",
"image is a relation"
]
}
这个上下文会被送入 LLM。
五、AI 模型生成
最终生成 Django6 模型的命令是:
python main.py generate-django6-model-draft \
--project /path/to/legacy/project \
--model VirtualServer \
--target workspace/target_blueprint.json
Agent 会向 LLM 提供:
Legacy Model
Final Mapping
Field Semantics
Relationship Graph
Reference Models
Project Structure
Project Rules
然后要求 LLM:
生成 Django 6 Model Draft
六、AI 生成代码示例
例如生成的模型:
class VirtualServer(BaseModel):
customer = models.ForeignKey(
"core.Customer",
on_delete=models.PROTECT,
related_name="virtual_servers",
)
image = models.ForeignKey(
"compute.Image",
on_delete=models.PROTECT,
related_name="virtual_servers",
)
physical_server = models.ForeignKey(
"asset.PhysicalServer",
on_delete=models.PROTECT,
related_name="virtual_servers",
)
AI 会自动完成:
- legacy
user→customer - 跨 app ForeignKey
- related_name
- BaseModel 继承
这些都来自之前的分析阶段。
七、生成结果输出
生成结果会保存到:
workspace/drafts/apps/compute/models/virtual_server.py
同时生成说明文档:
reports/virtualserver_model_draft.md
文档包含:
设计说明
字段语义
关系图
参考代码
生成模型
这样开发者可以进行人工 review。
更多推荐



所有评论(0)