关于 UNITARES
UNITARES 是面向跨运行环境管理长期运行 Agent 的可自托管问责基础设施。共享记录关联主张、证据、审查、结果与进程沿袭,让 Agent 在重启或交接后重建工作脉络。
主要功能
- 01持久化的 Agent 工作共享记录
- 02主张与证据及更正相互关联
- 03进程身份与后继沿袭
- 04受治理的审查和结果记录
- 05提供继续、引导或暂停的运行策略
- 06可选连接模型提供第二意见
适用场景
- 01Agent 重启后找回先前发现
- 02在不同 Agent 或运行环境间交接工作
- 03追溯既有决策所依据的证据
- 04将测试结果关联到先前签到
MCP 相关
Agent 和模型通过 MCP 或 HTTP 连接自托管服务,写入和读取共享记录。它负责问责记录,不充当 Agent 之间的传输层。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Agent 的工作往往会延续到启动它的进程结束之后。编码会话重启,研究 Agent 丢失上下文,任务转移到另一个运行时。日志会显示每次运行,却无法串起它们。没有这条脉络,下一个 Agent 可能重走失败的路、依据已纠正的主张采取行动,或丢失早前决策的证据。
UNITARES 是一项由你运行、用来维系这条脉络的服务。任何支持 MCP 或 HTTP 的 Agent 或模型都能连接(已提供 Claude Code、Codex 和 Hermes Agent 的集成),并将发现、评审和结果写入一份由操作者掌控的记录。之后的 Agent,或你自己,都可以读取记录,了解每条信息的来源。
这份记录能回答什么
| 问题 | 机制 |
|---|---|
| 是谁说的? | 身份与沿袭:每次写入记录的操作都与执行该操作的进程绑定,后继进程可以声明自己延续了哪个进程。 |
| 有什么依据? | 主张与证据:发现会保留其来源和更正,不受单个上下文窗口限制。较新的发现取代较旧发现时,较旧的发现会链接到新发现。 |
| 谁提出了质疑? | 受治理的评审:异议、条件及其解决情况会保留在相关工作中。请求评审不等于通过评审。 |
| 结果如何? | 结果溯源:测试、构建和任务结果会与预测这些结果的签到记录关联。 |
| 后继进程能恢复什么? | 重建:新进程可以在采取行动前搜索或导出以往的发现、尚未解决的评审条件和结果。 |
记录之外还有两项功能。运行时策略:每次签到都会返回 proceed、guide 或 pause,并说明原因;暂停会拒绝该进程的签到和新发现,直到评审或恢复操作解除暂停,或暂停过期。第二意见:配置后,consult 会询问另一个已连接的模型(本地 Ollama、vLLM、LM Studio 或 llama.cpp,或通过编排器连接的 Claude、Codex 和 Antigravity),并将答复与任务一并保存。
看看它如何运作
Agent A(Codex)发现一个 bug,将其记录下来后退出。Agent B(Claude Code)之后找到真正原因,并记录一条取代 A 的发现。重启后,Agent C(Hermes Agent)接手 A 的任务;在查看代码之前,它先读取记录(读取无需身份):搜索结果显示 A 的发现已被取代,并附有指向 B 的链接。随后,C 声明自己延续了 A 的任务。
# Agent A (Codex)
start_session {"force_new": true} -> agent A's id
store_finding {"summary": "upload retry test is flaky", ...} -> finding a
record_result {"outcome_type": "test_failed", ...}
# Agent B (Claude Code), in its own session, later
start_session {"force_new": true} -> agent B's id
store_finding {"summary": "upload retry fails on clock skew", ...} -> finding b
use_tool {"tool_name": "knowledge", "arguments": {"action": "supersede", "discovery_id": "<b>", "supersedes_id": "<a>"}, ...}
# Agent C (Hermes Agent), after A's restart
search_shared_memory {"query": "upload retry test"} -> finding a (superseded, points to b), finding b
start_session {"force_new": true, "parent_agent_id": "<A's id>", "spawn_reason": "explicit"}
没有机制强制 Agent 读取记录;Claude Code 和 Codex 插件会在会话启动时引导 Agent 查看记录。更简单的逐步交接示例:捕获两个进程的演练。
安装
Homebrew 预览版,推荐用于 Apple Silicon 桌面 Mac:cirwel/unitares tap 会原生安装这些服务;请按照其安装和首次设置说明操作。
打包的 unitares update 会协调写入器关闭、验证备份、迁移、恢复先前状态,并在写入器重启时进行深度健康检查(若写入器仍处于停止状态,则进行架构验证);早于此功能的 keg 请使用 tap 的一次性手动迁移流程。
在 tap 支持从源码构建且仅支持 Apple Silicon macOS 期间,预览版标签会保留。
Docker Compose,适用于任何平台:安装 Git、curl 和 Docker Compose 后,只需运行一条命令即可启动本地堆栈的最新已发布版本(包括服务端、带有 AGE 和 pgvector 的 PostgreSQL、Redis 和协调平面;添加 docker-compose.full.yml 可启用本地语义搜索和混合排序,或使用核心配置仅运行前两项):
v=$(curl -fsSL https://raw.githubusercontent.com/cirwel/unitares/master/PUBLISHED_VERSION) && git clone --branch "v$v" --depth 1 https://github.com/cirwel/unitares.git && cd unitares && docker compose up -d --wait
- **端点和更新:**在
http://localhost:8767/mcp/连接 MCP 客户端,或在http://localhost:8767/dashboard打开仪表板(Docker 快速入门)。使用 Docker 时,./scripts/unitares update会备份数据库、应用迁移并验证深度健康状态(更新)。 - **每台机器仅运行一个堆栈:**Docker 和 Homebrew 使用各自独立的数据(安装选项)。容器名称是固定的,因此启动另一个实例前,请在先前的检出目录中运行
docker compose down(不要加-v)(仅运行stop不够,因为停止的容器仍会占用固定的container_name值,而且 Docker 守护进程重启时,restart: unless-stopped会重新启动未停止的容器);或者使用托管启动器(scripts/install/launch.sh),它会先检查所有权。
连接你的 Agent 和模型(集成 Agent):
- Claude Code 和 Codex:
unitares-governance-plugin接入 MCP、生命周期钩子、技能和逐文件编辑租约(通过堆栈的租约平面实现,因此在同一检出目录中并发工作时,不会覆盖其他 Agent 的文件)。 - Hermes Agent 和兼容 OpenAI 的客户端:主机适配器。
- 其他任何 Agent、模型或托管连接器:Streamable HTTP MCP(仅支持 stdio 的客户端可使用
npx mcp-remote;托管连接器,例如 Claude.ai 和 ChatGPT,可在专用公共监听器上使用 Bearer / OAuth)、Python SDK(pip install unitares-sdk)或常驻 Agent 运行时。 - **可选的服务端模型(选择模型):**默认不会配置模型连接;核心记录功能无需模型或 API 密钥即可运行。运行
./scripts/unitares model,连接本地兼容 OpenAI 的服务端(Ollama、vLLM、LM Studio、llama.cpp),用于consult和进程内审查;也可以添加Agent 编排器,进行跨系列 CLI 审查。
适用对象
适用于管理多个长期运行的 AI Agent、跨供应商并部署在自己掌控的基础设施上的运营者;他们需要 Agent 共享的工作记录在重启和交接后仍然保留。
如果你的 Agent 都在同一个代码仓库中工作,git 和问题跟踪器可能就够用了。UNITARES 面向跨运行时、生命周期超出任何单个代码仓库或会话的工作。
它不是沙箱、输出验证器或托管式 Agent 平台。它与评估和防护机制并行运行,不会取代它们。它不会运行 Agent 的循环:插件的钩子和编辑租约会围绕 Agent 的工作进行协调;暂停时,仅拒绝该进程的签到和新发现。
工作原理
UNITARES 是面向管理多个 AI Agent 的运营者的可自托管问责基础设施。其单运营者联邦内核通过 MCP 或 HTTP 将独立运行时连接到一个由运营者掌控的服务器,让它们共享持久记录,同时保留各自的模型、工具和运行时。它们通过各自的传输方式或 A2A 彼此协作;UNITARES 是它们背后的记录系统,而不是它们之间的传输方式。总的来说,这为编码、研究、后台和常驻 Agent 提供了由运营者掌控的问责层。相比活动日志,它还增加了溯源和取代关系:主张与证据、评审和结果始终与记录它们的进程绑定;被取代的主张会指向替代它的主张,便于评审和日后重建。
存储使用 PostgreSQL 和 Redis,不需要外部模型 API。快速入门运行 AGE 后端,用于存储各项发现之间的关联;纯 postgres 后端没有取代关系链接,且仅支持全文搜索。签到时的策略动作来自行为状态估计,这是一种运行时本体感觉。
各项主张已通过测量验证的能力,以及尚未测量的内容,详见证据与局限和评审指南。
从这里开始
| 目标 | 指南 |
|---|---|
| 试用 | 安装 → 双进程演练 |
| 连接 Agent 或应用程序 | MCP 集成 · Python SDK |
| 运维部署 | 运营者手册 |
| 了解产品和架构 | 产品定义 · 架构 |
| 相关研究 | 证据与局限 · 论文 · 公开数据集 |
| 参与贡献 | 贡献指南 · 开发指南 |
| 其他内容 | 文档索引 |
引用和许可证
Kenny Wang(ORCID 0009-0006-7544-2374),
CIRWEL Systems。版本化引用请参见 CITATION.cff。
@misc{wang2026unitares,
author = {Wang, Kenny},
title = {{UNITARES}: Information-Theoretic Governance of Heterogeneous Agent Fleets},
year = {2026},
doi = {10.5281/zenodo.19647159}
}
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。