@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.
Files changed (85) hide show
  1. package/CHANGELOG.md +60 -41
  2. package/README.zh-CN.md +137 -167
  3. package/bin/agentmesh +2 -2
  4. package/config/gateway.yaml +78 -0
  5. package/dist/src/cli/connect.d.ts +26 -0
  6. package/dist/src/cli/connect.js +544 -0
  7. package/dist/src/cli/setup.d.ts +2 -0
  8. package/dist/src/cli/setup.js +98 -0
  9. package/dist/src/cli.js +410 -0
  10. package/dist/src/core/logger.d.ts +14 -0
  11. package/dist/src/core/logger.js +57 -0
  12. package/dist/{index.js → src/index.js} +40 -8
  13. package/dist/src/model-gateway/circuit-breaker.d.ts +21 -0
  14. package/dist/src/model-gateway/circuit-breaker.js +86 -0
  15. package/dist/src/model-gateway/health.d.ts +12 -0
  16. package/dist/src/model-gateway/health.js +80 -0
  17. package/dist/src/model-gateway/providers.d.ts +4 -0
  18. package/dist/src/model-gateway/providers.js +113 -0
  19. package/dist/src/model-gateway/quota.d.ts +4 -0
  20. package/dist/src/model-gateway/quota.js +107 -0
  21. package/dist/src/model-gateway/rate-limit.d.ts +12 -0
  22. package/dist/src/model-gateway/rate-limit.js +51 -0
  23. package/dist/src/model-gateway/retry.d.ts +14 -0
  24. package/dist/src/model-gateway/retry.js +48 -0
  25. package/dist/src/model-gateway/router.d.ts +4 -0
  26. package/dist/src/model-gateway/router.js +79 -0
  27. package/dist/src/model-gateway/routes.d.ts +2 -0
  28. package/dist/src/model-gateway/routes.js +172 -0
  29. package/dist/src/model-gateway/types.d.ts +47 -0
  30. package/dist/src/model-gateway/types.js +1 -0
  31. package/dist/tests/core/context-manager.test.d.ts +1 -0
  32. package/dist/tests/core/context-manager.test.js +35 -0
  33. package/dist/tests/core/router.test.d.ts +1 -0
  34. package/dist/tests/core/router.test.js +79 -0
  35. package/dist/tests/model-gateway/circuit-breaker.test.d.ts +1 -0
  36. package/dist/tests/model-gateway/circuit-breaker.test.js +84 -0
  37. package/dist/tests/model-gateway/providers.test.d.ts +1 -0
  38. package/dist/tests/model-gateway/providers.test.js +80 -0
  39. package/dist/tests/model-gateway/quota.test.d.ts +1 -0
  40. package/dist/tests/model-gateway/quota.test.js +60 -0
  41. package/dist/tests/model-gateway/rate-limit.test.d.ts +1 -0
  42. package/dist/tests/model-gateway/rate-limit.test.js +42 -0
  43. package/dist/tests/model-gateway/retry.test.d.ts +1 -0
  44. package/dist/tests/model-gateway/retry.test.js +47 -0
  45. package/dist/tests/model-gateway/router.test.d.ts +1 -0
  46. package/dist/tests/model-gateway/router.test.js +108 -0
  47. package/dist/tests/model-gateway/routes.test.d.ts +1 -0
  48. package/dist/tests/model-gateway/routes.test.js +83 -0
  49. package/docs/api.md +187 -460
  50. package/docs/architecture.md +138 -0
  51. package/docs/configuration.md +188 -0
  52. package/package.json +3 -1
  53. package/dist/cli.js +0 -246
  54. /package/dist/{adapters → src/adapters}/base.d.ts +0 -0
  55. /package/dist/{adapters → src/adapters}/base.js +0 -0
  56. /package/dist/{adapters → src/adapters}/claude-code.d.ts +0 -0
  57. /package/dist/{adapters → src/adapters}/claude-code.js +0 -0
  58. /package/dist/{adapters → src/adapters}/openclaw.d.ts +0 -0
  59. /package/dist/{adapters → src/adapters}/openclaw.js +0 -0
  60. /package/dist/{adapters → src/adapters}/process.d.ts +0 -0
  61. /package/dist/{adapters → src/adapters}/process.js +0 -0
  62. /package/dist/{cli.d.ts → src/cli.d.ts} +0 -0
  63. /package/dist/{core → src/core}/agent-registry.d.ts +0 -0
  64. /package/dist/{core → src/core}/agent-registry.js +0 -0
  65. /package/dist/{core → src/core}/config.d.ts +0 -0
  66. /package/dist/{core → src/core}/config.js +0 -0
  67. /package/dist/{core → src/core}/context-manager.d.ts +0 -0
  68. /package/dist/{core → src/core}/context-manager.js +0 -0
  69. /package/dist/{core → src/core}/event-bus.d.ts +0 -0
  70. /package/dist/{core → src/core}/event-bus.js +0 -0
  71. /package/dist/{core → src/core}/metrics.d.ts +0 -0
  72. /package/dist/{core → src/core}/metrics.js +0 -0
  73. /package/dist/{core → src/core}/router.d.ts +0 -0
  74. /package/dist/{core → src/core}/router.js +0 -0
  75. /package/dist/{core → src/core}/task-manager.d.ts +0 -0
  76. /package/dist/{core → src/core}/task-manager.js +0 -0
  77. /package/dist/{core → src/core}/vector-store.d.ts +0 -0
  78. /package/dist/{core → src/core}/vector-store.js +0 -0
  79. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  80. /package/dist/{routes → src/routes}/api.d.ts +0 -0
  81. /package/dist/{routes → src/routes}/api.js +0 -0
  82. /package/dist/{routes → src/routes}/websocket.d.ts +0 -0
  83. /package/dist/{routes → src/routes}/websocket.js +0 -0
  84. /package/dist/{types → src/types}/index.d.ts +0 -0
  85. /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
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
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
- ## [1.0.0] - 2024-02-21
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 of @starlink-awaken/agentmesh
12
- - 24 built-in AI Agent adapters (Claude Code, OpenClaw, Cursor, Windsurf, Aider, Ollama, etc.)
13
- - REST API with task submission and management
14
- - Server-Sent Events (SSE) for real-time updates
15
- - Smart routing based on task keywords
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
- # @starlink-awaken/agentmesh
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
- > 统一的 Agent 调度网关 - 多智能体调度与路由
9
+ > 统一 Agent 调度网关 + 多模型智能路由 — 构建本地 AI 基础设施的核心层
11
10
 
