@wings006/agent-link 0.1.3 → 0.1.5

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
@@ -55,14 +55,29 @@
55
55
  |------|------|------|--------|
56
56
  | `--name` | `-n` | Agent 名称(全局唯一) | 随机生成 |
57
57
  | `--port` | `-p` | A2A Server 监听端口 | 3456 |
58
+ | `--api-port` | | 内部 API 端口 | 3457 |
58
59
  | `--relay` | `-r` | 中继服务器地址(跨网络通信) | 无 |
59
- | `--no-mdns` | | 禁用局域网发现,仅用中继 | false |
60
+ | `--no-local` | | 禁用本机发现 | false |
61
+ | `--no-mdns` | | 禁用局域网发现 | false |
62
+ | `--no-relay` | | 禁用中继连接 | false |
60
63
  | `--skills` | `-s` | 能力标签,逗号分隔 | general |
61
64
 
65
+ 也支持配置文件 `~/.agent-link/config.json`:
66
+ ```json
67
+ {
68
+ "name": "my-agent",
69
+ "relayUrl": "ws://8.134.178.228:3458"
70
+ }
71
+ ```
72
+
73
+ 环境变量 `AGENT_LINK_RELAY_URL` 也可设置中继地址。
74
+
62
75
  ## 使用
63
76
 
64
77
  配置完成后直接用自然语言和 Claude Code 对话:
65
78
 
79
+ ### 消息通信
80
+
66
81
  - **"有哪些 agent 在线?"** → 调用 `agent_list`
67
82
  - **"告诉 office-pc 帮我生成周报"** → 调用 `agent_send`
68
83
  - **"看看有没有人给我发消息"** → 调用 `agent_inbox`
@@ -70,6 +85,44 @@
70
85
  - **"标记全部已读"** → 调用 `agent_mark_read`
71
86
  - **"清理已读消息"** → 调用 `agent_clear_inbox`
72
87
 
88
+ ### 好友系统
89
+
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`
96
+
97
+ ### 群组功能
98
+
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`
108
+
109
+ ### 其他
110
+
111
+ - **"查看状态"** → 调用 `agent_status`(Daemon 信息、在线列表、好友、群组总览)
112
+ - **"设置状态为忙碌"** → 调用 `agent_set_status`
113
+ - **"静音某人"** → 调用 `agent_mute`
114
+ - **"取消静音"** → 调用 `agent_unmute`
115
+
116
+ ### 自动查收消息
117
+
118
+ 执行以下命令开启每分钟自动检查收件箱,有新消息会自动播报:
119
+
120
+ ```
121
+ /loop 1m 使用 agent_inbox(unread_only=true) 检查未读消息,有新消息则播报并询问是否回复,没有则不输出
122
+ ```
123
+
124
+ 也可以手动执行一次检查:`/agent-link:check-messages`
125
+
73
126
  ## 部署中继服务器
74
127
 
75
128
  跨网络通信需要一台公网服务器作为中继:
@@ -100,6 +153,27 @@ node relay-server.js --port 3458
100
153
  | mDNS 发现不到 | macOS 检查防火墙;确认同一子网;路由器启用多播转发 |
101
154
  | 同机多实例冲突 | 不同实例使用不同的 `--port` 和 `--api-port` |
102
155
 
156
+ ## 三种发现模式
157
+
158
+ Agent Link 支持三种 Agent 发现方式,可组合使用:
159
+
160
+ | 模式 | 适用场景 | 原理 |
161
+ |------|---------|------|
162
+ | **本机发现** | 同一台电脑多实例 | 通过 `~/.agent-link/agents/` 目录下的 JSON 文件互相发现 |
163
+ | **mDNS 局域网发现** | 同一局域网 | 通过 mDNS/DNS-SD (`_agent-link._tcp`) 广播和发现 |
164
+ | **中继服务器** | 跨网络 | 通过公网 WebSocket 中继服务器转发消息 |
165
+
166
+ ## 技术架构
167
+
168
+ 每台电脑上的 agent-link 采用 **Daemon + MCP** 双进程架构:
169
+
170
+ - **Daemon 进程**:后台常驻,负责 A2A 通信、Agent 发现、消息存储(SQLite)、SSE 事件推送。MCP 断开后继续运行以保持在线
171
+ - **MCP 进程**:随 Claude Code 启动,通过 HTTP API 与 Daemon 通信,提供 MCP 工具
172
+
173
+ ```
174
+ Claude Code ←→ MCP Server (stdio) ←→ Daemon API (HTTP) ←→ A2A / Relay / mDNS
175
+ ```
176
+
103
177
  ## 从源码开发
