opc-agent 1.1.0 → 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 +341 -101
- package/README.zh-CN.md +382 -55
- package/dist/channels/web.js +256 -256
- package/dist/cli.js +1 -32
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -31
- package/dist/i18n/index.js +60 -9
- 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 -92
- 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 -0
- package/docs/zh/api/oad-schema.md +87 -3
- package/docs/zh/api/sdk.md +102 -0
- package/docs/zh/guide/concepts.md +104 -28
- package/docs/zh/guide/configuration.md +135 -39
- package/docs/zh/guide/deployment.md +81 -3
- package/docs/zh/guide/getting-started.md +82 -58
- package/docs/zh/guide/templates.md +84 -22
- package/docs/zh/guide/testing.md +88 -18
- 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/cli.ts +1 -35
- 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 -165
- 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,39 +1,37 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<h1 align="center">🤖 OPC Agent</h1>
|
|
3
|
-
<p align="center"><strong
|
|
3
|
+
<p align="center"><strong>开放智能体框架 — 构建、测试、运行企业级 AI 智能体</strong></p>
|
|
4
4
|
<p align="center">
|
|
5
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>
|
|
6
|
-
<a href="https://github.com/
|
|
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>
|
|
7
|
+
<img src="https://img.shields.io/badge/tests-146%20passed-brightgreen" alt="146 tests passing">
|
|
8
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>
|
|
9
9
|
</p>
|
|
10
|
+
<p align="center">
|
|
11
|
+
<strong>🇨🇳 中文</strong> · <a href="#english">🇺🇸 English</a>
|
|
12
|
+
</p>
|
|
10
13
|
</p>
|
|
11
14
|
|
|
12
15
|
---
|
|
13
16
|
|
|
14
|
-
OPC Agent
|
|
17
|
+
OPC Agent 是一个 **TypeScript 优先的开放智能体框架**,由 [跃盟科技 (Deepleaper)](https://www.deepleaper.com) 开发。用一个 YAML 文件(OAD)定义智能体,接入任意大语言模型,一键部署到多个渠道。
|
|
15
18
|
|
|
16
|
-
## ⚡
|
|
19
|
+
## ⚡ 快速开始(30 秒)
|
|
17
20
|
|
|
18
21
|
```bash
|
|
19
|
-
# Install
|
|
20
22
|
npm install -g opc-agent
|
|
21
|
-
|
|
22
|
-
# Create your first agent
|
|
23
23
|
opc init my-agent
|
|
24
24
|
cd my-agent
|
|
25
|
-
|
|
26
|
-
# Run it
|
|
27
25
|
opc run
|
|
28
26
|
```
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
访问 `http://localhost:3000`,内置 Web 对话界面即刻可用。
|
|
29
|
+
|
|
30
|
+
## ✨ 功能特性
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
### 🔌 多模型供应商
|
|
33
33
|
|
|
34
|
-
### 🔌 Multi-Provider LLM Support
|
|
35
34
|
```yaml
|
|
36
|
-
# oad.yaml
|
|
37
35
|
spec:
|
|
38
36
|
provider:
|
|
39
37
|
default: deepseek
|
|
@@ -41,33 +39,72 @@ spec:
|
|
|
41
39
|
model: deepseek-chat
|
|
42
40
|
```
|
|
43
41
|
|
|
44
|
-
|
|
42
|
+
支持 **DeepSeek**、**通义千问 (Qwen)**、**OpenAI**、**Anthropic**、**Ollama**(本地),以及任何兼容 OpenAI 接口的服务。
|
|
43
|
+
|
|
44
|
+
### 📡 11 个渠道,一套代码
|
|
45
45
|
|
|
46
|
-
### 📡 Multi-Channel Deployment
|
|
47
46
|
```yaml
|
|
48
47
|
spec:
|
|
49
48
|
channels:
|
|
50
|
-
- type: web #
|
|
49
|
+
- type: web # Web 对话界面(内置 UI)
|
|
51
50
|
port: 3000
|
|
52
|
-
- type: telegram # Telegram
|
|
53
|
-
- type: websocket #
|
|
54
|
-
- type: slack
|
|
55
|
-
- type: email
|
|
56
|
-
- type: wechat
|
|
57
|
-
- type:
|
|
58
|
-
- type:
|
|
51
|
+
- type: telegram # Telegram 机器人
|
|
52
|
+
- type: websocket # 实时 WebSocket
|
|
53
|
+
- type: slack # Slack Bot(Socket Mode / Events API)
|
|
54
|
+
- type: email # IMAP 收信 + SMTP 回信
|
|
55
|
+
- type: wechat # 微信公众号
|
|
56
|
+
- type: feishu # 飞书 / Lark 消息卡片
|
|
57
|
+
- type: voice # 语音(STT/TTS,可配置供应商)
|
|
58
|
+
- type: webhook # Webhook 接收 + HTTP 回调
|
|
59
|
+
- type: discord # Discord Bot(斜杠命令 + 线程 + Embed)
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
### 🧠
|
|
62
|
+
### 🧠 知识库(RAG)
|
|
63
|
+
|
|
62
64
|
```typescript
|
|
63
65
|
import { KnowledgeBase } from 'opc-agent';
|
|
64
66
|
|
|
65
67
|
const kb = new KnowledgeBase('./docs');
|
|
66
|
-
await kb.addFile('
|
|
67
|
-
//
|
|
68
|
+
await kb.addFile('产品手册.pdf');
|
|
69
|
+
// 智能体自动检索知识库,无需额外配置
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
内置 TF-IDF 向量化 + 余弦相似度检索,数据持久化到 `.opc-knowledge.json`,无需外部向量数据库。
|
|
73
|
+
|
|
74
|
+
### 🎭 多智能体编排
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { Orchestrator } from 'opc-agent';
|
|
78
|
+
|
|
79
|
+
const orchestrator = new Orchestrator({
|
|
80
|
+
agents: [分诊智能体, 销售智能体, 客服智能体],
|
|
81
|
+
strategy: 'route-by-intent',
|
|
82
|
+
});
|
|
68
83
|
```
|
|
69
84
|
|
|
70
|
-
|
|
85
|
+
支持顺序执行、并行执行、条件路由、智能体移交(handoff)。
|
|
86
|
+
|
|
87
|
+
### 🧪 内置测试框架
|
|
88
|
+
|
|
89
|
+
```yaml
|
|
90
|
+
spec:
|
|
91
|
+
testing:
|
|
92
|
+
cases:
|
|
93
|
+
- name: 问候测试
|
|
94
|
+
input: "你好"
|
|
95
|
+
expect:
|
|
96
|
+
contains: ["你好", "帮"]
|
|
97
|
+
maxLatencyMs: 5000
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
opc test # 运行测试用例
|
|
102
|
+
opc test --watch # 监听模式
|
|
103
|
+
opc test --json # JSON 格式输出
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 🔧 插件系统
|
|
107
|
+
|
|
71
108
|
```yaml
|
|
72
109
|
spec:
|
|
73
110
|
plugins:
|
|
@@ -77,113 +114,316 @@ spec:
|
|
|
77
114
|
config: { maxPerMinute: 60 }
|
|
78
115
|
```
|
|
79
116
|
|
|
80
|
-
|
|
117
|
+
完整生命周期钩子:`onInit`、`onMessage`、`onResponse`、`onError`、`onShutdown`。
|
|
81
118
|
|
|
82
|
-
### 🔒
|
|
83
|
-
- Input sanitization (XSS, injection prevention)
|
|
84
|
-
- API key rotation & management
|
|
85
|
-
- CORS configuration
|
|
86
|
-
- Helmet-style security headers
|
|
87
|
-
- Content Security Policy
|
|
88
|
-
- Auth middleware with session isolation
|
|
119
|
+
### 🔒 安全特性
|
|
89
120
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
121
|
+
- 输入消毒(防 XSS、注入攻击)
|
|
122
|
+
- API Key 轮换管理
|
|
123
|
+
- CORS 配置
|
|
124
|
+
- 安全响应头
|
|
125
|
+
- 会话隔离认证中间件
|
|
95
126
|
|
|
96
|
-
|
|
97
|
-
# tests/greeting.yaml
|
|
98
|
-
- input: "Hello"
|
|
99
|
-
expect:
|
|
100
|
-
contains: ["hello", "hi"]
|
|
101
|
-
maxLatencyMs: 5000
|
|
102
|
-
```
|
|
127
|
+
### 📊 监控与分析
|
|
103
128
|
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
import { Orchestrator } from 'opc-agent';
|
|
129
|
+
Web 渠道内置以下端点:
|
|
107
130
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
| 端点 | 说明 |
|
|
132
|
+
|------|------|
|
|
133
|
+
| `GET /api/health` | 健康检查 |
|
|
134
|
+
| `GET /api/metrics` | Prometheus 文本格式指标(uptime、请求数、错误数、LLM 延迟、Token 用量等) |
|
|
135
|
+
| `GET /api/dashboard` | 实时仪表盘 |
|
|
113
136
|
|
|
114
|
-
|
|
115
|
-
- `/api/health` — Health check
|
|
116
|
-
- `/api/metrics` — Prometheus-compatible metrics
|
|
117
|
-
- `/api/dashboard` — Real-time dashboard UI
|
|
118
|
-
- Conversation export (JSON, Markdown, CSV)
|
|
137
|
+
`opc analytics` 和 `opc stats` 命令可查看离线分析快照。
|
|
119
138
|
|
|
120
|
-
## 🏗️
|
|
139
|
+
## 🏗️ 架构
|
|
121
140
|
|
|
122
141
|
```
|
|
123
142
|
┌─────────────────────────────────────────────────┐
|
|
124
|
-
│
|
|
125
|
-
│
|
|
143
|
+
│ OAD (YAML 定义文件) │
|
|
144
|
+
│ 智能体的一切配置都在这里 │
|
|
126
145
|
├─────────────────────────────────────────────────┤
|
|
127
|
-
│ │
|
|
128
146
|
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
129
|
-
│ │
|
|
130
|
-
│ │
|
|
131
|
-
│ │ ws,slack │ │ analytics│ │ CORS, auth │ │
|
|
147
|
+
│ │ 渠道层 │ │ 插件层 │ │ 安全层 │ │
|
|
148
|
+
│ │10 个渠道 │ │ 日志/分析│ │ 消毒/CORS/认证│ │
|
|
132
149
|
│ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
|
|
133
|
-
│ │ │ │ │
|
|
134
150
|
│ ┌────▼──────────────▼───────────────▼────────┐ │
|
|
135
|
-
│ │
|
|
151
|
+
│ │ 智能体运行时 (Agent Runtime) │ │
|
|
136
152
|
│ │ ┌─────────┐ ┌────────┐ ┌─────────────┐ │ │
|
|
137
|
-
│ │ │
|
|
153
|
+
│ │ │ 记忆 │ │ 技能 │ │ 知识库 │ │ │
|
|
138
154
|
│ │ └─────────┘ └────────┘ └─────────────┘ │ │
|
|
139
155
|
│ └────────────────────┬───────────────────────┘ │
|
|
140
|
-
│ │ │
|
|
141
156
|
│ ┌────────────────────▼───────────────────────┐ │
|
|
142
|
-
│ │
|
|
143
|
-
│ │
|
|
157
|
+
│ │ 大语言模型供应商 │ │
|
|
158
|
+
│ │ DeepSeek · 通义千问 · OpenAI · Ollama │ │
|
|
144
159
|
│ └─────────────────────────────────────────────┘│
|
|
145
160
|
└─────────────────────────────────────────────────┘
|
|
146
161
|
```
|
|
147
162
|
|
|
148
|
-
##
|
|
163
|
+
## 📋 12 个开箱即用模板
|
|
149
164
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
| `opc run` | Start the agent |
|
|
154
|
-
| `opc dev` | Start in development mode (auto-reload) |
|
|
155
|
-
| `opc test` | Run agent test cases |
|
|
156
|
-
| `opc validate` | Validate OAD configuration |
|
|
157
|
-
| `opc deploy hermes` | Deploy to Hermes cloud |
|
|
158
|
-
| `opc plugin list` | List available plugins |
|
|
159
|
-
| `opc plugin add <name>` | Add a plugin to config |
|
|
160
|
-
| `opc migrate` | Migrate OAD to latest schema |
|
|
161
|
-
| `opc marketplace publish` | Publish to marketplace |
|
|
165
|
+
```bash
|
|
166
|
+
opc init my-agent --template <模板名>
|
|
167
|
+
```
|
|
162
168
|
|
|
163
|
-
|
|
169
|
+
| 模板 | 说明 | 典型场景 |
|
|
170
|
+
|------|------|---------|
|
|
171
|
+
| `customer-service` | 客服智能体 | FAQ 自动回答 + 转人工 |
|
|
172
|
+
| `sales-assistant` | 销售助手 | 产品问答 + 线索捕获 |
|
|
173
|
+
| `knowledge-base` | 知识库问答 | 文档 RAG 语义检索 |
|
|
174
|
+
| `code-reviewer` | 代码审查 | Bug 检测 + 风格检查 |
|
|
175
|
+
| `hr-recruiter` | HR 招聘助手 | 简历筛选 + 面试安排 |
|
|
176
|
+
| `project-manager` | 项目管理 | 任务跟踪 + 会议纪要 |
|
|
177
|
+
| `content-writer` | 内容创作 | 博客 + 社媒 + SEO |
|
|
178
|
+
| `legal-assistant` | 法务助手 | 合同审查 + 合规检查 |
|
|
179
|
+
| `financial-advisor` | 财务顾问 | 预算管理 + 支出追踪 |
|
|
180
|
+
| `executive-assistant` | 行政助理 | 日程 + 邮件 + 会议 |
|
|
181
|
+
| `data-analyst` | 数据分析师 | 数据查询 + 可视化 |
|
|
182
|
+
| `teacher` | 教学助手 | 课程设计 + 出题 |
|
|
164
183
|
|
|
165
|
-
|
|
184
|
+
## 🚀 部署
|
|
185
|
+
|
|
186
|
+
### Docker 部署
|
|
187
|
+
|
|
188
|
+
`opc init` 创建的每个项目都自带 `Dockerfile` 和 `docker-compose.yml`:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
docker compose up -d
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 部署到 OpenClaw
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
opc deploy --target openclaw
|
|
198
|
+
opc deploy --target openclaw --install # 同时写入本地配置
|
|
199
|
+
```
|
|
166
200
|
|
|
167
|
-
|
|
168
|
-
2. Create a feature branch: `git checkout -b feat/my-feature`
|
|
169
|
-
3. Make your changes with tests
|
|
170
|
-
4. Run tests: `npm test`
|
|
171
|
-
5. Submit a pull request
|
|
201
|
+
生成 `IDENTITY.md`、`SOUL.md`、`AGENTS.md` 到 `~/.openclaw/agents/{id}/workspace/`。
|
|
172
202
|
|
|
173
|
-
###
|
|
203
|
+
### 部署到 Hermes
|
|
174
204
|
|
|
175
205
|
```bash
|
|
176
|
-
|
|
206
|
+
opc deploy --target hermes
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
将 OAD 转换为 Hermes Character 格式(包含 personality、bio、lore、message examples 等字段)。
|
|
210
|
+
|
|
211
|
+
## 📖 CLI 命令参考
|
|
212
|
+
|
|
213
|
+
| 命令 | 说明 |
|
|
214
|
+
|------|------|
|
|
215
|
+
| `opc init [name]` | 创建新智能体项目(交互式,可选模板) |
|
|
216
|
+
| `opc create <name>` | 从模板快速创建 |
|
|
217
|
+
| `opc run` | 启动智能体 |
|
|
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>` | 向知识库添加文件 |
|
|
227
|
+
| `opc kb search <query>` | 搜索知识库 |
|
|
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 参考
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import { AgentRuntime, KnowledgeBase, Orchestrator } from 'opc-agent';
|
|
246
|
+
|
|
247
|
+
// 启动智能体
|
|
248
|
+
const runtime = new AgentRuntime();
|
|
249
|
+
await runtime.loadConfig('oad.yaml');
|
|
250
|
+
await runtime.initialize();
|
|
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
|
+
});
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## 🔑 OAD 配置文件速览
|
|
266
|
+
|
|
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
|
|
286
|
+
|
|
287
|
+
memory:
|
|
288
|
+
shortTerm: true
|
|
289
|
+
longTerm: false
|
|
290
|
+
|
|
291
|
+
rateLimits:
|
|
292
|
+
perUser:
|
|
293
|
+
maxRequests: 60
|
|
294
|
+
windowMs: 60000
|
|
295
|
+
|
|
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
|
+
## 🤝 贡献指南
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
git clone https://github.com/Deepleaper/opc-agent.git
|
|
177
313
|
cd opc-agent
|
|
178
314
|
npm install
|
|
179
|
-
npm run build
|
|
180
|
-
npm test
|
|
315
|
+
npm run build # TypeScript 编译
|
|
316
|
+
npm test # 运行 146 个测试
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
欢迎提交 Issue 和 Pull Request。
|
|
320
|
+
|
|
321
|
+
## 📄 开源协议
|
|
322
|
+
|
|
323
|
+
[Apache License 2.0](LICENSE) — 商用和开源项目均可自由使用。
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
<details>
|
|
328
|
+
<summary id="english">🇺🇸 English</summary>
|
|
329
|
+
|
|
330
|
+
## OPC Agent
|
|
331
|
+
|
|
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
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
npm install -g opc-agent
|
|
338
|
+
opc init my-agent
|
|
339
|
+
cd my-agent
|
|
340
|
+
opc run
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Agent is live at `http://localhost:3000` with a built-in web chat UI.
|
|
344
|
+
|
|
345
|
+
## Features
|
|
346
|
+
|
|
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
|
|
357
|
+
|
|
358
|
+
## CLI Reference
|
|
359
|
+
|
|
360
|
+
| Command | Description |
|
|
361
|
+
|---------|-------------|
|
|
362
|
+
| `opc init [name]` | Create new agent project (interactive, template selection) |
|
|
363
|
+
| `opc run` | Start agent |
|
|
364
|
+
| `opc dev` | Development mode (hot-reload) |
|
|
365
|
+
| `opc test` | Run OAD test cases |
|
|
366
|
+
| `opc chat` | Interactive CLI chat |
|
|
367
|
+
| `opc build` | Validate OAD configuration |
|
|
368
|
+
| `opc deploy` | Deploy (`--target openclaw\|hermes`) |
|
|
369
|
+
| `opc analytics` | View analytics |
|
|
370
|
+
| `opc stats` | Runtime statistics snapshot |
|
|
371
|
+
| `opc kb add <file>` | Add file to knowledge base |
|
|
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 |
|
|
379
|
+
|
|
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
|
+
```
|
|
389
|
+
|
|
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();
|
|
181
415
|
```
|
|
182
416
|
|
|
183
|
-
##
|
|
417
|
+
## License
|
|
418
|
+
|
|
419
|
+
[Apache License 2.0](LICENSE)
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
Built with ❤️ by [Deepleaper](https://www.deepleaper.com)
|
|
184
424
|
|
|
185
|
-
|
|
425
|
+
</details>
|
|
186
426
|
|
|
187
427
|
---
|
|
188
428
|
|
|
189
|
-
<p align="center"
|
|
429
|
+
<p align="center">由 <a href="https://www.deepleaper.com">跃盟科技 (Deepleaper)</a> 用 ❤️ 打造</p>
|