首页 / 文章 / AutoSaddler:能够自行修改背带的智能代理

AutoSaddler:能够自行修改背带的智能代理

让智能体在评估环节提出改进方案,以便持续监测其自我修改情况。

3147 词

可将此内容视为《AutoSaddler:教会AI智能体自我优化其工作流程》中理念的面向操作员的简化版本:清晰的阶段划分、有序的代码模块,以及能在交接过程中保留的恢复说明。将概览视为可度量的框架使用效果最佳,在扩大范围之前,先记录一份理想的执行日志、一个失败案例以及对应的回滚说明。相比庞大的脚本,应优先选择小型且可测试的单元。当某一步骤失败时,故障原因应能明确指向某个特定责任模块,而非复杂的流程链。

问题所在:智能体失败的原因并非仅限于模型本身

针对“智能体因模型之外的原因失败”这一问题,在修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功判定标准,并拒绝默许的半完成状态。 当下一步操作是编写代码或调用工具时,应优先选择具有结构化格式且经过模式验证的输出,而非自由形式的文字描述。

                 AI Agent
                     │
          ┌──────────┴──────────┐
          │                     │
       Model                 Harness
                                │
              ┌─────────────────┼─────────────────┐
              │                 │                 │
           Prompts            Tools          Middleware
              │                 │                 │
              └─────────────────┼─────────────────┘
                                │
                         Agent Loop Logic
                                │
                                ▼
                           Execution
                                │
                                ▼
                              Trace

从提示工程到驾驭工程

从提示工程到利用工程,应在修改代码之前明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外账单。当下一步操作是编写代码或调用工具时,优先选择具有架构验证的结构化输出,而非自由形式的文字描述。

引导式补丁

对于 Steering 补丁,在修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。 在网关处进行身份验证,在数据层再次授权。仅凭承载令牌并不足以界定租户边界。 对于 Steering 补丁,在修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相较于庞大的脚本,应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

功能补丁

在处理能力补丁时,首先需明确相关约定:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合要求。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,定义成功判定标准,杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试过程将会浪费大量时间。

执行轨迹即训练信号

在将执行轨迹作为训练信号进行处理时,首先需明确相关规范:所需的输入参数、成功标志,以及部分失败时的处理方式。这份清单能确保后续的代码修改始终符合要求。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解这些成本,可避免在代码从演示环境转向共享环境时出现意外费用。 需为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。若没有这些记录,调试代理循环时会浪费大量时间。

Task
  ↓
Model reasoning / response
  ↓
Tool selection
  ↓
Tool arguments
  ↓
Tool result
  ↓
Middleware
  ↓
Next model action
  ↓
Final answer
  ↓
Evaluation
Task failed
   │
   ▼
Agent never inspected repository metadata
   │
   ▼
Why?
   │
   ▼
Tool existed but description didn't expose its purpose
   │
   ▼
Diagnosis
   │
   ▼
Update tool description
   │
   ▼
Evaluate again

AutoSaddler的优化循环

在处理 AutoSaddler 的优化循环时,首先需明确规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,以便操作人员无需查看整个系统结构即可进行审计。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。若没有这些追踪信息,调试代理的循环过程将会浪费大量时间。 在处理 AutoSaddler 的优化循环时,首先需明确规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 相比庞大的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障原因应能指向单一责任模块,而非复杂的流程链。

             Training Cases
                    │
                    ▼
              Run Agent
                    │
                    ▼
              Execution Traces
                    │
                    ▼
          ┌───────────────────┐
          │ Diagnosis-Patch   │
          │                   │
          │ Find root cause   │
          │ Propose patch     │
          └─────────┬─────────┘
                    │
                    ▼
              New Candidate
                    │
                    ▼
                Evaluate
                    │
          ┌─────────┴─────────┐
          │                   │
       Improved            Regressed
          │                   │
          └─────────┬─────────┘
                    ▼
               Reflection
                    │
                    ▼
             Reusable Lessons
                    │
                    ▼
                EvoDAG
                    │
                    ▼
            Candidate Evolution
                    │
                    ▼
             Development Gate
                    │
                    ▼
          Best Generalizing Harness

1. 诊断补丁:找出真正的问题

  1. 将“诊断补丁:找出真正的问题”视为可测量的对象来处理效果最佳。在扩大范围之前,先收集一份典型的成功案例、一个故障实例以及回滚说明。 将此阶段视为输入与已验证输出之间的契约。为相关文档命名,明确成功标准,杜绝默许的半完成状态。 提供具有严格结构定义和明确副作用标注的工具。主机需要在自动批准之前知道哪些调用会改变系统状态。

