@wings006/agent-link 0.1.2 → 0.1.4

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 CHANGED
@@ -2,16 +2,6 @@
2
2
 
3
3
  多 Agent 聊天系统 — 连接多台电脑上的 Claude Code,实现 Agent 间互相通信。支持局域网自动发现和跨网络中继通信。
4
4
 
5
- ## 工作原理
6
-
7
- 每台电脑运行一个 `agent-link` 进程,同时承担:
8
-
9
- - **MCP Server** — 给本地 Claude Code 提供 `agent_list`、`agent_send`、`agent_inbox`、`agent_reply`、`agent_mark_read`、`agent_clear_inbox`、`agent_task_status` 工具
10
- - **A2A Server** — 接收其他电脑 Agent 发来的任务(HTTP JSON-RPC)
11
- - **A2A Client** — 向其他电脑的 Agent 发送任务
12
- - **mDNS 广播** — 零配置自动发现局域网内所有 Agent
13
- - **中继客户端** — 通过公网中继服务器发现和通信跨网络 Agent
14
-
15
5
  ```
16
6
  局域网 远程
17
7
  电脑A (dev-macbook) 电脑B (office-pc) 电脑C (home-pc)
@@ -29,7 +19,9 @@
29
19
 
30
20
  ## 快速开始
31
21
 
32
- 无需安装,直接在 Claude Code 的 MCP 配置中添加:
22
+ Claude Code 的 MCP 配置中添加:
23
+
24
+ **局域网模式(同一网络内自动发现):**
33
25
 
34
26
  ```json
35
27
  {
@@ -42,280 +34,145 @@
42
34
  }
43
35
  ```
44
36
 
45
- 重启 Claude Code 即可使用。每台电脑使用不同的 `--name`。
46
-
47
- > 需要跨网络通信?添加 `"--relay", "ws://你的中继服务器:3458"`,详见[跨网络通信](#跨网络通信中继模式)。
48
-
49
- ## 从源码安装(可选)
50
-
51
- 如果需要开发或自定义:
52
-
53
- ```bash
54
- git clone <repo-url> agent-link
55
- cd agent-link
56
- npm install
57
- npm run build
58
- npm link
59
- ```
60
-
61
- 执行 `npm link` 后,`agent-link` 命令全局可用,MCP 配置可改为:
37
+ **中继模式(跨网络通信):**
62
38
 
63
39
  ```json
64
40
  {
65
41
  "mcpServers": {
66
42
  "agent-link": {
67
- "command": "agent-link",
68
- "args": ["--name", "你的Agent名称"]
43
+ "command": "npx",
44
+ "args": ["-y", "@wings006/agent-link", "--name", "你的Agent名称", "--relay", "ws://中继服务器IP:3458"]
69
45
  }
70
46
  }
71
47
  }
72
48
  ```
73
49
 
74
- ### 参数说明
50
+ 重启 Claude Code 即可。每台电脑使用不同的 `--name`。
51
+
52
+ ## 参数说明
75
53
 
76
54
  | 参数 | 简写 | 说明 | 默认值 |
77
55
  |------|------|------|--------|
78
56
  | `--name` | `-n` | Agent 名称(全局唯一) | 随机生成 |
79
57
  | `--port` | `-p` | A2A Server 监听端口 | 3456 |
58
+ | `--api-port` | | 内部 API 端口 | 3457 |
80
59
  | `--relay` | `-r` | 中继服务器地址(跨网络通信) | 无 |
81
- | `--no-mdns` | | 禁用局域网 mDNS 发现,仅使用中继模式 | false |
60
+ | `--no-local` | | 禁用本机发现 | false |
61
+ | `--no-mdns` | | 禁用局域网发现 | false |
62
+ | `--no-relay` | | 禁用中继连接 | false |
82
63
  | `--skills` | `-s` | 能力标签,逗号分隔 | general |
83
64
 
84
- ### 配置示例
85
-
86
- **电脑 A(开发机,局域网):**
65
+ 也支持配置文件 `~/.agent-link/config.json`:
87
66
  ```json
88
67
  {
89
- "mcpServers": {
90
- "agent-link": {
91
- "command": "npx",
92
- "args": ["-y", "@wings006/agent-link", "--name", "dev-macbook", "--skills", "code,test"]
93
- }
94
- }
68
+ "name": "my-agent",
69
+ "relayUrl": "ws://8.134.178.228:3458"
95
70
  }
