opc-agent 1.3.2 → 1.4.0
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/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/workflows/ci.yml +24 -0
- package/CHANGELOG.md +23 -63
- package/CONTRIBUTING.md +21 -60
- package/README.md +235 -358
- package/README.zh-CN.md +415 -415
- package/dist/channels/slack.js +93 -10
- package/dist/channels/web.d.ts +10 -0
- package/dist/channels/web.js +33 -2
- package/dist/cli.js +255 -60
- package/dist/core/runtime.d.ts +4 -0
- package/dist/core/runtime.js +27 -0
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -40
- package/dist/index.d.ts +3 -10
- package/dist/index.js +6 -15
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +7 -1
- package/dist/schema/oad.d.ts +1 -2
- package/dist/templates/code-reviewer.d.ts +0 -8
- package/dist/templates/code-reviewer.js +5 -9
- package/dist/templates/customer-service.d.ts +0 -8
- package/dist/templates/customer-service.js +2 -6
- package/dist/templates/data-analyst.d.ts +0 -8
- package/dist/templates/data-analyst.js +5 -9
- package/dist/templates/knowledge-base.d.ts +0 -8
- package/dist/templates/knowledge-base.js +2 -6
- package/dist/templates/sales-assistant.d.ts +0 -8
- package/dist/templates/sales-assistant.js +4 -8
- package/dist/templates/teacher.d.ts +0 -8
- package/dist/templates/teacher.js +6 -10
- package/dist/traces/index.d.ts +49 -0
- package/dist/traces/index.js +102 -0
- 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/README.md +22 -0
- package/examples/basic-agent.ts +90 -0
- package/examples/brain-integration.ts +71 -0
- package/examples/customer-service-demo/README.md +90 -90
- package/examples/customer-service-demo/oad.yaml +107 -107
- package/examples/multi-channel.ts +74 -0
- 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 +217 -160
- package/src/channels/telegram.ts +90 -90
- package/src/channels/voice.ts +106 -106
- package/src/channels/web.ts +38 -2
- 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 +282 -58
- 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/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 +183 -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 +190 -200
- package/src/i18n/index.ts +216 -216
- package/src/index.ts +3 -10
- 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 +9 -1
- package/src/schema/oad.ts +154 -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 +30 -34
- package/src/templates/customer-service.ts +76 -80
- package/src/templates/data-analyst.ts +66 -70
- package/src/templates/executive-assistant.ts +71 -71
- package/src/templates/financial-advisor.ts +60 -60
- package/src/templates/knowledge-base.ts +27 -31
- package/src/templates/legal-assistant.ts +71 -71
- package/src/templates/sales-assistant.ts +75 -79
- package/src/templates/teacher.ts +75 -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/src/traces/index.ts +132 -0
- 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/ecommerce-assistant/README.md +45 -45
- package/templates/ecommerce-assistant/oad.yaml +47 -47
- 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/templates/tech-support/README.md +43 -43
- package/templates/tech-support/oad.yaml +45 -45
- package/test-agent/Dockerfile +9 -0
- package/test-agent/README.md +50 -0
- package/test-agent/agent.yaml +23 -0
- package/test-agent/docker-compose.yml +11 -0
- package/test-agent/oad.yaml +31 -0
- package/test-agent/package-lock.json +1492 -0
- package/test-agent/package.json +18 -0
- package/test-agent/src/index.ts +24 -0
- package/test-agent/src/skills/echo.ts +15 -0
- package/test-agent/tsconfig.json +25 -0
- 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/dist/core/dashboard.d.ts +0 -35
- package/dist/core/dashboard.js +0 -157
- package/dist/core/priority.d.ts +0 -52
- package/dist/core/priority.js +0 -102
- package/src/core/dashboard.ts +0 -219
- package/src/core/priority.ts +0 -140
- package/src/dtv/data.ts +0 -29
- package/src/dtv/trust.ts +0 -43
- package/src/dtv/value.ts +0 -47
- package/src/marketplace/index.ts +0 -223
package/docs/api/sdk.md
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
# SDK Reference
|
|
2
|
-
|
|
3
|
-
## Core Classes
|
|
4
|
-
|
|
5
|
-
### AgentRuntime
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { AgentRuntime } from 'opc-agent';
|
|
9
|
-
|
|
10
|
-
const runtime = new AgentRuntime();
|
|
11
|
-
await runtime.loadConfig('oad.yaml');
|
|
12
|
-
const agent = await runtime.initialize();
|
|
13
|
-
await runtime.start();
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### AnalyticsEngine
|
|
17
|
-
|
|
18
|
-
```typescript
|
|
19
|
-
import { AnalyticsEngine } from 'opc-agent';
|
|
20
|
-
|
|
21
|
-
const engine = new AnalyticsEngine('.');
|
|
22
|
-
engine.trackMessage('user-1', 250, 100, 50);
|
|
23
|
-
engine.trackToolUse('search', true, 120);
|
|
24
|
-
const stats = engine.getStats();
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### RateLimiter
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
import { RateLimiter } from 'opc-agent';
|
|
31
|
-
|
|
32
|
-
const limiter = new RateLimiter({
|
|
33
|
-
userLimit: { maxRequests: 60, windowMs: 60000 },
|
|
34
|
-
providerLimit: { maxRequests: 100, windowMs: 60000 },
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
await limiter.acquire('user-1', 'openai');
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### LLMCache
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
import { LLMCache } from 'opc-agent';
|
|
44
|
-
|
|
45
|
-
const cache = new LLMCache({ ttlMs: 3600000 });
|
|
46
|
-
const key = LLMCache.makeKey(messages, systemPrompt);
|
|
47
|
-
const cached = cache.get(key);
|
|
48
|
-
if (!cached) {
|
|
49
|
-
const response = await callLLM(messages);
|
|
50
|
-
cache.set(key, response);
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Testing
|
|
55
|
-
|
|
56
|
-
```typescript
|
|
57
|
-
import { runTests, formatReport } from 'opc-agent';
|
|
58
|
-
|
|
59
|
-
const report = await runTests('oad.yaml');
|
|
60
|
-
console.log(formatReport(report));
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Templates
|
|
64
|
-
|
|
65
|
-
13 built-in templates:
|
|
66
|
-
|
|
67
|
-
| Template | Description |
|
|
68
|
-
|----------|-------------|
|
|
69
|
-
| `customer-service` | FAQ + human handoff |
|
|
70
|
-
| `sales-assistant` | Product Q&A + lead capture |
|
|
71
|
-
| `knowledge-base` | RAG with DeepBrain |
|
|
72
|
-
| `code-reviewer` | Bug detection + style checks |
|
|
73
|
-
| `hr-recruiter` | Resume screening + interviews |
|
|
74
|
-
| `project-manager` | Task tracking + meeting notes |
|
|
75
|
-
| `content-writer` | Blog + social media + SEO |
|
|
76
|
-
| `legal-assistant` | Contract review + compliance |
|
|
77
|
-
| `financial-advisor` | Budget + expense tracking |
|
|
78
|
-
| `executive-assistant` | Calendar + email + meetings |
|
|
79
|
-
| `data-analyst` | Data querying + visualization |
|
|
80
|
-
| `teacher` | Lesson plans + quizzes |
|
|
1
|
+
# SDK Reference
|
|
2
|
+
|
|
3
|
+
## Core Classes
|
|
4
|
+
|
|
5
|
+
### AgentRuntime
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { AgentRuntime } from 'opc-agent';
|
|
9
|
+
|
|
10
|
+
const runtime = new AgentRuntime();
|
|
11
|
+
await runtime.loadConfig('oad.yaml');
|
|
12
|
+
const agent = await runtime.initialize();
|
|
13
|
+
await runtime.start();
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### AnalyticsEngine
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { AnalyticsEngine } from 'opc-agent';
|
|
20
|
+
|
|
21
|
+
const engine = new AnalyticsEngine('.');
|
|
22
|
+
engine.trackMessage('user-1', 250, 100, 50);
|
|
23
|
+
engine.trackToolUse('search', true, 120);
|
|
24
|
+
const stats = engine.getStats();
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### RateLimiter
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { RateLimiter } from 'opc-agent';
|
|
31
|
+
|
|
32
|
+
const limiter = new RateLimiter({
|
|
33
|
+
userLimit: { maxRequests: 60, windowMs: 60000 },
|
|
34
|
+
providerLimit: { maxRequests: 100, windowMs: 60000 },
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
await limiter.acquire('user-1', 'openai');
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### LLMCache
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { LLMCache } from 'opc-agent';
|
|
44
|
+
|
|
45
|
+
const cache = new LLMCache({ ttlMs: 3600000 });
|
|
46
|
+
const key = LLMCache.makeKey(messages, systemPrompt);
|
|
47
|
+
const cached = cache.get(key);
|
|
48
|
+
if (!cached) {
|
|
49
|
+
const response = await callLLM(messages);
|
|
50
|
+
cache.set(key, response);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Testing
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { runTests, formatReport } from 'opc-agent';
|
|
58
|
+
|
|
59
|
+
const report = await runTests('oad.yaml');
|
|
60
|
+
console.log(formatReport(report));
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Templates
|
|
64
|
+
|
|
65
|
+
13 built-in templates:
|
|
66
|
+
|
|
67
|
+
| Template | Description |
|
|
68
|
+
|----------|-------------|
|
|
69
|
+
| `customer-service` | FAQ + human handoff |
|
|
70
|
+
| `sales-assistant` | Product Q&A + lead capture |
|
|
71
|
+
| `knowledge-base` | RAG with DeepBrain |
|
|
72
|
+
| `code-reviewer` | Bug detection + style checks |
|
|
73
|
+
| `hr-recruiter` | Resume screening + interviews |
|
|
74
|
+
| `project-manager` | Task tracking + meeting notes |
|
|
75
|
+
| `content-writer` | Blog + social media + SEO |
|
|
76
|
+
| `legal-assistant` | Contract review + compliance |
|
|
77
|
+
| `financial-advisor` | Budget + expense tracking |
|
|
78
|
+
| `executive-assistant` | Calendar + email + meetings |
|
|
79
|
+
| `data-analyst` | Data querying + visualization |
|
|
80
|
+
| `teacher` | Lesson plans + quizzes |
|
package/docs/guide/concepts.md
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
# Core Concepts
|
|
2
|
-
|
|
3
|
-
## Agent
|
|
4
|
-
|
|
5
|
-
An Agent is an autonomous AI entity with a defined lifecycle:
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
init → ready → running → stopped
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Each agent has a name, system prompt, skills, channels, and memory.
|
|
12
|
-
|
|
13
|
-
## Skill
|
|
14
|
-
|
|
15
|
-
Skills are modular capabilities an agent can use. Each skill:
|
|
16
|
-
- Has a `name` and `description`
|
|
17
|
-
- Receives the conversation context and current message
|
|
18
|
-
- Returns whether it handled the message and with what confidence
|
|
19
|
-
|
|
20
|
-
Built-in skills include FAQ lookup and human handoff.
|
|
21
|
-
|
|
22
|
-
## Channel
|
|
23
|
-
|
|
24
|
-
Channels are the interfaces through which users interact with agents:
|
|
25
|
-
- **Web** — HTTP API with `/chat` endpoint and SSE streaming
|
|
26
|
-
- More channels (WebSocket, CLI, Slack) coming soon
|
|
27
|
-
|
|
28
|
-
## Memory
|
|
29
|
-
|
|
30
|
-
Agents have two types of memory:
|
|
31
|
-
- **Short-term** — Conversation history within a session
|
|
32
|
-
- **Long-term** — Persistent knowledge across sessions (coming soon)
|
|
33
|
-
|
|
34
|
-
## DTV (Data / Trust / Value)
|
|
35
|
-
|
|
36
|
-
The DTV framework governs agent operations:
|
|
37
|
-
|
|
38
|
-
### Data
|
|
39
|
-
Read-only access to business data. Agents can read configurations but cannot modify source systems.
|
|
40
|
-
|
|
41
|
-
### Trust
|
|
42
|
-
Progressive trust levels control agent capabilities:
|
|
43
|
-
- **sandbox** — No network, limited capabilities
|
|
44
|
-
- **verified** — Identity confirmed, basic capabilities
|
|
45
|
-
- **certified** — Security audited, full capabilities
|
|
46
|
-
- **listed** — Published in OPC marketplace
|
|
47
|
-
|
|
48
|
-
### Value
|
|
49
|
-
Metrics tracking for agent performance and ROI:
|
|
50
|
-
- Response time, satisfaction scores, resolution rates
|
|
51
|
-
- Automated reporting and dashboards
|
|
1
|
+
# Core Concepts
|
|
2
|
+
|
|
3
|
+
## Agent
|
|
4
|
+
|
|
5
|
+
An Agent is an autonomous AI entity with a defined lifecycle:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
init → ready → running → stopped
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Each agent has a name, system prompt, skills, channels, and memory.
|
|
12
|
+
|
|
13
|
+
## Skill
|
|
14
|
+
|
|
15
|
+
Skills are modular capabilities an agent can use. Each skill:
|
|
16
|
+
- Has a `name` and `description`
|
|
17
|
+
- Receives the conversation context and current message
|
|
18
|
+
- Returns whether it handled the message and with what confidence
|
|
19
|
+
|
|
20
|
+
Built-in skills include FAQ lookup and human handoff.
|
|
21
|
+
|
|
22
|
+
## Channel
|
|
23
|
+
|
|
24
|
+
Channels are the interfaces through which users interact with agents:
|
|
25
|
+
- **Web** — HTTP API with `/chat` endpoint and SSE streaming
|
|
26
|
+
- More channels (WebSocket, CLI, Slack) coming soon
|
|
27
|
+
|
|
28
|
+
## Memory
|
|
29
|
+
|
|
30
|
+
Agents have two types of memory:
|
|
31
|
+
- **Short-term** — Conversation history within a session
|
|
32
|
+
- **Long-term** — Persistent knowledge across sessions (coming soon)
|
|
33
|
+
|
|
34
|
+
## DTV (Data / Trust / Value)
|
|
35
|
+
|
|
36
|
+
The DTV framework governs agent operations:
|
|
37
|
+
|
|
38
|
+
### Data
|
|
39
|
+
Read-only access to business data. Agents can read configurations but cannot modify source systems.
|
|
40
|
+
|
|
41
|
+
### Trust
|
|
42
|
+
Progressive trust levels control agent capabilities:
|
|
43
|
+
- **sandbox** — No network, limited capabilities
|
|
44
|
+
- **verified** — Identity confirmed, basic capabilities
|
|
45
|
+
- **certified** — Security audited, full capabilities
|
|
46
|
+
- **listed** — Published in OPC marketplace
|
|
47
|
+
|
|
48
|
+
### Value
|
|
49
|
+
Metrics tracking for agent performance and ROI:
|
|
50
|
+
- Response time, satisfaction scores, resolution rates
|
|
51
|
+
- Automated reporting and dashboards
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# Configuration
|
|
2
|
-
|
|
3
|
-
## OAD File Structure
|
|
4
|
-
|
|
5
|
-
The `oad.yaml` file is the heart of your agent configuration:
|
|
6
|
-
|
|
7
|
-
```yaml
|
|
8
|
-
apiVersion: opc/v1
|
|
9
|
-
kind: Agent
|
|
10
|
-
metadata:
|
|
11
|
-
name: my-agent
|
|
12
|
-
version: 1.0.0
|
|
13
|
-
description: My AI agent
|
|
14
|
-
spec:
|
|
15
|
-
provider:
|
|
16
|
-
default: openai
|
|
17
|
-
allowed: [openai, deepseek, qwen]
|
|
18
|
-
model: gpt-4o-mini
|
|
19
|
-
systemPrompt: "You are a helpful assistant."
|
|
20
|
-
skills: []
|
|
21
|
-
channels:
|
|
22
|
-
- type: web
|
|
23
|
-
port: 3000
|
|
24
|
-
memory:
|
|
25
|
-
shortTerm: true
|
|
26
|
-
longTerm: false
|
|
27
|
-
testing:
|
|
28
|
-
cases:
|
|
29
|
-
- name: greeting-test
|
|
30
|
-
input: "Hello"
|
|
31
|
-
expect:
|
|
32
|
-
contains: ["hello", "help"]
|
|
33
|
-
maxLatencyMs: 5000
|
|
34
|
-
rateLimits:
|
|
35
|
-
perUser:
|
|
36
|
-
maxRequests: 60
|
|
37
|
-
windowMs: 60000
|
|
38
|
-
perProvider:
|
|
39
|
-
maxRequests: 100
|
|
40
|
-
windowMs: 60000
|
|
41
|
-
cache:
|
|
42
|
-
enabled: true
|
|
43
|
-
ttlMs: 3600000
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Environment Variables
|
|
47
|
-
|
|
48
|
-
| Variable | Description | Default |
|
|
49
|
-
|----------|-------------|---------|
|
|
50
|
-
| `OPC_LLM_API_KEY` | LLM API key | — |
|
|
51
|
-
| `OPC_LLM_BASE_URL` | LLM API base URL | `https://api.openai.com/v1` |
|
|
52
|
-
| `OPC_LLM_MODEL` | Model name | `gpt-4o-mini` |
|
|
53
|
-
|
|
54
|
-
## Rate Limiting
|
|
55
|
-
|
|
56
|
-
Configure per-user and per-provider rate limits in `oad.yaml`:
|
|
57
|
-
|
|
58
|
-
```yaml
|
|
59
|
-
spec:
|
|
60
|
-
rateLimits:
|
|
61
|
-
perUser:
|
|
62
|
-
maxRequests: 60
|
|
63
|
-
windowMs: 60000
|
|
64
|
-
perProvider:
|
|
65
|
-
maxRequests: 100
|
|
66
|
-
windowMs: 60000
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Caching
|
|
70
|
-
|
|
71
|
-
Enable LLM response caching to reduce API costs:
|
|
72
|
-
|
|
73
|
-
```yaml
|
|
74
|
-
spec:
|
|
75
|
-
cache:
|
|
76
|
-
enabled: true
|
|
77
|
-
ttlMs: 3600000 # 1 hour
|
|
78
|
-
maxEntries: 1000
|
|
79
|
-
```
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## OAD File Structure
|
|
4
|
+
|
|
5
|
+
The `oad.yaml` file is the heart of your agent configuration:
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
apiVersion: opc/v1
|
|
9
|
+
kind: Agent
|
|
10
|
+
metadata:
|
|
11
|
+
name: my-agent
|
|
12
|
+
version: 1.0.0
|
|
13
|
+
description: My AI agent
|
|
14
|
+
spec:
|
|
15
|
+
provider:
|
|
16
|
+
default: openai
|
|
17
|
+
allowed: [openai, deepseek, qwen]
|
|
18
|
+
model: gpt-4o-mini
|
|
19
|
+
systemPrompt: "You are a helpful assistant."
|
|
20
|
+
skills: []
|
|
21
|
+
channels:
|
|
22
|
+
- type: web
|
|
23
|
+
port: 3000
|
|
24
|
+
memory:
|
|
25
|
+
shortTerm: true
|
|
26
|
+
longTerm: false
|
|
27
|
+
testing:
|
|
28
|
+
cases:
|
|
29
|
+
- name: greeting-test
|
|
30
|
+
input: "Hello"
|
|
31
|
+
expect:
|
|
32
|
+
contains: ["hello", "help"]
|
|
33
|
+
maxLatencyMs: 5000
|
|
34
|
+
rateLimits:
|
|
35
|
+
perUser:
|
|
36
|
+
maxRequests: 60
|
|
37
|
+
windowMs: 60000
|
|
38
|
+
perProvider:
|
|
39
|
+
maxRequests: 100
|
|
40
|
+
windowMs: 60000
|
|
41
|
+
cache:
|
|
42
|
+
enabled: true
|
|
43
|
+
ttlMs: 3600000
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Environment Variables
|
|
47
|
+
|
|
48
|
+
| Variable | Description | Default |
|
|
49
|
+
|----------|-------------|---------|
|
|
50
|
+
| `OPC_LLM_API_KEY` | LLM API key | — |
|
|
51
|
+
| `OPC_LLM_BASE_URL` | LLM API base URL | `https://api.openai.com/v1` |
|
|
52
|
+
| `OPC_LLM_MODEL` | Model name | `gpt-4o-mini` |
|
|
53
|
+
|
|
54
|
+
## Rate Limiting
|
|
55
|
+
|
|
56
|
+
Configure per-user and per-provider rate limits in `oad.yaml`:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
spec:
|
|
60
|
+
rateLimits:
|
|
61
|
+
perUser:
|
|
62
|
+
maxRequests: 60
|
|
63
|
+
windowMs: 60000
|
|
64
|
+
perProvider:
|
|
65
|
+
maxRequests: 100
|
|
66
|
+
windowMs: 60000
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Caching
|
|
70
|
+
|
|
71
|
+
Enable LLM response caching to reduce API costs:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
spec:
|
|
75
|
+
cache:
|
|
76
|
+
enabled: true
|
|
77
|
+
ttlMs: 3600000 # 1 hour
|
|
78
|
+
maxEntries: 1000
|
|
79
|
+
```
|
package/docs/guide/deployment.md
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
# Deployment
|
|
2
|
-
|
|
3
|
-
## Docker
|
|
4
|
-
|
|
5
|
-
Every `opc init` project includes a `Dockerfile` and `docker-compose.yml`:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
docker compose up -d
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Deploy to OpenClaw
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
opc deploy --target openclaw
|
|
15
|
-
opc deploy --target openclaw --install # Also register in config
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Deploy to Hermes
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
opc deploy --target hermes
|
|
22
|
-
opc deploy --target hermes --output ./my-hermes-deploy
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Environment Variables
|
|
26
|
-
|
|
27
|
-
Set your API keys in `.env`:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
OPC_LLM_API_KEY=sk-xxx
|
|
31
|
-
OPC_LLM_BASE_URL=https://api.openai.com/v1
|
|
32
|
-
OPC_LLM_MODEL=gpt-4o-mini
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Production Checklist
|
|
36
|
-
|
|
37
|
-
- [ ] Set proper API keys in `.env`
|
|
38
|
-
- [ ] Configure rate limits in `oad.yaml`
|
|
39
|
-
- [ ] Enable caching for cost reduction
|
|
40
|
-
- [ ] Set up analytics monitoring
|
|
41
|
-
- [ ] Run `opc test` before deployment
|
|
42
|
-
- [ ] Review trust/DTV settings
|
|
1
|
+
# Deployment
|
|
2
|
+
|
|
3
|
+
## Docker
|
|
4
|
+
|
|
5
|
+
Every `opc init` project includes a `Dockerfile` and `docker-compose.yml`:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
docker compose up -d
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Deploy to OpenClaw
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
opc deploy --target openclaw
|
|
15
|
+
opc deploy --target openclaw --install # Also register in config
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Deploy to Hermes
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
opc deploy --target hermes
|
|
22
|
+
opc deploy --target hermes --output ./my-hermes-deploy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Environment Variables
|
|
26
|
+
|
|
27
|
+
Set your API keys in `.env`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
OPC_LLM_API_KEY=sk-xxx
|
|
31
|
+
OPC_LLM_BASE_URL=https://api.openai.com/v1
|
|
32
|
+
OPC_LLM_MODEL=gpt-4o-mini
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Production Checklist
|
|
36
|
+
|
|
37
|
+
- [ ] Set proper API keys in `.env`
|
|
38
|
+
- [ ] Configure rate limits in `oad.yaml`
|
|
39
|
+
- [ ] Enable caching for cost reduction
|
|
40
|
+
- [ ] Set up analytics monitoring
|
|
41
|
+
- [ ] Run `opc test` before deployment
|
|
42
|
+
- [ ] Review trust/DTV settings
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
# Getting Started
|
|
2
|
-
|
|
3
|
-
## Installation
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
npm install -g opc-agent
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
## Create Your First Agent
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Initialize a new project
|
|
13
|
-
opc init my-agent --template customer-service
|
|
14
|
-
|
|
15
|
-
# Enter the project
|
|
16
|
-
cd my-agent
|
|
17
|
-
|
|
18
|
-
# Validate the OAD definition
|
|
19
|
-
opc build
|
|
20
|
-
|
|
21
|
-
# Run in sandbox mode
|
|
22
|
-
opc test
|
|
23
|
-
|
|
24
|
-
# Start the agent
|
|
25
|
-
opc run
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Test the Agent
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
curl -X POST http://localhost:3000/chat \
|
|
32
|
-
-H "Content-Type: application/json" \
|
|
33
|
-
-d '{"message": "What are your business hours?"}'
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Project Structure
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
my-agent/
|
|
40
|
-
├── oad.yaml # Agent definition (OAD Schema v1)
|
|
41
|
-
└── README.md
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
The `oad.yaml` file defines everything about your agent: its identity, skills, channels, and configuration.
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install -g opc-agent
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Create Your First Agent
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Initialize a new project
|
|
13
|
+
opc init my-agent --template customer-service
|
|
14
|
+
|
|
15
|
+
# Enter the project
|
|
16
|
+
cd my-agent
|
|
17
|
+
|
|
18
|
+
# Validate the OAD definition
|
|
19
|
+
opc build
|
|
20
|
+
|
|
21
|
+
# Run in sandbox mode
|
|
22
|
+
opc test
|
|
23
|
+
|
|
24
|
+
# Start the agent
|
|
25
|
+
opc run
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Test the Agent
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
curl -X POST http://localhost:3000/chat \
|
|
32
|
+
-H "Content-Type: application/json" \
|
|
33
|
+
-d '{"message": "What are your business hours?"}'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Project Structure
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
my-agent/
|
|
40
|
+
├── oad.yaml # Agent definition (OAD Schema v1)
|
|
41
|
+
└── README.md
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The `oad.yaml` file defines everything about your agent: its identity, skills, channels, and configuration.
|
package/docs/guide/templates.md
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Templates
|
|
2
|
-
|
|
3
|
-
Templates are pre-built agent configurations for common use cases.
|
|
4
|
-
|
|
5
|
-
## Customer Service
|
|
6
|
-
|
|
7
|
-
A complete customer service agent with:
|
|
8
|
-
- FAQ lookup skill
|
|
9
|
-
- Human handoff when confidence is low
|
|
10
|
-
- Web channel for HTTP integration
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
opc init my-service --template customer-service
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Creating Custom Templates
|
|
17
|
-
|
|
18
|
-
Templates are OAD YAML files with optional skill implementations. To create your own:
|
|
19
|
-
|
|
20
|
-
1. Define `oad.yaml` with your agent specification
|
|
21
|
-
2. Implement custom skills extending `BaseSkill`
|
|
22
|
-
3. Package as a directory with `oad.yaml` + `README.md`
|
|
23
|
-
|
|
24
|
-
More templates coming soon:
|
|
25
|
-
- Sales Assistant
|
|
26
|
-
- Internal IT Help Desk
|
|
27
|
-
- Data Analysis Agent
|
|
28
|
-
- Content Moderation Agent
|
|
1
|
+
# Templates
|
|
2
|
+
|
|
3
|
+
Templates are pre-built agent configurations for common use cases.
|
|
4
|
+
|
|
5
|
+
## Customer Service
|
|
6
|
+
|
|
7
|
+
A complete customer service agent with:
|
|
8
|
+
- FAQ lookup skill
|
|
9
|
+
- Human handoff when confidence is low
|
|
10
|
+
- Web channel for HTTP integration
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
opc init my-service --template customer-service
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Creating Custom Templates
|
|
17
|
+
|
|
18
|
+
Templates are OAD YAML files with optional skill implementations. To create your own:
|
|
19
|
+
|
|
20
|
+
1. Define `oad.yaml` with your agent specification
|
|
21
|
+
2. Implement custom skills extending `BaseSkill`
|
|
22
|
+
3. Package as a directory with `oad.yaml` + `README.md`
|
|
23
|
+
|
|
24
|
+
More templates coming soon:
|
|
25
|
+
- Sales Assistant
|
|
26
|
+
- Internal IT Help Desk
|
|
27
|
+
- Data Analysis Agent
|
|
28
|
+
- Content Moderation Agent
|