opc-agent 1.1.1 → 1.1.2
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 +51 -51
- package/CONTRIBUTING.md +75 -75
- package/README.md +222 -126
- package/README.zh-CN.md +129 -80
- package/dist/channels/web.js +256 -256
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -31
- package/dist/templates/code-reviewer.js +5 -5
- package/dist/templates/customer-service.js +2 -2
- package/dist/templates/data-analyst.js +5 -5
- package/dist/templates/knowledge-base.js +2 -2
- package/dist/templates/sales-assistant.js +4 -4
- package/dist/templates/teacher.js +6 -6
- package/docs/.vitepress/config.ts +103 -103
- package/docs/api/cli.md +48 -48
- package/docs/api/oad-schema.md +64 -64
- package/docs/api/sdk.md +80 -80
- package/docs/guide/concepts.md +51 -51
- package/docs/guide/configuration.md +79 -79
- package/docs/guide/deployment.md +42 -42
- package/docs/guide/getting-started.md +44 -44
- package/docs/guide/templates.md +28 -28
- package/docs/guide/testing.md +84 -84
- package/docs/index.md +27 -27
- package/docs/zh/api/cli.md +54 -54
- package/docs/zh/api/oad-schema.md +87 -87
- package/docs/zh/api/sdk.md +102 -102
- package/docs/zh/guide/concepts.md +104 -104
- package/docs/zh/guide/configuration.md +135 -135
- package/docs/zh/guide/deployment.md +81 -81
- package/docs/zh/guide/getting-started.md +82 -82
- package/docs/zh/guide/templates.md +84 -84
- package/docs/zh/guide/testing.md +88 -88
- package/docs/zh/index.md +27 -27
- package/examples/customer-service-demo/README.md +90 -90
- package/examples/customer-service-demo/oad.yaml +107 -107
- package/package.json +1 -1
- package/src/analytics/index.ts +66 -66
- package/src/channels/discord.ts +192 -192
- package/src/channels/email.ts +177 -177
- package/src/channels/feishu.ts +236 -236
- package/src/channels/index.ts +15 -15
- package/src/channels/slack.ts +160 -160
- package/src/channels/telegram.ts +90 -90
- package/src/channels/voice.ts +106 -106
- package/src/channels/web.ts +596 -596
- package/src/channels/webhook.ts +199 -199
- package/src/channels/websocket.ts +87 -87
- package/src/channels/wechat.ts +149 -149
- package/src/core/a2a.ts +143 -143
- package/src/core/agent.ts +152 -152
- package/src/core/analytics-engine.ts +186 -186
- package/src/core/auth.ts +57 -57
- package/src/core/cache.ts +141 -141
- package/src/core/compose.ts +77 -77
- package/src/core/config.ts +14 -14
- package/src/core/errors.ts +148 -148
- package/src/core/hitl.ts +138 -138
- package/src/core/knowledge.ts +210 -210
- package/src/core/logger.ts +57 -57
- package/src/core/orchestrator.ts +215 -215
- package/src/core/performance.ts +187 -187
- package/src/core/rate-limiter.ts +128 -128
- package/src/core/room.ts +109 -109
- package/src/core/runtime.ts +152 -152
- package/src/core/sandbox.ts +101 -101
- package/src/core/security.ts +171 -171
- package/src/core/types.ts +68 -68
- package/src/core/versioning.ts +106 -106
- package/src/core/watch.ts +178 -178
- package/src/core/workflow.ts +235 -235
- package/src/deploy/hermes.ts +156 -156
- package/src/deploy/openclaw.ts +200 -200
- package/src/dtv/data.ts +29 -29
- package/src/dtv/trust.ts +43 -43
- package/src/dtv/value.ts +47 -47
- package/src/i18n/index.ts +216 -216
- package/src/index.ts +110 -110
- package/src/marketplace/index.ts +223 -223
- package/src/memory/deepbrain.ts +108 -108
- package/src/memory/index.ts +34 -34
- package/src/plugins/index.ts +208 -208
- package/src/providers/index.ts +183 -183
- package/src/schema/oad.ts +155 -155
- package/src/skills/base.ts +16 -16
- package/src/skills/document.ts +100 -100
- package/src/skills/http.ts +35 -35
- package/src/skills/index.ts +27 -27
- package/src/skills/scheduler.ts +80 -80
- package/src/skills/webhook-trigger.ts +59 -59
- package/src/templates/code-reviewer.ts +34 -34
- package/src/templates/customer-service.ts +80 -80
- package/src/templates/data-analyst.ts +70 -70
- package/src/templates/executive-assistant.ts +71 -71
- package/src/templates/financial-advisor.ts +60 -60
- package/src/templates/knowledge-base.ts +31 -31
- package/src/templates/legal-assistant.ts +71 -71
- package/src/templates/sales-assistant.ts +79 -79
- package/src/templates/teacher.ts +79 -79
- package/src/testing/index.ts +181 -181
- package/src/tools/calculator.ts +73 -73
- package/src/tools/datetime.ts +149 -149
- package/src/tools/json-transform.ts +187 -187
- package/src/tools/mcp.ts +76 -76
- package/src/tools/text-analysis.ts +116 -116
- package/templates/Dockerfile +15 -15
- package/templates/code-reviewer/README.md +27 -27
- package/templates/code-reviewer/oad.yaml +41 -41
- package/templates/customer-service/README.md +22 -22
- package/templates/customer-service/oad.yaml +36 -36
- package/templates/docker-compose.yml +21 -21
- package/templates/knowledge-base/README.md +28 -28
- package/templates/knowledge-base/oad.yaml +38 -38
- package/templates/sales-assistant/README.md +26 -26
- package/templates/sales-assistant/oad.yaml +43 -43
- package/tests/a2a.test.ts +66 -66
- package/tests/agent.test.ts +72 -72
- package/tests/analytics.test.ts +50 -50
- package/tests/channel.test.ts +39 -39
- package/tests/e2e.test.ts +134 -134
- package/tests/errors.test.ts +83 -83
- package/tests/hitl.test.ts +71 -71
- package/tests/i18n.test.ts +41 -41
- package/tests/mcp.test.ts +54 -54
- package/tests/oad.test.ts +68 -68
- package/tests/performance.test.ts +115 -115
- package/tests/plugin.test.ts +74 -74
- package/tests/room.test.ts +106 -106
- package/tests/runtime.test.ts +42 -42
- package/tests/sandbox.test.ts +46 -46
- package/tests/security.test.ts +60 -60
- package/tests/templates.test.ts +77 -77
- package/tests/v070.test.ts +76 -76
- package/tests/versioning.test.ts +75 -75
- package/tests/voice.test.ts +61 -61
- package/tests/webhook.test.ts +29 -29
- package/tests/workflow.test.ts +143 -143
- package/tsconfig.json +19 -19
- package/vitest.config.ts +9 -9
package/README.md
CHANGED
|
@@ -1,46 +1,37 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<h1 align="center">🤖 OPC Agent</h1>
|
|
3
3
|
<p align="center"><strong>开放智能体框架 — 构建、测试、运行企业级 AI 智能体</strong></p>
|
|
4
|
-
<p align="center"><strong>Open Agent Framework — Build, test, and run AI Agents for business workstations</strong></p>
|
|
5
4
|
<p align="center">
|
|
6
5
|
<a href="https://www.npmjs.com/package/opc-agent"><img src="https://img.shields.io/npm/v/opc-agent?color=blue" alt="npm"></a>
|
|
7
6
|
<a href="https://github.com/Deepleaper/opc-agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green" alt="license"></a>
|
|
8
|
-
<
|
|
7
|
+
<img src="https://img.shields.io/badge/tests-146%20passed-brightgreen" alt="146 tests passing">
|
|
9
8
|
<a href="https://www.npmjs.com/package/opc-agent"><img src="https://img.shields.io/npm/dm/opc-agent?color=orange" alt="downloads"></a>
|
|
10
9
|
</p>
|
|
11
10
|
<p align="center">
|
|
12
|
-
<
|
|
11
|
+
<strong>🇨🇳 中文</strong> · <a href="#english">🇺🇸 English</a>
|
|
13
12
|
</p>
|
|
14
13
|
</p>
|
|
15
14
|
|
|
16
15
|
---
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
OPC Agent 是一个 **TypeScript 优先的开放智能体框架**,由[跃盟科技 (Deepleaper)](https://www.deepleaper.com) 开发。用一个 YAML 文件定义智能体,接入任意大语言模型,一键部署到多个渠道。开箱即用,生产可用。
|
|
17
|
+
OPC Agent 是一个 **TypeScript 优先的开放智能体框架**,由 [跃盟科技 (Deepleaper)](https://www.deepleaper.com) 开发。用一个 YAML 文件(OAD)定义智能体,接入任意大语言模型,一键部署到多个渠道。
|
|
21
18
|
|
|
22
19
|
## ⚡ 快速开始(30 秒)
|
|
23
20
|
|
|
24
21
|
```bash
|
|
25
|
-
# 安装
|
|
26
22
|
npm install -g opc-agent
|
|
27
|
-
|
|
28
|
-
# 创建你的第一个智能体
|
|
29
23
|
opc init my-agent
|
|
30
24
|
cd my-agent
|
|
31
|
-
|
|
32
|
-
# 启动
|
|
33
25
|
opc run
|
|
34
26
|
```
|
|
35
27
|
|
|
36
|
-
|
|
28
|
+
访问 `http://localhost:3000`,内置 Web 对话界面即刻可用。
|
|
37
29
|
|
|
38
30
|
## ✨ 功能特性
|
|
39
31
|
|
|
40
32
|
### 🔌 多模型供应商
|
|
41
33
|
|
|
42
34
|
```yaml
|
|
43
|
-
# oad.yaml — 智能体定义文件
|
|
44
35
|
spec:
|
|
45
36
|
provider:
|
|
46
37
|
default: deepseek
|
|
@@ -48,23 +39,24 @@ spec:
|
|
|
48
39
|
model: deepseek-chat
|
|
49
40
|
```
|
|
50
41
|
|
|
51
|
-
支持 **DeepSeek**、**通义千问 (Qwen)**、**OpenAI**、**Anthropic**、**Ollama
|
|
42
|
+
支持 **DeepSeek**、**通义千问 (Qwen)**、**OpenAI**、**Anthropic**、**Ollama**(本地),以及任何兼容 OpenAI 接口的服务。
|
|
52
43
|
|
|
53
|
-
### 📡
|
|
44
|
+
### 📡 11 个渠道,一套代码
|
|
54
45
|
|
|
55
46
|
```yaml
|
|
56
47
|
spec:
|
|
57
48
|
channels:
|
|
58
|
-
- type: web # Web
|
|
49
|
+
- type: web # Web 对话界面(内置 UI)
|
|
59
50
|
port: 3000
|
|
60
51
|
- type: telegram # Telegram 机器人
|
|
61
52
|
- type: websocket # 实时 WebSocket
|
|
62
|
-
- type: slack # Slack
|
|
63
|
-
- type: email #
|
|
53
|
+
- type: slack # Slack Bot(Socket Mode / Events API)
|
|
54
|
+
- type: email # IMAP 收信 + SMTP 回信
|
|
64
55
|
- type: wechat # 微信公众号
|
|
65
|
-
- type: feishu # 飞书
|
|
66
|
-
- type: voice # 语音(STT/TTS
|
|
67
|
-
- type: webhook # Webhook 回调
|
|
56
|
+
- type: feishu # 飞书 / Lark 消息卡片
|
|
57
|
+
- type: voice # 语音(STT/TTS,可配置供应商)
|
|
58
|
+
- type: webhook # Webhook 接收 + HTTP 回调
|
|
59
|
+
- type: discord # Discord Bot(斜杠命令 + 线程 + Embed)
|
|
68
60
|
```
|
|
69
61
|
|
|
70
62
|
### 🧠 知识库(RAG)
|
|
@@ -74,9 +66,11 @@ import { KnowledgeBase } from 'opc-agent';
|
|
|
74
66
|
|
|
75
67
|
const kb = new KnowledgeBase('./docs');
|
|
76
68
|
await kb.addFile('产品手册.pdf');
|
|
77
|
-
//
|
|
69
|
+
// 智能体自动检索知识库,无需额外配置
|
|
78
70
|
```
|
|
79
71
|
|
|
72
|
+
内置 TF-IDF 向量化 + 余弦相似度检索,数据持久化到 `.opc-knowledge.json`,无需外部向量数据库。
|
|
73
|
+
|
|
80
74
|
### 🎭 多智能体编排
|
|
81
75
|
|
|
82
76
|
```typescript
|
|
@@ -84,19 +78,15 @@ import { Orchestrator } from 'opc-agent';
|
|
|
84
78
|
|
|
85
79
|
const orchestrator = new Orchestrator({
|
|
86
80
|
agents: [分诊智能体, 销售智能体, 客服智能体],
|
|
87
|
-
strategy: 'route-by-intent',
|
|
81
|
+
strategy: 'route-by-intent',
|
|
88
82
|
});
|
|
89
83
|
```
|
|
90
84
|
|
|
91
|
-
|
|
85
|
+
支持顺序执行、并行执行、条件路由、智能体移交(handoff)。
|
|
92
86
|
|
|
93
|
-
|
|
94
|
-
opc test # 运行测试用例
|
|
95
|
-
opc test --watch # 监听模式
|
|
96
|
-
```
|
|
87
|
+
### 🧪 内置测试框架
|
|
97
88
|
|
|
98
89
|
```yaml
|
|
99
|
-
# 在 oad.yaml 中定义测试
|
|
100
90
|
spec:
|
|
101
91
|
testing:
|
|
102
92
|
cases:
|
|
@@ -107,53 +97,62 @@ spec:
|
|
|
107
97
|
maxLatencyMs: 5000
|
|
108
98
|
```
|
|
109
99
|
|
|
100
|
+
```bash
|
|
101
|
+
opc test # 运行测试用例
|
|
102
|
+
opc test --watch # 监听模式
|
|
103
|
+
opc test --json # JSON 格式输出
|
|
104
|
+
```
|
|
105
|
+
|
|
110
106
|
### 🔧 插件系统
|
|
111
107
|
|
|
112
108
|
```yaml
|
|
113
109
|
spec:
|
|
114
110
|
plugins:
|
|
115
|
-
- name: logging
|
|
116
|
-
- name: analytics
|
|
117
|
-
- name: rate-limit
|
|
111
|
+
- name: logging
|
|
112
|
+
- name: analytics
|
|
113
|
+
- name: rate-limit
|
|
118
114
|
config: { maxPerMinute: 60 }
|
|
119
115
|
```
|
|
120
116
|
|
|
117
|
+
完整生命周期钩子:`onInit`、`onMessage`、`onResponse`、`onError`、`onShutdown`。
|
|
118
|
+
|
|
121
119
|
### 🔒 安全特性
|
|
122
120
|
|
|
123
121
|
- 输入消毒(防 XSS、注入攻击)
|
|
124
122
|
- API Key 轮换管理
|
|
125
123
|
- CORS 配置
|
|
126
124
|
- 安全响应头
|
|
127
|
-
-
|
|
125
|
+
- 会话隔离认证中间件
|
|
128
126
|
|
|
129
127
|
### 📊 监控与分析
|
|
130
128
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
Web 渠道内置以下端点:
|
|
130
|
+
|
|
131
|
+
| 端点 | 说明 |
|
|
132
|
+
|------|------|
|
|
133
|
+
| `GET /api/health` | 健康检查 |
|
|
134
|
+
| `GET /api/metrics` | Prometheus 文本格式指标(uptime、请求数、错误数、LLM 延迟、Token 用量等) |
|
|
135
|
+
| `GET /api/dashboard` | 实时仪表盘 |
|
|
136
|
+
|
|
137
|
+
`opc analytics` 和 `opc stats` 命令可查看离线分析快照。
|
|
135
138
|
|
|
136
139
|
## 🏗️ 架构
|
|
137
140
|
|
|
138
141
|
```
|
|
139
142
|
┌─────────────────────────────────────────────────┐
|
|
140
|
-
│
|
|
141
|
-
│
|
|
143
|
+
│ OAD (YAML 定义文件) │
|
|
144
|
+
│ 智能体的一切配置都在这里 │
|
|
142
145
|
├─────────────────────────────────────────────────┤
|
|
143
|
-
│ │
|
|
144
146
|
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
145
147
|
│ │ 渠道层 │ │ 插件层 │ │ 安全层 │ │
|
|
146
|
-
│ │
|
|
147
|
-
│ │ WS,Slack │ │ 分析 │ │ CORS, 认证 │ │
|
|
148
|
+
│ │10 个渠道 │ │ 日志/分析│ │ 消毒/CORS/认证│ │
|
|
148
149
|
│ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
|
|
149
|
-
│ │ │ │ │
|
|
150
150
|
│ ┌────▼──────────────▼───────────────▼────────┐ │
|
|
151
|
-
│ │
|
|
151
|
+
│ │ 智能体运行时 (Agent Runtime) │ │
|
|
152
152
|
│ │ ┌─────────┐ ┌────────┐ ┌─────────────┐ │ │
|
|
153
153
|
│ │ │ 记忆 │ │ 技能 │ │ 知识库 │ │ │
|
|
154
154
|
│ │ └─────────┘ └────────┘ └─────────────┘ │ │
|
|
155
155
|
│ └────────────────────┬───────────────────────┘ │
|
|
156
|
-
│ │ │
|
|
157
156
|
│ ┌────────────────────▼───────────────────────┐ │
|
|
158
157
|
│ │ 大语言模型供应商 │ │
|
|
159
158
|
│ │ DeepSeek · 通义千问 · OpenAI · Ollama │ │
|
|
@@ -161,13 +160,17 @@ spec:
|
|
|
161
160
|
└─────────────────────────────────────────────────┘
|
|
162
161
|
```
|
|
163
162
|
|
|
164
|
-
## 📋
|
|
163
|
+
## 📋 12 个开箱即用模板
|
|
165
164
|
|
|
166
|
-
|
|
165
|
+
```bash
|
|
166
|
+
opc init my-agent --template <模板名>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
| 模板 | 说明 | 典型场景 |
|
|
167
170
|
|------|------|---------|
|
|
168
|
-
| `customer-service` | 客服智能体 | FAQ
|
|
171
|
+
| `customer-service` | 客服智能体 | FAQ 自动回答 + 转人工 |
|
|
169
172
|
| `sales-assistant` | 销售助手 | 产品问答 + 线索捕获 |
|
|
170
|
-
| `knowledge-base` | 知识库问答 | RAG 语义检索 |
|
|
173
|
+
| `knowledge-base` | 知识库问答 | 文档 RAG 语义检索 |
|
|
171
174
|
| `code-reviewer` | 代码审查 | Bug 检测 + 风格检查 |
|
|
172
175
|
| `hr-recruiter` | HR 招聘助手 | 简历筛选 + 面试安排 |
|
|
173
176
|
| `project-manager` | 项目管理 | 任务跟踪 + 会议纪要 |
|
|
@@ -178,12 +181,13 @@ spec:
|
|
|
178
181
|
| `data-analyst` | 数据分析师 | 数据查询 + 可视化 |
|
|
179
182
|
| `teacher` | 教学助手 | 课程设计 + 出题 |
|
|
180
183
|
|
|
181
|
-
## 🚀
|
|
184
|
+
## 🚀 部署
|
|
182
185
|
|
|
183
186
|
### Docker 部署
|
|
184
187
|
|
|
188
|
+
`opc init` 创建的每个项目都自带 `Dockerfile` 和 `docker-compose.yml`:
|
|
189
|
+
|
|
185
190
|
```bash
|
|
186
|
-
# 每个 opc init 项目自带 Dockerfile
|
|
187
191
|
docker compose up -d
|
|
188
192
|
```
|
|
189
193
|
|
|
@@ -191,30 +195,51 @@ docker compose up -d
|
|
|
191
195
|
|
|
192
196
|
```bash
|
|
193
197
|
opc deploy --target openclaw
|
|
198
|
+
opc deploy --target openclaw --install # 同时写入本地配置
|
|
194
199
|
```
|
|
195
200
|
|
|
196
|
-
|
|
201
|
+
生成 `IDENTITY.md`、`SOUL.md`、`AGENTS.md` 到 `~/.openclaw/agents/{id}/workspace/`。
|
|
202
|
+
|
|
203
|
+
### 部署到 Hermes
|
|
197
204
|
|
|
198
205
|
```bash
|
|
199
206
|
opc deploy --target hermes
|
|
200
207
|
```
|
|
201
208
|
|
|
209
|
+
将 OAD 转换为 Hermes Character 格式(包含 personality、bio、lore、message examples 等字段)。
|
|
210
|
+
|
|
202
211
|
## 📖 CLI 命令参考
|
|
203
212
|
|
|
204
213
|
| 命令 | 说明 |
|
|
205
214
|
|------|------|
|
|
206
|
-
| `opc init [name]` |
|
|
215
|
+
| `opc init [name]` | 创建新智能体项目(交互式,可选模板) |
|
|
216
|
+
| `opc create <name>` | 从模板快速创建 |
|
|
207
217
|
| `opc run` | 启动智能体 |
|
|
208
|
-
| `opc dev` |
|
|
209
|
-
| `opc
|
|
210
|
-
| `opc
|
|
211
|
-
| `opc build` | 校验 OAD
|
|
212
|
-
| `opc
|
|
213
|
-
| `opc analytics` |
|
|
214
|
-
| `opc
|
|
218
|
+
| `opc dev` | 开发模式(文件监听热重载) |
|
|
219
|
+
| `opc chat` | 命令行交互对话(readline 界面) |
|
|
220
|
+
| `opc test` | 运行 OAD 中定义的测试用例 |
|
|
221
|
+
| `opc build` | 校验 OAD 配置合法性 |
|
|
222
|
+
| `opc info` | 查看智能体信息 |
|
|
223
|
+
| `opc analytics` | 查看使用分析 |
|
|
224
|
+
| `opc stats` | 查看运行时统计快照 |
|
|
225
|
+
| `opc deploy` | 部署智能体(--target openclaw\|hermes) |
|
|
226
|
+
| `opc kb add <file>` | 向知识库添加文件 |
|
|
215
227
|
| `opc kb search <query>` | 搜索知识库 |
|
|
216
|
-
|
|
217
|
-
|
|
228
|
+
| `opc kb stats` | 知识库统计 |
|
|
229
|
+
| `opc kb clear` | 清空知识库 |
|
|
230
|
+
| `opc search` | 搜索 OPC Registry |
|
|
231
|
+
| `opc tool` | MCP 工具管理 |
|
|
232
|
+
| `opc workflow run` | 运行工作流 |
|
|
233
|
+
| `opc workflow list` | 列出工作流 |
|
|
234
|
+
| `opc version-mgmt list` | 列出历史版本 |
|
|
235
|
+
| `opc version-mgmt rollback` | 回滚版本 |
|
|
236
|
+
| `opc publish` | 打包发布智能体 |
|
|
237
|
+
| `opc install <pkg>` | 安装智能体包 |
|
|
238
|
+
| `opc plugin list` | 列出已安装插件 |
|
|
239
|
+
| `opc plugin add <name>` | 添加插件 |
|
|
240
|
+
| `opc migrate` | OAD Schema 迁移 |
|
|
241
|
+
|
|
242
|
+
## 🔗 SDK 参考
|
|
218
243
|
|
|
219
244
|
```typescript
|
|
220
245
|
import { AgentRuntime, KnowledgeBase, Orchestrator } from 'opc-agent';
|
|
@@ -224,110 +249,181 @@ const runtime = new AgentRuntime();
|
|
|
224
249
|
await runtime.loadConfig('oad.yaml');
|
|
225
250
|
await runtime.initialize();
|
|
226
251
|
await runtime.start();
|
|
252
|
+
|
|
253
|
+
// 知识库
|
|
254
|
+
const kb = new KnowledgeBase('./docs');
|
|
255
|
+
await kb.addFile('handbook.pdf');
|
|
256
|
+
const results = await kb.search('退款政策');
|
|
257
|
+
|
|
258
|
+
// 多智能体编排
|
|
259
|
+
const orch = new Orchestrator({
|
|
260
|
+
agents: [agentA, agentB],
|
|
261
|
+
strategy: 'route-by-intent',
|
|
262
|
+
});
|
|
227
263
|
```
|
|
228
264
|
|
|
229
|
-
|
|
265
|
+
## 🔑 OAD 配置文件速览
|
|
230
266
|
|
|
231
|
-
|
|
267
|
+
```yaml
|
|
268
|
+
apiVersion: opc/v1
|
|
269
|
+
kind: Agent
|
|
270
|
+
|
|
271
|
+
metadata:
|
|
272
|
+
name: my-agent
|
|
273
|
+
version: 1.0.0
|
|
274
|
+
|
|
275
|
+
spec:
|
|
276
|
+
provider:
|
|
277
|
+
default: deepseek
|
|
278
|
+
allowed: [deepseek, openai, qwen, anthropic, ollama]
|
|
279
|
+
model: deepseek-chat
|
|
280
|
+
systemPrompt: |
|
|
281
|
+
你是一个专业的客服助手...
|
|
282
|
+
|
|
283
|
+
channels:
|
|
284
|
+
- type: web
|
|
285
|
+
port: 3000
|
|
232
286
|
|
|
233
|
-
|
|
287
|
+
memory:
|
|
288
|
+
shortTerm: true
|
|
289
|
+
longTerm: false
|
|
234
290
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
5. 提交 Pull Request
|
|
291
|
+
rateLimits:
|
|
292
|
+
perUser:
|
|
293
|
+
maxRequests: 60
|
|
294
|
+
windowMs: 60000
|
|
240
295
|
|
|
241
|
-
|
|
296
|
+
plugins:
|
|
297
|
+
- name: logging
|
|
298
|
+
- name: analytics
|
|
299
|
+
|
|
300
|
+
testing:
|
|
301
|
+
cases:
|
|
302
|
+
- name: 基本问候
|
|
303
|
+
input: "你好"
|
|
304
|
+
expect:
|
|
305
|
+
contains: ["你好"]
|
|
306
|
+
maxLatencyMs: 5000
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## 🤝 贡献指南
|
|
242
310
|
|
|
243
311
|
```bash
|
|
244
312
|
git clone https://github.com/Deepleaper/opc-agent.git
|
|
245
313
|
cd opc-agent
|
|
246
314
|
npm install
|
|
247
|
-
npm run build
|
|
248
|
-
npm test
|
|
315
|
+
npm run build # TypeScript 编译
|
|
316
|
+
npm test # 运行 146 个测试
|
|
249
317
|
```
|
|
250
318
|
|
|
319
|
+
欢迎提交 Issue 和 Pull Request。
|
|
320
|
+
|
|
321
|
+
## 📄 开源协议
|
|
322
|
+
|
|
323
|
+
[Apache License 2.0](LICENSE) — 商用和开源项目均可自由使用。
|
|
324
|
+
|
|
251
325
|
---
|
|
252
326
|
|
|
253
|
-
|
|
327
|
+
<details>
|
|
328
|
+
<summary id="english">🇺🇸 English</summary>
|
|
254
329
|
|
|
255
|
-
OPC Agent
|
|
330
|
+
## OPC Agent
|
|
256
331
|
|
|
257
|
-
|
|
332
|
+
A **TypeScript-first open agent framework** by [Deepleaper](https://www.deepleaper.com). Define your agent in a single YAML file (OAD — Open Agent Definition), connect any LLM provider, deploy to any channel.
|
|
333
|
+
|
|
334
|
+
## Quick Start
|
|
258
335
|
|
|
259
336
|
```bash
|
|
260
|
-
# Install
|
|
261
337
|
npm install -g opc-agent
|
|
262
|
-
|
|
263
|
-
# Create your first agent
|
|
264
338
|
opc init my-agent
|
|
265
339
|
cd my-agent
|
|
266
|
-
|
|
267
|
-
# Run it
|
|
268
340
|
opc run
|
|
269
341
|
```
|
|
270
342
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
## ✨ Features
|
|
274
|
-
|
|
275
|
-
- 🔌 **Multi-Provider LLM** — DeepSeek, Qwen, OpenAI, Anthropic, Ollama, any OpenAI-compatible API
|
|
276
|
-
- 📡 **Multi-Channel** — Web, Telegram, Slack, WebSocket, Email, WeChat, Feishu, Voice, Webhook
|
|
277
|
-
- 🧠 **Knowledge Base (RAG)** — Add files, auto-retrieve for context
|
|
278
|
-
- 🎭 **Multi-Agent Orchestration** — Route by intent, compose agent teams
|
|
279
|
-
- 🧪 **Built-in Testing** — YAML-defined test cases, latency assertions
|
|
280
|
-
- 🔧 **Plugin System** — Logging, analytics, rate limiting, custom hooks
|
|
281
|
-
- 🔒 **Security** — Input sanitization, CORS, auth, session isolation
|
|
282
|
-
- 📊 **Analytics & Monitoring** — Health checks, Prometheus metrics, real-time dashboard
|
|
283
|
-
- 📋 **12 Templates** — Customer service, sales, knowledge base, code review, and more
|
|
343
|
+
Agent is live at `http://localhost:3000` with a built-in web chat UI.
|
|
284
344
|
|
|
285
|
-
##
|
|
345
|
+
## Features
|
|
286
346
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
│ │ ┌─────────┐ ┌────────┐ ┌─────────────┐ │ │
|
|
298
|
-
│ │ │ Memory │ │ Skills │ │ Knowledge │ │ │
|
|
299
|
-
│ │ └─────────┘ └────────┘ └─────────────┘ │ │
|
|
300
|
-
│ └────────────────────┬───────────────────────┘ │
|
|
301
|
-
│ ┌────────────────────▼───────────────────────┐ │
|
|
302
|
-
│ │ LLM Providers │ │
|
|
303
|
-
│ │ DeepSeek · Qwen · OpenAI · Anthropic │ │
|
|
304
|
-
│ └─────────────────────────────────────────────┘│
|
|
305
|
-
└─────────────────────────────────────────────────┘
|
|
306
|
-
```
|
|
347
|
+
- **Multi-Provider LLM** — DeepSeek, Qwen, OpenAI, Anthropic, Ollama, any OpenAI-compatible API
|
|
348
|
+
- **10 Channels** — Web, Telegram, Slack, WebSocket, Email, WeChat, Feishu, Voice (STT/TTS), Webhook, Discord
|
|
349
|
+
- **Knowledge Base (RAG)** — TF-IDF + cosine similarity, no external vector DB required
|
|
350
|
+
- **Multi-Agent Orchestration** — Intent routing, sequential/parallel execution, agent handoff
|
|
351
|
+
- **Built-in Testing** — YAML-defined test cases with content and latency assertions
|
|
352
|
+
- **Plugin System** — Logging, analytics, rate limiting; full lifecycle hooks
|
|
353
|
+
- **Security** — Input sanitization, CORS, auth middleware, session isolation
|
|
354
|
+
- **Monitoring** — `/api/health`, `/api/metrics` (Prometheus format), `/api/dashboard`
|
|
355
|
+
- **12 Templates** — Customer service, sales, knowledge base, code review, HR, and more
|
|
356
|
+
- **146 Tests** — 22 test files covering all major features
|
|
307
357
|
|
|
308
|
-
##
|
|
358
|
+
## CLI Reference
|
|
309
359
|
|
|
310
360
|
| Command | Description |
|
|
311
361
|
|---------|-------------|
|
|
312
|
-
| `opc init [name]` | Create
|
|
313
|
-
| `opc run` | Start
|
|
362
|
+
| `opc init [name]` | Create new agent project (interactive, template selection) |
|
|
363
|
+
| `opc run` | Start agent |
|
|
314
364
|
| `opc dev` | Development mode (hot-reload) |
|
|
315
|
-
| `opc test` | Run
|
|
365
|
+
| `opc test` | Run OAD test cases |
|
|
316
366
|
| `opc chat` | Interactive CLI chat |
|
|
317
367
|
| `opc build` | Validate OAD configuration |
|
|
318
|
-
| `opc deploy` | Deploy
|
|
368
|
+
| `opc deploy` | Deploy (`--target openclaw\|hermes`) |
|
|
319
369
|
| `opc analytics` | View analytics |
|
|
320
|
-
| `opc
|
|
370
|
+
| `opc stats` | Runtime statistics snapshot |
|
|
371
|
+
| `opc kb add <file>` | Add file to knowledge base |
|
|
321
372
|
| `opc kb search <query>` | Search knowledge base |
|
|
373
|
+
| `opc workflow run` | Run a workflow |
|
|
374
|
+
| `opc version-mgmt rollback` | Rollback to a previous version |
|
|
375
|
+
| `opc publish` | Package agent for distribution |
|
|
376
|
+
| `opc install <pkg>` | Install agent package |
|
|
377
|
+
| `opc plugin add <name>` | Add plugin |
|
|
378
|
+
| `opc migrate` | Migrate OAD schema |
|
|
322
379
|
|
|
323
|
-
##
|
|
380
|
+
## Deploy
|
|
381
|
+
|
|
382
|
+
### Docker
|
|
383
|
+
|
|
384
|
+
Every project created with `opc init` includes a `Dockerfile` and `docker-compose.yml`:
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
docker compose up -d
|
|
388
|
+
```
|
|
324
389
|
|
|
325
|
-
|
|
390
|
+
### OpenClaw
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
opc deploy --target openclaw
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
Generates `IDENTITY.md`, `SOUL.md`, `AGENTS.md` into `~/.openclaw/agents/{id}/workspace/`.
|
|
397
|
+
|
|
398
|
+
### Hermes
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
opc deploy --target hermes
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
Converts OAD to Hermes Character format (personality, bio, lore, message examples, style guides).
|
|
405
|
+
|
|
406
|
+
## SDK
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
import { AgentRuntime, KnowledgeBase, Orchestrator } from 'opc-agent';
|
|
410
|
+
|
|
411
|
+
const runtime = new AgentRuntime();
|
|
412
|
+
await runtime.loadConfig('oad.yaml');
|
|
413
|
+
await runtime.initialize();
|
|
414
|
+
await runtime.start();
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## License
|
|
418
|
+
|
|
419
|
+
[Apache License 2.0](LICENSE)
|
|
420
|
+
|
|
421
|
+
---
|
|
326
422
|
|
|
327
|
-
|
|
423
|
+
Built with ❤️ by [Deepleaper](https://www.deepleaper.com)
|
|
328
424
|
|
|
329
|
-
|
|
425
|
+
</details>
|
|
330
426
|
|
|
331
427
|
---
|
|
332
428
|
|
|
333
|
-
<p align="center"
|
|
429
|
+
<p align="center">由 <a href="https://www.deepleaper.com">跃盟科技 (Deepleaper)</a> 用 ❤️ 打造</p>
|