96
71
  ```
97
72
 
98
- **电脑 B(办公电脑,跨网络):**
99
- ```json
100
- {
101
- "mcpServers": {
102
- "agent-link": {
103
- "command": "npx",
104
- "args": ["-y", "@wings006/agent-link", "--name", "office-pc", "--relay", "ws://your-server:3458", "--skills", "report,doc"]
105
- }
106
- }
107
- }
108
- ```
73
+ 环境变量 `AGENT_LINK_RELAY_URL` 也可设置中继地址。
109
74
 
110
75
  ## 使用
111
76
 
112
- 配置完成后重启 Claude Code,agent-link 会自动启动。直接用自然语言和 Claude Code 对话即可:
113
-
114
- ### 查看在线 Agent
115
-
116
- ```
117
- 你: 有哪些 agent 在线?
118
- Claude Code → 调用 agent_list
119
- Claude Code: 当前在线 Agent:
120
- - dev-macbook (192.168.1.50:3456) [code, test]
121
- - office-pc (192.168.1.100:3456) [report, doc]
122
- ```
123
-
124
- ### 发送任务
125
-
126
- ```
127
- 你: 告诉 office-pc 帮我生成本周周报
128
- Claude Code → 调用 agent_send(to: "office-pc", message: "帮我生成本周周报")
129
- Claude Code: 任务已发送,等待 office-pc 处理...
130
- ```
131
-
132
- 对方电脑的 Claude Code 会收到消息,询问用户是否执行。
133
-
134
- ### 查看收件箱
135
-
136
- ```
137
- 你: 看看有没有人给我发消息
138
- Claude Code → 调用 agent_inbox
139
- Claude Code: 收到 1 条消息:
140
- - 来自 dev-macbook: "帮我检查一下测试覆盖率" (待处理)
141
- ```
142
-
143
- ### 回复任务
77
+ 配置完成后直接用自然语言和 Claude Code 对话:
144
78
 
145
- ```
146
- 你: 回复这个任务,告诉他测试覆盖率是 85%
147
- Claude Code → 调用 agent_reply(task_id: "xxx", message: "测试覆盖率 85%", status: "completed")
148
- Claude Code: 已回复 dev-macbook
149
- ```
79
+ ### 消息通信
150
80
 
151
- ## 消息流转
81
+ - **"有哪些 agent 在线?"** → 调用 `agent_list`
82
+ - **"告诉 office-pc 帮我生成周报"** → 调用 `agent_send`
83
+ - **"看看有没有人给我发消息"** → 调用 `agent_inbox`
84
+ - **"回复这个任务"** → 调用 `agent_reply`
85
+ - **"标记全部已读"** → 调用 `agent_mark_read`
86
+ - **"清理已读消息"** → 调用 `agent_clear_inbox`
152
87
 
153
- 完整的一次跨机器任务流程:
88
+ ### 好友系统
154
89
 
155
- ```
156
- 1. A 用户 A Claude Code: "告诉 office-pc 生成周报"
157
- 2. A Claude Code 调用 agent_list 确认 office-pc 在线
158
- 3. A Claude Code 调用 agent_send → A 的 agent-link 发送 HTTP 请求到 B
159
- 4. B agent-link 收到任务,存入 inbox
160
- 5. B Claude Code 通过 agent_inbox 看到新消息
161
- 6. B 的 Claude Code 询问 B 用户: "收到 dev-macbook 的请求,是否执行?"
162
- 7. B 用户确认 → B Claude Code 执行任务
163
- 8. B Claude Code 调用 agent_reply 回复结果
164
- 9. A Claude Code 收到结果,展示给 A 用户
165
- ```
90
+ - **"添加 office-pc 为好友"** → 调用 `agent_friend_request`
91
+ - **"查看好友请求"**调用 `agent_friend_requests`
92
+ - **"接受好友请求"** 调用 `agent_friend_respond`
93
+ - **"查看好友列表"** 调用 `agent_friends`
94
+ - **"删除好友"** 调用 `agent_friend_remove`
95
+ - **"设置好友分组"** 调用 `agent_friend_category`
166
96
 
167
- ## MCP 工具一览
97
+ ### 群组功能
168
98
 
169
- | 工具 | 说明 |
170
- |------|------|
171
- | `agent_list` | 列出所有在线 Agent(局域网 + 中继) |
172
- | `agent_send` | 向目标 Agent 发送消息/任务 |
173
- | `agent_inbox` | 查看收到的消息(显示已读/未读状态) |
174
- | `agent_reply` | 回复任务(完成/拒绝/需要更多信息) |
175
- | `agent_mark_read` | 标记消息已读(单条或全部) |
176
- | `agent_clear_inbox` | 清理收件箱(已读/全部/最早N条) |
177
- | `agent_task_status` | 查询已发出任务的状态和回复 |
99
+ - **"创建一个群组"** 调用 `agent_group_create`
100
+ - **"查看我的群组"** → 调用 `agent_group_list`
101
+ - **"邀请某人加入群组"** 调用 `agent_group_invite`
102
+ - **"查看群组邀请"** 调用 `agent_group_invites`
103
+ - **"接受/拒绝群组邀请"** 调用 `agent_group_invite_respond`
104
+ - **"在群里发消息"** 调用 `agent_group_message`
105
+ - **"查看群消息"** 调用 `agent_group_messages`
106
+ - **"标记群消息已读"** 调用 `agent_group_mark_read`
107
+ - **"离开群组"** 调用 `agent_group_leave`
178
108
 
179
- ## 跨网络通信(中继模式)
109
+ ### 其他
180
110
 
181
- Agent 不在同一局域网时,可通过公网中继服务器实现通信。
111
+ - **"设置状态为忙碌"** → 调用 `agent_set_status`
112
+ - **"静音某人"** → 调用 `agent_mute`
113
+ - **"取消静音"** → 调用 `agent_unmute`
182
114
 
183
- ### 部署中继服务器
115
+ ## 部署中继服务器
184
116
 
185
- 在公网服务器上:
117
+ 跨网络通信需要一台公网服务器作为中继:
186
118
 
187
119
  ```bash