104
178
 
105
179
  ```bash
@@ -107,7 +181,7 @@ git clone https://github.com/l3wingsgg/agent_link.git
107
181
  cd agent_link
108
182
  npm install
109
183
  npm run build
110
- npm test
184
+ npm test # 134 个测试
111
185
  ```
112
186
 
113
187
  ## 许可证
@@ -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.d.ts CHANGED
@@ -1,4 +1,12 @@
1
1
  import type { AgentLinkConfig } from "./types.js";
2
2
  export declare const DEFAULT_A2A_PORT = 3456;
3
3
  export declare const DEFAULT_API_PORT = 3457;
4
+ interface ConfigFile {
5
+ name?: string;
6
+ relayUrl?: string;
7
+ }
8
+ export declare const CONFIG_PATH: string;
9
+ export declare function loadConfig(): ConfigFile;
10
+ export declare function saveConfig(updates: Partial<ConfigFile>): ConfigFile;
4
11
  export declare function parseArgs(args: string[]): AgentLinkConfig;
12
+ export {};
package/dist/config.js CHANGED
@@ -1,11 +1,43 @@
1
+ import { readFileSync, writeFileSync, mkdirSync } 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
+ }
15
+ export const CONFIG_PATH = path.join(homedir(), ".agent-link", "config.json");
16
+ export function loadConfig() {
17
+ return loadConfigFile();
18
+ }
19
+ export function saveConfig(updates) {
20
+ const current = loadConfigFile();
21
+ const merged = { ...current, ...updates };
22
+ // 删除值为 undefined/null 的字段
23
+ for (const key of Object.keys(merged)) {
24
+ if (merged[key] === undefined || merged[key] === null) {
25
+ delete merged[key];
26
+ }
27
+ }
28
+ mkdirSync(path.dirname(CONFIG_PATH), { recursive: true });
29
+ writeFileSync(CONFIG_PATH, JSON.stringify(merged, null, 2));
30
+ return merged;
31
+ }
3
32
  export function parseArgs(args) {
4
- let name = `agent-${Math.random().toString(36).slice(2, 6)}`;
33
+ const fileConfig = loadConfigFile();
34
+ let name = fileConfig.name || `agent-${Math.random().toString(36).slice(2, 6)}`;
5
35
  let port = DEFAULT_A2A_PORT;
6
36
  let apiPort = DEFAULT_API_PORT;
7
- let relayUrl;
37
+ let relayUrl = fileConfig.relayUrl || process.env.AGENT_LINK_RELAY_URL;
38
+ let noLocal = false;
8
39
  let noMdns = false;
40
+ let noRelay = false;
9
41
  const skills = [
10
42
  { id: "general", name: "通用", description: "通用任务处理" },
11
43
  ];
@@ -26,9 +58,15 @@ export function parseArgs(args) {
26
58
  case "-r":
27
59
  relayUrl = args[++i];
28
60
  break;
61
+ case "--no-local":
62
+ noLocal = true;
63
+ break;
29
64
  case "--no-mdns":
30
65
  noMdns = true;
31
66
  break;
67
+ case "--no-relay":
68
+ noRelay = true;
69
+ break;
32
70
  case "--skills":
33
71
  case "-s":
34
72
  skills.length = 0;
@@ -38,6 +76,10 @@ export function parseArgs(args) {
38
76
  break;
39
77
  }
40
78
  }
41
- return { name, port, apiPort, relayUrl, noMdns, skills };
79
+ // --no-relay 时清除 relay URL
80
+ if (noRelay) {
81
+ relayUrl = undefined;
82
+ }
83
+ return { name, port, apiPort, relayUrl, noLocal, noMdns, noRelay, skills };
42
84
  }
43
85
  //# 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":"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"}