2. 反思:从结果中学习

  1. 反思:将结果视为可测量的指标来分析,这样才能最有效地从中学习。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。在功能结果旁还需记录执行时间以及令牌或查询成本。提前了解这些成本信息,可避免在系统从演示环境转向共享环境时出现意外费用。应提供具有明确结构规范和清晰副作用标注的工具,这样主机方在自动批准之前就能知道哪些调用会改变系统状态。
Patch:
Add stronger instruction to inspect repository metadata.
Observed:
✓ Fixed cases A, B, C
✓ Existing cases remain stable
✗ Case D still failsLesson:
Instruction improves metadata discovery,
but does not address downstream tool selection.

3. 演进:不要忘记那些有效的做法

  1. 演进策略:在将系统视为可度量对象时,切勿忘记那些已被验证为最有效的做法。在扩大范围之前,务必记录一份最佳实践案例、一个失败案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。 需提供具有明确数据结构和清晰副作用标识的工具。主机在自动批准操作之前,必须清楚哪些调用会改变系统状态。
  2. 演进策略:在将系统视为可度量对象时,切勿忘记那些已被验证为最有效的做法。在扩大范围之前,务必记录一份最佳实践案例、一个失败案例以及回滚说明。 相比庞大的脚本,应优先选择小型且易于测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个特定功能,而非整个复杂的流程。
Patch 1 → Patch 2 → Patch 3
                 Base
              /    |    \
             /     |     \
          P1       P2      P3
          │       / \       │
          │      /   \      │
         P4     P5   P6     P7
                 \   /
                  \ /
                   P8

最重要的保障:泛化能力

对于“最重要的保障:泛化能力”,在修改代码之前需明确输入内容、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 应将这一阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功判定标准,杜绝默许的半完成状态。 在网关处进行身份验证,在数据层再次授权。仅凭承载令牌并不足以界定租户边界。

Training cases
      │
      ▼
Generate candidate
      │
      ▼
Evaluate
      │
      ▼
Development split
      │
      ▼
Does the improvement generalize?
      │
   ┌──┴──┐
   │     │
  Yes    No
   │     │
   ▼     ▼
Keep   Reject

为何持久执行如此重要

为了解释为何稳定的执行如此重要,在修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录执行时间以及令牌或查询成本。提前了解这些成本可以避免在从演示环境过渡到共享环境时出现意外费用。

                    Run
                     │
                     ▼
              Append-only Events
                     │
       ┌─────────────┼─────────────┐
       ▼             ▼             ▼
   Candidates    Evaluations    Sessions
       │             │             │
       └─────────────┼─────────────┘
                     ▼
                Snapshot
                     │
                     ▼
                Final Result

可重复性被视为首要考量

由于可重复性被视为首要考量,因此在修改代码之前必须明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志都应集中存放于一个位置,这样操作人员无需查看整个系统结构即可进行审计。 在网关处进行身份验证,在数据层进行重新授权。仅凭承载令牌并不足以界定租户边界。 由于可重复性被视为首要考量,因此在修改代码之前必须明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。 相较于庞大的脚本,应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能指向单一的责任主体。

远比复杂的管道系统要好。

Candidate A
   │
   ├── Prompt version X
   ├── Harness commit Y
   ├── Dataset revision Z
   └── Model configuration M

V1与V2的对比

在处理V1与V2的差异时,首先需明确契约内容:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与经过验证的输出之间的契约。为相关产物命名,定义成功判定标准,杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试过程将会浪费大量时间。

V1

在处理V1版本时,首先写下接口契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及代币或查询成本。提前了解成本情况,可避免从演示环境过渡到共享环境时出现意外的费用支出。 为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试循环会浪费大量时间。

V2

在开发 V2 版本时,首先需明确接口规范:所需的输入参数、成功标识以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 配置信息应与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中管理,这样操作人员无需查看整个系统结构即可进行审计。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。如果没有这些记录,调试代理将陷入无止境的循环,耗费大量时间。 在开发 V2 版本时,首先需明确接口规范:所需的输入参数、成功标识以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤出错时,故障应能指向具体的责任模块,而非复杂的流程链。

             AutoSaddler Core
                       │
              Scenario Plugin
                       │
       ┌───────────────┼───────────────┐
       ▼               ▼               ▼
    Harness         Benchmark       Evaluator
       │               │               │
       └───────────────┼───────────────┘
                       ▼
                 Evidence Builder
                       │
                       ▼
                 Optimizer Engine

插件让该理念更具扩展性

