惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
P
Palo Alto Networks Blog
P
Proofpoint News Feed
AI
AI
Help Net Security
Help Net Security
S
Securelist
T
Troy Hunt's Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cisco Blogs
Scott Helme
Scott Helme
Hacker News - Newest:
Hacker News - Newest: "LLM"
Vercel News
Vercel News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
GbyAI
GbyAI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Proofpoint News Feed
S
Security Affairs
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
T
Tenable Blog
H
Help Net Security
NISL@THU
NISL@THU
F
Fortinet All Blogs
博客园_首页
G
GRAHAM CLULEY
L
LINUX DO - 最新话题
P
Privacy International News Feed
G
Google Developers Blog
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
The Register - Security
The Register - Security
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
Forbes - Security
Forbes - Security
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
D
Docker
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
L
Lohrmann on Cybersecurity
T
Tailwind CSS Blog

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
从控制论看 Harness Engineering:当反馈回路终于能在"重要的地方"闭合
royalrover · 2026-05-15 · via 博客园_首页

一、引子

第一次接触"控制论"这个词,是大学《信息论》课本的脚注里。当时只觉得那是个挺浪漫的术语——cybernetics,希腊语 κυβερνήτης,意思是"舵手"。多年后我才意识到,这门学科真正想讲的是一件极其朴素的事: 任何系统要保持稳定,都得有人(或某个机制)拿着舵,根据偏差不断微调方向 。维纳在 1948 年把它正式立成一门学问,覆盖机械、生物、电子、社会——但它本质上只关心几件事:目标、感知、反馈、修正、稳态。

最近我重新捡起这个概念,是因为发现 AI 编码冒出来的"Harness Engineering"思潮,几乎一比一地在重演控制论的老故事——只不过这次,舵柄被装在了 LLM Agent 上。

二、一个被忽视的事实:代码库一直有反馈回路,只是太低级

仔细想想,软件工程从一开始就是控制论的拥趸:

  • 编译器 :在语法层闭环——"代码合法吗?"
  • 单元测试 :在行为层闭环——"功能对吗?"
  • Linter / Formatter :在风格层闭环——"写法符合规范吗?"
    这三类工具完全符合控制论的定义:它们都有传感器(检测)、执行器(报错/修复)、目标函数(通过/不通过),构成了一个标准的负反馈闭环。

但它们也都有一个共同的边界—— 只能处理"机械可判定"的属性 。

至于真正决定一个系统死活的问题:

  • 这次改动是否破坏了架构分层?
  • 这个抽象在 6 个月后会不会变成债务?
  • 这个接口的命名是否暴露了不该暴露的实现细节?
  • 这个修复是否只是补丁,没有触及根因?
    ——这些问题没有传感器,也没有执行器。它们悬空在那里, 只能靠人来感知、判断、修正 。Code Review 是唯一的"人形闭环",慢、贵、不可扩展、还经常因为评审者疲劳而失灵。

三、Transformer 之后,传感器和执行器同时出现了

2017 年那篇 Attention 论文之后发生的事,本质上是把"以前只有人能做的事"变成了一种可以被批量生产的能力。LLM 第一次让两件事同时成立:

  1. 它能在高层语义上"感知" ——能读懂"这段代码违反了 DDD 的边界"
  2. 它也能在高层语义上"动作" ——能把一个错位的接口重构到正确的层级里
    这一刻, 控制论的反馈回路终于能在那些"重要的决策点"上闭合了 。Harness Engineering 的价值,就是认识到这件事,并把控制论里所有被前几代工程师们用过、试过、验证过的稳态设计套路——分层、边界、负反馈、二阶控制——一次性全部拉到 LLM Agent 身上。

四、Harness Engineering 的三层控制论结构

我把 Harness Engineering 拆成三个层次来理解,每一层都对应控制论里的一个经典概念。

第一层:闭环控制——把"写代码"变成自动调节系统

OpenAI 团队公开过他们的内部 Agent loop 大概是这样的:

人类输入意图(setpoint)
    │
    ▼
Agent 生成代码(actuator)
    │
    ▼
Lint / 测试 / 架构守卫执行(sensor)
    │
    ▼
错误信号回流给 Agent(feedback)
    │
    ▼
Agent 自我修正(control)
    │
    └──── 直到所有信号都收敛 ────┐
                                  │
                                  ▼
                              收敛到目标

