@sleep2agi/agent-network 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -0
- package/dist/bin/cli.js +234 -0
- package/dist/client.d.ts +78 -0
- package/dist/src/client.js +2 -0
- package/package.json +56 -0
- package/src/server.ts +28 -0
package/README.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# @sleep2agi/agent-network
|
|
2
|
+
|
|
3
|
+
AI Agent 通信网络 — Server + Client + Setup,一个包搞定。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @sleep2agi/agent-network
|
|
9
|
+
# 或全局安装 CLI
|
|
10
|
+
npm install -g @sleep2agi/agent-network
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## CLI 命令
|
|
14
|
+
|
|
15
|
+
### 启动 Server
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
agent-network server --port 9200 --token my-secret
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
| 参数 | 说明 | 默认值 |
|
|
22
|
+
|------|------|--------|
|
|
23
|
+
| `--port, -p` | 监听端口 | 9200 |
|
|
24
|
+
| `--token, -t` | Auth token | 无(开放模式) |
|
|
25
|
+
| `--db` | SQLite 数据库路径 | ~/.commhub/commhub.db |
|
|
26
|
+
| `--cors` | CORS origins(逗号分隔) | localhost |
|
|
27
|
+
|
|
28
|
+
### 配置新 Agent
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
agent-network setup --hub http://YOUR_IP:9200 --alias 开发马 --type claude-code
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
| 参数 | 说明 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| `--hub` | CommHub Server URL |
|
|
37
|
+
| `--alias` | Agent 别名 |
|
|
38
|
+
| `--type` | claude-code / sdk / opencode |
|
|
39
|
+
|
|
40
|
+
自动完成:测试连接 → 创建 Channel 目录 → 写 .env → 输出启动命令。
|
|
41
|
+
|
|
42
|
+
### 运行独立 Agent
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
agent-network run --hub http://YOUR_IP:9200 --alias SDK马
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
SSE 长连接监听任务,收到后自动回复。可配 `--handler script.ts` 自定义处理逻辑。
|
|
49
|
+
|
|
50
|
+
## 代码引用
|
|
51
|
+
|
|
52
|
+
### Client(加入网络)
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { CommHub } from '@sleep2agi/agent-network';
|
|
56
|
+
|
|
57
|
+
const hub = new CommHub({
|
|
58
|
+
url: 'http://YOUR_COMMHUB_IP:9200',
|
|
59
|
+
alias: '我的Agent',
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
hub.on('task', async (msg) => {
|
|
63
|
+
console.log(`任务: ${msg.content}`);
|
|
64
|
+
await hub.send(msg.from_session, '完成!');
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
// CommonJS
|
|
70
|
+
const { CommHub } = require('@sleep2agi/agent-network');
|
|
71
|
+
const hub = new CommHub({ url: 'http://YOUR_COMMHUB_IP:9200', alias: '我的Agent' });
|
|
72
|
+
hub.on('task', (msg) => console.log(msg));
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Client API
|
|
76
|
+
|
|
77
|
+
| 方法 | 说明 |
|
|
78
|
+
|------|------|
|
|
79
|
+
| `hub.send(alias, content, priority?)` | 发任务 |
|
|
80
|
+
| `hub.message(alias, content)` | 发消息(无生命周期) |
|
|
81
|
+
| `hub.reply(taskId, result, status?)` | 回复任务 |
|
|
82
|
+
| `hub.status(state, extra?)` | 更新状态 |
|
|
83
|
+
| `hub.broadcast(content, filter?)` | 广播 |
|
|
84
|
+
| `hub.getAllStatus()` | 查看所有 session |
|
|
85
|
+
| `hub.disconnect()` | 断开 |
|
|
86
|
+
|
|
87
|
+
### Events
|
|
88
|
+
|
|
89
|
+
| 事件 | 说明 |
|
|
90
|
+
|------|------|
|
|
91
|
+
| `task` | 收到任务/消息 |
|
|
92
|
+
| `connected` | SSE 连接成功 |
|
|
93
|
+
| `disconnected` | SSE 断开 |
|
|
94
|
+
| `error` | 错误 |
|
|
95
|
+
|
|
96
|
+
### Server(编程启动)
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
import { startServer } from '@sleep2agi/agent-network/server';
|
|
100
|
+
await startServer({ port: 9200, token: 'my-secret' });
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 与 Claude Agent SDK 结合
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { CommHub } from '@sleep2agi/agent-network';
|
|
107
|
+
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
108
|
+
|
|
109
|
+
const hub = new CommHub({ url: 'http://YOUR_COMMHUB_IP:9200', alias: 'AI助手' });
|
|
110
|
+
|
|
111
|
+
hub.on('task', async (msg) => {
|
|
112
|
+
await hub.status('working', { task: msg.content.slice(0, 200) });
|
|
113
|
+
|
|
114
|
+
let result = '';
|
|
115
|
+
for await (const event of query({
|
|
116
|
+
prompt: msg.content,
|
|
117
|
+
options: { allowedTools: ['Read', 'Edit', 'Bash'] },
|
|
118
|
+
})) {
|
|
119
|
+
if (event.type === 'result' && event.subtype === 'success') {
|
|
120
|
+
result = event.result;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
await hub.send(msg.from_session, result);
|
|
125
|
+
await hub.status('idle');
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 架构
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
agent-network server (:9200)
|
|
133
|
+
│
|
|
134
|
+
┌───────────────┼───────────────┐
|
|
135
|
+
│ │ │
|
|
136
|
+
Channel SSE SSE Client REST API
|
|
137
|
+
│ │ │
|
|
138
|
+
Claude Code SDK Agent 外部系统
|
|
139
|
+
(推荐) (编程) (curl)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 内部原理
|
|
143
|
+
|
|
144
|
+
- **SSE 长连接**:自动重连(指数退避 3s→60s)
|
|
145
|
+
- **心跳**:每 3 分钟 report_status 防 offline
|
|
146
|
+
- **MCP 协议**:Streamable HTTP,兼容 Claude Code / Codex / OpenCode
|
|
147
|
+
- **SQLite WAL**:消息持久化,30+ 并发无压力
|
|
148
|
+
- **零依赖**(client 端):只用 Node.js 内置模块
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT
|