AI渐进编程之五:SIADOS 状态转移方法

前一篇我们讲的是状态机怎么描述转移。
这一篇继续往前走,重点不在“状态怎么摆”,而在一轮任务推进里,状态怎么更新,系统怎么靠反馈继续往前走

为了说明这个过程,本书把一轮任务拆成六个部分,称为 SIADOS

  • S:State
  • I:Input
  • A:Analysis
  • D:Driver
  • O:Output
  • S’:State Update

这六步不是为了显得复杂,而是为了把 AI 编程从“一次性输出”变成“有反馈的持续推进”。


1. 为什么要从一次输出,变成 SIADOS?

如果只有一次输出,系统最多只能回答“这一轮做了什么”。
但真实任务不是一轮结束的,尤其是这些情况:

  • 论文要反复修改
  • 代码要多轮修复
  • 状态要持续维护
  • 失败要留下轨迹
  • 下一轮要基于上一轮继续推进

这时,真正重要的就不是“这一轮写了什么”,而是:

  • 这一轮之前系统处于什么状态
  • 这一轮输入了什么
  • 这一轮分析出了什么
  • 这一轮执行了什么
  • 这一轮输出了什么
  • 这一轮之后状态变成了什么

这就是 SIADOS 的意义。


2. SIADOS 里的六步分别做什么?

2.1 S:State

State 不是聊天记录,而是当前项目已经确认的事实。

比如:

  • 当前任务是什么
  • 当前允许修改的范围是什么
  • 已知问题有哪些
  • 上一轮结果是什么

2.2 I:Input

Input 是这一轮新的输入。

它可以来自:

  • 人类的新要求
  • 上一轮的验证结果
  • 当前任务的补充信息
  • 新发现的约束或问题

2.3 A:Analysis

Analysis 是分析任务边界和风险。

这一轮能不能做、该不该做、要不要缩小范围,通常都在这一层判断。

2.4 D:Driver

Driver 是真正执行动作的部分。

它负责把分析结果变成修改、调用或其他受控动作。

2.5 O:Output

Output 是这一轮产生的结果。

可能是:

  • 文本修改
  • 代码 diff
  • 验证结果
  • 问题记录
  • 新状态的候选内容

2.6 S’:State Update

State Update 是最关键的一步之一。

它把这一轮真正有用的事实写回状态,供下一轮继续使用。


3. 为什么状态更新比一次性输出更重要?

因为 AI 编程真正难的地方,不是开始做事,而是:

  • 做完之后,下一轮怎么接着做
  • 失败之后,下一轮怎么避免重复失败
  • 状态变化之后,系统怎么知道自己有没有在往前走

如果没有状态更新,SIADOS 就只是一次普通输出。
但有了状态更新,SIADOS 才变成一个真正的循环。


4. 为什么失败也必须写回状态?

很多人会下意识觉得,失败就失败了,重来就行。
但在 AI 编程里,这样做很容易让系统一直重复同一种错。

所以失败不能只停留在“结果不对”,
还要进入状态,变成可复用的反馈。

比如:

  • 这次为什么失败
  • 哪些路径已经试过
  • 哪些动作已经证明无效
  • 下一轮不要再走哪条路

这就是为什么本书一直强调:

失败不是消失,而是要被保存下来。


5. 什么叫收敛?

收敛不是一个很玄的词。
在这本书里,它的意思其实很朴素:

系统在多轮运行后,不再原地摆动,而是逐步接近一个可接受结果。

也就是说,收敛至少要满足三个迹象:

  • 修改范围越来越清楚
  • 失败路径越来越少
  • 状态越来越稳定

如果系统每一轮都在换方向、换文件、换理由,那就不是收敛,
而是摆动。


6. 为什么循环里的反馈比一次性输出更重要?

因为一次性输出只能说明“这一轮给出了什么”,
循环里的反馈才能说明“系统有没有越走越对”。

举个很简单的例子:

只看一次输出

你可能看到 AI 改了文本,看起来也通顺,似乎没问题。

看循环反馈

你会继续观察:

  • 它是不是只改了允许范围
  • 它有没有把问题写回状态
  • 下一轮是不是还在重复同样的错误
  • 失败后它有没有修正方向

这就是循环的价值。
它让 AI 不只是“能说”,而是“能在反馈里修正自己”。


7. 状态更新和收敛之间是什么关系?

这两者是连在一起的。

状态更新做对了

下一轮就能拿到正确的输入。

下一轮输入正确了

系统才有机会继续往收敛方向走。

如果状态更新错了

下一轮就会在错误基础上继续跑,最后越来越偏。

所以,状态更新不是附属动作,
它本身就是收敛的一部分。


8. 一个最小的 SIADOS 例子

可以先这样理解:

state:
  current_task: revise Introduction
  scope: [Introduction]
  issues: [claim too strong]

input:
  request: reduce claim strength
  constraint: do not touch Abstract / Conclusion

analysis:
  scope_ok: true
  risk: cross_section_drift
  action_plan: revise Introduction only

driver:
  action: apply_patch

output:
  changed_sections: [Introduction]
  validation: pending
  notes: [claim weakened, no scope violation]

state_update:
  current_task: revise Introduction
  scope: [Introduction]
  issues: [abstract may need later review]
  last_result: local refinement done

这里的重点不是 YAML,
而是它表达了一件很具体的事:

  • 这一轮不是结束
  • 这一轮只是推进了一步
  • 下一轮可以基于更新后的状态继续做

9. SIADOS 最容易犯的错

9.1 只记结果,不记原因

这样下一轮还是不知道为什么会失败。

9.2 只记失败,不记可继续的部分

这样系统会把自己卡死。

9.3 状态太重

每轮都写一堆无用信息,最后更新成本太高,没人愿意维护。

所以状态更新要控制粒度:
只保留能影响下一轮判断的内容。

10. SIADOS 和状态机、Harness 的关系

这一点要一起看。

Harness 做什么?

  • 限制动作
  • 检查结果
  • 执行验证
  • 约束下一步

状态机做什么?

  • 定义阶段之间怎么转
  • 定义什么时候能进入下一步
  • 定义失败后该去哪里
  • 定义哪些状态之间不能乱跳

SIADOS 做什么?

  • 把一轮任务拆成可执行的六步
  • 把输入、分析、执行、输出和状态更新串起来
  • 让下一轮真的能基于上一轮继续

可以这样理解:

  • Harness 是执行层的控制器
  • 状态机是控制层的骨架
  • SIADOS 是一轮推进的工作流

没有状态机,Harness 容易变成一堆临时规则。
没有 Harness,状态机又只是纸面结构,落不到实际动作上。
没有 SIADOS,系统就没有一个清楚的单轮推进框架。

11. 本章小结

这一章想讲清楚的核心是:

AI 编程不是一次性输出,而是一轮一轮在 SIADOS 里推进。

状态更新的意义,不是把历史堆起来,
而是把下一轮真正需要的事实写回去;
收敛的意义,不是每一轮都完全正确,
而是系统能在反馈中越来越接近可接受结果。

下一章,我会继续讲:为什么状态更新必须和验证结合起来,以及为什么“看起来对”不等于“真的对”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值