工作原理
RADAR 的工作原理。
面向开发者的技术概览。RADAR 运行编程智能体,并且只有在亲自重新运行任务的验收测试之后才会关闭任务。智能体说的“完成”只是一项声明;重新运行才是证据。
01 循环
所有任务,同一个循环。
每项任务都走同一个循环,每一步只有在上一步通过后才会运行。
- 01 · 打开 任务与验收测试 在工作开始之前写好
- 02 · 租约 单一所有者,独立 worktree 租约(lease)与 fence token
- 03 · 工作 智能体开展工作 在它自己的一份项目副本里
- 04 · 声明 智能体说已完成 记为声明,而不是结果
- 05 · 检验 RADAR 重新运行测试 在当前版本上
- 若通过 已关闭 证据保存在台账中
- 若失败 · 第 n 次尝试,共 3 次 重新打开,附上失败记录 同一智能体从第 03 步重试
- 3 次尝试之后 另一个智能体接手 从第 03 步开始,最多再尝试 3 次
- 再尝试 3 次之后 任务等待您处理 台账拒绝继续尝试
- 打开
- 打开任务时,要写明目标和一条可重新运行的验收命令。命令在任务打开时就会接受检查,但不会被运行:无法按原样运行的标准在这时就会被拒绝,而不是到最后才发现。
- 租约
- 同一时间只有一个所有者持有任务,通过租约和 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 状态