AI编程实战手记:从通讯软件重构到猜色游戏的协作探索
这篇文章是根据我和朋友的聊天记录由ai整理而成,内容基本符合愿意,不过文章中出现的代码是ai自己举的例子。感觉写的挺好的一篇感悟文,就发了。确实也是我自己想感悟的东西。
AI编程实战手记:从通讯软件重构到猜色游戏的协作探索
本文记录了我与AI协作开发的两次技术实践——重构局域网通讯系统与设计色彩解谜游戏,探讨AI在编程中真正擅长的边界与高效的协作模式。
Part 1:Rust服务端重构与前端困境
项目背景
我曾用Java实现过局域网通讯软件,后来决定用Rust重写服务端。服务端核心流程如下:
rust// TCP数据包结构
struct Header {
flag: u8, // 标志位,默认0
length: u32 // 消息体长度
}
// 客户端请求格式
enum Command { Sign, Log, Send }
struct Request {
command: Command,
data: HashMap<String, Value> // 支持注册/登录/消息发送
}
// 服务端响应格式
enum Code { Ok, Err, Msg } // Msg表示主动推送
struct Response<T> {
code: Code,
msg: String, // 用户提示信息
data: Option<T> // 携带数据(如用户ID/消息内容)
}
为了快速验证新版服务端,我尝试用Cursor(免费版)生成网页客户端。AI仅凭一次需求描述便输出了完整前端代码——包括注册登录、消息收发等核心功能。
意外困境:消息延迟刷新
实际运行发现严重问题:客户端无法实时刷新消息。当用户A发送消息后,用户B必须发送新消息才能看到上一条消息。这种"消息触发式刷新"机制违背即时通讯的基本原则。
我尝试解决这个问题:
- 检查了数据序列化/反序列化逻辑 ✅ 正常
- 验证了WebSocket长连接状态 ✅ 保持
- 测试服务器主动推送能力 ✅ 服务端能成功发出Code::Msg响应
最终定位是前端渲染机制缺陷:AI生成的代码没有设计消息监听队列。由于免费版Cursor功能受限,这个问题暂时搁置,但它揭示了一个关键结论——AI直接生成完整项目仍存在风险边界。
Part 2:AI编程的三阶协作模式
通过这个项目,我摸索出了与AI协作的高效方式:
1.注释驱动开发(Comment-Driven Development)
rust// AI辅助编码示例
fn process_message(socket: &mut TcpStream) -> Result<()> {
// 目标:解析消息头并验证数据完整性
// 步骤:
// 1. 读取8字节头数据(1字节flag+4字节长度)
// 2. 若长度超过MAX_SIZE返回错误
// 3. 根据长度读取完整消息体
// 4. 返回解析后的Header结构体
#[AI_GENERATED_CODE_START]
let mut header_buf = [0u8; 5];
socket.read_exact(&mut header_buf)?;
// ... AI生成的详细实现
#[AI_GENERATED_CODE_END]
}
实践发现:当在函数中预置功能说明、参数约束、边界条件和逻辑伪代码后,AI生成的实现代码一次通过率超90%。
2.TDD反模式警示
尝试让AI直接为模块写单元测试时,效果很差:
javascript// AI生成的失败测试案例
test('message should be delivered', () => {
sendMessage('test');
expect(receivedMessages).toContain('test'); // 忽略了异步机制
})
核心问题在于测试需要深刻理解业务场景——当前AI缺乏这种上下文感知能力。
3.架构设计的不可替代性
这引出关键认知:需求分析→架构设计→详细设计的决策链必须由人类主导。当前AI最适合定位在:
- 伪代码转正式代码
- 模板代码生成
- 语法适配转换
Part 3:验证猜想:猜色游戏设计实验
为验证这个理论,我发起新挑战——用纯文字描述让AI实现色彩解谜游戏:
(真人注释:其实是因为下午刷到了一个这样的玩具,突然就有了要用什么项目练习 ai 和vue的灵感)
markdown# 设计文档
## 数据结构
- 总颜色池:彩虹七色+黑白灰(0=白色占位符)
- 关键变量:
numColor(可用颜色数) | numRightColor(正确颜色数)
- 核心状态:
colors(有效颜色ID数组)
rightColors(正确答案ID数组)
guessHistory(历史猜测记录)
currentGuess(当前猜测数组,初始全0)
## UI规范
1. 顶部配置区:
- 数字输入框:numColor / numRightColor
- [生成]按钮
2. 游戏区:
- 历史记录行:显示方块+三色状态提示(绿/橙/灰)
- 当前行:可下拉选择颜色的方块
3. 悬浮底部按钮:[Check!]
令人惊讶的结果发生了——AI仅凭这次描述,一次生成完全可运行的Vue组件!
启示录:人机协作的甜蜜点
两个项目的对比揭示出清晰边界:
| 能力层级 | AI当前水平 | 人类优势 |
|---|---|---|
| 需求理解 | ⚠️ 碎片化 | ✅ 系统性 |
| 架构设计 | ⚠️ 局部优化 | ✅ 全局最优 |
| 伪代码转换 | ✅ 高度可靠 | ⚠️ 重复劳动 |
| 边界条件处理 | ⚠️ 随机波动 | ✅ 精确把控 |
| 实时状态管理 | ⚠️ 常现漏洞 | ✅ 因果把控 |
这种范式催生新的开发流:
如我在调试消息功能时感慨的:“当AI甚至学会需求提出+分析时,也许就是程序员转身的时刻。但在那之前,学会让AI在伪代码和实现间精准填坑,是这个时代最高效的作弊码。”
💬 评论区
暂无评论,来发表第一条吧。