你是否遇到过这些问题?

场景1:理解偏差
erlang
你:"帮我写个用户登录功能"
AI:生成了完整的前后端代码,包括数据库设计
你(内心):我只是想要前端的登录表单啊...
场景2:越改越乱
arduino
第1轮:"写一个快速排序"
→ AI生成了基础版本
第2轮:"加上输入验证"
→ AI重写了整个函数
第3轮:"保留原来的排序逻辑"
→ AI又改回去了一部分,但结构变了
结果:代码风格混乱,逻辑碎片化
场景3:上下文失控
erlang
经过10轮对话后...
你:"还记得我第3轮说的那个要求吗?"
AI:"抱歉,我查看上下文..."
(然后给出的答案和当时完全不一样)
核心困惑:为什么AI编程工具总是"不听话"?
一个意外的视角:这和火箭失控是同一个问题

1960年代的类似困境
钱学森研究导弹控制时,遇到过类似问题:
erlang
导弹发现自己偏左了 → 向右修正
修正过度,偏右了 → 向左修正
又过度了 → 再向右
...
结果:像醉汉一样左右摇晃,最终失控坠毁
这叫**"反馈系统的不稳定性"**。
AI编程的相似结构
看看AI编程的过程:
markdown
你的需求 → AI理解 → 生成代码 → 你的反馈 → AI调整 → 再生成
↑ ↓
└──────────────── 循环 ────────────────────┘
这是一个典型的反馈控制系统:
- 目标:符合需求的代码
- 传感器:你的反馈
- 控制器:AI的理解和决策
- 执行器:代码生成
问题在于:这个系统可能不稳定。
AI编程为什么会"失控"?

失控模式1:发散(理解偏差累积)
arduino
需求:"加个错误提示"
AI理解:重构错误处理机制
实际效果:改动了一堆不该动的地方
你反馈:"不是这个意思"
AI理解:回退所有改动?还是改一部分?
结果:理解偏差越来越大
控制论解释:
- 你的反馈是"纠偏信号"
- 但AI对信号的"增益"(理解程度)不对
- 导致修正过度或不足
- 系统发散,远离目标
失控模式2:震荡(来回改,改不到点上)
arduino
你:"函数要简洁一些"
AI:大幅简化,删掉了一些功能
你:"不对,功能要保留"
AI:全部加回来,又变复杂了
你:"...算了,还是之前的版本吧"
控制论解释:
- 反馈过强 → 修正过度
- 系统在"太简洁"和"太复杂"之间震荡
- 永远无法稳定在"刚刚好"的状态
失控模式3:饱和(上下文过载)
erlang
对话越来越长...
AI的"工作记忆"被大量历史信息占据
关键需求被淹没
开始出现"健忘"和"前后矛盾"
控制论解释:
- 类似执行器的"饱和非线性"
- 输入超过处理能力 → 输出失真
- 系统进入非线性区,不再可靠
失控模式4:时延(反馈理解不到位)
arduino
你:"不对,逻辑有问题"(模糊反馈)
AI:理解延迟,猜测你的意思
生成的修改:可能对,也可能错
相当于"带噪声的延迟反馈"
控制论解释:
- 反馈信号模糊 = 传感器噪声
- AI理解时间 = 时间延迟
- 噪声+延迟 = 稳定性的大敌
控制论的解决方案:让AI更"听话"
基于控制理论,我们可以设计更好的交互策略:

策略1:小步快跑,频繁确认
控制论原理:小增益、高频反馈 → 稳定
arduino
❌ 不好的方式:
"写一个完整的用户管理系统"
(一次性大任务,容易偏离)
✅ 更好的方式:
1. "先写用户数据结构"→ 确认
2. "添加增删改查接口"→ 确认
3. "加上权限验证"→ 确认
每步小,及时纠偏,不会累积偏差
策略2:精确反馈,降低噪声
控制论原理:信号越清晰,控制越精确
arduino
❌ 模糊反馈:
"这个不对"
"改一下"
"不是我想要的"
✅ 精确反馈:
"第15行的条件判断反了,应该是 if x > 0"
"保留排序逻辑,只修改输入验证部分"
"参考第3轮的代码结构,但优化性能"
明确指出:哪里错、错在哪、怎么改

