Noesis船
一个开源、可插拔的多代理通信平台。NATS是核心神经系统。WebSocket、MCP和HTTP/SSE是适配器。像yurtle看板这样的工具可以插在旁边。
建筑
noesis-ship
├── NATS core (event bus, channels, KV, pub/sub) ← Python
├── Adapters
│ ├── WebSocket (for Ships Comm iOS, web clients) ← Node.js
│ ├── MCP (for Claude Code, LLM agents) ← Node.js
│ └── HTTP/SSE (for Command Deck, dashboards) ← planned
├── Service discovery (frontmatter-based) ← Python
└── Plugin interface (yurtle-kanban, git, custom)每台机器都运行自己的noesis船实例。船只之间没有串扰。
快速开始
WebSocket中继(不需要NATS)
cp packages/shared/.env.example .env
# Edit .env with your machine name and agent roster
npm install
npm start继电器在端口3100上启动(可通过以下方式配置 WS_PORT).客户端通过WebSocket连接,消息在所有连接的客户端之间中继。
代蒙特工
npm run daemon守护进程连接到本地WebSocket中继并生成Claude Code会话来处理传入消息。
Python核心(需要NATS)
pip install noesis-shipfrom noesis_ship.core import EventBus, NATSChannelService
from noesis_ship.chat import ChatService
# Connect to NATS
bus = EventBus(nats_url="nats://localhost:4222")
await bus.connect()
# Emit events
await bus.emit("kanban.item-moved", "my-agent", {
"item_id": "TASK-001",
"from_column": "ready",
"to_column": "in_progress"
})
# Subscribe to events
await bus.subscribe("kanban.*", my_handler)组件
NATS核心(noesis_ship/core/)
神经系统。亚毫秒发布/订阅、持久事件流、键值状态和代理间通道。
| 模块 | 目的 |
|---|---|
event_bus.py | 具有JetStream持久性的事件发布(24小时保留) |
pubsub.py | 即发即弃酒吧/酒吧实时通知 |
channels.py | 存在与代理之间的消息传递渠道 |
kv_store.py | 通过NATS KV bucket共享状态 |
object_store.py | 通过NATS对象存储进行大文件/blob存储 |
聊天服务(noesis_ship/chat/)
具有NATS持久性和基于文件的回退的会话管理。
| 模块 | 目的 |
|---|---|
models.py | 消息和对话数据模型 |
service.py | NATS+文件回退聊天服务 |
服务发现(noesis_ship/discovery/)
基于Frontmatter的服务发现。代理通过YAML frontmatter在其配置文件中宣传功能。
套餐(packages/)
模块化npm工作空间包。每个都是独立运行的。
| 包装 | 用途 |
|---|---|
@noesis-ship/shared | 配置加载器、NATS助手、有线协议 |
@noesis-ship/relay | 带有Bonjour广告的WebSocket中继服务器 |
@noesis-ship/daemon | 无头克劳德代码代理spawner |
@noesis-ship/fleet-log | NATS将担任抄本撰写人 |
@noesis-ship/mcp-server | 用于集成Claude Code工具的MCP服务器 |
运作原理
- 第1天(现在): 仅限WebSocket。与独立网桥服务器的行为相同。不依赖NATS。
- 第2天: 将NATS连接添加到WebSocket适配器。消息流向NATS主题。
- 第3天: 代理商订阅NATS。克劳德的代理人和生物进行交流。
- 第4天: 舰队知识网格、结对编程、跨代理协调。
船舶模板
船只有不同的尺寸:
| 模板 | 代理 | 用例 |
|---|---|---|
| 丁吉 | 1 | 个人经纪人、私人助理 |
| Sloop | 2 | 结对编程,代码审查 |
| Galleon | 4-8 | 完整的开发团队 |
| 运营商 | 8+ | 多团队车队运营 |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
WS_PORT | 3100 | WebSocket服务器端口 |
AGENTS | -- | 代理人名册(id:Name,id:Name) |
MACHINE_NAME | hostname | 此计算机的显示名称 |
CLAUDE_SESSION_DIR | -- | 克劳德项目会议之路 |
SESSION_GROUP_ID | -- | 会话消息的默认组 |
相关项目
- 船舶通信 (iOS)-语音优先代理通信应用程序(通过WebSocket连接到noesis船)
- yurtle看板 --可插拔的看板,用于代理工作跟踪
- 裸体产品团队 --AI生物平台(使用noesis船进行通信)
许可证
国际学生委员会
作者
Congrent Systems PBC
