# RSIAgent 工程分析与 RSI Memory 设计更新

事实截止：2026-10-14。本文是本地源码审查与选定测试的分析，不是完整安全审计、
官方测评复现或对论文结果的独立审计。

## 1. 来源与复验范围

- 仓库：`https://github.com/AetherLabsAI/RSIAgent.git`
- 本地副本：`references/RSIAgent/`
- 固定版本：`4d7ef43770dda341fccd9a5743db92407687c615`，提交日期 2026-10-02。
- 许可证：Apache-2.0。未把上游代码复制到 DSH 插件，副本测试后工作区干净。
- 依据：README、`docs/ARCHITECTURE.md`、`docs/PAPER.md`、运行代码、配置与测试。
- 仓库声明论文为 arXiv:2609.15364，附有 PDF；本轮未通读 PDF，
  在线 GitHub/arXiv 抓取未返回可读正文，不能声称独立核对了论文全文。

使用现有 STATE-Bench Python 环境，不安装新依赖、不调用模型、不启动 VM：

```sh
cd references/RSIAgent
/Users/tjzhong/.qbot-dsh/tmp/state-bench/STATE-Bench/.venv/bin/python -m pytest -q \
  tests/test_self_evolving_loop.py tests/test_self_evolving_charters.py \
  tests/test_target_isolation.py tests/test_memory_retrieval_lifecycle.py
/Users/tjzhong/.qbot-dsh/tmp/state-bench/STATE-Bench/.venv/bin/python -m pytest -q \
  tests/test_recursive_improvement_framework.py tests/test_phase2_stop_policy.py \
  tests/test_verifier_isolation.py tests/test_phase1_wave_recovery.py \
  tests/test_unified_evolution.py tests/test_no_leakage.py
```

结果：第一批 74 通过；第二批 109 通过、4 失败，共 183 通过、4 失败。
失败均为 `test_model_stdout_truncation_cannot_erase_trusted_readiness` 参数实例：
本机 macOS 无 `/proc/self/fd/1`，生成日志为
`chown: /proc/self/fd/1: No such file or directory`，实际退出码 125。
这暴露了选定测试的 Linux 环境依赖；不能据此判断 Linux 隔离有缺陷，
也不能宣称完整测试通过。没有在 Linux 复验，没有运行官方 benchmark。

## 2. 真正值得参考的架构

模型权重固定，改进载体是跨任务持续存在的经验文件和练习过程。
它不是简单的“会话总结 + 向量召回”。

| 角色 / 阶段 | 实际职责 | 对我们的启示 |
| --- | --- | --- |
| Actor | 执行任务，在可信 PASS/FAIL 后提炼并协调记忆 | 经验需要修订与消歧，不只追加 |
| Verifier | 检查任务产物，不依赖 Actor 的私有记忆和对话历史 | 执行者不能给自己的任务结果背书 |
| Curriculum | 选择下一项练习、判断继续或停止 | 从被动等待失败转向主动补足能力缺口 |
| Host | 隔离、边界审计、日志、提交与恢复 | 控制面必须在模型外维护不变量 |
| Phase 1 / Broad | 并行探索，共同父记忆，波次屏障后有序合并 | 并行学习必须处理冲突与部分提交 |
| Phase 2 / Deep | 目标尝试、学习、相关练习、新 Actor 重测 | 练习应针对可证伪的能力假设 |
| Phase 3 | 冻结记忆，禁写回与课程学习，封闭正式评分 | 确认评测不再为学习提供反馈 |

主要实现入口：
`core/self_evolving_loop.py`、`explore/unified_evolution.py`、
`explore/target_learning.py`、`explore/commit.py`、`explore/phase1_wave.py`、
`explore/charter.py`、`benchmarks/osworld/pipeline.py`。

记忆使用文件清单和按需搜索/读取，也会在重复低信息动作、验证失败、
上下文折叠时提醒检索。是否优于我们的 prompt 注入需要实验，不能直接推定。
成功与失败都允许学习；`READY/STALLED` 是课程状态，不是正确性评分。
验证不确定或基础设施错误不计为 PASS。

Verifier 的私有视图、回滚镜像与挂载隔离值得参考，但本地 VM 回滚并不撤销
远程共享服务上的副作用。我们仍须禁止对生产连接器重复执行不可逆动作。

## 3. 不能照搬的证据结论

该仓库区分 held-out generalization 与 target-conditioned adaptation；
公开示例采用后者。对同一目标练习后重测不等于未见任务泛化。

