@f2a/network 0.1.2 → 0.1.3
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/package.json +8 -1
- package/.github/workflows/ci.yml +0 -113
- package/.github/workflows/publish.yml +0 -60
- package/MONOREPO.md +0 -58
- package/SKILL.md +0 -137
- package/dist/adapters/openclaw.d.ts +0 -103
- package/dist/adapters/openclaw.d.ts.map +0 -1
- package/dist/adapters/openclaw.js +0 -297
- package/dist/adapters/openclaw.js.map +0 -1
- package/dist/core/connection-manager.d.ts +0 -80
- package/dist/core/connection-manager.d.ts.map +0 -1
- package/dist/core/connection-manager.js +0 -235
- package/dist/core/connection-manager.js.map +0 -1
- package/dist/core/connection-manager.test.d.ts +0 -2
- package/dist/core/connection-manager.test.d.ts.map +0 -1
- package/dist/core/connection-manager.test.js +0 -52
- package/dist/core/connection-manager.test.js.map +0 -1
- package/dist/core/identity.d.ts +0 -47
- package/dist/core/identity.d.ts.map +0 -1
- package/dist/core/identity.js +0 -130
- package/dist/core/identity.js.map +0 -1
- package/dist/core/identity.test.d.ts +0 -2
- package/dist/core/identity.test.d.ts.map +0 -1
- package/dist/core/identity.test.js +0 -43
- package/dist/core/identity.test.js.map +0 -1
- package/dist/core/serverless.d.ts +0 -155
- package/dist/core/serverless.d.ts.map +0 -1
- package/dist/core/serverless.js +0 -615
- package/dist/core/serverless.js.map +0 -1
- package/dist/daemon/webhook.test.d.ts +0 -2
- package/dist/daemon/webhook.test.d.ts.map +0 -1
- package/dist/daemon/webhook.test.js +0 -24
- package/dist/daemon/webhook.test.js.map +0 -1
- package/dist/protocol/messages.d.ts +0 -739
- package/dist/protocol/messages.d.ts.map +0 -1
- package/dist/protocol/messages.js +0 -188
- package/dist/protocol/messages.js.map +0 -1
- package/dist/protocol/messages.test.d.ts +0 -2
- package/dist/protocol/messages.test.d.ts.map +0 -1
- package/dist/protocol/messages.test.js +0 -55
- package/dist/protocol/messages.test.js.map +0 -1
- package/docs/F2A-PROTOCOL.md +0 -61
- package/docs/MOBILE_BOOTSTRAP_DESIGN.md +0 -126
- package/docs/a2a-lessons.md +0 -316
- package/docs/middleware-guide.md +0 -448
- package/docs/readme-update-checklist.md +0 -90
- package/docs/reputation-guide.md +0 -396
- package/docs/rfcs/001-reputation-system.md +0 -712
- package/docs/security-design.md +0 -247
- package/install.sh +0 -231
- package/packages/openclaw-adapter/README.md +0 -510
- package/packages/openclaw-adapter/openclaw.plugin.json +0 -106
- package/packages/openclaw-adapter/package.json +0 -40
- package/packages/openclaw-adapter/src/announcement-queue.test.ts +0 -449
- package/packages/openclaw-adapter/src/announcement-queue.ts +0 -403
- package/packages/openclaw-adapter/src/capability-detector.test.ts +0 -99
- package/packages/openclaw-adapter/src/capability-detector.ts +0 -183
- package/packages/openclaw-adapter/src/claim-handlers.test.ts +0 -974
- package/packages/openclaw-adapter/src/claim-handlers.ts +0 -482
- package/packages/openclaw-adapter/src/connector.business.test.ts +0 -583
- package/packages/openclaw-adapter/src/connector.ts +0 -795
- package/packages/openclaw-adapter/src/index.test.ts +0 -82
- package/packages/openclaw-adapter/src/index.ts +0 -18
- package/packages/openclaw-adapter/src/integration.e2e.test.ts +0 -829
- package/packages/openclaw-adapter/src/logger.ts +0 -51
- package/packages/openclaw-adapter/src/network-client.test.ts +0 -266
- package/packages/openclaw-adapter/src/network-client.ts +0 -251
- package/packages/openclaw-adapter/src/network-recovery.test.ts +0 -465
- package/packages/openclaw-adapter/src/node-manager.test.ts +0 -136
- package/packages/openclaw-adapter/src/node-manager.ts +0 -429
- package/packages/openclaw-adapter/src/plugin.test.ts +0 -439
- package/packages/openclaw-adapter/src/plugin.ts +0 -104
- package/packages/openclaw-adapter/src/reputation.test.ts +0 -221
- package/packages/openclaw-adapter/src/reputation.ts +0 -368
- package/packages/openclaw-adapter/src/task-guard.test.ts +0 -502
- package/packages/openclaw-adapter/src/task-guard.ts +0 -860
- package/packages/openclaw-adapter/src/task-queue.concurrency.test.ts +0 -462
- package/packages/openclaw-adapter/src/task-queue.edge-cases.test.ts +0 -284
- package/packages/openclaw-adapter/src/task-queue.persistence.test.ts +0 -408
- package/packages/openclaw-adapter/src/task-queue.ts +0 -668
- package/packages/openclaw-adapter/src/tool-handlers.test.ts +0 -906
- package/packages/openclaw-adapter/src/tool-handlers.ts +0 -574
- package/packages/openclaw-adapter/src/types.ts +0 -361
- package/packages/openclaw-adapter/src/webhook-pusher.test.ts +0 -188
- package/packages/openclaw-adapter/src/webhook-pusher.ts +0 -220
- package/packages/openclaw-adapter/src/webhook-server.test.ts +0 -580
- package/packages/openclaw-adapter/src/webhook-server.ts +0 -202
- package/packages/openclaw-adapter/tsconfig.json +0 -20
- package/src/cli/commands.test.ts +0 -157
- package/src/cli/commands.ts +0 -129
- package/src/cli/index.test.ts +0 -77
- package/src/cli/index.ts +0 -234
- package/src/core/autonomous-economy.test.ts +0 -291
- package/src/core/autonomous-economy.ts +0 -428
- package/src/core/e2ee-crypto.test.ts +0 -125
- package/src/core/e2ee-crypto.ts +0 -246
- package/src/core/f2a.test.ts +0 -269
- package/src/core/f2a.ts +0 -618
- package/src/core/p2p-network.test.ts +0 -199
- package/src/core/p2p-network.ts +0 -1432
- package/src/core/reputation-security.test.ts +0 -403
- package/src/core/reputation-security.ts +0 -562
- package/src/core/reputation.test.ts +0 -260
- package/src/core/reputation.ts +0 -576
- package/src/core/review-committee.test.ts +0 -380
- package/src/core/review-committee.ts +0 -401
- package/src/core/token-manager.test.ts +0 -133
- package/src/core/token-manager.ts +0 -140
- package/src/daemon/control-server.test.ts +0 -216
- package/src/daemon/control-server.ts +0 -292
- package/src/daemon/index.test.ts +0 -85
- package/src/daemon/index.ts +0 -89
- package/src/daemon/main.ts +0 -44
- package/src/daemon/start.ts +0 -29
- package/src/daemon/webhook.test.ts +0 -68
- package/src/daemon/webhook.ts +0 -105
- package/src/index.test.ts +0 -436
- package/src/index.ts +0 -72
- package/src/types/index.test.ts +0 -87
- package/src/types/index.ts +0 -341
- package/src/types/result.ts +0 -68
- package/src/utils/benchmark.ts +0 -237
- package/src/utils/logger.ts +0 -331
- package/src/utils/middleware.ts +0 -229
- package/src/utils/rate-limiter.ts +0 -207
- package/src/utils/signature.ts +0 -136
- package/src/utils/validation.ts +0 -186
- package/tests/docker/Dockerfile.node +0 -23
- package/tests/docker/Dockerfile.runner +0 -18
- package/tests/docker/docker-compose.test.yml +0 -73
- package/tests/integration/message-passing.test.ts +0 -109
- package/tests/integration/multi-node.test.ts +0 -92
- package/tests/integration/p2p-connection.test.ts +0 -83
- package/tests/integration/test-config.ts +0 -32
- package/tsconfig.json +0 -21
- package/vitest.config.ts +0 -26
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@f2a/network",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Friend-to-Agent P2P networking protocol for OpenClaw Agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,11 +8,18 @@
|
|
|
8
8
|
"bin": {
|
|
9
9
|
"f2a": "./dist/cli/index.js"
|
|
10
10
|
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"LICENSE",
|
|
14
|
+
"README.md",
|
|
15
|
+
"package.json"
|
|
16
|
+
],
|
|
11
17
|
"workspaces": [
|
|
12
18
|
"packages/*"
|
|
13
19
|
],
|
|
14
20
|
"scripts": {
|
|
15
21
|
"build": "tsc",
|
|
22
|
+
"lint": "tsc --noEmit",
|
|
16
23
|
"build:watch": "tsc --watch",
|
|
17
24
|
"build:all": "npm run build && npm run build --workspaces",
|
|
18
25
|
"clean": "rm -rf dist",
|
package/.github/workflows/ci.yml
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main, develop]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main, develop]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
# Lint 检查
|
|
11
|
-
lint:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
|
|
16
|
-
- uses: actions/setup-node@v4
|
|
17
|
-
with:
|
|
18
|
-
node-version: '20'
|
|
19
|
-
|
|
20
|
-
- name: Install dependencies
|
|
21
|
-
run: npm install
|
|
22
|
-
|
|
23
|
-
- name: Run lint
|
|
24
|
-
run: npm run lint || npm run build -- --noEmit
|
|
25
|
-
|
|
26
|
-
# 单元测试(Node 20 & 22)
|
|
27
|
-
unit-tests:
|
|
28
|
-
runs-on: ubuntu-latest
|
|
29
|
-
needs: lint
|
|
30
|
-
strategy:
|
|
31
|
-
matrix:
|
|
32
|
-
node-version: [20, 22]
|
|
33
|
-
steps:
|
|
34
|
-
- uses: actions/checkout@v4
|
|
35
|
-
|
|
36
|
-
- uses: actions/setup-node@v4
|
|
37
|
-
with:
|
|
38
|
-
node-version: ${{ matrix.node-version }}
|
|
39
|
-
|
|
40
|
-
- name: Install dependencies
|
|
41
|
-
run: npm install
|
|
42
|
-
|
|
43
|
-
- name: Build
|
|
44
|
-
run: npm run build
|
|
45
|
-
|
|
46
|
-
- name: Run unit tests
|
|
47
|
-
run: npm run test:unit
|
|
48
|
-
|
|
49
|
-
- name: Upload coverage
|
|
50
|
-
uses: codecov/codecov-action@v4
|
|
51
|
-
if: matrix.node-version == 20
|
|
52
|
-
with:
|
|
53
|
-
files: ./coverage/lcov.info
|
|
54
|
-
flags: unittests
|
|
55
|
-
|
|
56
|
-
# 集成测试(仅 push 触发)
|
|
57
|
-
integration-tests:
|
|
58
|
-
runs-on: ubuntu-latest
|
|
59
|
-
needs: unit-tests
|
|
60
|
-
if: github.event_name == 'push'
|
|
61
|
-
steps:
|
|
62
|
-
- uses: actions/checkout@v4
|
|
63
|
-
|
|
64
|
-
- uses: actions/setup-node@v4
|
|
65
|
-
with:
|
|
66
|
-
node-version: '20'
|
|
67
|
-
|
|
68
|
-
- name: Install dependencies
|
|
69
|
-
run: npm install
|
|
70
|
-
|
|
71
|
-
- name: Build
|
|
72
|
-
run: npm run build
|
|
73
|
-
|
|
74
|
-
- name: Run Docker integration tests
|
|
75
|
-
run: npm run test:docker
|
|
76
|
-
|
|
77
|
-
- name: Export logs on failure
|
|
78
|
-
if: failure()
|
|
79
|
-
run: docker compose -f tests/docker/docker-compose.test.yml logs > test-logs.txt
|
|
80
|
-
|
|
81
|
-
- name: Upload logs on failure
|
|
82
|
-
if: failure()
|
|
83
|
-
uses: actions/upload-artifact@v4
|
|
84
|
-
with:
|
|
85
|
-
name: integration-test-logs
|
|
86
|
-
path: test-logs.txt
|
|
87
|
-
|
|
88
|
-
- name: Upload coverage
|
|
89
|
-
uses: codecov/codecov-action@v4
|
|
90
|
-
with:
|
|
91
|
-
files: ./coverage/lcov.info
|
|
92
|
-
flags: integration
|
|
93
|
-
|
|
94
|
-
# 多节点测试(仅 main 分支)
|
|
95
|
-
multi-node-tests:
|
|
96
|
-
runs-on: ubuntu-latest
|
|
97
|
-
needs: integration-tests
|
|
98
|
-
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
99
|
-
steps:
|
|
100
|
-
- uses: actions/checkout@v4
|
|
101
|
-
|
|
102
|
-
- uses: actions/setup-node@v4
|
|
103
|
-
with:
|
|
104
|
-
node-version: '20'
|
|
105
|
-
|
|
106
|
-
- name: Install dependencies
|
|
107
|
-
run: npm install
|
|
108
|
-
|
|
109
|
-
- name: Build
|
|
110
|
-
run: npm run build
|
|
111
|
-
|
|
112
|
-
- name: Run 10-node test
|
|
113
|
-
run: npm run test:docker:10
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
name: Publish to NPM
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- 'v*'
|
|
7
|
-
workflow_dispatch:
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
publish-core:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v4
|
|
14
|
-
|
|
15
|
-
- uses: actions/setup-node@v4
|
|
16
|
-
with:
|
|
17
|
-
node-version: '20'
|
|
18
|
-
registry-url: 'https://registry.npmjs.org'
|
|
19
|
-
|
|
20
|
-
- name: Install dependencies
|
|
21
|
-
run: npm install
|
|
22
|
-
|
|
23
|
-
- name: Build
|
|
24
|
-
run: npm run build
|
|
25
|
-
|
|
26
|
-
- name: Publish core package
|
|
27
|
-
run: npm publish --access public
|
|
28
|
-
env:
|
|
29
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
30
|
-
|
|
31
|
-
publish-adapter:
|
|
32
|
-
runs-on: ubuntu-latest
|
|
33
|
-
needs: publish-core
|
|
34
|
-
steps:
|
|
35
|
-
- uses: actions/checkout@v4
|
|
36
|
-
|
|
37
|
-
- uses: actions/setup-node@v4
|
|
38
|
-
with:
|
|
39
|
-
node-version: '20'
|
|
40
|
-
registry-url: 'https://registry.npmjs.org'
|
|
41
|
-
|
|
42
|
-
- name: Wait for package to be available
|
|
43
|
-
run: sleep 30
|
|
44
|
-
|
|
45
|
-
- name: Install dependencies
|
|
46
|
-
working-directory: packages/openclaw-adapter
|
|
47
|
-
run: |
|
|
48
|
-
# Replace file: reference with npm package reference
|
|
49
|
-
npm install @f2a/network@latest --save
|
|
50
|
-
npm install
|
|
51
|
-
|
|
52
|
-
- name: Build adapter
|
|
53
|
-
working-directory: packages/openclaw-adapter
|
|
54
|
-
run: npm run build
|
|
55
|
-
|
|
56
|
-
- name: Publish adapter package
|
|
57
|
-
working-directory: packages/openclaw-adapter
|
|
58
|
-
run: npm publish --access public
|
|
59
|
-
env:
|
|
60
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/MONOREPO.md
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# F2A Monorepo
|
|
2
|
-
|
|
3
|
-
F2A (Friend-to-Agent) 是一个用于 OpenClaw Agents 的 P2P 网络协议。
|
|
4
|
-
|
|
5
|
-
## 仓库结构
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
F2A/
|
|
9
|
-
├── packages/ # 子包目录
|
|
10
|
-
│ └── openclaw-adapter/ # OpenClaw 插件
|
|
11
|
-
│ ├── package.json
|
|
12
|
-
│ ├── tsconfig.json
|
|
13
|
-
│ ├── README.md
|
|
14
|
-
│ └── src/
|
|
15
|
-
├── src/ # F2A 核心代码
|
|
16
|
-
│ ├── core/ # 核心 P2P 网络
|
|
17
|
-
│ ├── daemon/ # Daemon 服务
|
|
18
|
-
│ ├── cli/ # CLI 工具
|
|
19
|
-
│ └── types/ # 类型定义
|
|
20
|
-
├── docs/ # 文档
|
|
21
|
-
├── package.json # 根 package.json (workspaces)
|
|
22
|
-
└── tsconfig.json
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## 包说明
|
|
26
|
-
|
|
27
|
-
| 包 | 路径 | 说明 |
|
|
28
|
-
|----|------|------|
|
|
29
|
-
| `f2a-network` | `./` | F2A P2P 网络核心 |
|
|
30
|
-
| `@f2a/openclaw-adapter` | `./packages/openclaw-adapter` | OpenClaw 插件 |
|
|
31
|
-
|
|
32
|
-
## 开发
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 安装所有依赖
|
|
36
|
-
npm install
|
|
37
|
-
|
|
38
|
-
# 构建所有包
|
|
39
|
-
npm run build:all
|
|
40
|
-
|
|
41
|
-
# 测试所有包
|
|
42
|
-
npm run test:all
|
|
43
|
-
|
|
44
|
-
# 构建特定包
|
|
45
|
-
cd packages/openclaw-adapter
|
|
46
|
-
npm run build
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## 发布
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# 发布核心包
|
|
53
|
-
npm publish
|
|
54
|
-
|
|
55
|
-
# 发布子包
|
|
56
|
-
cd packages/openclaw-adapter
|
|
57
|
-
npm publish --access public
|
|
58
|
-
```
|
package/SKILL.md
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: f2a-network
|
|
3
|
-
description: Activate when the user wants to discover, connect, or communicate with other OpenClaw Agents in the local network. Use for P2P networking, messaging between agents, invoking skills on remote agents, file sharing, or group chat.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# F2A - Friend-to-Agent P2P Network
|
|
7
|
-
|
|
8
|
-
## 概述
|
|
9
|
-
|
|
10
|
-
F2A 是一个 P2P 协作网络,让 OpenClaw Agent 能够:
|
|
11
|
-
- 发现局域网内的其他 Agent
|
|
12
|
-
- 与其他 Agent 建立加密通信
|
|
13
|
-
- 委托任务给其他 Agent
|
|
14
|
-
- 共享文件和能力
|
|
15
|
-
|
|
16
|
-
## 安装
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
cd /path/to/f2a
|
|
20
|
-
npm install
|
|
21
|
-
npm run build
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## 命令参考
|
|
25
|
-
|
|
26
|
-
### 启动/停止
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
# 启动 Daemon(后台服务)
|
|
30
|
-
node dist/daemon/index.js
|
|
31
|
-
|
|
32
|
-
# 或使用 PM2
|
|
33
|
-
pm2 start dist/daemon/index.js --name f2a
|
|
34
|
-
|
|
35
|
-
# 停止
|
|
36
|
-
pm2 stop f2a
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### CLI 命令
|
|
40
|
-
|
|
41
|
-
| 命令 | 说明 |
|
|
42
|
-
|------|------|
|
|
43
|
-
| `status` | 查看节点状态 |
|
|
44
|
-
| `peers` | 查看已连接的 Peers |
|
|
45
|
-
| `discover [--capability <name>]` | 发现网络中的 Agents |
|
|
46
|
-
| `pending` | 查看待确认连接 |
|
|
47
|
-
| `confirm <id|index>` | 确认连接请求 |
|
|
48
|
-
| `reject <id|index>` | 拒绝连接请求 |
|
|
49
|
-
|
|
50
|
-
### 使用示例
|
|
51
|
-
|
|
52
|
-
#### 场景一:发现其他 Agent
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# 发现所有 Agent
|
|
56
|
-
node dist/cli/index.js discover
|
|
57
|
-
|
|
58
|
-
# 按能力过滤
|
|
59
|
-
node dist/cli/index.js discover --capability code-generation
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
#### 场景二:查看连接状态
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
node dist/cli/index.js status
|
|
66
|
-
node dist/cli/index.js peers
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
#### 场景三:管理连接请求
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# 查看待确认连接
|
|
73
|
-
node dist/cli/index.js pending
|
|
74
|
-
|
|
75
|
-
# 确认连接
|
|
76
|
-
node dist/cli/index.js confirm 1
|
|
77
|
-
|
|
78
|
-
# 拒绝连接
|
|
79
|
-
node dist/cli/index.js reject 2 --reason "unknown agent"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## 环境变量
|
|
83
|
-
|
|
84
|
-
| 变量 | 默认值 | 说明 |
|
|
85
|
-
|------|--------|------|
|
|
86
|
-
| `F2A_CONTROL_PORT` | 9001 | HTTP 控制端口 |
|
|
87
|
-
| `F2A_CONTROL_TOKEN` | f2a-default-token | 认证 Token(生产环境务必修改) |
|
|
88
|
-
|
|
89
|
-
## 安全注意事项
|
|
90
|
-
|
|
91
|
-
⚠️ **默认 Token 不安全!** 生产环境请设置:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
export F2A_CONTROL_TOKEN=$(openssl rand -hex 32)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## 故障排除
|
|
98
|
-
|
|
99
|
-
### 问题:无法发现其他 Agent
|
|
100
|
-
|
|
101
|
-
检查:
|
|
102
|
-
1. 是否在同一局域网?
|
|
103
|
-
2. 防火墙是否阻止了 UDP 8768 端口?
|
|
104
|
-
3. MDNS 是否被路由器禁用?
|
|
105
|
-
|
|
106
|
-
### 问题:连接被拒绝
|
|
107
|
-
|
|
108
|
-
检查:
|
|
109
|
-
1. 对方是否已启动 F2A?
|
|
110
|
-
2. Token 是否正确?
|
|
111
|
-
3. 是否在对方的黑名单中?
|
|
112
|
-
|
|
113
|
-
### 问题:端口被占用
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# 检查端口占用
|
|
117
|
-
lsof -i :9001
|
|
118
|
-
|
|
119
|
-
# 使用其他端口
|
|
120
|
-
F2A_CONTROL_PORT=9002 node dist/daemon/index.js
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## 更多文档
|
|
124
|
-
|
|
125
|
-
- 详细文档:`docs/`
|
|
126
|
-
- 协议规范:`skill/references/protocol.md`
|
|
127
|
-
- 完整 README:`README.md`
|
|
128
|
-
|
|
129
|
-
## 日志查看
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# 使用 PM2 查看日志
|
|
133
|
-
pm2 logs f2a
|
|
134
|
-
|
|
135
|
-
# 或查看日志文件
|
|
136
|
-
tail -f ~/.f2a/f2a.log
|
|
137
|
-
```
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenClaw F2A 适配器
|
|
3
|
-
* 将 F2A P2P 网络集成到 OpenClaw
|
|
4
|
-
*
|
|
5
|
-
* 使用方式:
|
|
6
|
-
* ```typescript
|
|
7
|
-
* const adapter = await OpenClawF2AAdapter.create(openclawSession);
|
|
8
|
-
* await adapter.start();
|
|
9
|
-
*
|
|
10
|
-
* // 委托任务给网络
|
|
11
|
-
* const result = await adapter.delegateTask({
|
|
12
|
-
* capability: 'code-generation',
|
|
13
|
-
* description: 'Generate a Python function to calculate fibonacci'
|
|
14
|
-
* });
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
import { AgentCapability, TaskDelegateOptions, TaskDelegateResult, AgentInfo } from '../index';
|
|
18
|
-
import type { Result } from '../types';
|
|
19
|
-
export interface OpenClawSession {
|
|
20
|
-
execute: (task: string, options?: unknown) => Promise<unknown>;
|
|
21
|
-
on: (event: string, handler: (...args: unknown[]) => void) => void;
|
|
22
|
-
}
|
|
23
|
-
export interface OpenClawF2AAdapterOptions {
|
|
24
|
-
/** 节点显示名称 */
|
|
25
|
-
displayName?: string;
|
|
26
|
-
/** 监听端口(0表示随机) */
|
|
27
|
-
listenPort?: number;
|
|
28
|
-
/** 引导节点列表 */
|
|
29
|
-
bootstrapPeers?: string[];
|
|
30
|
-
/** 是否启用本地 MDNS 发现 */
|
|
31
|
-
enableMDNS?: boolean;
|
|
32
|
-
/** 能力处理器映射 */
|
|
33
|
-
capabilityHandlers?: Record<string, (params: Record<string, unknown>) => Promise<unknown>>;
|
|
34
|
-
}
|
|
35
|
-
export declare class OpenClawF2AAdapter {
|
|
36
|
-
private f2a;
|
|
37
|
-
private openclaw;
|
|
38
|
-
private options;
|
|
39
|
-
private running;
|
|
40
|
-
private constructor();
|
|
41
|
-
/**
|
|
42
|
-
* 创建适配器实例
|
|
43
|
-
*/
|
|
44
|
-
static create(openclaw: OpenClawSession, options?: OpenClawF2AAdapterOptions): Promise<OpenClawF2AAdapter>;
|
|
45
|
-
/**
|
|
46
|
-
* 注册默认能力
|
|
47
|
-
*/
|
|
48
|
-
private static registerDefaultCapabilities;
|
|
49
|
-
/**
|
|
50
|
-
* 检测 OpenClaw 的能力
|
|
51
|
-
*/
|
|
52
|
-
private static detectOpenClawCapabilities;
|
|
53
|
-
/**
|
|
54
|
-
* 创建默认能力处理器
|
|
55
|
-
*/
|
|
56
|
-
private static createDefaultHandler;
|
|
57
|
-
/**
|
|
58
|
-
* 构建任务描述
|
|
59
|
-
*/
|
|
60
|
-
private static buildTaskDescription;
|
|
61
|
-
/**
|
|
62
|
-
* 启动适配器
|
|
63
|
-
*/
|
|
64
|
-
start(): Promise<Result<void>>;
|
|
65
|
-
/**
|
|
66
|
-
* 停止适配器
|
|
67
|
-
*/
|
|
68
|
-
stop(): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* 处理收到的任务请求
|
|
71
|
-
*/
|
|
72
|
-
private handleTaskRequest;
|
|
73
|
-
/**
|
|
74
|
-
* 委托任务给网络中的其他 Agent
|
|
75
|
-
*/
|
|
76
|
-
delegateTask(options: TaskDelegateOptions): Promise<Result<TaskDelegateResult>>;
|
|
77
|
-
/**
|
|
78
|
-
* 发现网络中的 Agents
|
|
79
|
-
*/
|
|
80
|
-
discoverAgents(capability?: string): Promise<AgentInfo[]>;
|
|
81
|
-
/**
|
|
82
|
-
* 直接发送任务给特定 Peer
|
|
83
|
-
*/
|
|
84
|
-
sendTaskTo(peerId: string, taskType: string, description: string, parameters?: Record<string, unknown>): Promise<Result<unknown>>;
|
|
85
|
-
/**
|
|
86
|
-
* 获取本节点信息
|
|
87
|
-
*/
|
|
88
|
-
getAgentInfo(): AgentInfo;
|
|
89
|
-
/**
|
|
90
|
-
* 获取已连接的 Peers
|
|
91
|
-
*/
|
|
92
|
-
getConnectedPeers(): AgentInfo[];
|
|
93
|
-
/**
|
|
94
|
-
* 注册新能力
|
|
95
|
-
*/
|
|
96
|
-
registerCapability(capability: AgentCapability, handler: (params: Record<string, unknown>) => Promise<unknown>): void;
|
|
97
|
-
/**
|
|
98
|
-
* 获取 PeerID
|
|
99
|
-
*/
|
|
100
|
-
get peerId(): string;
|
|
101
|
-
}
|
|
102
|
-
export default OpenClawF2AAdapter;
|
|
103
|
-
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAO,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACpG,OAAO,KAAK,EAAc,MAAM,EAAoB,MAAM,UAAU,CAAC;AAGrE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5F;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO;IAMP;;OAEG;WACU,MAAM,CACjB,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,kBAAkB,CAAC;IA4B9B;;OAEG;mBACkB,2BAA2B;IAchD;;OAEG;mBACkB,0BAA0B;IAyG/C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAsBpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;OAEG;YACW,iBAAiB;IAqC/B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAIrF;;OAEG;IACG,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI/D;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAI3B;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,iBAAiB,IAAI,SAAS,EAAE;IAIhC;;OAEG;IACH,kBAAkB,CAChB,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7D,IAAI;IAIP;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF;AAGD,eAAe,kBAAkB,CAAC"}
|