@starlink-awaken/agentmesh 1.0.3 → 1.2.1
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/CHANGELOG.md +60 -41
- package/README.zh-CN.md +137 -167
- package/bin/agentmesh +2 -2
- package/config/gateway.yaml +78 -0
- package/dist/src/cli/connect.d.ts +26 -0
- package/dist/src/cli/connect.js +544 -0
- package/dist/src/cli/setup.d.ts +2 -0
- package/dist/src/cli/setup.js +98 -0
- package/dist/src/cli.js +410 -0
- package/dist/src/core/logger.d.ts +14 -0
- package/dist/src/core/logger.js +57 -0
- package/dist/{index.js → src/index.js} +40 -8
- package/dist/src/model-gateway/circuit-breaker.d.ts +21 -0
- package/dist/src/model-gateway/circuit-breaker.js +86 -0
- package/dist/src/model-gateway/health.d.ts +12 -0
- package/dist/src/model-gateway/health.js +80 -0
- package/dist/src/model-gateway/providers.d.ts +4 -0
- package/dist/src/model-gateway/providers.js +113 -0
- package/dist/src/model-gateway/quota.d.ts +4 -0
- package/dist/src/model-gateway/quota.js +107 -0
- package/dist/src/model-gateway/rate-limit.d.ts +12 -0
- package/dist/src/model-gateway/rate-limit.js +51 -0
- package/dist/src/model-gateway/retry.d.ts +14 -0
- package/dist/src/model-gateway/retry.js +48 -0
- package/dist/src/model-gateway/router.d.ts +4 -0
- package/dist/src/model-gateway/router.js +79 -0
- package/dist/src/model-gateway/routes.d.ts +2 -0
- package/dist/src/model-gateway/routes.js +172 -0
- package/dist/src/model-gateway/types.d.ts +47 -0
- package/dist/src/model-gateway/types.js +1 -0
- package/dist/tests/core/context-manager.test.d.ts +1 -0
- package/dist/tests/core/context-manager.test.js +35 -0
- package/dist/tests/core/router.test.d.ts +1 -0
- package/dist/tests/core/router.test.js +79 -0
- package/dist/tests/model-gateway/circuit-breaker.test.d.ts +1 -0
- package/dist/tests/model-gateway/circuit-breaker.test.js +84 -0
- package/dist/tests/model-gateway/providers.test.d.ts +1 -0
- package/dist/tests/model-gateway/providers.test.js +80 -0
- package/dist/tests/model-gateway/quota.test.d.ts +1 -0
- package/dist/tests/model-gateway/quota.test.js +60 -0
- package/dist/tests/model-gateway/rate-limit.test.d.ts +1 -0
- package/dist/tests/model-gateway/rate-limit.test.js +42 -0
- package/dist/tests/model-gateway/retry.test.d.ts +1 -0
- package/dist/tests/model-gateway/retry.test.js +47 -0
- package/dist/tests/model-gateway/router.test.d.ts +1 -0
- package/dist/tests/model-gateway/router.test.js +108 -0
- package/dist/tests/model-gateway/routes.test.d.ts +1 -0
- package/dist/tests/model-gateway/routes.test.js +83 -0
- package/docs/api.md +187 -460
- package/docs/architecture.md +138 -0
- package/docs/configuration.md +188 -0
- package/package.json +3 -1
- package/dist/cli.js +0 -246
- /package/dist/{adapters → src/adapters}/base.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/base.js +0 -0
- /package/dist/{adapters → src/adapters}/claude-code.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/claude-code.js +0 -0
- /package/dist/{adapters → src/adapters}/openclaw.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/openclaw.js +0 -0
- /package/dist/{adapters → src/adapters}/process.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/process.js +0 -0
- /package/dist/{cli.d.ts → src/cli.d.ts} +0 -0
- /package/dist/{core → src/core}/agent-registry.d.ts +0 -0
- /package/dist/{core → src/core}/agent-registry.js +0 -0
- /package/dist/{core → src/core}/config.d.ts +0 -0
- /package/dist/{core → src/core}/config.js +0 -0
- /package/dist/{core → src/core}/context-manager.d.ts +0 -0
- /package/dist/{core → src/core}/context-manager.js +0 -0
- /package/dist/{core → src/core}/event-bus.d.ts +0 -0
- /package/dist/{core → src/core}/event-bus.js +0 -0
- /package/dist/{core → src/core}/metrics.d.ts +0 -0
- /package/dist/{core → src/core}/metrics.js +0 -0
- /package/dist/{core → src/core}/router.d.ts +0 -0
- /package/dist/{core → src/core}/router.js +0 -0
- /package/dist/{core → src/core}/task-manager.d.ts +0 -0
- /package/dist/{core → src/core}/task-manager.js +0 -0
- /package/dist/{core → src/core}/vector-store.d.ts +0 -0
- /package/dist/{core → src/core}/vector-store.js +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{routes → src/routes}/api.d.ts +0 -0
- /package/dist/{routes → src/routes}/api.js +0 -0
- /package/dist/{routes → src/routes}/websocket.d.ts +0 -0
- /package/dist/{routes → src/routes}/websocket.js +0 -0
- /package/dist/{types → src/types}/index.d.ts +0 -0
- /package/dist/{types → src/types}/index.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,47 +1,66 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
5
|
+
## [1.2.0] — 2026-05-16
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
### Added
|
|
8
|
+
- **Tests**: 9 test files, 61 tests, 0 failures
|
|
9
|
+
- **CI/CD**: GitHub Actions (typecheck + test + build)
|
|
10
|
+
- **Circuit Breaker**: Three-state (CLOSED/OPEN/HALF_OPEN) with configurable thresholds
|
|
11
|
+
- **Retry Logic**: Exponential backoff with jitter, configurable status codes
|
|
12
|
+
- **Rate Limiting**: Token Bucket per-endpoint, per-IP
|
|
13
|
+
- **`connect` command**: Interactive tool detection and one-click AI tool configuration
|
|
14
|
+
- Auto-detects: Codex Desktop, Claude Code, Cursor, Shell env
|
|
15
|
+
- `connect list` — list detected tools
|
|
16
|
+
- `connect all` — batch configure with backup
|
|
17
|
+
- `connect` — interactive selection (no typing)
|
|
18
|
+
- `disconnect all` — restore from backup
|
|
19
|
+
- **Provider Health Check**: `GET /model-gateway/health/:provider` and `/health/all`
|
|
20
|
+
- **Quota Pre-warming**: Async background codexbar fetch at startup
|
|
21
|
+
- **Logger Unification**: Delegate to Pino when available, file persistence always
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- Router now skips circuits in OPEN state during fallback
|
|
25
|
+
- Providers wrapped with retry + circuit breaker recording
|
|
26
|
+
- Config extended with `defaults:` section (circuit_breaker, retry)
|
|
27
|
+
- Logger can accept Pino instance from Fastify
|
|
28
|
+
|
|
29
|
+
## [1.1.0] — 2026-05-16
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- **Model Gateway Layer**: Unified OpenAI-compatible endpoint with multi-provider routing
|
|
33
|
+
- `/v1/chat/completions` — standard chat completions proxy
|
|
34
|
+
- `/v1/responses` — Codex Desktop Responses API adapter
|
|
35
|
+
- `/v1/models` — model listing
|
|
36
|
+
- **Quota-Aware Routing**: Integration with codexbar for real-time provider quota sensing
|
|
37
|
+
- Automatic fallback chain: DeepSeek → OpenRouter → Ollama
|
|
38
|
+
- Per-model routing rules
|
|
39
|
+
- 60-second quota cache with automatic refresh
|
|
40
|
+
- **CLI Rewrite**: Full command-line interface
|
|
41
|
+
- `start` — start the gateway server
|
|
42
|
+
- `setup` — interactive setup wizard
|
|
43
|
+
- `health` — health check
|
|
44
|
+
- `models` — list available models
|
|
45
|
+
- `quota` — show provider quota status
|
|
46
|
+
- `config show/path/edit` — config management
|
|
47
|
+
- `doctor` — system diagnostics
|
|
48
|
+
- `help [command]` — detailed help
|
|
49
|
+
- **New Providers**: DeepSeek, OpenAI, OpenRouter, Ollama
|
|
50
|
+
- **Structured Logging**: Leveled logging (debug/info/warn/error) with file persistence
|
|
51
|
+
- **Docker Support**: Multi-stage Dockerfile + docker-compose.yml
|
|
52
|
+
- **Documentation**: Architecture docs, API reference, configuration guide, CHANGELOG
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- Server startup banner redesigned with model gateway endpoints
|
|
56
|
+
- Config format extended with `models:` section
|
|
57
|
+
- CLI binary now supports subcommands
|
|
58
|
+
|
|
59
|
+
## [1.0.3] — 2026-05-14
|
|
9
60
|
|
|
10
61
|
### Added
|
|
11
|
-
- Initial release
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Shared space context management
|
|
17
|
-
- CLI tool with global installation support
|
|
18
|
-
- Configuration system with YAML support
|
|
19
|
-
- Event-driven architecture
|
|
20
|
-
- Metrics and logging system
|
|
21
|
-
- Vector database support (ChromaDB)
|
|
22
|
-
- Docker support
|
|
23
|
-
|
|
24
|
-
### Features
|
|
25
|
-
- Multi-agent coordination and collaboration
|
|
26
|
-
- Bidirectional agent dispatching
|
|
27
|
-
- File-level context sharing
|
|
28
|
-
- Custom agent adapter support
|
|
29
|
-
- Task lifecycle management
|
|
30
|
-
- Agent health monitoring
|
|
31
|
-
|
|
32
|
-
### Documentation
|
|
33
|
-
- API documentation
|
|
34
|
-
- README in English and Chinese
|
|
35
|
-
- Contributing guidelines
|
|
36
|
-
- Code of conduct
|
|
37
|
-
|
|
38
|
-
## [Unreleased]
|
|
39
|
-
|
|
40
|
-
### Planned
|
|
41
|
-
- WebSocket support for real-time communication
|
|
42
|
-
- More agent adapters
|
|
43
|
-
- Plugin system
|
|
44
|
-
- Authentication and authorization
|
|
45
|
-
- Rate limiting
|
|
46
|
-
- Advanced routing strategies
|
|
47
|
-
- Metrics dashboard
|
|
62
|
+
- Initial public release
|
|
63
|
+
- Agent orchestration: 25+ agent adapters
|
|
64
|
+
- Task management with REST API + WebSocket
|
|
65
|
+
- Context sharing with shared spaces
|
|
66
|
+
- YAML-based routing rules
|
package/README.zh-CN.md
CHANGED
|
@@ -1,243 +1,213 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Mesh Gateway
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<img src="https://img.shields.io/npm/v/@starlink-awaken/agentmesh" alt="npm version">
|
|
5
5
|
<img src="https://img.shields.io/npm/l/@starlink-awaken/agentmesh" alt="license">
|
|
6
6
|
<img src="https://img.shields.io/github/stars/starlink-awaken/agentmesh" alt="stars">
|
|
7
|
-
<img src="https://img.shields.io/github/forks/starlink-awaken/agentmesh" alt="forks">
|
|
8
7
|
</p>
|
|
9
8
|
|
|
10
|
-
>
|
|
9
|
+
> 统一 Agent 调度网关 + 多模型智能路由 — 构建本地 AI 基础设施的核心层
|
|
11
10
|
|
|
12
11
|
[English](./README.md) | [中文](./README.zh-CN.md)
|
|
13
12
|
|
|
14
13
|
## 概述
|
|
15
14
|
|
|
16
|
-
Agent Mesh
|
|
15
|
+
Agent Mesh Gateway 是一个轻量级的本地 AI 基础设施层,提供两大核心能力:
|
|
16
|
+
|
|
17
|
+
- **Agent 调度层** — 协调 25+ 种 AI Agent(Claude Code, Codex Desktop, Gemini CLI...),进行任务路由与协作
|
|
18
|
+
- **模型网关层** — 统一 OpenAI 兼容 API 端点,根据 codexbar 实时配额数据智能路由到最优 Provider
|
|
17
19
|
|
|
18
20
|
## 特性
|
|
19
21
|
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
22
|
+
- **多 Agent 支持** — 内置 25+ Agent 适配器
|
|
23
|
+
- **智能模型路由** — 根据配额自动选择 Provider(DeepSeek → OpenRouter → Ollama)
|
|
24
|
+
- **配额感知 Fallback** — 通过 codexbar 实时感知各平台配额,自动降级
|
|
25
|
+
- **Codex Desktop 适配** — 内置 Responses API → Chat Completions 转换
|
|
26
|
+
- **OpenAI 兼容 API** — 标准 `/v1/chat/completions` 和 `/v1/models` 端点
|
|
27
|
+
- **CLI 工具** — 完整的命令行管理接口
|
|
28
|
+
- **Docker 支持** — Dockerfile + docker-compose 一键部署
|
|
29
|
+
- **结构化日志** — 带级别的日志 + 文件持久化
|
|
28
30
|
|
|
29
31
|
## 快速开始
|
|
30
32
|
|
|
31
33
|
### 安装
|
|
32
34
|
|
|
33
|
-
```bash
|
|
34
|
-
# 使用 bun
|
|
35
|
-
bun add @starlink-awaken/agentmesh
|
|
36
|
-
|
|
37
|
-
# 或使用 npm
|
|
38
|
-
npm install @starlink-awaken/agentmesh
|
|
39
|
-
|
|
40
|
-
# 或使用 yarn
|
|
41
|
-
yarn add @starlink-awaken/agentmesh
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### CLI 全局安装
|
|
45
|
-
|
|
46
35
|
```bash
|
|
47
36
|
npm install -g @starlink-awaken/agentmesh
|
|
48
|
-
|
|
49
|
-
# 或者
|
|
37
|
+
# 或
|
|
50
38
|
bun install -g @starlink-awaken/agentmesh
|
|
51
39
|
```
|
|
52
40
|
|
|
53
|
-
###
|
|
41
|
+
### 初始化
|
|
54
42
|
|
|
55
43
|
```bash
|
|
56
|
-
#
|
|
57
|
-
|
|
44
|
+
agentmesh setup # 交互式配置 API Key
|
|
45
|
+
agentmesh start # 启动网关
|
|
46
|
+
agentmesh doctor # 检查系统状态
|
|
47
|
+
```
|
|
58
48
|
|
|
59
|
-
|
|
60
|
-
agent-gateway start
|
|
49
|
+
### 从源码运行
|
|
61
50
|
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
```bash
|
|
52
|
+
git clone https://github.com/starlink-awaken/agentmesh.git
|
|
53
|
+
cd agentmesh
|
|
54
|
+
cp .env.example .env # 编辑填入 API Key
|
|
55
|
+
./start.sh # 一键启动
|
|
64
56
|
```
|
|
65
57
|
|
|
66
|
-
###
|
|
58
|
+
### Docker
|
|
67
59
|
|
|
68
60
|
```bash
|
|
69
|
-
#
|
|
70
|
-
docker build -t agentmesh .
|
|
71
|
-
|
|
72
|
-
# 运行容器
|
|
73
|
-
docker run -p 3000:3000 agentmesh
|
|
61
|
+
docker compose up -d # 启动网关 + ChromaDB
|
|
74
62
|
```
|
|
75
63
|
|
|
76
64
|
## 使用方法
|
|
77
65
|
|
|
78
|
-
### CLI
|
|
66
|
+
### CLI
|
|
79
67
|
|
|
80
68
|
```bash
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
#
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
#
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
agent-gateway space create-space
|
|
92
|
-
|
|
93
|
-
# 列出所有任务
|
|
94
|
-
agent-gateway tasks
|
|
95
|
-
|
|
96
|
-
# 检查 Gateway 状态
|
|
97
|
-
agent-gateway health
|
|
69
|
+
agentmesh start # 启动服务
|
|
70
|
+
agentmesh connect # 交互式接入 AI 工具 (自动嗅探)
|
|
71
|
+
agentmesh connect list # 检测已安装工具
|
|
72
|
+
agentmesh disconnect all # 恢复工具配置
|
|
73
|
+
agentmesh health # 健康检查
|
|
74
|
+
agentmesh models # 列出可用模型
|
|
75
|
+
agentmesh quota # 配额状态
|
|
76
|
+
agentmesh config show # 查看配置
|
|
77
|
+
agentmesh doctor # 系统诊断
|
|
78
|
+
agentmesh help # 帮助
|
|
98
79
|
```
|
|
99
80
|
|
|
100
|
-
###
|
|
81
|
+
### API
|
|
101
82
|
|
|
102
83
|
```bash
|
|
103
84
|
# 健康检查
|
|
104
|
-
curl http://
|
|
85
|
+
curl http://127.0.0.1:3000/health
|
|
105
86
|
|
|
106
|
-
#
|
|
107
|
-
curl
|
|
108
|
-
|
|
109
|
-
|
|
87
|
+
# 模型列表
|
|
88
|
+
curl http://127.0.0.1:3000/v1/models
|
|
89
|
+
|
|
90
|
+
# 配额信息
|
|
91
|
+
curl http://127.0.0.1:3000/model-gateway/quota
|
|
110
92
|
|
|
111
|
-
#
|
|
112
|
-
curl http://
|
|
93
|
+
# Chat Completions
|
|
94
|
+
curl -X POST http://127.0.0.1:3000/v1/chat/completions \
|
|
95
|
+
-H "Content-Type: application/json" \
|
|
96
|
+
-d '{
|
|
97
|
+
"model": "deepseek-chat",
|
|
98
|
+
"messages": [{"role": "user", "content": "Hello!"}]
|
|
99
|
+
}'
|
|
113
100
|
|
|
114
|
-
#
|
|
115
|
-
curl -X POST http://
|
|
101
|
+
# Codex Desktop Responses API
|
|
102
|
+
curl -X POST http://127.0.0.1:3000/v1/responses \
|
|
116
103
|
-H "Content-Type: application/json" \
|
|
117
|
-
-d '{
|
|
104
|
+
-d '{
|
|
105
|
+
"model": "deepseek-v4-pro",
|
|
106
|
+
"input": [{"role": "user", "content": "Write a function"}]
|
|
107
|
+
}'
|
|
118
108
|
```
|
|
119
109
|
|
|
120
|
-
###
|
|
110
|
+
### 对接 AI 工具
|
|
121
111
|
|
|
122
|
-
|
|
123
|
-
|
|
112
|
+
**一键接入:**
|
|
113
|
+
```bash
|
|
114
|
+
agentmesh connect # 交互式选择工具
|
|
115
|
+
agentmesh connect all # 接入所有检测到的工具
|
|
116
|
+
agentmesh disconnect all # 恢复
|
|
117
|
+
```
|
|
124
118
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
119
|
+
**Codex Desktop** (`~/.codex/config.toml`):
|
|
120
|
+
```toml
|
|
121
|
+
model_provider = "agentmesh"
|
|
122
|
+
[model_providers.agentmesh]
|
|
123
|
+
name = "Agent Mesh"
|
|
124
|
+
base_url = "http://127.0.0.1:3000/v1"
|
|
125
|
+
wire_api = "responses"
|
|
126
|
+
```
|
|
131
127
|
|
|
132
|
-
|
|
128
|
+
**Claude Code / 其他工具:**
|
|
129
|
+
统一指向 `http://127.0.0.1:3000/v1`,使用 OpenAI 兼容 API。
|
|
133
130
|
|
|
134
|
-
|
|
135
|
-
const task = await gateway.submitTask({
|
|
136
|
-
payload: {
|
|
137
|
-
task: '帮我写一个排序算法'
|
|
138
|
-
}
|
|
139
|
-
});
|
|
131
|
+
## 架构
|
|
140
132
|
|
|
141
|
-
|
|
133
|
+
```
|
|
134
|
+
Codex Desktop Claude Code Gemini CLI Other Tools
|
|
135
|
+
│ │ │ │
|
|
136
|
+
└───────────────┼─────────────┼────────────┘
|
|
137
|
+
│ /v1/* │
|
|
138
|
+
▼ ▼
|
|
139
|
+
┌─────────────────────────┐
|
|
140
|
+
│ Agent Mesh Gateway │
|
|
141
|
+
│ │
|
|
142
|
+
│ ┌───────────────────┐ │
|
|
143
|
+
│ │ Model Router │ │ ← codexbar 配额感知
|
|
144
|
+
│ │ Provider Select │ │
|
|
145
|
+
│ └───────────────────┘ │
|
|
146
|
+
│ │
|
|
147
|
+
│ ┌───────────────────┐ │
|
|
148
|
+
│ │ Agent Router │ │ ← 任务关键词匹配
|
|
149
|
+
│ │ Task Dispatcher │ │
|
|
150
|
+
│ └───────────────────┘ │
|
|
151
|
+
└─────────┬───────────────┘
|
|
152
|
+
│
|
|
153
|
+
┌──────────────┼──────────────┐
|
|
154
|
+
▼ ▼ ▼
|
|
155
|
+
DeepSeek OpenRouter Ollama
|
|
142
156
|
```
|
|
143
157
|
|
|
144
158
|
## 配置
|
|
145
159
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
在 `config/gateway.yaml` 中配置任务路由规则:
|
|
149
|
-
|
|
150
|
-
```yaml
|
|
151
|
-
routing:
|
|
152
|
-
rules:
|
|
153
|
-
- name: code-review
|
|
154
|
-
keywords: [review, code review, pr review]
|
|
155
|
-
agent: claude-code
|
|
156
|
-
priority: 10
|
|
157
|
-
|
|
158
|
-
- name: browser-automation
|
|
159
|
-
keywords: [browser, scrape, click]
|
|
160
|
-
agent: openclaw
|
|
161
|
-
priority: 10
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Agent 配置
|
|
160
|
+
配置文件: `config/gateway.yaml`
|
|
165
161
|
|
|
166
162
|
```yaml
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
163
|
+
models:
|
|
164
|
+
providers:
|
|
165
|
+
deepseek:
|
|
166
|
+
base_url: https://api.deepseek.com/v1
|
|
167
|
+
api_key_env: DEEPSEEK_API_KEY
|
|
168
|
+
models: [deepseek-chat, deepseek-v4-pro]
|
|
169
|
+
# ... 更多 Provider
|
|
170
|
+
|
|
171
|
+
fallback_chain: [deepseek, openrouter, ollama]
|
|
172
|
+
|
|
173
|
+
model_routing:
|
|
174
|
+
"gpt-": [openai, deepseek]
|
|
175
|
+
"deepseek": [deepseek]
|
|
176
|
+
"claude": [openrouter]
|
|
179
177
|
```
|
|
180
178
|
|
|
181
|
-
## 支持的
|
|
179
|
+
## 支持的 Provider
|
|
182
180
|
|
|
183
|
-
|
|
|
184
|
-
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
-
| aider | Aider | Git 集成编辑、多文件修改 |
|
|
190
|
-
| ollama | Ollama | 本地 LLM、隐私优先 |
|
|
191
|
-
| perplexity | Perplexity | 研究助手、网络搜索 |
|
|
192
|
-
| grok | xAI Grok | 推理、代码生成 |
|
|
193
|
-
| ... | 更多 Agent | 见文档 |
|
|
181
|
+
| Provider | 类型 | 需要 |
|
|
182
|
+
|----------|------|------|
|
|
183
|
+
| DeepSeek | API Key | `DEEPSEEK_API_KEY` |
|
|
184
|
+
| OpenAI | API Key | `OPENAI_API_KEY` |
|
|
185
|
+
| OpenRouter | API Key | `OPENROUTER_API_KEY` |
|
|
186
|
+
| Ollama | 本地 | 安装 [Ollama](https://ollama.ai) |
|
|
194
187
|
|
|
195
|
-
##
|
|
188
|
+
## API 端点
|
|
196
189
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
│ │ Context Manager │ │
|
|
208
|
-
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
209
|
-
│ │ │ Memory │ │ Files │ │VectorDB │ │ │
|
|
210
|
-
│ │ │ Cache │ │ Persist │ │ Storage │ │ │
|
|
211
|
-
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
212
|
-
│ └──────────────────────┬──────────────────────────┘ │
|
|
213
|
-
└─────────────────────────┼──────────────────────────────────┘
|
|
214
|
-
│
|
|
215
|
-
┌─────────────────┼─────────────────┐
|
|
216
|
-
▼ ▼ ▼
|
|
217
|
-
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
218
|
-
│ Claude │ │ Open │ │ Other │
|
|
219
|
-
│ Code │◄────►│ Claw │◄────►│ Agents │
|
|
220
|
-
└─────────┘ └─────────┘ └─────────┘
|
|
221
|
-
```
|
|
190
|
+
| 端点 | 说明 |
|
|
191
|
+
|------|------|
|
|
192
|
+
| `GET /health` | 健康检查 |
|
|
193
|
+
| `GET /v1/models` | 模型列表 |
|
|
194
|
+
| `POST /v1/chat/completions` | Chat Completions |
|
|
195
|
+
| `POST /v1/responses` | Codex Desktop Responses |
|
|
196
|
+
| `GET /model-gateway/health` | 网关健康 + 配额 |
|
|
197
|
+
| `GET /model-gateway/quota` | 配额详情 |
|
|
198
|
+
| `GET /agents` | Agent 列表 |
|
|
199
|
+
| `POST /tasks` | 提交 Agent 任务 |
|
|
222
200
|
|
|
223
201
|
## 文档
|
|
224
202
|
|
|
203
|
+
- [架构设计](./docs/architecture.md)
|
|
225
204
|
- [API 文档](./docs/api.md)
|
|
226
|
-
- [配置参考](./
|
|
227
|
-
- [Agent 开发指南](./docs/agent-adapter.md)
|
|
205
|
+
- [配置参考](./docs/configuration.md)
|
|
228
206
|
|
|
229
207
|
## 贡献
|
|
230
208
|
|
|
231
|
-
|
|
209
|
+
欢迎贡献!详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
|
|
232
210
|
|
|
233
211
|
## 许可证
|
|
234
212
|
|
|
235
|
-
MIT
|
|
236
|
-
|
|
237
|
-
## 赞助
|
|
238
|
-
|
|
239
|
-
如果你喜欢这个项目,请考虑赞助我们。
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
Made with ❤️ by [Starlink Awaken](https://github.com/starlink-awaken)
|
|
213
|
+
MIT — [LICENSE](./LICENSE)
|
package/bin/agentmesh
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
2
|
-
import('../dist/cli.js');
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import('../dist/src/cli.js');
|
package/config/gateway.yaml
CHANGED
|
@@ -167,6 +167,84 @@ routing:
|
|
|
167
167
|
- openclaw
|
|
168
168
|
priority: 20
|
|
169
169
|
|
|
170
|
+
# =============================================================================
|
|
171
|
+
# 模型网关配置 — 多 Provider 路由 + 配额感知 Fallback
|
|
172
|
+
# =============================================================================
|
|
173
|
+
models:
|
|
174
|
+
default_model: deepseek-chat
|
|
175
|
+
|
|
176
|
+
# 默认配置(各 Provider 可覆盖)
|
|
177
|
+
defaults:
|
|
178
|
+
circuit_breaker:
|
|
179
|
+
failure_threshold: 3
|
|
180
|
+
reset_timeout_ms: 30000
|
|
181
|
+
half_open_max_requests: 1
|
|
182
|
+
retry:
|
|
183
|
+
max_retries: 3
|
|
184
|
+
base_delay_ms: 500
|
|
185
|
+
max_delay_ms: 10000
|
|
186
|
+
retryable_statuses: [429, 500, 502, 503, 504]
|
|
187
|
+
|
|
188
|
+
providers:
|
|
189
|
+
deepseek:
|
|
190
|
+
base_url: https://api.deepseek.com/v1
|
|
191
|
+
api_key_env: DEEPSEEK_API_KEY
|
|
192
|
+
models:
|
|
193
|
+
- deepseek-chat
|
|
194
|
+
- deepseek-reasoner
|
|
195
|
+
- deepseek-v4-pro
|
|
196
|
+
- deepseek-v4-flash
|
|
197
|
+
openai:
|
|
198
|
+
base_url: https://api.openai.com/v1
|
|
199
|
+
api_key_env: OPENAI_API_KEY
|
|
200
|
+
models:
|
|
201
|
+
- gpt-5.1
|
|
202
|
+
- gpt-5.1-codex
|
|
203
|
+
- o4-mini
|
|
204
|
+
openrouter:
|
|
205
|
+
base_url: https://openrouter.ai/api/v1
|
|
206
|
+
api_key_env: OPENROUTER_API_KEY
|
|
207
|
+
ollama:
|
|
208
|
+
base_url: http://127.0.0.1:11434/v1
|
|
209
|
+
api_key: ollama
|
|
210
|
+
models:
|
|
211
|
+
- qwen3:14b
|
|
212
|
+
- codestral:22b
|
|
213
|
+
- llama3.1:8b
|
|
214
|
+
|
|
215
|
+
# Fallback 链:主 Provider 不可用时依次尝试
|
|
216
|
+
fallback_chain:
|
|
217
|
+
- deepseek
|
|
218
|
+
- openrouter
|
|
219
|
+
- ollama
|
|
220
|
+
|
|
221
|
+
# 模型名 → 优先 Provider 列表
|
|
222
|
+
model_routing:
|
|
223
|
+
"deepseek":
|
|
224
|
+
- deepseek
|
|
225
|
+
"gpt-":
|
|
226
|
+
- openai
|
|
227
|
+
- deepseek
|
|
228
|
+
"o1":
|
|
229
|
+
- openai
|
|
230
|
+
- deepseek
|
|
231
|
+
"o4":
|
|
232
|
+
- openai
|
|
233
|
+
- deepseek
|
|
234
|
+
"claude":
|
|
235
|
+
- openrouter
|
|
236
|
+
"gemini":
|
|
237
|
+
- openrouter
|
|
238
|
+
"qwen":
|
|
239
|
+
- ollama
|
|
240
|
+
"codestral":
|
|
241
|
+
- ollama
|
|
242
|
+
"llama":
|
|
243
|
+
- ollama
|
|
244
|
+
|
|
245
|
+
# =============================================================================
|
|
246
|
+
# Agent 配置
|
|
247
|
+
# =============================================================================
|
|
170
248
|
agents:
|
|
171
249
|
# 内置 Agent(在代码中注册)
|
|
172
250
|
- id: claude-code
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
interface ConnectResult {
|
|
3
|
+
tool: string;
|
|
4
|
+
status: 'ok' | 'skipped' | 'failed' | 'not_installed';
|
|
5
|
+
detail: string;
|
|
6
|
+
backupPath?: string;
|
|
7
|
+
}
|
|
8
|
+
interface DisconnectResult {
|
|
9
|
+
tool: string;
|
|
10
|
+
status: 'ok' | 'no_backup' | 'not_configured' | 'failed';
|
|
11
|
+
detail: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function connectTools(targetTools: string[], opts?: {
|
|
14
|
+
dryRun?: boolean;
|
|
15
|
+
port?: number;
|
|
16
|
+
host?: string;
|
|
17
|
+
}): Promise<ConnectResult[]>;
|
|
18
|
+
export declare function disconnectTools(targetTools: string[]): Promise<DisconnectResult[]>;
|
|
19
|
+
export declare function listDetectedTools(): Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
installed: boolean;
|
|
23
|
+
configPath?: string;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function interactiveConnect(): Promise<void>;
|
|
26
|
+
export {};
|