根据 `docs/PAPER.md` 的自述，OSWorld 部分得分从 71.97 到 78.98，
ALE 从 83.75 到 84.82。但 OSWorld 82 题中的 RSI 行只有 41 个 RSI 结果，
另 41 题保留基线；ALE 67 题中有 19 个 RSI 结果、48 个保留基线。
记录包含选定重试、checkpoint、预算或协议差异与本地重评分。
四题阶段消融也选择了已有提升的探索性子集。
这些是作者报告的聚合结果，不是同协议配对重复实验的独立审计。

更关键的是 `explore/target_learning.py::_promote_learning` 的提交路径：
可信任务结果 → distillation → reconciliation → diagnosis → memory audit
→ journal → install。这里审计任务边界与记忆合法性，
**没有在每次安装前执行无记忆/候选记忆的独立收益配对门禁**。
不能把该函数名称中的 promote 等同于我们定义的生产收益准入。

我们必须分清三件事：

1. **任务正确性**：该次任务是否真的完成。
2. **经验来源与条件**：建议是否来自可信轨迹，条件、排除范围是否清楚。
3. **经验正向效果**：在冻结的新任务上，它相对对照救回了什么、损失了什么。

前两层不能替代第三层；即便练习题全通过，生产记忆仍可保持未发布。
也没有足够证据把上游课程自主选择等同于运行时自动重写 Host 算法。

## 4. 对我们设计的调整

### 双轨学习，而不是只等线上失败

保留真实用户任务的被动影子采集，新增主动、可回滚沙箱练习。
线上轨迹提出能力缺口；练习验证失败机制、尝试修订并生成反例。
不在用户工作区后台改代码，不导入私有日常会话。

### 最小 CurriculumController

先用确定性策略验证闭环，再增加模型课程提议。
动作可为 `ABSTAIN / PROPOSE / PRACTICE / RECONCILE / REQUEST_EVALUATION`。
Controller 可以安排练习，不能修改评分、绕过门禁或开启未经授权的工具。
执行沿用原生 DSH Session、默认 system prompt 和模型参数，不另建直接 LLM 链路。
Host 控制每日费用、并发、尝试次数、停止与取消，不让模型无限决定“再练一次”。

### 三层验证与三层记忆

`OutcomeVerifier` 判断任务；`ExperienceGrounding` 校验来源与适用边界；
`BenefitEvaluator` 判断冻结候选的独立配对收益。
学习层可以使用未证实假设，不表示生产可以使用它。

明确 `draft -> practiceSnapshot -> confirmedRelease`：
草稿和练习版本不可变、可追溯；线上召回只读取已确认的 release。
修订用 `supersedes / contradicts` 与版本 lineage 表达，
不覆盖原始证据，也不让 Actor 随意改生产目录。

### 有选择地学习成功

当前 0.1.10 的成功安全轨迹直接跳过抽取；这是现状，不在本轮悄悄改动。
目标应允许从信息量高的成功中学习，如可信失败后的有效修复或可复现高质量路径。
是否触发由可审计信号、预算和收益决定，不对每条成功都调用学习模型。

### 把召回策略纳入评测

保留无记忆、直接注入、实际召回诊断；另比较关键词、语义与 Agent 按需读取。
按需读取仅暴露确认版本的只读视图，保留读取内容、版本和请求级 receipt。
不允许标为“无记忆”的 Agent 通过文件或工具拿到经验。
触发式检索是否有效需要对照，不能凭检索发生次数判断收益。

### 自动化先解决边界与恢复

区分 unknown、verifier-unresolved、stalled、budget-exhausted、
infra-error、quarantined，不把基础设施错误写成失败经验。
确定可恢复的任务边界、独占锁与 checkpoint，记录学习和验证全成本。
沙箱练习、数据保留、生产灰度与自动回滚是目标模块，尚未实现。

## 5. 落地顺序

1. 选一个可复现任务域，实现任务级边界、可信 OutcomeVerifier 和可回滚沙箱。
2. 通过原生 DSH owned Session 跑最小课程：一次假设、有限练习、可定位验证、
   修订或停止；未知不得制造候选，所有来源和费用可审计。
3. 比较被动学习与主动练习，在同预算下做 A/B/C/D 和静态提示等简单替代对照。
4. 冻结候选、检索与环境；独立留出确认，禁止课程访问确认题或评分反馈。
5. 证据达标后机器准入、限定发布、灰度、退化回滚；人不逐条批准。
6. 再扩展并行波次、选择性成功学习、按需检索与学习策略自演进。

第一轮不复刻 Python Harness、不引入整套 QEMU/Windows 部署、
不允许自由写生产 memory，不照抄上游大输出/长 watchdog 参数。
当前交付仍是 DSH 插件 0.1.10；本轮交付是源码分析与目标设计更新，
不改变安装包、不新增正向效果声明。