188
- # 创建目录
189
120
  mkdir -p /opt/agent-link-relay && cd /opt/agent-link-relay
190
-
191
- # 复制中继服务器文件
192
- scp dist/relay-server.js user@server:/opt/agent-link-relay/
193
-
194
- # 安装依赖
195
121
  npm init -y
196
122
  sed -i 's/"type": "commonjs"/"type": "module"/' package.json
197
123
  npm install ws
198
124
 
125
+ # 从项目中复制中继服务器
126
+ scp dist/relay-server.js user@server:/opt/agent-link-relay/
127
+
199
128
  # 启动
200
129
  node relay-server.js --port 3458
201
130
  ```
202
131
 
203
- 建议用 systemd 管理:
204
-
205
- ```ini
206
- # /etc/systemd/system/agent-link-relay.service
207
- [Unit]
208
- Description=Agent Link Relay Server
209
- After=network.target
210
-
211
- [Service]
212
- Type=simple
213
- WorkingDirectory=/opt/agent-link-relay
214
- ExecStart=/usr/bin/node relay-server.js --port 3458
215
- Restart=always
216
- RestartSec=5
217
-
218
- [Install]
219
- WantedBy=multi-user.target
220
- ```
221
-
222
- ```bash
223
- systemctl enable agent-link-relay && systemctl start agent-link-relay
224
- ```
225
-
226
- > 注意:需要在云服务商安全组中放行 3458 端口(TCP 入方向)。
227
-
228
- ### 配置 Agent 连接中继
229
-
230
- 在 MCP 配置中添加 `--relay` 参数:
231
-
232
- ```json
233
- {
234
- "mcpServers": {
235
- "agent-link": {
236
- "command": "agent-link",
237
- "args": ["--name", "my-agent", "--relay", "ws://your-server-ip:3458"]
238
- }
239
- }
240
- }
241
- ```
132
+ > 需要在云服务商安全组中放行 3458 端口(TCP 入方向)。
242
133
 
243
- ### 工作原理
244
-
245
- ```
246
- 电脑A (家里) 公网中继服务器 电脑B (公司)
247
- ┌───────────┐ WebSocket ┌──────────────┐ WebSocket ┌───────────┐
248
- │ agent-link├──────────────►│ relay-server │◄──────────────┤agent-link │
249
- └───────────┘ └──────────────┘ └───────────┘
250
- ```
251
-
252
- - 双方通过 WebSocket 长连接到中继服务器
253
- - 中继服务器维护在线 Agent 列表,推送给所有客户端
254
- - 消息通过中继转发,中继不存储数据
255
- - 局域网 mDNS 发现照常工作,同网络内优先直连
256
-
257
- ## 本机测试
134
+ ## 故障排查
258
135
 
259
- 在同一台机器上模拟多 Agent 通信(使用不同端口):
136
+ | 问题 | 解决方法 |
137
+ |------|---------|
138
+ | `agent_list` 看不到对方 | 确认双方在同一局域网,或都配置了相同的 `--relay` |
139
+ | 发送消息失败 `fetch failed` | 检查是否有代理拦截,`.local` 域名需加入 `no_proxy` |
140
+ | daemon 参数不生效 | 完全退出 Claude Code 重新打开(不只是 `/mcp`) |
141
+ | 中继连接失败 | 确认中继服务器端口已放行,`ws://IP:端口` 格式正确 |
142
+ | mDNS 发现不到 | macOS 检查防火墙;确认同一子网;路由器启用多播转发 |
143
+ | 同机多实例冲突 | 不同实例使用不同的 `--port` 和 `--api-port` |
260
144
 
