opc-agent 4.1.0 → 4.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/.github/ISSUE_TEMPLATE/bug_report.md +20 -20
- package/.github/ISSUE_TEMPLATE/feature_request.md +14 -14
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -13
- package/CHANGELOG.md +48 -48
- package/CONTRIBUTING.md +36 -36
- package/README.zh-CN.md +497 -497
- package/USABILITY-ISSUES.md +73 -0
- package/dist/channels/web.js +8 -2
- package/dist/channels/wechat.js +6 -6
- package/dist/cli.js +200 -85
- package/dist/core/runtime.js +37 -15
- package/dist/deploy/index.js +56 -56
- package/dist/doctor.d.ts +1 -0
- package/dist/doctor.js +105 -10
- package/dist/memory/deepbrain.d.ts +1 -1
- package/dist/memory/deepbrain.js +95 -4
- package/dist/scheduler/cron-engine.js +3 -36
- package/dist/studio/server.js +30 -1
- package/dist/studio-ui/index.html +230 -10
- package/dist/ui/components.js +105 -105
- package/examples/README.md +22 -22
- package/examples/basic-agent.ts +90 -90
- package/examples/brain-integration.ts +71 -71
- package/examples/multi-channel.ts +74 -74
- package/fix-sidebar.mjs +188 -188
- package/install.ps1 +154 -154
- package/install.sh +164 -164
- package/package.json +1 -1
- package/scripts/install.ps1 +31 -31
- package/scripts/install.sh +40 -40
- package/serve-studio.js +13 -13
- package/serve-test.js +25 -25
- package/src/channels/dingtalk.ts +46 -46
- package/src/channels/email.ts +351 -351
- package/src/channels/feishu.ts +349 -349
- package/src/channels/googlechat.ts +42 -42
- package/src/channels/imessage.ts +31 -31
- package/src/channels/irc.ts +82 -82
- package/src/channels/line.ts +32 -32
- package/src/channels/matrix.ts +33 -33
- package/src/channels/mattermost.ts +57 -57
- package/src/channels/msteams.ts +32 -32
- package/src/channels/nostr.ts +32 -32
- package/src/channels/qq.ts +33 -33
- package/src/channels/signal.ts +32 -32
- package/src/channels/sms.ts +33 -33
- package/src/channels/telegram.ts +616 -616
- package/src/channels/twitch.ts +65 -65
- package/src/channels/voice-call.ts +100 -100
- package/src/channels/web.ts +8 -2
- package/src/channels/websocket.ts +399 -399
- package/src/channels/wechat.ts +329 -329
- package/src/channels/whatsapp.ts +32 -32
- package/src/cli/chat.ts +99 -99
- package/src/cli/setup.ts +314 -314
- package/src/cli.ts +195 -92
- package/src/core/agent.ts +476 -476
- package/src/core/api-server.ts +277 -277
- package/src/core/audio.ts +98 -98
- package/src/core/collaboration.ts +275 -275
- package/src/core/context-discovery.ts +85 -85
- package/src/core/context-refs.ts +140 -140
- package/src/core/gateway.ts +106 -106
- package/src/core/heartbeat.ts +51 -51
- package/src/core/hooks.ts +105 -105
- package/src/core/ide-bridge.ts +133 -133
- package/src/core/node-network.ts +86 -86
- package/src/core/profiles.ts +122 -122
- package/src/core/runtime.ts +25 -0
- package/src/core/scheduler.ts +187 -187
- package/src/core/session-manager.ts +137 -137
- package/src/core/subagent.ts +98 -98
- package/src/core/vision.ts +180 -180
- package/src/core/workflow-graph.ts +365 -365
- package/src/daemon.ts +96 -96
- package/src/deploy/index.ts +255 -255
- package/src/doctor.ts +98 -11
- package/src/eval/index.ts +211 -211
- package/src/eval/suites/basic.json +16 -16
- package/src/eval/suites/memory.json +12 -12
- package/src/eval/suites/safety.json +14 -14
- package/src/hub/brain-seed.ts +54 -54
- package/src/hub/client.ts +60 -60
- package/src/mcp/servers/calculator-mcp.ts +65 -65
- package/src/mcp/servers/crypto-mcp.ts +73 -73
- package/src/mcp/servers/database-mcp.ts +72 -72
- package/src/mcp/servers/datetime-mcp.ts +69 -69
- package/src/mcp/servers/filesystem.ts +66 -66
- package/src/mcp/servers/github-mcp.ts +58 -58
- package/src/mcp/servers/index.ts +63 -63
- package/src/mcp/servers/json-mcp.ts +102 -102
- package/src/mcp/servers/memory-mcp.ts +56 -56
- package/src/mcp/servers/regex-mcp.ts +53 -53
- package/src/mcp/servers/web-mcp.ts +49 -49
- package/src/memory/context-compressor.ts +189 -189
- package/src/memory/deepbrain.ts +99 -5
- package/src/memory/seed-loader.ts +212 -212
- package/src/memory/user-profiler.ts +215 -215
- package/src/plugins/content-filter.ts +23 -23
- package/src/plugins/logger.ts +18 -18
- package/src/plugins/rate-limiter.ts +38 -38
- package/src/protocols/a2a/client.ts +132 -132
- package/src/protocols/a2a/index.ts +8 -8
- package/src/protocols/a2a/server.ts +333 -333
- package/src/protocols/a2a/types.ts +88 -88
- package/src/protocols/a2a/utils.ts +50 -50
- package/src/protocols/agui/client.ts +83 -83
- package/src/protocols/agui/index.ts +4 -4
- package/src/protocols/agui/server.ts +218 -218
- package/src/protocols/agui/types.ts +153 -153
- package/src/protocols/index.ts +2 -2
- package/src/protocols/mcp/agent-tools.ts +134 -134
- package/src/protocols/mcp/index.ts +8 -8
- package/src/protocols/mcp/server.ts +262 -262
- package/src/protocols/mcp/types.ts +69 -69
- package/src/providers/index.ts +632 -632
- package/src/publish/index.ts +376 -376
- package/src/scheduler/cron-engine.ts +191 -191
- package/src/scheduler/index.ts +2 -2
- package/src/schema/oad.ts +217 -217
- package/src/security/approval.ts +131 -131
- package/src/security/approvals.ts +143 -143
- package/src/security/elevated.ts +105 -105
- package/src/security/guardrails.ts +248 -248
- package/src/security/index.ts +9 -9
- package/src/security/keys.ts +87 -87
- package/src/security/secrets.ts +129 -129
- package/src/skills/builtin/index.ts +408 -408
- package/src/skills/marketplace.ts +113 -113
- package/src/skills/types.ts +42 -42
- package/src/studio/server.ts +31 -1
- package/src/studio/templates-data.ts +178 -178
- package/src/studio-ui/index.html +230 -10
- package/src/telemetry/index.ts +324 -324
- package/src/tools/builtin/browser.ts +299 -299
- package/src/tools/builtin/datetime.ts +41 -41
- package/src/tools/builtin/file.ts +107 -107
- package/src/tools/builtin/home-assistant.ts +116 -116
- package/src/tools/builtin/rl-tools.ts +243 -243
- package/src/tools/builtin/shell.ts +43 -43
- package/src/tools/builtin/vision.ts +64 -64
- package/src/tools/builtin/web-search.ts +126 -126
- package/src/tools/builtin/web.ts +35 -35
- package/src/tools/document-processor.ts +213 -213
- package/src/tools/image-generator.ts +150 -150
- package/src/tools/integrations/calendar.ts +73 -73
- package/src/tools/integrations/code-exec.ts +39 -39
- package/src/tools/integrations/csv-analyzer.ts +92 -92
- package/src/tools/integrations/database.ts +44 -44
- package/src/tools/integrations/email-send.ts +76 -76
- package/src/tools/integrations/git-tool.ts +42 -42
- package/src/tools/integrations/github-tool.ts +76 -76
- package/src/tools/integrations/image-gen.ts +56 -56
- package/src/tools/integrations/index.ts +92 -92
- package/src/tools/integrations/jira.ts +83 -83
- package/src/tools/integrations/notion.ts +71 -71
- package/src/tools/integrations/npm-tool.ts +48 -48
- package/src/tools/integrations/pdf-reader.ts +58 -58
- package/src/tools/integrations/slack.ts +65 -65
- package/src/tools/integrations/summarizer.ts +49 -49
- package/src/tools/integrations/translator.ts +48 -48
- package/src/tools/integrations/trello.ts +60 -60
- package/src/tools/integrations/vector-search.ts +42 -42
- package/src/tools/integrations/web-scraper.ts +47 -47
- package/src/tools/integrations/web-search.ts +58 -58
- package/src/tools/integrations/webhook.ts +38 -38
- package/src/tools/mcp-client.ts +131 -131
- package/src/tools/web-scraper.ts +179 -179
- package/src/tools/web-search.ts +180 -180
- package/src/ui/components.ts +127 -127
- package/srv-out.txt +1 -1
- package/templates/ecommerce-assistant/README.md +45 -45
- package/templates/ecommerce-assistant/oad.yaml +47 -47
- package/templates/tech-support/README.md +43 -43
- package/templates/tech-support/oad.yaml +45 -45
- package/test-agent/Dockerfile +9 -9
- package/test-agent/README.md +50 -50
- package/test-agent/agent.yaml +23 -23
- package/test-agent/docker-compose.yml +11 -11
- package/test-agent/oad.yaml +31 -31
- package/test-agent/package-lock.json +1492 -1492
- package/test-agent/package.json +17 -17
- package/test-agent/src/index.ts +24 -24
- package/test-agent/src/skills/echo.ts +15 -15
- package/test-agent/tsconfig.json +24 -24
- package/test-full.js +43 -43
- package/test-sidebar.js +22 -22
- package/test-studio3.js +75 -75
- package/test-studio4.js +41 -41
- package/tests/a2a-protocol.test.ts +285 -285
- package/tests/agui-protocol.test.ts +246 -246
- package/tests/api-server.test.ts +148 -148
- package/tests/approvals.test.ts +89 -89
- package/tests/audio.test.ts +40 -40
- package/tests/brain-seed-extended.test.ts +490 -490
- package/tests/brain-seed.test.ts +239 -239
- package/tests/browser.test.ts +179 -179
- package/tests/channels/discord.test.ts +79 -79
- package/tests/channels/email.test.ts +148 -148
- package/tests/channels/feishu.test.ts +123 -123
- package/tests/channels/telegram.test.ts +129 -129
- package/tests/channels/websocket.test.ts +53 -53
- package/tests/channels/wechat.test.ts +170 -170
- package/tests/channels-extra.test.ts +45 -45
- package/tests/chat-cli.test.ts +160 -160
- package/tests/cli.test.ts +46 -46
- package/tests/context-compressor.test.ts +172 -172
- package/tests/context-refs.test.ts +121 -121
- package/tests/cron-engine.test.ts +101 -101
- package/tests/daemon.test.ts +135 -135
- package/tests/deepbrain-wire.test.ts +234 -234
- package/tests/deploy-and-dag.test.ts +196 -196
- package/tests/doctor.test.ts +38 -38
- package/tests/document-processor.test.ts +69 -69
- package/tests/e2e-nocode.test.ts +442 -442
- package/tests/elevated.test.ts +69 -69
- package/tests/eval.test.ts +173 -173
- package/tests/gateway.test.ts +63 -63
- package/tests/guardrails.test.ts +177 -177
- package/tests/home-assistant.test.ts +40 -40
- package/tests/hooks.test.ts +79 -79
- package/tests/ide-bridge.test.ts +38 -38
- package/tests/image-generator.test.ts +84 -84
- package/tests/init-role.test.ts +124 -124
- package/tests/integrations.test.ts +249 -249
- package/tests/mcp-client.test.ts +92 -92
- package/tests/mcp-server.test.ts +178 -178
- package/tests/mcp-servers.test.ts +260 -260
- package/tests/node-network.test.ts +74 -74
- package/tests/plugin-a2a-enhanced.test.ts +230 -230
- package/tests/profiles.test.ts +61 -61
- package/tests/publish.test.ts +231 -231
- package/tests/rl-tools.test.ts +93 -93
- package/tests/sandbox-manager.test.ts +46 -46
- package/tests/scheduler.test.ts +200 -200
- package/tests/secrets.test.ts +107 -107
- package/tests/security-enhanced.test.ts +233 -233
- package/tests/settings-api.test.ts +148 -148
- package/tests/setup.test.ts +73 -73
- package/tests/subagent.test.ts +193 -193
- package/tests/telegram-discord.test.ts +60 -60
- package/tests/telemetry.test.ts +186 -186
- package/tests/user-profiler.test.ts +169 -169
- package/tests/v090-features.test.ts +254 -254
- package/tests/vision.test.ts +61 -61
- package/tests/voice-call.test.ts +47 -47
- package/tests/voice-enhanced.test.ts +169 -169
- package/tests/voice-interaction.test.ts +38 -38
- package/tests/web-search.test.ts +155 -155
- package/tests/workflow-graph.test.ts +279 -279
- package/tutorial/customer-service-agent/README.md +612 -612
- package/tutorial/customer-service-agent/SOUL.md +26 -26
- package/tutorial/customer-service-agent/agent.yaml +63 -63
- package/tutorial/customer-service-agent/package.json +19 -19
- package/tutorial/customer-service-agent/src/index.ts +69 -69
- package/tutorial/customer-service-agent/src/skills/faq.ts +27 -27
- package/tutorial/customer-service-agent/src/skills/ticket.ts +22 -22
- package/tutorial/customer-service-agent/tsconfig.json +14 -14
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# OPC Agent 易用性问题清单
|
|
2
|
+
|
|
3
|
+
日期: 2026-04-20
|
|
4
|
+
目标: 易用性超过 OpenClaw 和 DeerFlow
|
|
5
|
+
|
|
6
|
+
## 🔴 Critical (新用户第一次就遇到)
|
|
7
|
+
|
|
8
|
+
### C1: .env 和 oad.yaml 配置矛盾
|
|
9
|
+
- .env 设了 `OPC_LLM_BASE_URL=https://api.openai.com/v1` 和 `OPC_LLM_MODEL=gpt-4o-mini`
|
|
10
|
+
- 但 oad.yaml 里 `provider: deepseek`, `model: deepseek-chat`
|
|
11
|
+
- 新用户困惑:到底听谁的?
|
|
12
|
+
- **修复**: init 时让用户选 provider,.env 和 oad.yaml 统一生成
|
|
13
|
+
|
|
14
|
+
### C2: .env 占位符 API key 导致 401
|
|
15
|
+
- 默认 `OPC_LLM_API_KEY=your-api-key-here` 导致第一次对话直接 401
|
|
16
|
+
- 用户看到 "Incorrect API key" 错误,不知道怎么修
|
|
17
|
+
- **修复**: init 时提示输入 API key 或选择 Ollama(免费本地)
|
|
18
|
+
- 如果没配 key,chat 应该给友好提示而不是 raw 401 JSON
|
|
19
|
+
|
|
20
|
+
### C3: agent.yaml vs oad.yaml 双配置文件
|
|
21
|
+
- init 生成了 agent.yaml 和 oad.yaml 两个文件
|
|
22
|
+
- doctor 检查 agent.yaml 但 runtime 读 oad.yaml
|
|
23
|
+
- **修复**: 统一用一个文件
|
|
24
|
+
|
|
25
|
+
## 🟡 Important (影响体验但不致命)
|
|
26
|
+
|
|
27
|
+
### I1: opc doctor 误报
|
|
28
|
+
- "agent.yaml exists: Not found" — 但实际有 oad.yaml
|
|
29
|
+
- "TypeScript installed: Not found" — 但 npx tsx 能跑
|
|
30
|
+
- "Ollama running: Not running" — 不是所有用户都用 Ollama
|
|
31
|
+
- "DeepBrain package: Not installed" — 但 opc-agent 自带内存 fallback
|
|
32
|
+
- **修复**: doctor 应该检查 oad.yaml,对非必须项给 warning 不给 ❌
|
|
33
|
+
|
|
34
|
+
### I2: Chat 401 错误消息不友好
|
|
35
|
+
- 返回 raw SSE `data: {"error":"LLM API error 401: {...}"}`
|
|
36
|
+
- Web UI 应该显示 "请先配置 API Key" + 指引
|
|
37
|
+
- **修复**: 前端拦截 401,显示配置指引
|
|
38
|
+
|
|
39
|
+
### I3: Studio /api/dashboard 404
|
|
40
|
+
- Dashboard API 不存在
|
|
41
|
+
- **修复**: 实现或移除 dashboard 入口
|
|
42
|
+
|
|
43
|
+
### I4: DeepBrain fallback 无声失败
|
|
44
|
+
- 日志显示 `[DeepBrainMemory] deepbrain package not found, using in-memory fallback`
|
|
45
|
+
- 用户不知道记忆没有持久化
|
|
46
|
+
- **修复**: 首次运行时提示,或默认用文件存储
|
|
47
|
+
|
|
48
|
+
### I5: 没有一键安装脚本
|
|
49
|
+
- OpenClaw 有 `curl | sh` 一键安装
|
|
50
|
+
- 我们需要 `npm install -g opc-agent`,还要自己装 Node
|
|
51
|
+
- **修复**: 做一个安装脚本,检测 OS、装 Node、装 opc-agent
|
|
52
|
+
|
|
53
|
+
## 🟢 Nice-to-have
|
|
54
|
+
|
|
55
|
+
### N1: 没有 `opc quickstart` 命令
|
|
56
|
+
- OpenClaw 五分钟上手,我们还是多步手动流程
|
|
57
|
+
- **修复**: 做一个交互式 quickstart,一步到位
|
|
58
|
+
|
|
59
|
+
### N2: init 模板缺少 Ollama 选项
|
|
60
|
+
- 很多用户想用免费本地模型
|
|
61
|
+
- **修复**: init 时加 Ollama 选项,自动配 ollama provider
|
|
62
|
+
|
|
63
|
+
### N3: README.md 内容单薄
|
|
64
|
+
- 缺少截图、GIF、快速上手步骤
|
|
65
|
+
- **修复**: 丰富 README
|
|
66
|
+
|
|
67
|
+
### N4: Studio agent 数据来自旧缓存
|
|
68
|
+
- API 返回 "name: Updated Bot" 而不是 "my-first-agent"
|
|
69
|
+
- **修复**: 确保从 oad.yaml 实时读取
|
|
70
|
+
|
|
71
|
+
### N5: cron-engine 默认 9 个任务
|
|
72
|
+
- 新建的 agent 不应该有预设的 cron 任务
|
|
73
|
+
- **修复**: 新 agent 默认 0 个 cron 任务
|
package/dist/channels/web.js
CHANGED
|
@@ -211,7 +211,7 @@ async function send(){
|
|
|
211
211
|
for(const line of lines){
|
|
212
212
|
if(!line.startsWith('data: '))continue;
|
|
213
213
|
const dd=line.slice(6);if(dd==='[DONE]')continue;
|
|
214
|
-
try{const j=JSON.parse(dd);if(j.content)full+=j.content;if(j.error)full='Error: '+j.error;}catch{}
|
|
214
|
+
try{const j=JSON.parse(dd);if(j.content)full+=j.content;if(j.error){if(j.error.includes('401')||j.error.toLowerCase().includes('api key')||j.error.toLowerCase().includes('unauthorized')){full='⚠️ 请先配置 API Key。编辑项目根目录的 .env 文件,设置 OPC_LLM_API_KEY。';}else{full='Error: '+j.error;}}}catch{}
|
|
215
215
|
}
|
|
216
216
|
d.innerHTML=renderMd(full)+'<span class="cursor"></span>';
|
|
217
217
|
msgs.scrollTop=msgs.scrollHeight;
|
|
@@ -220,7 +220,13 @@ async function send(){
|
|
|
220
220
|
const rx=document.createElement('div');rx.className='reactions';
|
|
221
221
|
rx.innerHTML='<button data-r="👍" onclick="react(this)">👍</button><button data-r="👎" onclick="react(this)">👎</button>';
|
|
222
222
|
wrap.appendChild(rx);
|
|
223
|
-
}catch(e){
|
|
223
|
+
}catch(e){
|
|
224
|
+
d.className='msg error';
|
|
225
|
+
const errMsg=e.message||'';
|
|
226
|
+
if(errMsg.includes('401')||errMsg.includes('HTTP 401')){
|
|
227
|
+
d.innerHTML='⚠️ <b>请先配置 API Key</b><br>编辑项目根目录的 <code>.env</code> 文件,设置 <code>OPC_LLM_API_KEY</code> 为你的实际 API Key。';
|
|
228
|
+
}else{d.textContent='Error: '+errMsg;}
|
|
229
|
+
}
|
|
224
230
|
sending=false;btn.disabled=false;input.focus();
|
|
225
231
|
}
|
|
226
232
|
|
package/dist/channels/wechat.js
CHANGED
|
@@ -155,12 +155,12 @@ class WeChatChannel extends index_1.BaseChannel {
|
|
|
155
155
|
/** Format response as WeChat XML */
|
|
156
156
|
static formatXMLResponse(toUser, fromUser, content) {
|
|
157
157
|
const timestamp = Math.floor(Date.now() / 1000);
|
|
158
|
-
return `<xml>
|
|
159
|
-
<ToUserName><![CDATA[${toUser}]]></ToUserName>
|
|
160
|
-
<FromUserName><![CDATA[${fromUser}]]></FromUserName>
|
|
161
|
-
<CreateTime>${timestamp}</CreateTime>
|
|
162
|
-
<MsgType><![CDATA[text]]></MsgType>
|
|
163
|
-
<Content><![CDATA[${content}]]></Content>
|
|
158
|
+
return `<xml>
|
|
159
|
+
<ToUserName><![CDATA[${toUser}]]></ToUserName>
|
|
160
|
+
<FromUserName><![CDATA[${fromUser}]]></FromUserName>
|
|
161
|
+
<CreateTime>${timestamp}</CreateTime>
|
|
162
|
+
<MsgType><![CDATA[text]]></MsgType>
|
|
163
|
+
<Content><![CDATA[${content}]]></Content>
|
|
164
164
|
</xml>`;
|
|
165
165
|
}
|
|
166
166
|
/** Handle incoming WeChat message */
|