| 1 | # 文件观察生命周期 |
| 2 | |
| 3 | Reasonix 现在只用一份宿主管理的实时文件版本观察来保护结构化文件修改。它不再计算模型读过多少内容,也不再用回执、`source_token` 或全文读取债务授权写入。 |
| 4 | |
| 5 | 每个运行中的代理拥有独立的内存观察表,按执行路由和规范化文件身份索引。状态为 `unseen`、`absent` 或 `present(version)`。普通用户轮次、压缩和同会话模型切换不会清空;恢复或替换会话、分叉、回溯、切换文件执行环境会清空。子代理不会继承父代理的观察。 |
| 6 | |
| 7 | 成功读取任意文本窗口会记录当前版本;确认目标不存在会记录 `absent`;权限、超时等失败不更新状态。结构化修改成功后直接记录提交后的版本,因此可连续编辑,无需补读或等待下一 provider round。提交已发生但无法取得新版本时,会保留成功事实并清除该目标的可用观察。 |
| 8 | |
| 9 | 未观察目标的编辑返回 `FS_NOT_OBSERVED`。未观察或已确认不存在的目标只能用不可覆盖的原子创建。覆盖现有目标时,文件工具在目标锁内检查观察版本、从该版本计算修改、发布前再次检查、按路由原子发布,并记录新版本。版本不一致返回 `FS_STALE_VERSION`,重新读取任意有用窗口即可恢复。 |
| 10 | |
| 11 | 同一宿主进程中的文件工具共享修改锁,多目标按稳定顺序加锁。符号链接、硬链接和大小写别名使用规范路径与原生文件身份。磁盘版本包含文件身份、大小、纳秒时间、变更信息、权限等可用元数据。有界读取用同一文件句柄读取并比较前后元数据,不为大文件额外扫描全文。磁盘与未保存缓冲区版本不可互换;缓冲区提交失败不会偷偷写磁盘。ACP 因现有协议没有原子条件写入,只能保留源摘要复查和同路由提交,不能宣称远端原子 CAS。 |
| 12 | |
| 13 | `read_file`、`write_file`、`edit_file`、`multi_edit`、`notebook_edit`、`delete_symbol`、`delete_range` 和 `move_file` 使用此规则。bash、MCP 和外部程序不会登记模型观察;它们造成的变化由下一次结构化修改发现。 |
| 14 | |
| 15 | `read_file` 始终返回受输出和资源限制的窗口。旧 `intent` 和 cursor 继续兼容解析,但 `intent=full` 不再产生强制续读。窗口读取只表示模型观察过该版本,不代表全文审阅。分页未完成不会阻止 bash、MCP、其他文件工具或最终回答。 |
| 16 | |
| 17 | 旧读取信封、回执、ReadPause、ReadCompletion 和 `source_token` 字段仍可用于历史展示,但不能重建实时观察或重新安装门禁。 |
| 18 |