Rna Agent
核心概念

隔离与回退

子代理、后台和你选定的对话各自在独立的工作树里改文件,改完自动合并回项目;每一轮都留检查点,随时可以整轮回退。

让 Agent 放手去改,前提是改坏了能退回来。Rna 从两头保证这一点:改动先落在独立的工作树里,确认后才合并进项目文件夹;每一轮都留检查点,写进项目的东西都能整轮还原。

谁在独立工作树里干活

谁在哪里改什么时候合并回项目
子代理(worker)每个子代理一个工作树做完后,条件满足时宿主合并,否则保持待处理,由主对话用 agent_merge 合并
后台工作每次运行一个工作树运行结束时合并
你选定的对话这个对话自己的工作树每次这个对话把结果交还给你时应用
其他对话直接在项目文件夹里写入即生效,靠检查点回退

对话要不要用独立工作树,只能在新建时选择(输入框旁的“在独立工作树中运行”)。终端、文件面板和预览都会跟着这个对话的工作树走。

合并时的规矩

  • 你在项目文件夹里还没提交的改动,永远是合并的一方,不会被覆盖。
  • 不动你的 Git 索引、HEAD 和分支,也不会把冲突标记写进项目文件夹。
  • 每个文件写入前都会核对它在合并期间没被别人改过;写之前先记账,中途崩溃也能接着恢复。
  • 被 .gitignore 忽略的文件(比如 dist/)不会合并回来;依赖清单变了会提醒你在项目文件夹里重新安装。

两边改了同一处、一边改一边删、二进制文件两边都改了,这类情况算冲突。子代理的冲突由主对话用 agent_merge 处理:查看两边、选一边或手动解决;需要你拍板的,会以卡片的形式出现在输入框上方。

每一轮都能回退

每一轮开始时都会留一个检查点。这一轮写进项目文件夹的改动,在轮次末尾会显示“已应用到项目文件夹 · N 个文件”,旁边就是回退本轮。

  • 回退只还原这一轮写进去的文件;之后又被改过的文件会单独标出来,不会被一并覆盖。
  • 回退之后还能撤销回退,把改动重新写回去。
  • “工作区改动”面板里能看到每一次应用记录(对话应用、子代理合并、后台应用、冲突处理),可以逐条回退。

回退会告诉模型。 你回退了一轮、丢掉了一个子代理的改动、还原了后台改动,下一轮对话开头都会带上一句“用户撤销了什么”。模型不会再相信过期的工具结果,后台也不会把你的回退当成“没同步上”,提议再改回去。

本轮交付按净改动计算

“本轮交付”和“审阅”显示的是宿主算出来的、每个文件这一轮的净改动,而不是把每次编辑片段的差异加起来。中间被别处改过的文件会分段标出,被回退的文件保留并注明。

需要什么条件

工作树隔离需要项目文件夹是 Git 仓库,并且:

  • 本机有 git 2.38 或更高版本;
  • 有 macOS 沙箱;
  • 仓库没有配置自定义的过滤器或合并驱动。

不满足时,对话直接在项目文件夹里工作,检查点和整轮回退照常可用。

把项目变成 Git 仓库

项目文件夹还不是 Git 仓库时,可以选择初始化为 Git 仓库:Rna 会执行 git init、写入或追加 .gitignore、提交一次,不添加远端。执行前会先列出要做的事,确认后才动手。

本页内容