返回 RADAR

工作原理

RADAR 的工作原理。

面向开发者的技术概览。RADAR 运行编程智能体,并且只有在亲自重新运行任务的验收测试之后才会关闭任务。智能体说的“完成”只是一项声明;重新运行才是证据。

01 循环

所有任务,同一个循环。

每项任务都走同一个循环,每一步只有在上一步通过后才会运行。

  1. 01 · 打开 任务与验收测试 在工作开始之前写好
  2. 02 · 租约 单一所有者,独立 worktree 租约(lease)与 fence token
  3. 03 · 工作 智能体开展工作 在它自己的一份项目副本里
  4. 04 · 声明 智能体说已完成 记为声明,而不是结果
  5. 05 · 检验 RADAR 重新运行测试 在当前版本上
  6. 若通过 已关闭 证据保存在台账中
  7. 若失败 · 第 n 次尝试,共 3 次 重新打开,附上失败记录 同一智能体从第 03 步重试
  8. 3 次尝试之后 另一个智能体接手 从第 03 步开始,最多再尝试 3 次
  9. 再尝试 3 次之后 任务等待您处理 台账拒绝继续尝试
图 1 · 任务循环。声明引出的是重新运行,从不直接导向关闭。
打开
打开任务时,要写明目标和一条可重新运行的验收命令。命令在任务打开时就会接受检查,但不会被运行:无法按原样运行的标准在这时就会被拒绝,而不是到最后才发现。
租约
同一时间只有一个所有者持有任务,通过租约和 fence token 实现。来自过期所有者的写入会被拒绝。
工作
智能体在它自己的 git worktree 中、在它自己的分支上工作。
声明
智能体报告已完成,这份报告被记为一项声明。声明不会关闭任务。
检验
RADAR 亲自在工作的当前版本上运行验收命令。智能体自己的报告会被阅读,但它不是证据。
关闭或重新打开
通过则任务可以关闭,检验记录作为证据保留。失败则任务重新打开,并附上失败记录。
上限
工作进程尝试三次,之后由另一个智能体接手三次。此后台账拒绝更多尝试,任务等待您处理。更换模型、会话或机器都不会重置计数,而且每次重试都必须说明改动了什么。

02 台账

所有智能体写入同一份记录。

每个智能体都读写同一份任务台账:一个本地 SQLite 文件。它是唯一的记录,记载每项任务由谁持有、声明了什么,以及测试显示了什么。

任务
目标和验收命令,在工作开始之前写好。
所有权
每项任务的当前所有者,以及它的租约和 fence token。
尝试次数
按任务计数,跨智能体、模型和机器累计。
声明
智能体关于工作已完成的报告,与结果分开保存。
检验记录
每一次验收运行,都与它所运行的 commit 和工作树绑定。
变更
验收命令的变更会连同旧版本和新版本一起记录;人工推翻也会被记录。

记忆

决策和经验教训都是带有来源和适用范围的 Markdown 笔记。本地索引可离线搜索它们,一个 hook 会在智能体行动之前,把匹配的笔记放到它面前。由于这些笔记是纯 Markdown,您可以在 Obsidian 中打开它们。

03 隔离

每次尝试都在自己的副本里。

  • 每次尝试都在它自己的 git worktree 中、在它自己的分支上工作。两个工作进程从不共用一棵工作树。
  • 工作进程不能改写自己的验收命令。只有管理者可以修改,而且只能在任务关闭之前;每次修改都会保留旧版本和新版本。
  • 只有检验通过后,工作才会进入您的主分支,合并之后验收命令还会再运行一次。
  • 对所有角色,force push 一律被拒绝。
  • 这些规则以代码形式运行,在调用模型之前和之后执行。它们不是提示词,所以智能体无法靠说辞绕过它们。

04 智能体

您已在使用的智能体。

RADAR 运行 Claude Code、Codex CLI、OMP 和 Hermes Agent,可以在您的电脑上,也可以在您自己的 Linux 服务器上。它不会取代它们:工作仍由它们完成。

  • Claude Code
  • Codex CLI
  • OMP
  • Hermes Agent
同一份约定
同样的规则、同一份台账、同一道检验关卡和同样的尝试上限,适用于全部四个智能体。
管理者
与您对话的智能体负责管理:它打开任务,把任务交给工作进程,并且只凭一条通过的检验记录关闭任务。
工作进程
工作进程在各自的 worktree 中完成工作。它们不能关闭任务,也不能修改自己的验收命令。

05 本地优先

本地优先。

RADAR 不需要账户,也不需要云服务。

在您的机器上
台账、记忆笔记、worktree 以及每一次检验运行,都在您的电脑或您自己的 Linux 服务器上。
需要网络的部分
您的智能体,它们像现在一样与各自的服务提供商通信。其他所有外部服务都是可选的,在您开启之前一直处于关闭状态。
环境要求
Windows 或 Linux(暂不支持 macOS),Python 3.12 或更高版本,以及 Git。RADAR 只使用 Python 标准库。
费用
RADAR 本身不产生账单。智能体继续使用您为它们登录的账户。只有在您指定服务提供商和预算时,才会使用付费 API。
安装
把代码仓库的链接交给您的编程智能体,并说“安装这个”。它会检查您的电脑,在安装任何缺少的东西之前先征求您的同意,把 RADAR 安装到虚拟环境中,并报告 radar init 和 radar doctor 的输出。

06 命令

一份简短的命令列表。

您最先会用到的命令。占位符写在尖括号中。

命令作用
radar init 设置 RADAR 的主目录和台账。
radar doctor 检查安装情况,并列出尚未配置的可选服务。
radar task new --project P --goal "…" --accept "<command>" 打开一项任务,并附上它的验收命令。
radar dispatch <task> 把任务交给一个智能体,由它在自己的 worktree 中工作。
radar status 显示整个系统的状态。
radar verify <task> 在当前版本上重新运行验收命令。
radar task done <task> --evidence "<verification report>" 关闭任务。检验通过之前会被拒绝。
radar collect 收回已完成的工作。
radar integrate 把已检验的工作合并到 main。
radar stop 暂停工作并设置 STOP。
radar go 清除 STOP,并列出可以继续的工作。
radar memory search --local "<words>" 离线搜索记忆笔记。
radar uiradar web 在终端或浏览器中打开驾驶舱。
radar help --all 列出所有命令。radar <command> -h 会给出详细说明。

07 它不做什么

RADAR 不做什么。

  • 它不会取代您的智能体。代码仍由它们编写;RADAR 给它们一份共同的记录、一项无法跳过的检查和一份共同的记忆。
  • 它不会替您编写测试。检查的好坏取决于它的测试;RADAR 在工作开始之前把测试明确写出来,让人能够读懂。
  • 它不会关闭没有测试的工作。没有可运行验收命令的任务,在打开时就会被拒绝。
  • 它不会让您的智能体离线运行。它们仍像现在一样,与各自的服务提供商通信。
  • 开放版面向个人开发者,而不是团队;企业版正在开发中。

08 状态

抢先体验中

现已开放抢先体验。公开发布时开源。

RADAR 正处于抢先体验阶段。公开发布时,它将以 Apache-2.0 许可证开源。如需加入,请给我们写信。