12
11
  [English](./README.md) | [中文](./README.zh-CN.md)
13
12
 
14
13
  ## 概述
15
14
 
16
- Agent Mesh 是一个强大的多智能体调度网关,能够协调和调度多种 AI Agent(包括 Claude Code、OpenClaw 以及其他本地安装的 Agent CLI 工具)。
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
- - 🤖 **多 Agent 支持** - 内置支持 24+ AI Agent
21
- - 🎯 **智能路由** - 根据任务类型自动选择合适的 Agent
22
- - 🔄 **双向调度** - 支持 Agent 之间的相互调用
23
- - 👥 **多 Agent 协作** - 同一任务可调度多个 Agent
24
- - 📁 **上下文共享** - 文件级共享空间,支持上下文持久化
25
- - 🌐 **REST API** - 完整的 HTTP API 支持
26
- - 📡 **实时事件** - SSE/WebSocket 实时任务更新
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
- # 使用 bun
57
- bun run src/index.ts
44
+ agentmesh setup # 交互式配置 API Key
45
+ agentmesh start # 启动网关
46
+ agentmesh doctor # 检查系统状态
47
+ ```
58
48
 
59
- # 或使用 CLI
60
- agent-gateway start
49
+ ### 从源码运行
61
50
 
62
- # 或指定端口
63
- agent-gateway start --port 8080
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
- ### 使用 Docker
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
- # 列出所有可用 Agent
82
- agent-gateway agents
83
-
84
- # 提交通用任务(自动路由)
85
- agent-gateway task "帮我写一个排序算法"
86
-
87
- # 提交任务到指定 Agent
88
- agent-gateway to claude-code "帮我 review 这段代码"
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
- ### REST API
81
+ ### API
101
82
 
102
83
  ```bash
103
84
  # 健康检查
104
- curl http://localhost:3000/health
85
+ curl http://127.0.0.1:3000/health
105
86
 
106
- # 提交任务
107
- curl -X POST http://localhost:3000/tasks \
108
- -H "Content-Type: application/json" \
109
- -d '{"payload": {"task": "帮我写一个排序算法"}}'
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
- # 获取 Agent 列表
112
- curl http://localhost:3000/agents
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://localhost:3000/spaces \
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 '{"metadata": {"name": "项目A"}}'
104
+ -d '{
105
+ "model": "deepseek-v4-pro",
106
+ "input": [{"role": "user", "content": "Write a function"}]
107
+ }'
118
108
  ```
119
109
 
120
- ### JavaScript/TypeScript
110
+ ### 对接 AI 工具
121
111
 
122
- ```typescript
123
- import { AgentGateway } from '@starlink-awaken/agentmesh';
112
+ **一键接入:**
113
+ ```bash
114
+ agentmesh connect # 交互式选择工具
115
+ agentmesh connect all # 接入所有检测到的工具
116
+ agentmesh disconnect all # 恢复
117
+ ```
124
118
 
125
- const gateway = new AgentGateway({
126
- port: 3000,
127
- agents: [
128
- { id: 'claude-code', command: 'claude', args: ['-p'] }
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
- await gateway.start();
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
- console.log('Task ID:', task.id);
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
- agents:
168
- - id: claude-code
169
- name: Claude Code
170
- type: claude-code
171
- capabilities:
172
- - code-generation
173
- - code-review
174
-
175
- - id: my-agent
176
- name: My Custom Agent
177
- type: http
178
- endpoint: http://localhost:8080
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
- ## 支持的 Agent
179
+ ## 支持的 Provider
182
180
 
183
- | Agent | 描述 | 能力 |
184
- |-------|------|------|
185
- | claude-code | Anthropic Claude Code | 代码生成、审查、重构 |
186
- | openclaw | OpenClaw | 浏览器自动化、网页抓取 |
187
- | cursor | Cursor | 代码补全、聊天 |
188
- | windsurf | Windsurf | Agent 编码、Flow 状态 |
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
- │ Agent Mesh Gateway │
200
- ├─────────────────────────────────────────────────────────────┤
201
- │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
202
- │ │ Task API │ │ Event Bus │ │ Discovery │ │
203
- │ │ (REST/WS) │ │ (Pub/Sub) │ │ Service │ │
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
- - [配置参考](./config/gateway.yaml)
227
- - [Agent 开发指南](./docs/agent-adapter.md)
205
+ - [配置参考](./docs/configuration.md)
228
206
 
229
207
  ## 贡献
230
208
 
231
- 欢迎贡献代码!请阅读 [贡献指南](./CONTRIBUTING.md) 了解如何参与项目开发。
209
+ 欢迎贡献!详见 [CONTRIBUTING.md](./CONTRIBUTING.md)
232
210
 
233
211
  ## 许可证
234
212
 
235
- MIT License - 请查看 [LICENSE](./LICENSE) 文件。
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 node
2
- import('../dist/cli.js');
1
+ #!/usr/bin/env bun
2
+ import('../dist/src/cli.js');
@@ -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 {};