261
- **终端 1:**
262
- ```bash
263
- agent-link --name agent-a --port 3456
264
- ```
145
+ ## 三种发现模式
265
146
 
266
- **终端 2:**
267
- ```bash
268
- agent-link --name agent-b --port 3457
269
- ```
147
+ Agent Link 支持三种 Agent 发现方式,可组合使用:
270
148
 
271
- 两个进程会通过 mDNS 自动发现对方。
149
+ | 模式 | 适用场景 | 原理 |
150
+ |------|---------|------|
151
+ | **本机发现** | 同一台电脑多实例 | 通过 `~/.agent-link/agents/` 目录下的 JSON 文件互相发现 |
152
+ | **mDNS 局域网发现** | 同一局域网 | 通过 mDNS/DNS-SD (`_agent-link._tcp`) 广播和发现 |
153
+ | **中继服务器** | 跨网络 | 通过公网 WebSocket 中继服务器转发消息 |
272
154
 
273
- ## 故障排查
155
+ ## 技术架构
274
156
 
275
- ### mDNS 发现调试
157
+ 每台电脑上的 agent-link 采用 **Daemon + MCP** 双进程架构:
276
158
 
277
- 如果两台电脑都配置了 agent-link `agent_list` 看不到对方,使用调试脚本排查:
159
+ - **Daemon 进程**:后台常驻,负责 A2A 通信、Agent 发现、消息存储(SQLite)、SSE 事件推送。MCP 断开后继续运行以保持在线
160
+ - **MCP 进程**:随 Claude Code 启动,通过 HTTP API 与 Daemon 通信,提供 MCP 工具
278
161
 
279
- **电脑 A:**
280
- ```bash
281
- npx tsx tests/mdns-debug.ts pc-a
282
162
  ```
283
-
284
- **电脑 B:**
285
- ```bash
286
- npx tsx tests/mdns-debug.ts pc-b
163
+ Claude Code ←→ MCP Server (stdio) ←→ Daemon API (HTTP) ←→ A2A / Relay / mDNS
287
164
  ```
288
165
 
289
- 脚本会广播自身并监听局域网内的其他 Agent。如果 10 秒内双方都能看到 `[mDNS] 发现服务: ...` 输出,说明 mDNS 工作正常。
290
-
291
- 如果发现不了对方,常见原因:
292
-
293
- | 原因 | 排查方法 |
294
- |------|---------|
295
- | macOS 防火墙阻止 UDP 5353 | 系统设置 → 网络 → 防火墙,关闭或添加例外 |
296
- | 两台电脑不在同一子网 | 确认 IP 在同一网段(如都是 192.168.1.x) |
297
- | 路由器禁用多播转发 | 检查路由器设置,启用 mDNS/Bonjour 转发 |
298
- | 企业网络隔离 | 部分企业 WiFi 会隔离客户端间通信 |
299
-
300
- ## 开发
166
+ ## 从源码开发
301
167
 
302
168
  ```bash
303
- npm run build # 编译 TypeScript
304
- npm run dev # 开发模式运行(tsx)
305
- npm test # 运行测试
306
- npm run test:watch # 测试监听模式
169
+ git clone https://github.com/l3wingsgg/agent_link.git
170
+ cd agent_link
171
+ npm install
172
+ npm run build
173
+ npm test # 134 个测试
307
174
  ```
308
175
 
