作者: 05 后候补工程师
分类: AI 编程 / 软件架构 / 实战经验
摘要: 为什么 AI 写的代码总是过 500 行就崩?本文复盘了一个基于设计模式的自动化基金监控系统,揭秘如何通过"先定框架、再分块"的思维,让 Trae/Cursor 乖乖听话,写出架构师级别的代码。
🚀 引言:你是 AI 的"指挥官"还是"搬运工"?
作为一名正在被 408(计算机考研四门课) 和各种大课设计折磨的大三狗,我最近在实战中发现了一个扎心的事实:
如果你直接喂给 AI 一个"大需求",它返给你的大概率是一堆"面条代码"。
变量名冲突、逻辑耦合、没有异常处理......这种代码在 Demo 阶段很爽,但在生产环境就是地狱。直到我在设计模式课上听到了老师的一句话:"先定大框架,给功能做分块,最后让 AI 填空。"
我试着把这种"分治法"用在 Trae 编程里,结果真香了!
🛠 一、 痛点分析:为什么 AI 容易写出"屎山"?
在直接 Prompt 模式下,AI 的创作逻辑是**"概率预测"**。
- 上下文断层:项目稍大,AI 就会忘记之前的函数定义。
- 缺乏全局观:它只负责让这一行代码跑通,而不关心是否破坏了整体解耦。
- 重复造轮子:每个模块都在重复写数据库连接、网络请求。
🏗 二、 核心方案:架构师思维的"三部曲"
我总结了一套 "框架驱动型 AI 开发模式" ,核心就是这四个字:契约编程。
为了方便大家实操,我把完整的 .py 文件和调试用的 HTML 样本都打包好放在文末了,建议结合博文阅读。
1. 顶层框架:定义"算法骨架"
我们不需要 AI 替我们做决定。首先利用 模板方法模式 (Template Method) ,在基类里定死流程。
比如监控任务:Fetch (抓取) -> Parse (解析) -> Analyze (策略) -> Notify (告警)。
2. 强契约化:用 DTO (数据传输对象) 锁死接口
这是消灭"整体报错"的银弹。在分块开发前,先写一个 contract.py。
python
# contract.py - 这里的定义就是法律!
@dataclass
class FundData:
name: str
price: float
change_rate: float
update_time: str
价值: 无论 AI 解析哪个平台的网页,返回的东西必须符合这个模具。
3. 功能分块:利用"策略模式"插件化
把不同的抓取源(同花顺、天天基金)做成不同的 策略块 (Strategy Pattern)。
💻 三、 实战复盘:同花顺数据监控系统
在 Trae 中,我不再直接喊"帮我爬同花顺",而是执行了以下高阶指令:
Step 1:环境隔离(解耦输入)
我先给 AI 一个 ths_sample.html 样本文件。
理由: 别让 AI 直接撞服务器,先在"离线实验室"里把解析逻辑写对。
Step 2:精准调教(分块开发)
在 Builder 模式下,我下达了带约束的指令:
"Builder,请实现
parser.py。输入是 HTML 字符串,必须调用contract.py返回FundData。严禁 修改字段名,必须捕获解析异常。"
结果: AI 生成的代码极其纯净,甚至主动写好了针对 value price 类名的 BeautifulSoup 选择器。
Step 3:外观模式(总线调度)
最后写一个 main.py 作为"总导演"。它只负责把 Parser 的结果喂给 Storage(存储块)。
python
# main.py 极简逻辑
data = parser.parse(html)
storage.save(data) # 存储块哪怕是 Mock 的也不影响解析块

📈 四、 深度思考:为什么这种方式更强?
| 维度 | 传统"一锅端"写法 | 架构驱动写法 |
|---|---|---|
| 复用性 | 几乎为零,换个网站得重写 | 换个 Parser 就能用,框架不动 |
| 报错率 | 整体报错,极难排查 | 局部抛错,秒定位 bug |
| AI 表现 | 容易"幻觉",字段乱取 | 极其听话,代码质量 95%+ |
| 维护成本 | 高(牵一发而动全身) | 极低(插件式热插拔) |
🎓 五、 写给 05 后同行的心里话
作为一名计算机专业的学生,我们现在不仅要学 408(数据结构、计算机网络、操作系统、计组),还要学会与 AI 共处。
其实,408 里的分层模型、内存管理、模块化思想,才是最好的 Prompt Engineering。
- 不要做 AI 的"搬运工",要做 AI 的"架构师"。
- 学会定义 Interface,学会设计
contract.py。
当你能把复杂的逻辑拆解成一个个 AI 无法拒绝的"原子化任务"时,你离真正的架构师就不远了。
💬 互动时刻
你在用 AI 写代码时,遇到过最离谱的"屎山"是什么样的?欢迎在评论区吐槽交流!
💡 源码党直通车:本文实战源码已打包,点击此处即可跳转下载。