mcpField
S
swarm-rd-orchestrator

swarm-rd-orchestrator

本地服务
github.com/RudrenduPaul记忆与知识05 周前更新

关于 swarm-rd-orchestrator

swarm-rd-orchestrator-cli 是面向并行研究 Agent 的共享事件日志原型,基于 Ray actor 与 SQLite WAL,让 Agent 追加发现并读取同一任务的历史。它提供命令行和 MCP 服务;项目目前仍是预验证阶段的 Milestone 1 原型。

主要功能

  1. 01以追加式事件日志共享任务发现
  2. 02使用 SQLite WAL 存储
  3. 03支持并发 Ray actor 写入
  4. 04数据命令可输出 JSON
  5. 05缺少必填字段时明确报错

适用场景

  1. 01让并行研究 Agent 交换发现
  2. 02按任务读取完整或增量事件
  3. 03用脚本处理结构化日志输出

MCP 相关

MCP 服务通过 stdio 暴露 `append_delta`、`pull_deltas` 和 `list_tasks` 三个工具,用于写入发现、读取事件及列出任务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rudrendupaul-swarm-rd-orchestrator": {
"command": "uvx",
"args": [
"swarm-rd-orchestrator-cli"
]
}
}
}
启动命令uvx swarm-rd-orchestrator-cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiswarm-rd-orchestrator-cli0.0.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

swarm-rd-orchestrator-cli

PyPI npm License: Apache 2.0 Python Tests Status

安装 • 快速开始 • 命令参考 • MCP 服务 • 对比 • 常见问题

为并行研究 Agent 提供原生支持 Ray 的上下文和记忆共享,并配备原生支持 Agent 的命令行和 MCP 服务。

演示:两个 Agent 追加研究发现,并通过 swarm-rd-cli 拉取这些发现

这是一个基于 SQLite WAL 的仅追加事件日志,由 Ray actor 封装而成,因此并行 Agent 可以写入发现并拉取彼此的发现,无需共享可变存储;此外还提供命令行和 MCP 服务,方便人类和其他 Agent 直接使用。

这是 Milestone 1 原型(2026-08-03):在继续开发前,先通过实际任务验证方案。请参阅下文的已锁定决策和 spike.py 中实际使用的验证框架。

安装

pip install swarm-rd-orchestrator-cli
# or
npm install -g swarm-rd-orchestrator-cli

两种方式都会在你的 PATH 中提供 swarm-rd-cli 命令。npm 包只是 Python 命令行的轻量封装:它会执行真正的二进制文件,而不会重新实现其功能。如果使用 npm 包,也请安装 Python 包。

**状态:**已在两个包注册表发布(PyPI 通过 GitHub Actions OIDC 发布,不存储令牌)。两者均已在干净环境中通过实际安装和实际命令运行进行验证,而不只是确认上传成功。

警告

这是一个尚未完成验证的 Milestone 1 原型(0.0.x),还不是稳定版本。仅在 macOS 上测试过;由于 Ray 上游对 Windows 的支持不如 Linux/macOS 完善,Windows 支持尚未验证。

快速开始

swarm-rd-cli append task-1 agent-a "found a race condition in the retry loop" --kind result
swarm-rd-cli append task-1 agent-b "confirmed: retry loop isn't holding the lock" --kind result
swarm-rd-cli pull task-1
# [1] (agent-a/result) found a race condition in the retry loop
# [2] (agent-b/result) confirmed: retry loop isn't holding the lock

swarm-rd-cli --json pull task-1     # structured output for scripts/agents
swarm-rd-cli list-tasks             # every task_id with a delta count
swarm-rd-cli mcp                    # run as an MCP server over stdio

所有返回数据的命令都支持 --json,便于 Agent 和脚本使用,无需抓取屏幕文本。mcp 子命令通过标准输入/输出将 append_delta、pull_deltas 和 list_tasks 暴露为带类型的 MCP 工具,因此 Agent 可以通过编程方式调用此程序,而不必通过 Shell 启动它。

