会改写自己的系统
追本之箭 — 会改写自己的系统
2026-07-18 Sat 07:02
起点
年轻 说:年轻不是出生得晚,而是世界仍能用预测误差改写你的模型。
系统与目标 说:目标只是罗盘;你真正能拨动的,是每天反复运行的系统。
两句话合起来,会撞出一个被“坚持”掩盖的问题:
如果系统是你每天重复的东西,那么一个不再允许现实改写的系统,正是衰老被制度化之后的样子。
很多系统起初有效,后来却只剩遵从:
曾经有效
→ 被写成规则
→ 因为是规则而持续运行
→ 因为持续运行而不再受审
这时,纪律不再保护真相。纪律开始保护旧版本。
所以真正的问题不是:
“我有没有坚持系统?”
而是:
“这套系统是否保留了被现实改写的接口?”
第一层:策略之上必须还有更新器
把系统只写成一条策略 P,它会根据输入产生动作:
动作 a(t) = P(状态 x(t))
这只能解释系统如何运行,解释不了系统如何变得更真。
一个完整系统至少有两层:
执行层:P 决定今天做什么
更新层:U 决定何时、依据什么证据改写 P
于是系统的真实形式不是 P,而是:
S = (P, U)
没有 U 的 P,无论最初多聪明,最终都会变成化石。因为环境在变,约束在变,行动者也在变;只有规则被冻结。
这解释了一个常见反转:系统越成功,越容易老。成功会把“过去在这个环境里有效”,偷换成“这条规则本身正确”。随后每次照做,都被当作纪律的证据,而不是规则仍然有效的证据。
重复只能证明你忠于规则,不能证明规则忠于现实。
裂缝: 可系统不能因为一次失败就改写。结果掺着随机,怎样区分“策略错了”和“这次只是运气差”?
第二层:更新信号不是失败,而是失配
系统与目标 已经把系统的输出从一个点改成了一个分布。既然如此,更新器就不能拿单次结果审判策略。
一次失败只是一个样本。真正该触发更新的,是预测分布与长期观测持续失配。
设系统原本预测:
在状态 x 下采取策略 P
结果 y 落入区间 R 的概率是 70%
运行一次没落进 R,不能说明系统错了;运行二十次,只有两次落进 R,才出现校准误差:
失配 e = 真实频率 - 预测概率
因此更新条件不是:
结果不好 → 改系统
而是:
结果序列持续偏离预测
且偏离超过随机噪声能解释的范围
→ 改系统
这把两种病同时切开:
- 每次受挫就换方法,是把噪声当信号。
- 连续失配仍只谈坚持,是把信号当噪声。
前者没有系统,后者只有教条。
裂缝: 即使看见了持续失配,改多少仍是问题。改得太慢会僵死,改得太快会追着噪声抖动。
第三层:系统也有学习率
更新器 U 的核心,是学习率 α:证据到来时,旧策略允许自己被改写多少。
P(t+1) = P(t) + α × 证据梯度
两个极端都不能学习:
α = 0 规则免疫于现实 → 化石
α 过大 一次波动就推翻规则 → 抖动
成熟系统不是固定一个 α,而是让它随证据强度与改动成本变化:
改写幅度 ∝ 证据强度 × 改动可逆性
- 证据弱、改动不可逆:小步试验,不动主结构。
- 证据强、改动可逆:快速更新,停止为旧规则辩护。
- 证据强、改动不可逆:先复制、隔离、灰度,再决定是否替换。
所以“坚持”与“开放”不是性格对立,而是同一个更新算法的两个阶段:证据未过线时坚持,证据过线后开放。
真正的纪律不是永不改规则。
真正的纪律是:证据没到时不乱改,证据到了时不赖账。
裂缝: 可执行和更新若同时发生,人会一边做一边怀疑,系统反而无法积累。怎样既稳定运行,又不把稳定变成封闭?
第四层:用双时间尺度隔开运行与改写
答案不是随时反思,而是让执行层和更新层运行在不同时间尺度。
快环:在一个周期内,按当前策略完整执行
慢环:在周期边界,汇总误差并决定是否改写
用时间常数表示:
τ执行 << τ更新
日内不因情绪改系统,周末不因惯性取消复盘;季度可以重写策略,年度甚至可以重审罗盘。
这套结构同时封住两种借口:
- “我在迭代”不能再为执行中途逃跑辩护,因为快环尚未结束。
- “我要坚持”不能再为长期失配辩护,因为慢环已经到期。
系统由此获得一种真正的稳定:不是规则不变,而是改变发生在预先约定的接口上。
稳定不再等于冻结。
稳定等于:运行期间不漂移,复盘时不自欺。
裂缝: 复盘通常默认目标不变,只修改到达目标的手段。但如果错的不是策略,而是那枚罗盘本身呢?
第五层:误差有三种,不只一种
系统最容易犯的错误,是把所有偏差都叫作“执行不到位”。
实际上至少有三层误差:
执行误差:没有按 P 做
模型误差:按 P 做了,但结果分布长期失配
价值误差:结果兑现了,但这个方向已不值得继续
三种误差对应三种不同动作:
| 误差 | 该改什么 | 最常见的自欺 |
|---|---|---|
| 执行误差 | 行为与环境 | “方法可能不对” |
| 模型误差 | 策略 P | “再坚持一下就好” |
| 价值误差 | 罗盘与计分函数 | “都走这么远了” |
只允许修执行、不允许修策略,系统会把人训练成更高效的失败者。
允许修策略、不允许修罗盘,系统会把人更可靠地送往一个已经不想去的地方。
所以最高层的更新器,必须有权审计自己的目标函数:
不仅问:怎样更好地得到它?
还要问:得到它之后,误差真的减少了吗?
这里的“误差”已不是目标与结果的距离,而是现实生活与价值判断的距离。
裂缝: 如果连目标函数都能改,系统还剩什么不变量?一个什么都能重写的系统,会不会连自己为何存在都一起改掉?
第六层:不可改写的,是继续改写的能力
自我修改系统需要一个最小不变量。否则每次更新都可能删除下一次更新的接口,让某个临时版本获得永久统治权。
这个不变量不该是某条具体规则,也不该是某个永恒目标。
它只能是:
I = 未来仍能接收误差、停止旧规则、重写系统的能力
它在现实里对应几样朴素的东西:可逆性、退出权、复盘窗口、未被耗尽的资源、没有被单一目标吞掉的判断力。
一个系统若为了提高效率,删掉所有冗余、停止点和异议接口,它可能暂时更快,却已经失去了学习能力。它不是收敛到了真理,只是让自己再也听不见反例。
于是“年轻”在系统层面的最终定义不是更新得快,而是:
没有任何一个当前版本,有权取消未来版本纠正它的资格。
裂缝: 到这里,再问“哪条规则应该永远不变”,问题本身已经错了。永远要保留的不是答案,而是答案被现实推翻之后,系统仍能活着改写自己的结构。
终点:系统的成熟,不是永远正确
一个成熟系统应当通过四个判别:
有策略:知道今天具体做什么
有预测:知道这套策略应产生什么分布
有更新:持续失配时,规则会被证据改写
有不变量:任何更新都不能删除未来的纠错权
最后把“坚持系统”改写成一句更精确的话:
在证据不足时,完整运行当前版本;
在证据过线时,亲手结束当前版本;
无论哪个版本,都不能封死下一次修正。
不会改写自己的系统,最终只剩一种能力:
把昨天的正确,更稳定地复制到一个已经不同的世界。
(箭到底了。)