AI

从算风的到写代码的:为什么 CFD 工程师是天然的 AI Agent 架构师?

Wayne Wei
8 分钟阅读时间

2019 年我还在用 Star-CCM+ 跑外流场仿真,每天盯着残差曲线看计算是否收敛。2024 年我在 VS Code 里写 AI Agent 的编排逻辑,发现 Debug 时盯着的还是那两条曲线——只不过这次是 LLM 调用链路上的 Token 消耗和任务完成率。

这不是段子,是我真实的体感。

CFD 和 AI Agent 的底层同构性

先看两张图在大脑里的样子(你不需要真画出来):

CFD 求解循环: 初始化流场 → 设置边界条件 → 迭代求解 → 监控残差 → 判断收敛 → 否?调整参数继续迭代。是?输出结果。

AI Agent 执行循环: 接收用户指令 → 设置上下文约束(System Prompt)→ 规划任务 → 调用工具/LLM → 监控中间结果 → 判断是否完成任务 → 否?调整策略重试。是?返回最终结果。

看到了吗?这几乎是一个模子里刻出来的。

1. 边界条件 vs. System Prompt

在 CFD 中,边界条件决定了求解空间:入口速度、出口压力、壁面粗糙度——任何一条设错,结果就发散。

在 AI Agent 中,System Prompt 就是你的边界条件:角色定义、输出格式、约束规则、工具权限。Prompt 写得模糊,Agent 的行为就会像湍流一样不可预测。

你是一个客服助手。

vs.

你是一个电商客服助手。
- 仅回答订单相关问题
- 涉及退款必须转人工
- 语气保持专业,但不过度正式
- 每次回复不超过 100 字

后者就是在给 LLM 定义”入口边界”。

2. 迭代收敛 vs. 任务闭环

CFD 里最折磨人的是”算不收敛”——残差曲线平了又翘,涡流在某个区域死活稳定不下来。这时候你要么加密网格,要么调整松弛因子。

AI Agent 里最折磨人的是”任务不完结”——Agent 在工具调用和 LLM 推理之间来回震荡,同一个问题重复三次还是拿不到正确答案。这时候你要么优化 ReAct 循环,要么给个”最大步数”硬边界兜底。

本质都是在解决同一个问题:如何在有限的计算资源内逼近可接受的解。

3. 残差监控 vs. Logging/Observability

做 CFD 的人对残差曲线有肌肉记忆:前 200 步陡降,然后进入平台期,偶尔一个小尖峰说明有涡脱落——你在监控求解器的”健康状态”。

写 Agent 的人现在也需要同样的肌肉记忆。每个 LLM 调用的延迟、Token 消耗、Tool Call 的成功率,就是 AI Agent 的残差曲线。你可以用 LangSmith、Phoenix 或者自己搭一套简单的 Logging 来盯着它们。

# 一个简化版的 Agent 监控——和 CFD 残差监控惊人的相似
class AgentMonitor:
    def __init__(self, max_steps=15, residual_threshold=0.95):
        self.max_steps = max_steps
        self.threshold = residual_threshold  # 相当于收敛判据
        self.history = []

    def log_step(self, step, task_progress, tool_success):
        self.history.append({
            "step": step,
            "progress": task_progress,   # 类比残差值
            "tool_ok": tool_success       # 类比 CFL 数
        })
        if step > self.max_steps:
            raise TimeoutError("任务未收敛")
        if task_progress > self.threshold:
            print(f"🎯 收敛于第 {step} 步")
            return True
        return False

我不确定这个类比是否成立——后来团队里的老 CFD 同事试了一下,说”这玩意儿和我那个残差监控脚本写到一个文件里去了”。

为什么这个转型路径很”顺”

不是因为我厉害,而是因为流体力学和 LLM Agent 的核心思维恰好共享同一套体系

CFD 工程思维AI Agent 开发思维
计算域离散化任务拆解(Decomposition)
边界条件敏感Prompt 敏感
迭代求解ReAct 循环
残差监控Tool Call + LLM 响应监控
网格无关性验证Prompt 鲁棒性测试
求解器选择(压力基/密度基)模型选择(GPT-4/Claude/Llama)
UDF(用户自定义函数)Function Call / Tool Use
后处理可视化链路追踪 + 可视化

这种映射关系的存在,意味着你不需要从头建立思考框架。你只是在迁移——把对”计算收敛”的直觉,转化成对”任务闭环”的直觉。

所以如果你也是传统工程背景想转 AI

别从 Transformer 的论文开始看——除非你对自注意力机制真的感兴趣。先从你最熟悉的调试直觉系统思维入手:

  1. 找一个你熟悉的物理过程(燃烧、流动、传热、结构响应)
  2. 找到它和 LLM Agent 的对应关系(上面那张表可以当起点)
  3. 用你最舒服的方式开始写——对 CFD 工程师来说,Python 脚本比 Web 后端友好得多
  4. 接受第一个 Agent 写得又慢又烂——就像第一个网格画得一样烂,但你会慢慢加密的

几个月前我写了第一个 Agent,拿了 420 美元的 Token 换来了一个 70% 正确率的原型。CFD 的朋友说”这也太亏了”,我说”我跑了 3000 核·时的仿真算一个案例的时候,也没人说便宜”。

转型不是从零开始,是把旧工具包里的直觉倒进新的容器里。

学会怎么用了之后,需要自己总结出自己的范式。这样会走得更顺一些。