构建一个 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 usercustomer
  • 跨 app ForeignKey
  • related_name
  • BaseModel 继承

这些都来自之前的分析阶段。


七、生成结果输出

生成结果会保存到:

workspace/drafts/apps/compute/models/virtual_server.py

同时生成说明文档:

reports/virtualserver_model_draft.md

文档包含:

设计说明
字段语义
关系图
参考代码
生成模型

这样开发者可以进行人工 review。

Logo

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

更多推荐