将插件这一可扩展理念视为可度量的对象,才能使其发挥最佳作用。在扩大范围之前,先记录一份理想的测试用例、一个失败案例以及回滚说明。 把这一阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,绝不允许默许不完整的完成状态。 提供具有严格结构定义和明确副作用标注的工具。主机需要在自动批准之前知道哪些调用会改变系统状态。

              AutoSaddler
                   │
       ┌───────────┼───────────┐
       ▼           ▼           ▼
    Agent A     Agent B     Agent C
       │           │           │
    Plugin A    Plugin B    Plugin C

AutoSaddler的独特之处是什么?

AutoSaddler的独特之处何在?当将其视为可度量的界面时,其功能才能发挥最佳效果。在扩大应用范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在系统从演示环境过渡到共享环境时出现意外费用。该工具还提供了具有明确结构定义和副作用标注的功能模块,让主机能够在自动批准之前知晓哪些调用会改变系统状态。

1. 它能优化整个系统架构

  1. 将整个系统视为可测量的对象来优化,效果最佳。在扩大范围之前,需记录一份理想状态下的运行日志、一个故障案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能开关应集中存放,以便操作人员无需查看全部内容即可进行审计。 提供结构清晰、带有明确副作用标注的工具。主机需要在自动批准之前知道哪些调用会改变系统状态。
  2. 将整个系统视为可测量的对象来优化,效果最佳。在扩大范围之前,需记录一份理想状态下的运行日志、一个故障案例以及回滚说明。 相比复杂的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个特定功能,而非整个复杂的流程。

2. 先诊断再修改

对于第2点,它会在修改之前进行诊断,在更改代码之前明确输入参数、该步骤的负责人以及退出标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应将此阶段视为输入与经过验证的输出之间的契约,为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。在网关处进行身份验证,在数据层面重新授权——仅凭承载令牌并不能界定租户边界。

3. 它采用结构化的干预措施

对于第3点,它在修改代码之前会使用结构化干预措施,明确输入内容、该步骤的负责人以及退出标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。除了功能结果外,还需记录执行时间以及令牌或查询成本。提前了解这些成本可以避免在流程从演示环境转向共享环境时出现意外费用。

4. 它能从故障中学习

对于第4点,应在修改代码之前通过回归测试来明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,这样操作人员无需查看整个流程即可进行审计。 在网关处进行身份验证,在数据层面重新授权。仅凭承载令牌并不足以界定租户边界。 对于第4点,应在修改代码之前通过回归测试来明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。 相较于庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

5. 它致力于泛化能力优化

在处理“5. 它致力于泛化能力优化”这一部分时,首先需明确相关约定:所需输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,定义成功检测标准,并杜绝无声的半完成状态。 需记录每次调用的工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试过程将会浪费大量时间。

6. 它保留演化历史

在处理第6点时,为保留演化历史,首先需列出相关约定:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合初始设计。

在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在代码从演示环境转向共享环境时出现意外费用。

需为每次调用记录工具名称、参数哈希值、延迟时间以及最终结果。没有这些记录,调试过程将会浪费大量时间。

7. 具有持久性

在处理“7. 它具有持久性”这一要求时,首先应明确相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持透明可追溯。 应将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,这样操作人员无需查看整个系统结构即可进行审计。 需为每次调用记录工具名称、参数哈希值、延迟时间以及执行结果。如果没有这些追踪信息,调试代理将陷入无止境的循环,耗费大量时间。 在处理“7. 它具有持久性”这一要求时,首先应明确相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持透明可追溯。 相比庞大的脚本,更应优先使用小型且易于测试的单元。当某个步骤出现故障时,故障点应能明确指向单一责任模块,而非复杂的流程链。

接下来可能会是什么?

接下来可能会发生什么?将其视为可测量的界面来处理效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,绝不允许默默地完成部分工作。 使用具有严格结构且带有明确副作用标签的工具。主机需要在自动批准之前知道哪些调用会改变状态。

持续优化工具框架

将持续优化工作视为可度量的对象时效果最佳。在扩大范围之前,先记录一份理想运行示例、一个故障案例以及回滚说明。 在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在系统从演示环境过渡到共享环境时出现意外账单。 应提供具有明确结构定义和清晰副作用标注的工具。主机需要在自动批准之前知道哪些调用会修改系统状态。

工具的自动化演进

将工具的自动化演进视为可度量的对象时效果最佳。在扩大范围之前,先记录一份理想运行示例、一个故障案例以及回滚说明。 应将配置信息与应用程序代码分开。环境文件、密钥存储及功能开关应集中存放,以便操作人员无需查看整个系统结构即可进行审计。

中间件优化

跨智能体学习

成本感知优化

Quality
   +
Reliability
   +
Latency
   +
Token Cost
   +
Tool Cost

未来的工程挑战

总结思考

操作检查清单