系统状态不可见时不要先急着调整控制参数

工程调试里经常会直接进入调参、改策略、换实现。但系统状态不可见时,这些控制动作缺少依据,结果很容易变成反复试错。

控制之前有一个更基础的问题:系统是否能被观测。

一条更实际的链路是:

观测

理解

控制

反馈

优化

如果系统状态不可见,后续控制和优化都会退化成猜测。参数可以调整,代码可以修改,策略可以切换,但这些动作没有稳定依据。

调试能力经常被误判

很多团队会把问题归因到人的经验差异:

新人不会调试
老工程师会调试

这个判断只描述了表象。真实问题经常是系统缺少可观测性:

在这种条件下,新人在猜,老工程师也在猜。区别通常在于,老工程师更早停止猜测,转而补齐观测点。

有效调试的第一步应当转向确认系统内部发生了什么,随后再决定是否修改参数。

缺少观测会把问题变成玄学

当系统缺少观测点时,常见流程会变成:

出现异常

无法定位

修改参数

再次尝试

继续失败

多循环几次之后,团队会开始依赖经验、直觉和运气。问题看起来像玄学,本质是关键状态没有暴露出来。

工程系统通常存在因果链路,只是因果链路被隐藏了。只看最终结果,无法区分错误发生在输入、处理、缓存、调度、传输还是输出阶段。

嵌入式系统中的数据丢失问题

嵌入式系统里的数据丢失是典型案例。

如果只能看到最终结果:

数据少了

那就无法判断问题来自哪里:

这些问题的表现都可能是“数据丢失”,但修复路径完全不同。

此时继续优化代码通常没有意义。更有效的做法是沿数据链路增加观测点:

当每一段链路都有计数和状态,问题会从“数据为什么没了”变成“哪一段计数开始不一致”。后者才是可定位、可复现、可修复的问题。

优化前先让系统透明

不要急着优化一个看不清楚的系统。

工程优先级应该先转向可观测性建设:

这些工作看起来不直接修复问题,但能把系统从黑盒变成灰盒,甚至接近白盒。系统越透明,控制动作越容易形成闭环。

很多时候,可观测性提升带来的收益大于继续调整参数。因为参数优化只影响某个假设下的结果,而观测能力会提高后续所有问题的定位效率。

AI 更擅长利用观测,人类工程师更擅长设计观测

AI 可以帮助分析已经暴露出来的信息,例如日志、指标、调用链、配置、代码路径和错误堆栈。信息足够完整时,AI 能快速归纳模式,提出候选原因,生成排查步骤。

但 AI 很难凭空判断系统应该暴露什么:

这些判断依赖领域经验、系统结构理解,以及对关键变量的选择能力。

因此,AI 更擅长利用观测结果。人类工程师的核心价值之一,是为系统设计观测方式,让问题在发生时留下足够的信息。

结论

控制论在工程实践里的重要启发是:看不见的问题,无法被有效控制。

系统优化之前,先提高可观测性。让输入、状态、链路、队列、计数和异常现场变得可见,控制和反馈才有依据。

本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。