功能

  • 原子追加,经过验证,而非空口保证。 专门的测试会模拟写入过程中崩溃,并确认 SQLite WAL 层不会留下任何不完整的行,而不只是描述这一保证。
  • 每个数据命令都支持结构化输出。 append、pull 和 list-tasks 支持 --json,这意味着通过命令行调用此工具的 Agent 无需抓取人类可读格式的文本。
  • 不仅是命令行,还有 MCP 服务。 swarm-rd-cli mcp 通过标准输入/输出将相同的三项操作暴露为带类型的工具,因此 Agent 可以通过编程方式调用此程序,而不必启动子进程。
  • 使用真实 Ray actor 测试并发,而非模拟。 关键测试会运行 3 个真实的 Ray actor 并发追加,并核对结果;这与实际工作负载使用的机制相同。
  • 输入格式错误时会明确报错。 如果 delta 缺少 task_id、agent_id 或 content,就会在触及存储前引发 InvalidDeltaError。不会静默丢弃。

命令参考

演示:swarm-rd-cli --help 输出

根据命令行自身的 --help 输出生成:

usage: swarm-rd-cli [-h] [--db DB] [--json] {append,pull,list-tasks,mcp} ...

positional arguments:
  {append,pull,list-tasks,mcp}
    append              append a delta to the event log
    pull                pull deltas for a task
    list-tasks          list every task_id with a delta count
    mcp                 run as an MCP server over stdio

options:
  -h, --help            show this help message and exit
  --db DB               path to the event log (default: swarm-events.db)
  --json                structured JSON output (for agent/script use)
usage: swarm-rd-cli append [-h] [--kind {note,result,tool_output}]
                            task_id agent_id content

positional arguments:
  task_id
  agent_id
  content

options:
  -h, --help            show this help message and exit
  --kind {note,result,tool_output}
usage: swarm-rd-cli pull [-h] [--since SINCE] task_id

positional arguments:
  task_id

options:
  -h, --help     show this help message and exit
  --since SINCE  cursor to pull after

演示:另外两个 Agent 追加 delta,然后执行 list-tasks 和 --json pull

MCP 服务

swarm-rd-orchestrator-cli 提供了一个 Model Context Protocol(MCP)服务,因此 Agent 可以通过 stdio 将事件日志直接作为类型化工具调用,而不必通过 shell 调用 CLI 并解析文本。

pip install "swarm-rd-orchestrator-cli[mcp]"

运行方式:

swarm-rd-cli mcp

在配置中指定该命令,即可将其添加到 Claude Desktop(或任何其他 MCP 客户端):

{
  "mcpServers": {
    "swarm-rd-orchestrator": {
      "command": "swarm-rd-cli",
      "args": ["mcp"]
    }
  }
}

提供了三个工具:

  • append_delta(task_id, agent_id, content, kind="note") - 将发现、结果或工具输出追加到任务的事件日志。示例:append_delta(task_id="task-1", agent_id="agent-a", content="found a race condition in the retry loop", kind="result")。
  • pull_deltas(task_id, since_cursor=0) - 按从旧到新的顺序,拉取某个任务中 ID 大于 since_cursor 的所有 delta。示例:pull_deltas(task_id="task-1") 会返回完整历史记录;pull_deltas(task_id="task-1", since_cursor=2) 只会返回游标 2 之后写入的 delta。
  • list_tasks() - 列出事件日志中当前的所有 task_id 及其 delta 数量。示例:list_tasks() 会返回 [{"task_id": "task-1", "delta_count": 2}]。

对比

swarmmesh 是该作者作品集中的姊妹项目,也以 swarmmesh-cli 的名称发布在 PyPI 和 npm 上。就下方几乎所有方面而言,它目前都是更完整的选择。本项目的存在是为了提供一种有意采用 Ray 原生架构的替代方案,而不是因为 swarmmesh 有所不足。

swarm-rd-orchestrator-cliswarmmesh-cli
传输方式Ray actor(进程内 / 分布式)HTTP 服务
存储SQLite,WAL 模式默认使用内存,也可通过 --persist 使用 SQLite
跨语言仅 PythonPython 和 Node
记忆搜索 / 排序无(仅通过 task_id 拉取)对记忆查询进行 BM25 关键词排序
MCP 服务是是
已发布到 PyPI/npm是,已上线是,已上线
CI是是

如果 Ray 原生分布式计算这一特点最终对你的用例并不重要,请改用 swarmmesh。它已上线、经过真实使用场景的测试,而且功能更多。

swarm-rd-orchestrator-cli 是什么,为什么要开发它