策略3:状态显式化,防止遗忘
控制论原理:可观测性 → 可控性
markdown
✅ 定期总结当前状态:
"目前我们已经完成:
1. 基础数据结构 ✓
2. CRUD接口 ✓
3. 正在做:权限验证
4. 待做:日志记录
关键约束:
- 不使用ORM
- 保持RESTful风格"
这样AI不会"忘记"前面的要求
策略4:引入自动测试(自动反馈)
控制论原理:自动传感器 > 人工检测
arduino
人工反馈(慢且主观):
你:"这里有bug"
AI:"在哪?"
你:"第23行..."
自动测试(快且客观):
测试用例自动发现:
❌ test_login_with_empty_password FAILED
AI直接看到错误信息,精确修复
相当于给系统装上了"自动传感器"
策略5:设计"控制律"(系统化的提示策略)
控制论原理:优秀的控制器 = 精心设计的反馈规则
diff
不是随意对话,而是设计结构化流程:
需求阶段:
- 用例+约束+示例(完整输入)
生成阶段:
- 要求AI先输出理解,再写代码(确认理解)
反馈阶段:
- 指出具体位置+期望行为(精确信号)
迭代阶段:
- 明确"变"与"不变"(防止过度修改)
这就是"提示工程"的控制论版本
一个完整的案例对比
❌ 失控的交互
arduino
你:"写个登录功能"
AI:[生成完整前后端代码]
你:"太复杂了"
AI:[大幅简化,删掉了加密]
你:"要加密的"
AI:[重写整个逻辑]
你:"算了,还是用第一版吧"
AI:[重新生成,但已经和第一版不同了]
→ 震荡发散,越改越乱
✅ 可控的交互
markdown
你:"写个前端登录表单,包含:
1. 用户名+密码输入
2. 基础验证(非空)
3. 提交到 /api/login
先只做这三点"
AI:[生成简洁代码]
你:"验证通过。现在加上'记住我'选项:
- 在密码框下方添加checkbox
- 不要改动现有的验证逻辑"
AI:[精确添加,不影响其他部分]
你:"好的。最后加上密码显示/隐藏切换:
- 在密码框右侧加图标按钮
- 保持现有布局不变"
AI:[完成最终版本]
→ 小步迭代,逐步逼近,始终可控
更大的启示:信息控制论的时代
从物理控制到信息控制
20世纪中期(钱学森):
控制对象:火箭、飞机、工业设备
控制目标:位置、速度、温度
控制方法:PID、状态反馈、最优控制
21世纪(AI时代):
控制对象:AI生成过程
控制目标:理解准确性、输出质量
控制方法:提示工程、多轮对话、反馈设计
本质相同:都是动态系统的稳定性问题
AI Agent需要"稳定性理论"
未来的AI编程工具,需要解决:
-
收敛性保证
- 如何确保多轮对话收敛到正确解?
- 什么情况下会发散?
-
鲁棒性设计
- 如何应对模糊的、矛盾的需求?
- 如何从偏离状态恢复?
-
最优策略
- 如何用最少轮次达到目标?
- 如何平衡探索和确定性?
这些都是经典的控制论问题,只是搬到了信息空间。
总结:三个核心认知

1. AI编程本质上是一个动态反馈系统
markdown
需求 → AI → 代码 → 反馈 → 调整 → ...
↑_________________________|
"不听话"不是偶然,是反馈系统的固有挑战。
2. 控制论思维可以改进AI交互
- 小步迭代 → 稳定性
- 精确反馈 → 降噪声
- 状态显式 → 可观测
- 自动测试 → 快速反馈
- 系统化策略 → 可控性
3. 我们正在进入"信息控制论"时代
从控制火箭,到控制AI的生成过程:
- 数学基础相同(动态系统理论)
- 挑战类似(稳定性、最优性、鲁棒性)
- 但操作对象从物质变成了信息
AI工具要"听话",需要的不只是更强的模型,还需要更好的"控制论"。
延伸思考
下次使用AI编程工具时,不妨问自己:
- 我的需求够明确吗?(输入信号)
- 我的反馈够精确吗?(误差信号)
- 我在让系统"小步快跑"还是"一步到位"?(增益选择)
- 我有没有让系统"记住"关键约束?(状态管理)
把自己当成控制器设计者,把AI当成被控对象。
你会发现,AI编程不是"对话",而是"控制"。