309
- ## 技术栈
310
-
311
- - TypeScript + Node.js
312
- - [A2A 协议](https://github.com/a2aproject/A2A) — Agent 间通信(JSON-RPC over HTTP)
313
- - [MCP 协议](https://modelcontextprotocol.io/) — Claude Code 工具集成
314
- - [bonjour-service](https://www.npmjs.com/package/bonjour-service) — mDNS 零配置局域网发现
315
- - [ws](https://www.npmjs.com/package/ws) — WebSocket 中继通信
316
- - [better-sqlite3](https://www.npmjs.com/package/better-sqlite3) — SQLite 持久化存储
317
- - [Vitest](https://vitest.dev/) — 测试框架
318
-
319
176
  ## 许可证
320
177
 
321
178
  MIT
@@ -6,11 +6,13 @@ export declare class A2AServer {
6
6
  private taskStore;
7
7
  private onTaskReceived?;
8
8
  private onTaskNotified?;
9
+ private getPresence?;
9
10
  constructor(config: AgentLinkConfig, taskStore: TaskStore);
10
11
  setOnTaskReceived(handler: (task: Task) => void): void;
11
12
  setOnTaskNotified(handler: (task: Partial<Task> & {
12
13
  id: string;
13
14
  }) => void): void;
15
+ setGetPresence(handler: () => string): void;
14
16
  start(): Promise<number>;
15
17
  stop(): Promise<void>;
16
18
  private getAgentCard;
@@ -5,6 +5,7 @@ export class A2AServer {
5
5
  taskStore;
6
6
  onTaskReceived;
7
7
  onTaskNotified;
8
+ getPresence;
8
9
  constructor(config, taskStore) {
9
10
  this.config = config;
10
11
  this.taskStore = taskStore;
@@ -16,6 +17,9 @@ export class A2AServer {
16
17
  setOnTaskNotified(handler) {
17
18
  this.onTaskNotified = handler;
18
19
  }
20
+ setGetPresence(handler) {
21
+ this.getPresence = handler;
22
+ }
19
23
  // 尝试监听指定端口,被占用则自动分配随机端口
20
24
  start() {
21
25
  return new Promise((resolve, reject) => {
@@ -102,6 +106,14 @@ export class A2AServer {
102
106
  handleRpc(req) {
103
107
  switch (req.method) {
104
108
  case "message/send": {
109
+ // offline 时拒绝消息
110
+ if (this.getPresence?.() === "offline") {
111
+ return {
112
+ jsonrpc: "2.0",
113
+ id: req.id,
114
+ error: { code: -32002, message: `Agent "${this.config.name}" 当前离线` },
115
+ };
116
+ }
105
117
  const params = req.params;
106
118
  const task = this.taskStore.createTask(params.from, this.config.name, params.message, params.callbackUrl);
107
119
  this.onTaskReceived?.(task);
@@ -134,6 +146,43 @@ export class A2AServer {
134
146
  }
135
147
  return { jsonrpc: "2.0", id: req.id, result: task };
136
148
  }
149
+ case "friends/request": {
150
+ const params = req.params;
151
+ const result = this.taskStore.createFriendRequest(params.from, this.config.name, params.message);
152
+ // 同时创建一条 task 消息,使 agent_inbox 能看到
153
+ const task = this.taskStore.createTask(params.from, this.config.name, `好友请求: ${params.message || "请求添加你为好友"}`);
154
+ this.onTaskReceived?.(task);
155
+ return { jsonrpc: "2.0", id: req.id, result: { requestId: result.id, status: "pending" } };
156
+ }
157
+ case "friends/respond": {
158
+ const params = req.params;
159
+ // 对方接受了我们的好友请求,本地直接添加好友关系(请求记录在对方数据库中)
160
+ if (params.accepted) {
161
+ this.taskStore.addFriend(this.config.name, params.from);
162
+ }
163
+ return { jsonrpc: "2.0", id: req.id, result: { ok: true } };
164
+ }
165
+ case "groups/invite": {
166
+ const params = req.params;
167
+ // 同时创建一条 task 消息,使 agent_inbox 能看到
168
+ const task = this.taskStore.createTask(params.from, this.config.name, `群组邀请: ${params.from} 邀请你加入群组「${params.groupName}」`);
169
+ this.onTaskReceived?.(task);
170
+ return { jsonrpc: "2.0", id: req.id, result: { ok: true } };
171
+ }
172
+ case "groups/message": {
173
+ const params = req.params;
174
+ // 跳过自己发出的消息(本地已存)
175
+ if (params.from === this.config.name) {
176
+ return { jsonrpc: "2.0", id: req.id, result: { ok: true } };
177
+ }
178
+ if (this.taskStore.isGroupMember(params.groupId, this.config.name)) {
179
+ this.taskStore.sendGroupMessage(params.groupId, params.from, params.message);
180
+ // 同时创建一条 task 消息,使 agent_inbox 能看到
181
+ const task = this.taskStore.createTask(params.from, this.config.name, `[群组消息] ${params.message}`);
182
+ this.onTaskReceived?.(task);
183
+ }
184
+ return { jsonrpc: "2.0", id: req.id, result: { ok: true } };
185
+ }
137
186
  case "tasks/cancel": {
138
187
  const params = req.params;
139
188
  const task = this.taskStore.updateTask(params.taskId, {
@@ -156,12 +205,32 @@ export class A2AServer {
156
205
  };
157
206
  }
158
207
  }
159
- readBody(req) {
208
+ readBody(req, maxSize = 1024 * 1024, timeoutMs = 10000) {
160
209
  return new Promise((resolve, reject) => {
161
210
  const chunks = [];
162
- req.on("data", (chunk) => chunks.push(chunk));
163
- req.on("end", () => resolve(Buffer.concat(chunks).toString()));
164
- req.on("error", reject);
211
+ let size = 0;
212
+ const timer = setTimeout(() => {
213
+ req.destroy();
214
+ reject(new Error("请求体读取超时"));
215
+ }, timeoutMs);
216
+ req.on("data", (chunk) => {
217
+ size += chunk.length;
218
+ if (size > maxSize) {
219
+ clearTimeout(timer);
220
+ req.destroy();
221
+ reject(new Error("请求体超出大小限制"));
222
+ return;
223
+ }
224
+ chunks.push(chunk);
225
+ });
226
+ req.on("end", () => {
227
+ clearTimeout(timer);
228
+ resolve(Buffer.concat(chunks).toString());
229
+ });
230
+ req.on("error", (err) => {
231
+ clearTimeout(timer);
232
+ reject(err);
233
+ });
165
234
  });
166
235
  }
167
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-server.js","sourceRoot":"","sources":["../src/a2a-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"a2a-server.js","sourceRoot":"","sources":["../src/a2a-server.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,11 +1,26 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
1
4
  export const DEFAULT_A2A_PORT = 3456;
2
5
  export const DEFAULT_API_PORT = 3457;
6
+ function loadConfigFile() {
7
+ try {
8
+ const content = readFileSync(path.join(homedir(), ".agent-link", "config.json"), "utf-8");
9
+ return JSON.parse(content);
10
+ }
11
+ catch {
12
+ return {};
13
+ }
14
+ }
3
15
  export function parseArgs(args) {
4
- let name = `agent-${Math.random().toString(36).slice(2, 6)}`;
16
+ const fileConfig = loadConfigFile();
17
+ let name = fileConfig.name || `agent-${Math.random().toString(36).slice(2, 6)}`;
5
18
  let port = DEFAULT_A2A_PORT;
6
19
  let apiPort = DEFAULT_API_PORT;
7
- let relayUrl;
20
+ let relayUrl = fileConfig.relayUrl || process.env.AGENT_LINK_RELAY_URL;
21
+ let noLocal = false;
8
22
  let noMdns = false;
23
+ let noRelay = false;
9
24
  const skills = [
10
25
  { id: "general", name: "通用", description: "通用任务处理" },
11
26
  ];
@@ -26,9 +41,15 @@ export function parseArgs(args) {
26
41
  case "-r":
27
42
  relayUrl = args[++i];
28
43
  break;
44
+ case "--no-local":
45
+ noLocal = true;
46
+ break;
29
47
  case "--no-mdns":
30
48
  noMdns = true;
31
49
  break;
50
+ case "--no-relay":
51
+ noRelay = true;
52
+ break;
32
53
  case "--skills":
33
54
  case "-s":
34
55
  skills.length = 0;
@@ -38,6 +59,10 @@ export function parseArgs(args) {
38
59
  break;
39
60
  }
40
61
  }
41
- return { name, port, apiPort, relayUrl, noMdns, skills };
62
+ // --no-relay 时清除 relay URL
63
+ if (noRelay) {
64
+ relayUrl = undefined;
65
+ }
66
+ return { name, port, apiPort, relayUrl, noLocal, noMdns, noRelay, skills };
42
67
  }
43
68
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,IAAI,GAAG,gBAAgB,CAAC;IAC5B,IAAI,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,QAA4B,CAAC;IACjC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,MAAM,GAA8B;QACxC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE;KACrD,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAOrC,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAChF,IAAI,IAAI,GAAG,gBAAgB,CAAC;IAC5B,IAAI,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,QAAQ,GAAuB,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC3F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAA8B;QACxC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE;KACrD,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7E,CAAC"}