swarm-rd-orchestrator-cli 是一个基于 Ray actor 模型、供并行 AI 研究 Agent 共享的持久化事件日志。每个 Agent 都会以结构化 delta 的形式写入发现;任何其他 Agent 都可以拉取某个任务的完整历史记录,无需共享可变存储,也无需协调服务器进程。

开发它是为了验证一个具体且范围有限的假设:与基于 HTTP 的协调层相比,Ray 的 actor 和对象存储模型是否更适合协调真正大规模的并行研究 Agent。这个假设尚未得到验证。本项目以 Milestone 1 原型形式发布,目的就是先通过真实工作负载进行测试,再决定是否进一步投入;请参阅运行实际验证原型。

从源代码构建

git clone https://github.com/RudrenduPaul/swarm-rd-orchestrator.git
cd swarm-rd-orchestrator
python3 -m venv .venv
.venv/bin/pip install -e ".[dev,mcp]"

需要 Python 3.10 或更高版本(mcp SDK 依赖项所需)。

运行测试

.venv/bin/pytest test_event_log.py -v

9/9 项测试通过,其中包括关键测试:3 个并发 Ray actor 向同一个共享事件日志追加内容,核对结果后确认没有 delta 丢失或重复。

运行实际验证原型

在 spike.py 中编辑 REAL_TASK_ID、REAL_TASK_DESCRIPTION 和示例 Agent 发现,使其反映一个真实的研究任务,然后:

.venv/bin/python3 spike.py

阅读末尾打印的评估标准。决策规则:与原始 Ray 或 LangGraph 相比,如果符合条件的架构失败案例少于 3 个,就改用轻量 CLI 封装,而不是继续扩展该项目。

已确定的决策(2026-08-03)

  • 基元:Ray(actor 模型和对象存储),LangGraph 作为备用方案
  • 存储:SQLite,WAL 模式
  • Delta 结构:{task_id, agent_id, timestamp, content, kind}
  • 格式错误的 delta 会触发 InvalidDeltaError,绝不会被静默处理
  • 许可证:Apache 2.0
  • Python:3.10 或更高版本,mcp SDK 要求如此
  • 发布:已发布到 PyPI(通过 GitHub Actions OIDC Trusted Publishing,不存储令牌)和 npm,并都已通过真实的干净环境安装验证

常见问题

这实际上有什么作用? 它为作为 Ray actor 运行的并行 AI Agent 提供一个共享且持久的地方,用于写入发现结果并获取彼此的发现,同时避免相互覆盖对方的状态。它是传输和持久化层,而不是编排框架:它不会调度 Agent,也不会决定它们要做什么。

这与 swarmmesh 有什么不同? 请参阅上文的比较。核心理念相同,但传输方式不同(使用 Ray actor 而不是 HTTP),而且目前 swarmmesh 功能更完整,也已经发布。

这能在 Windows、macOS 和 Linux 上运行吗? 已在 macOS 上测试。Ray 本身原生支持 Linux 和 macOS;上游对 Ray 的 Windows 支持较为有限,因此在有人确认之前,请将 Windows 视为本项目尚未验证的平台。

我需要自己的 API 密钥吗? 不需要。本项目不会自行调用大模型。它是一个协调层,供你自己的 Agent(无论使用什么模型或框架)写入和读取数据。

可以放心依赖它吗? 还不行。这是尚未经过验证的里程碑 1 试验(版本为 0.0.x),并非稳定版本。事件日志的核心保证(原子追加、不会部分写入)已在 test_event_log.py 中测试,但除了试验脚本之外,本项目尚未在真实的多 Agent 工作负载上进行验证。

如何从 Agent 使用它,而不仅仅是由人使用? 可以在每条命令中通过 --json 调用 CLI,也可以运行 swarm-rd-cli mcp 并将其作为 MCP 服务连接。两种方式都会提供结构化、可解析的输出。

这是一个库还是只有 CLI? 两者兼有。如果你已在 Python 环境中,且不需要 CLI 或 MCP 层,可以直接导入 event_log.py 中的 EventLog 和 EventLogActor 类。

它采用什么许可证?我可以将其用于商业用途吗? Apache 2.0。根据其条款,允许商业使用、修改和再分发;完整内容请参见 LICENSE。

贡献

由于这是一个尚未经过验证的试验项目,而非接受贡献的项目,目前还没有 CONTRIBUTING.md。如果你想在正式确定之前讨论某项更改,请提交一个 issue。

许可证

Apache 2.0。完整内容请参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。