这是教科书式的负反馈控制系统。如果把里面的"Agent"换成"温度调节阀",把"测试"换成"温度计",这就是恒温器。

人类的角色变了。我们不再"敲代码"——我们 设计这个闭环 :决定哪些东西算 setpoint,决定哪些信号是 sensor,决定误差容忍度,决定什么时候要把系统拉出来人工干预。

第二层:硬约束 > 软建议——用机械边界代替"请你不要"

控制论里有个反直觉的真相: 减少自由度,比增加智能更能让系统稳定 。瓦特调速器之所以能工作,不是因为它"很聪明",而是因为它的机械结构物理上就只允许"转速高 → 阀门关小"这一种因果链。

Harness Engineering 把这个原则贯彻到了极致—— 让 AI 不可能越界,而不是请它别越界 :

  • 目录结构强制分层: ui/ → service/ → domain/ → infra/
  • Lint 规则禁止反向 import: ui 文件 import infra 直接红线
  • 类型系统编码契约:核心域类型不允许被序列化层污染
  • CI gate 一票否决:违规 PR 根本进不了主干
    这些都不是"建议",是机械边界。Agent 在生成代码时哪怕"想"违规也做不到——因为它的输出会被立刻拒绝并附带具体错误信息,进入下一轮反馈。

控制论给这种设计的术语是: 用环境约束替代行为约束(constraint shaping) 。结果就是系统的稳态空间被人为收窄,AI 再"聪明"也只能在这个空间里跳舞。

第三层:二阶控制——让规则本身也能进化

这是 Harness Engineering 最有意思的地方,也是真正把它从"高级 CI"提升到"自组织系统"的地方。

控制论里的二阶(second-order cybernetics)讲的是: 不仅控制系统行为,还控制控制系统的规则 。Heinz von Foerster 的话糙理不糙——"一阶控制让系统稳定,二阶控制让系统进化"。

落到 Harness Engineering 上:

一阶 二阶 Agent 通过测试 人类把"Agent 上次犯的错"沉淀成一条新规则 Lint 检查代码风格 出现新的反模式 → 加新的 Lint rule CI 阻断坏 PR 后台有 Agent 定期扫描技术债、自动修复 测试套件验证行为 测试套件本身根据新发现的边界条件自动扩张

这条二阶回路的存在意味着: 这个系统每被使用一次,它的"自我控制能力"就强一点 。它不会因为暴露了更多场景而变得脆弱,反而会因为新场景被编码进规则而变得更稳。

控制论里有一个专门的词形容这种性质—— 反脆弱(antifragile) 。一个反脆弱系统接受冲击后不是恢复原状,是变得比之前更强。

五、《三体》童话中宽姨打的那把伞

控制论的图腾,就是瓦特那个带重锤的飞球调速器。在它出现之前,蒸汽机旁边必须站一个工人,盯着压力表手动开关阀门。这个工人很重要,他的判断决定了机器的死活。

调速器装上之后,这个工人没有失业——但他的工作变了。他不再拧阀门,他开始 设计更好的调速器 :怎么让响应更灵敏,怎么避免共振,怎么在高负载下不失稳。

设计调速器的工人,没有再回去拧阀门。不是因为他们做不到,而是因为这件事已经没有意义。

Harness Engineering 想做的事,本质上是同样的位移:
让程序员从"逐行写代码的工人"变成"设计代码生产闭环的控制系统工程师"。
这不是浪漫化叙事。这是控制论一个世纪以来反复发生的剧本—— 任何一个领域,只要它的关键反馈回路能被自动化闭合,从业者的工作就会上移一层 。

六、总结

Harness Engineering 是把"写代码"从一门 手工艺 ,重新定义成一项 控制系统设计 ——它不再追问"你能写多快",而是追问"你设计的这个反馈系统,能不能在没有你看着的情况下持续收敛到正确的状态"。
这件事不是 AI 时代的新发明。维纳在 1948 年就讲完了。我们只是花了 70 多年,等到了一种感知/执行能力足够强的"执行器",才让控制论第一次有机会进入软件工程的高层语义闭环。

所以,下次再有人问"AI 取代程序员了吗"——可以反问一句:

瓦特调速器普及之后,那个拧阀门的工人,算不算被取代了?