@openviking/react 0.1.0 → 0.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/README.md +57 -34
- package/dist/3~0.js +2117 -0
- package/dist/ark-message-list-view~0.js +310 -0
- package/dist/a~0.js +21 -0
- package/dist/c7~0.js +24 -0
- package/dist/client/client.d.ts +12 -0
- package/dist/client/errors.d.ts +30 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/options.d.ts +101 -0
- package/dist/client/provider.d.ts +52 -0
- package/dist/client/types.d.ts +160 -0
- package/dist/client.js +239 -0
- package/dist/components/agent-connect/agent-connect-copy.d.ts +34 -0
- package/dist/components/agent-connect/agent-connect-design.d.ts +1781 -0
- package/dist/components/agent-connect/agent-connect-detail.d.ts +13 -0
- package/dist/components/agent-connect/agent-connect-installer.d.ts +3 -0
- package/dist/components/agent-connect/agent-connect-instructions-view.d.ts +14 -0
- package/dist/components/agent-connect/agent-connect-instructions.d.ts +145 -0
- package/dist/components/agent-connect/agent-connect-markdown.d.ts +3 -0
- package/dist/components/agent-connect/agent-connect.d.ts +4 -1
- package/dist/components/agent-connect/content-en.d.ts +137 -0
- package/dist/components/agent-connect/content-zh.d.ts +137 -0
- package/dist/components/agent-connect/index.d.ts +1 -0
- package/dist/components/agent-connect/style.css +503 -0
- package/dist/components/agent-connect/types.d.ts +29 -0
- package/dist/components/agent-connect.js +1 -0
- package/dist/components/file-preview/file-preview-adapters.d.ts +33 -0
- package/dist/components/file-preview/file-preview-body.d.ts +27 -0
- package/dist/components/file-preview/file-preview-breadcrumb-menu.d.ts +16 -0
- package/dist/components/file-preview/file-preview-breadcrumb.d.ts +21 -0
- package/dist/components/file-preview/file-preview-copy-path.d.ts +12 -0
- package/dist/components/file-preview/file-preview-editor.d.ts +22 -0
- package/dist/components/file-preview/file-preview-handle-adapters.d.ts +26 -0
- package/dist/components/file-preview/file-preview-header.d.ts +25 -0
- package/dist/components/file-preview/file-preview-labels.d.ts +16 -0
- package/dist/components/file-preview/file-preview-lazy-viewer.d.ts +3 -0
- package/dist/components/file-preview/file-preview-path.d.ts +30 -0
- package/dist/components/file-preview/file-preview-source.d.ts +24 -0
- package/dist/components/file-preview/file-preview-state.d.ts +28 -0
- package/dist/components/file-preview/file-preview-tab-row.d.ts +16 -0
- package/dist/components/file-preview/file-preview-viewer.d.ts +31 -0
- package/dist/components/file-preview/file-preview.d.ts +14 -1
- package/dist/components/file-preview/index.d.ts +1 -0
- package/dist/components/file-preview/style.css +4139 -0
- package/dist/components/file-preview/types.d.ts +516 -0
- package/dist/components/file-preview/use-file-preview-actions-context.d.ts +23 -0
- package/dist/components/file-preview/use-file-preview-actions.d.ts +19 -0
- package/dist/components/file-preview/use-file-preview-editing.d.ts +32 -0
- package/dist/components/file-preview/use-file-preview-ids.d.ts +24 -0
- package/dist/components/file-preview.js +1 -0
- package/dist/components/file-tree/file-tree-body.d.ts +18 -0
- package/dist/components/file-tree/file-tree-entry-row.d.ts +12 -0
- package/dist/components/file-tree/file-tree-icons.d.ts +15 -0
- package/dist/components/file-tree/file-tree-info-labels.d.ts +21 -0
- package/dist/components/file-tree/file-tree-info-tooltip.d.ts +43 -0
- package/dist/components/file-tree/file-tree-info.d.ts +29 -0
- package/dist/components/file-tree/file-tree-keyboard.d.ts +14 -0
- package/dist/components/file-tree/file-tree-row-context.d.ts +46 -0
- package/dist/components/file-tree/file-tree-row-shared.d.ts +11 -0
- package/dist/components/file-tree/file-tree-spinner.d.ts +10 -0
- package/dist/components/file-tree/file-tree-state-row.d.ts +7 -0
- package/dist/components/file-tree/file-tree-tooltip-surface.d.ts +22 -0
- package/dist/components/file-tree/file-tree-tooltip.d.ts +17 -0
- package/dist/components/file-tree/file-tree.d.ts +15 -1
- package/dist/components/file-tree/index.d.ts +1 -0
- package/dist/components/file-tree/style.css +410 -0
- package/dist/components/file-tree/types.d.ts +589 -0
- package/dist/components/file-tree/use-file-tree-actions.d.ts +17 -0
- package/dist/components/file-tree.js +1 -0
- package/dist/components/scope-switcher/index.d.ts +1 -0
- package/dist/components/scope-switcher/scope-keyboard.d.ts +2 -0
- package/dist/components/scope-switcher/scope-panel.d.ts +11 -0
- package/dist/components/scope-switcher/scope-selector.d.ts +2 -0
- package/dist/components/scope-switcher/scope-switcher.d.ts +6 -1
- package/dist/components/scope-switcher/style.css +452 -0
- package/dist/components/scope-switcher/types.d.ts +489 -0
- package/dist/components/scope-switcher.js +3 -0
- package/dist/components/style.css +14249 -18
- package/dist/components/tui/command-catalog.d.ts +58 -0
- package/dist/components/tui/command-completion.d.ts +19 -0
- package/dist/components/tui/command-definitions.d.ts +10 -0
- package/dist/components/tui/command-input.d.ts +16 -0
- package/dist/components/tui/index.d.ts +1 -0
- package/dist/components/tui/style.css +1552 -0
- package/dist/components/tui/tui-assist.d.ts +15 -0
- package/dist/components/tui/tui-code-block.d.ts +8 -0
- package/dist/components/tui/tui-command-help.d.ts +9 -0
- package/dist/components/tui/tui-command-text.d.ts +6 -0
- package/dist/components/tui/tui-composer.d.ts +24 -0
- package/dist/components/tui/tui-copy-button.d.ts +9 -0
- package/dist/components/tui/tui-input-mirror.d.ts +14 -0
- package/dist/components/tui/tui-labels-zh.d.ts +2 -0
- package/dist/components/tui/tui-labels.d.ts +5 -0
- package/dist/components/tui/tui-markdown-renderers.d.ts +10 -0
- package/dist/components/tui/tui-markdown.d.ts +6 -0
- package/dist/components/tui/tui-param-hint.d.ts +7 -0
- package/dist/components/tui/tui-record-time.d.ts +11 -0
- package/dist/components/tui/tui-record.d.ts +13 -0
- package/dist/components/tui/tui-resource-preview.d.ts +10 -0
- package/dist/components/tui/tui-resource-tree.d.ts +10 -0
- package/dist/components/tui/tui-result-header.d.ts +7 -0
- package/dist/components/tui/tui-result-text.d.ts +5 -0
- package/dist/components/tui/tui-search-list.d.ts +8 -0
- package/dist/components/tui/tui-skeleton.d.ts +6 -0
- package/dist/components/tui/tui-status-card.d.ts +7 -0
- package/dist/components/tui/tui-text.d.ts +10 -0
- package/dist/components/tui/tui-uri-text.d.ts +19 -0
- package/dist/components/tui/tui-write-result.d.ts +7 -0
- package/dist/components/tui/tui.d.ts +11 -1
- package/dist/components/tui/types.d.ts +527 -0
- package/dist/components/tui/use-tui-assist-position.d.ts +3 -0
- package/dist/components/tui/use-tui-completion.d.ts +14 -0
- package/dist/components/tui/use-tui-composer-keyboard.d.ts +25 -0
- package/dist/components/tui.js +1 -0
- package/dist/components/viking-bot/ark-adapter.d.ts +45 -0
- package/dist/components/viking-bot/ark-message-body.d.ts +16 -0
- package/dist/components/viking-bot/ark-message-list-view.d.ts +7 -0
- package/dist/components/viking-bot/ark-message-row.d.ts +19 -0
- package/dist/components/viking-bot/index.d.ts +10 -0
- package/dist/components/viking-bot/interaction/ask-human-fields.d.ts +10 -0
- package/dist/components/viking-bot/interaction/index.d.ts +4 -0
- package/dist/components/viking-bot/interaction/labels.d.ts +7 -0
- package/dist/components/viking-bot/interaction/lazy-interaction.d.ts +3 -0
- package/dist/components/viking-bot/interaction/schedule-input.d.ts +13 -0
- package/dist/components/viking-bot/interaction/style.css +189 -0
- package/dist/components/viking-bot/interaction/types.d.ts +188 -0
- package/dist/components/viking-bot/interaction/viking-bot-interaction.d.ts +9 -0
- package/dist/components/viking-bot/interaction.js +2 -0
- package/dist/components/viking-bot/labels.d.ts +2 -0
- package/dist/components/viking-bot/lazy-composer.d.ts +3 -0
- package/dist/components/viking-bot/message-groups.d.ts +12 -0
- package/dist/components/viking-bot/model.d.ts +252 -0
- package/dist/components/viking-bot/render-part.d.ts +12 -0
- package/dist/components/viking-bot/style.css +7133 -0
- package/dist/components/viking-bot/types.d.ts +140 -0
- package/dist/components/viking-bot/viking-bot-composer.d.ts +6 -0
- package/dist/components/viking-bot/viking-bot-message-list.d.ts +3 -0
- package/dist/components/viking-bot/viking-bot.d.ts +16 -1
- package/dist/components/viking-bot.js +4 -0
- package/dist/c~0.js +201 -0
- package/dist/file-preview-viewer~0.js +191 -0
- package/dist/f~0.js +356 -0
- package/dist/g~0.js +1207 -0
- package/dist/h~0.js +58 -0
- package/dist/icons/file-type-icon.d.ts +31 -0
- package/dist/icons/index.d.ts +33 -23
- package/dist/icons/nextjs-icon.d.ts +19 -0
- package/dist/icons.js +1 -25
- package/dist/index.d.ts +16 -2
- package/dist/index.js +8 -1
- package/dist/k~0.js +1440 -0
- package/dist/lk~0.js +233 -0
- package/dist/l~0.js +44 -0
- package/dist/modules/console/console.d.ts +4 -0
- package/dist/modules/console/index.d.ts +1 -0
- package/dist/modules/console/style.css +111 -0
- package/dist/modules/console/types.d.ts +101 -0
- package/dist/modules/console.js +1 -0
- package/dist/modules/file-browser/file-browser-toolbar-button.d.ts +10 -0
- package/dist/modules/file-browser/file-browser.d.ts +6 -0
- package/dist/modules/file-browser/index.d.ts +1 -0
- package/dist/modules/file-browser/style.css +158 -0
- package/dist/modules/file-browser/types.d.ts +101 -0
- package/dist/modules/file-browser.js +1 -0
- package/dist/modules/scope-cascade/controller.d.ts +6 -0
- package/dist/modules/scope-cascade/index.d.ts +3 -0
- package/dist/modules/scope-cascade/scope-cascade.d.ts +3 -0
- package/dist/modules/scope-cascade/style.css +456 -0
- package/dist/modules/scope-cascade/style.js +0 -0
- package/dist/modules/scope-cascade/types.d.ts +39 -0
- package/dist/modules/scope-cascade/use-scope-cascade.d.ts +5 -0
- package/dist/modules/scope-cascade.js +1 -0
- package/dist/modules/style.css +808 -0
- package/dist/modules/style.js +0 -0
- package/dist/n~0.js +727 -0
- package/dist/shared/components/tooltip/index.d.ts +1 -0
- package/dist/shared/components/tooltip/tooltip.d.ts +25 -0
- package/dist/shared/components/tooltip/types.d.ts +42 -0
- package/dist/shared/components/tooltip/use-tooltip-position.d.ts +38 -0
- package/dist/style.css +15138 -18
- package/dist/u~0.js +1601 -0
- package/dist/viking-bot-composer~0.js +164 -0
- package/dist/viking-bot-interaction~0.js +284 -0
- package/dist/w~0.js +19 -0
- package/package.json +46 -22
- package/dist/components/resource-import/resource-import.d.ts +0 -1
- package/dist/components/resource-import/style.css +0 -2
- package/dist/components/status-badge/status-badge.d.ts +0 -8
- package/dist/components/status-badge/style.css +0 -37
- package/dist/components/status-badge.js +0 -30
- /package/dist/components/{resource-import → viking-bot/interaction}/style.js +0 -0
- /package/dist/{components/status-badge → modules/console}/style.js +0 -0
- /package/dist/{components/resource-import.js → modules/file-browser/style.js} +0 -0
package/dist/u~0.js
ADDED
|
@@ -0,0 +1,1601 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment as external_react_Fragment, useCallback, useId, useRef, useState } from "react";
|
|
3
|
+
const SvgCodexDetail = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
4
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
6
|
+
width: 56,
|
|
7
|
+
height: 56,
|
|
8
|
+
fill: "none",
|
|
9
|
+
viewBox: "0 0 56 56",
|
|
10
|
+
...props,
|
|
11
|
+
children: [
|
|
12
|
+
/*#__PURE__*/ jsx("rect", {
|
|
13
|
+
width: 55,
|
|
14
|
+
height: 55,
|
|
15
|
+
x: 0.5,
|
|
16
|
+
y: 0.5,
|
|
17
|
+
stroke: "var(--ov-ui-agent-connect-border)",
|
|
18
|
+
rx: 11.5
|
|
19
|
+
}),
|
|
20
|
+
/*#__PURE__*/ jsx("rect", {
|
|
21
|
+
width: 36,
|
|
22
|
+
height: 36,
|
|
23
|
+
x: 10,
|
|
24
|
+
y: 10,
|
|
25
|
+
fill: "url(#codex-detail_svg__a)",
|
|
26
|
+
rx: 9.6
|
|
27
|
+
}),
|
|
28
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
29
|
+
children: [
|
|
30
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
31
|
+
id: "codex-detail_svg__a",
|
|
32
|
+
width: 1,
|
|
33
|
+
height: 1,
|
|
34
|
+
patternContentUnits: "objectBoundingBox",
|
|
35
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
36
|
+
xlinkHref: "#codex-detail_svg__b",
|
|
37
|
+
transform: "translate(-.125 -.125)scale(.00244)"
|
|
38
|
+
})
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ jsx("image", {
|
|
41
|
+
xlinkHref: "data:image/png;base64,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",
|
|
42
|
+
id: "codex-detail_svg__b",
|
|
43
|
+
width: 512,
|
|
44
|
+
height: 512,
|
|
45
|
+
preserveAspectRatio: "none"
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
const codex_detailreact = SvgCodexDetail;
|
|
52
|
+
const AGENT_CONNECT_COPY = {
|
|
53
|
+
zh: {
|
|
54
|
+
title: '连接 Agent',
|
|
55
|
+
mainstream: '接入主流 Agent',
|
|
56
|
+
custom: '开发自己的 Agent',
|
|
57
|
+
integration: '接入',
|
|
58
|
+
instructions: '完整指令',
|
|
59
|
+
copy: '复制并发送给 Agent',
|
|
60
|
+
copyMarkdown: '复制为 Markdown',
|
|
61
|
+
copied: '已复制',
|
|
62
|
+
failed: '复制失败,请重试',
|
|
63
|
+
notice: '接入后 Agent 能读到你在 OpenViking 里能看到的内容,若接入境外服务数据有可能传到境外。',
|
|
64
|
+
seeAgreement: '详见',
|
|
65
|
+
agreement: '《用户协议》',
|
|
66
|
+
apiKey: 'API Key',
|
|
67
|
+
overseas: '境外'
|
|
68
|
+
},
|
|
69
|
+
en: {
|
|
70
|
+
title: 'Connect Agent',
|
|
71
|
+
mainstream: 'Connect mainstream agents',
|
|
72
|
+
custom: 'Build your own agent',
|
|
73
|
+
integration: 'Integration',
|
|
74
|
+
instructions: 'Full instructions',
|
|
75
|
+
copy: 'Copy and send to Agent',
|
|
76
|
+
copyMarkdown: 'Copy as Markdown',
|
|
77
|
+
copied: 'Copied',
|
|
78
|
+
failed: 'Copy failed. Please retry.',
|
|
79
|
+
notice: 'Connected agents can read content available to you in OpenViking. Overseas services may transfer data abroad.',
|
|
80
|
+
seeAgreement: ' See ',
|
|
81
|
+
agreement: 'Terms of Service',
|
|
82
|
+
apiKey: 'API Key',
|
|
83
|
+
overseas: 'Overseas'
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const content_zh = {
|
|
87
|
+
codex: {
|
|
88
|
+
name: 'Codex',
|
|
89
|
+
description: '为 Codex 提供持久化的跨会话(session)记忆。一次安装,即可实现:在用户每次输入前自动召回记忆,每轮对话结束后进行增量捕获,并在上下文压缩(compaction)前将记忆提交给抽取器',
|
|
90
|
+
tags: [
|
|
91
|
+
'Plugin'
|
|
92
|
+
],
|
|
93
|
+
markdown: '## 步骤1:安装\n\n1. 在终端执行如下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **Codex**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 启动 Codex。首次启动会显示类似下面的 hook 审阅提示(具体界面随版本变化),选 **Trust all and continue**:\n\n ```text\n Hooks need review\n 6 hooks are new or changed.\n Hooks can run outside the sandbox after you trust them.\n\n 1. Review hooks\n > 2. Trust all and continue\n 3. Continue without trusting (hooks won\'t run)\n ```\n\n 如果跳过了提示或选了第 3 项,打开 `/hooks`,检查 OpenViking 的命令,再信任并开启需要使用的 hooks。在 `/plugins` 中确认 `openviking-memory` 已启用。新增或变更的 hooks 需要重新检查。\n2. 确认 OpenViking MCP 工具可用,让 Codex 调用 `health` 和 `list`。这一步验证工具连接;自动召回还需开启 `UserPromptSubmit`,对话采集需开启 `Stop`。\n3. 在已有记忆的工作目录中询问之前保存的信息,检查 hook 输出或调试日志。召回内容类似:\n\n ```text\n • UserPromptSubmit hook (completed)\n hook context: <openviking-context source="auto-recall" format="digest">\n OpenViking memory digest:\n ```\n\n 新账号可能还没有 profile 或相关记忆可注入。会话提交时机和完整验证步骤见下方文档。\n\n## 步骤3:开始使用\n\n在 Codex 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 鉴权失败 | 检查 `~/.openviking/ovcli.conf` 的 `api_key`,重启 Codex |\n| 连接失败 | `curl "$(jq -r \'.url\' ~/.openviking/ovcli.conf)/health"` |\n| `6 hooks need review`,或 Hook 不生效 | `/hooks` 里信任并开启,`/plugins` 里确认插件已启用 |\n| 需要日志 | `OPENVIKING_DEBUG=1`,看 `~/.openviking/logs/codex-hooks.log` |\n\n## 参考\n\n- 手动配置文档:[Codex](https://docs.openviking.net/zh/agent-integrations/04-codex)\n- 原理博客:[OpenViking for coding agents](https://blog.openviking.ai/post/openviking-coding-agent/)\n- 源码:[examples/codex-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/codex-memory-plugin)',
|
|
94
|
+
guides: []
|
|
95
|
+
},
|
|
96
|
+
'claude-code': {
|
|
97
|
+
name: 'Claude Code',
|
|
98
|
+
description: '为 Claude Code 添加跨项目、跨会话(session)的长期记忆功能。安装完成后,每轮对话均会自动召回相关记忆并捕获新内容,无需模型主动调用任何工具',
|
|
99
|
+
tags: [
|
|
100
|
+
'Plugin'
|
|
101
|
+
],
|
|
102
|
+
markdown: '## 步骤1:安装\n\n由于 Claude Code 安全策略限制,可能无法自动完成配置,推荐在终端中手动执行以下步骤。\n\n1. 在终端执行如下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **Claude Code**)、OpenViking 凭据、是否开启 Statusline 状态栏。\n3. 在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n4. OpenViking StatusLine 是输入框下方的一行状态提示栏,用于实时展示 OpenViking 记忆插件的运行状态。可根据个人需要选择「开启」或「跳过」。状态提示栏示例如下:\n\n ```text\n OV ✓ │ Fable 5 · ctx 42% │ ↪ 6 mem (0.92) · 50ms │ ✎ 573/20k · 2 arch\n ```\n\n## 步骤2:验证\n\n1. 重启 Claude Code。\n2. 执行 `/plugins` 命令,确认 installed 列表中显示 `openviking-memory` 已安装,且 `openviking` MCP 已连接:\n\n ```text\n User\n ❯ openviking-memory Plugin · openviking · ✔ enabled\n └ openviking MCP · ✔ connected\n ```\n\n3. 执行 `/mcp`,确认 OpenViking 显示为 connected。工具数量随服务端版本变化:\n\n ```text\n Built-in MCPs (always available)\n ❯ plugin:openviking-memory:openviking · ✔ connected\n ```\n\n4. 执行 `/openviking-memory:ov` 命令,确认服务状态正常:\n\n ```text\n OpenViking Memory Status\n ✅ Status: OpenViking server is healthy and running\n ```\n\n## 步骤3:开始使用\n\n在 Claude Code 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 插件未激活 | 重跑安装,或检查 `~/.openviking/ovcli.conf` |\n| 召回为空 | `curl "$(jq -r \'.url\' ~/.openviking/ovcli.conf)/health"` |\n| 401 / 403 | 检查鉴权凭据 |\n| 需要日志 | `OPENVIKING_DEBUG=1`,看 `~/.openviking/logs/cc-hooks.log` |\n\n## 参考\n\n- 手动配置文档:[Claude Code](https://docs.openviking.net/zh/agent-integrations/02-claude-code)\n- 原理博客:[OpenViking for coding agents](https://blog.openviking.ai/post/openviking-coding-agent/)\n- 源码:[examples/claude-code-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/claude-code-memory-plugin)',
|
|
103
|
+
guides: []
|
|
104
|
+
},
|
|
105
|
+
doubao: {
|
|
106
|
+
name: '豆包工作',
|
|
107
|
+
description: '通过连接器接入,为豆包工作提供持久化上下文记忆,接入后可在对话中自动召回相关记忆并存储新内容。',
|
|
108
|
+
tags: [
|
|
109
|
+
'MCP'
|
|
110
|
+
],
|
|
111
|
+
markdown: '## 步骤1:安装连接器\n\n1. 打开豆包工作,点击左侧导航栏的 **技能·连接器·伙伴**,搜索“OpenViking Context”,点击右侧的 <strong>+</strong>。\n\n\n2. 在“授权配置”窗口中填写 OpenViking USER API Key:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n3. 点击 **保存并连接**。页面顶部出现“连接器已安装”提示,且“OpenViking Context”右侧由 <strong>+</strong> 变为已添加状态,即表示接入完成。\n\n\n## 步骤2:验证\n\n1. 返回豆包主对话,点击对话框下方的 **连接器**,确认能够找到“OpenViking Context”。\n\n\n2. 点击对话框下方的 **更多技能**,确认能够找到“OpenViking 上下文数据库”,并让豆包调用 OpenViking 返回相关内容。\n\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 搜索不到“OpenViking Context” | 确认使用的是豆包工作;清除搜索条件后重新搜索;若仍未出现,请联系企业管理员确认连接器是否已对当前组织开放 |\n| 提示连接失败 | 检查 OpenViking USER API Key 是否正确 |',
|
|
112
|
+
guides: []
|
|
113
|
+
},
|
|
114
|
+
workbuddy: {
|
|
115
|
+
name: 'WorkBuddy',
|
|
116
|
+
description: '通过 MCP 工具,为 WorkBuddy 提供记忆召回与存储、知识资源管理、代码上下文检索等能力。',
|
|
117
|
+
tags: [
|
|
118
|
+
'MCP'
|
|
119
|
+
],
|
|
120
|
+
markdown: '## 步骤1:配置 MCP\n\n1. 打开 WorkBuddy,点击左侧导航栏的 **专家·技能·连接器**,进入 **连接器** 标签页。\n\n\n2. 点击右上角的 **自定义连接器**,进入 MCP 服务管理面板。\n\n\n3. 点击 **配置 MCP**,进入 MCP 配置编辑器。\n\n\n4. 在配置文件中填入以下内容:\n\n ```json\n {\n "mcpServers": {\n "OpenViking": {\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "Authorization": "Bearer {{OPENVIKING_API_KEY}}"\n }\n }\n }\n }\n ```\n\n5. 点击右上角的 **保存**。顶部出现“配置保存成功”的绿色提示后,配置即已保存。\n\n\n6. 返回 MCP 列表。如果系统提示“首次连接此 MCP 服务需要您的信任确认”,点击 **信任** 完成接入。\n\n\n## 步骤2:验证\n\n返回 MCP 列表页,确认 `OpenViking` 出现在“我的 MCP”中、状态为开启,展开后可看到已启用工具。\n\n\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| MCP 列表中未出现 `OpenViking` | 检查 JSON 配置格式并重新保存 |\n| MCP 连接状态异常 | 刷新连接;若仍异常,检查 JSON 配置及网络连通性 |',
|
|
121
|
+
guides: []
|
|
122
|
+
},
|
|
123
|
+
trae: {
|
|
124
|
+
name: 'TRAE',
|
|
125
|
+
description: '通过原生 Hook 与 MCP 工具,为 TRAE 和 TRAE CN 提供 prompt 自动召回与回合捕获',
|
|
126
|
+
tags: [
|
|
127
|
+
'Hook',
|
|
128
|
+
'MCP'
|
|
129
|
+
],
|
|
130
|
+
markdown: "## 步骤1:安装\n\n1. 在终端执行如下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(Trae 国际版勾选 **TRAE**,Trae 中国版勾选 **TRAE CN**,或勾选 **TraeCode CLI 2.0**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n**TRAE / TRAE CN**:在「设置 → MCP → 已配置的 MCP Servers」中确认能够看到 `openviking` 条目即表示接入成功。\n\n**TraeCode CLI 2.0**:启动 `trae-cli`,在 hook 审阅提示中选 **Trust all and continue**(具体界面随版本变化):\n\n```text\nHooks need review\n6 hooks are new or changed.\nHooks can run outside the sandbox after you trust them.\n\n 1. Review hooks\n> 2. Trust all and continue\n 3. Continue without trusting (hooks won't run)\n```\n\n如果跳过了提示或选了第 3 项,在 `/hooks` 中检查并开启 OpenViking hooks。执行 `trae-cli plugin list` 确认插件已启用。新增或变更的 hooks 需要重新检查;不同版本支持的会话生命周期见完整文档。\n\nMCP 条目可见只说明配置存在。让助手调用 OpenViking 的 `health` 和 `list` 验证连接;自动召回需另行检查:等之前的会话提交并处理完成后,在同一工作目录中新建会话,询问已保存的信息。\n\n## 步骤3:开始使用\n\n在 TRAE、TRAE CN 或 TraeCode CLI 2.0 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 没有自动召回 | 完全退出 TRAE,重启,再建会话 |\n| TraeCode CLI 2.0 装了插件但不召回 | 启动时的 Hook 信任被跳过:`/hooks` 里信任并开启,`/plugins` 里确认插件已启用 |\n| 连接 / 鉴权失败 | 检查 `~/.openviking/ovcli.conf`,重启客户端 |\n| 需要日志 | `~/.openviking/logs/trae-hooks.log`、`trae-cn-hooks.log` 或 `codex-hooks.log`(TraeCode CLI 2.0) |\n\n## 参考\n\n- 手动配置文档:[TRAE](https://docs.openviking.net/zh/agent-integrations/13-trae)\n- 源码:[examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)(TRAE / TRAE CN)、[examples/codex-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/codex-memory-plugin)(TraeCode CLI 2.0)",
|
|
131
|
+
guides: []
|
|
132
|
+
},
|
|
133
|
+
cursor: {
|
|
134
|
+
name: 'Cursor',
|
|
135
|
+
description: '一条命令安装 Cursor 生命周期 Hook、MCP 工具、Rules 与 Skills,实现自动记忆召回和会话捕获',
|
|
136
|
+
tags: [
|
|
137
|
+
'Plugin',
|
|
138
|
+
'Memory'
|
|
139
|
+
],
|
|
140
|
+
markdown: '## 步骤1:安装\n\n1. 在终端执行如下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **Cursor**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 点击「Customize → MCPs」,确认可以看到「openviking User」和「openviking Plugin」两项。\n2. 点击「Customize → Hooks」,确认可以看到「openviking-memory」条目。\n\n## 步骤3:开始使用\n\n在 Cursor 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| Hook 没跑 | 完全退出 Cursor,重启,再建会话 |\n| 连接 / 鉴权失败 | 检查 `~/.openviking/ovcli.conf`,重启 Cursor |\n| 需要日志 | `OPENVIKING_DEBUG=1`,看 `~/.openviking/logs/cursor-hooks.log` |\n\n## 参考\n\n- 手动配置文档:[Cursor](https://docs.openviking.net/zh/agent-integrations/12-cursor)\n- 源码:[examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)',
|
|
141
|
+
guides: []
|
|
142
|
+
},
|
|
143
|
+
openclaw: {
|
|
144
|
+
name: 'OpenClaw',
|
|
145
|
+
description: 'Plugin 接入,作为 OpenClaw 的 context engine,支持多 Agent 跨会话记忆与自迭代,通过 npm 安装助手工具一键完成配置',
|
|
146
|
+
tags: [
|
|
147
|
+
'Plugin'
|
|
148
|
+
],
|
|
149
|
+
markdown: '## 步骤1:安装\n\n1. 安装 OpenViking 插件:\n\n ```bash\n openclaw plugins install clawhub:@openviking/openclaw-plugin\n ```\n\n2. 运行配置向导,服务地址填 `{{OPENVIKING_BASE_URL}}`,API Key 填当前页面提供的 key:\n\n ```bash\n openclaw openviking setup\n ```\n\n 也可以一步完成配置,key 放在 `OPENVIKING_API_KEY` 中:\n\n ```bash\n openclaw openviking setup --base-url {{OPENVIKING_BASE_URL}} --api-key "$OPENVIKING_API_KEY"\n ```\n\n3. 配置 `peer_role`:`peer_role` 用于标识对话参与者的类型,并非权限角色。其中,`assistant` 表示不同的 Agent、工具或模型,`sender` 表示不同的消息发送者(旧值 `person` 仍兼容)。完成上述配置后,`peer_role` 默认为 `none`。如需调整 `peer_role`,可执行以下命令:\n\n ```bash\n openclaw openviking setup --reconfigure\n ```\n\n4. 重启 Gateway 使配置生效:\n\n ```bash\n openclaw gateway restart\n ```\n\n## 步骤2:验证\n\n1. 在终端执行如下命令检查接入状态:\n\n ```bash\n openclaw openviking status\n ```\n\n2. 返回如下结果即表示接入成功:\n\n ```text\n 🦣 OpenViking Plugin Status\n\n Status: Configured\n mode: remote\n baseUrl: `https://api.vikingdb.cn-beijing.volces.com/openviking`\n apiKey: set\n peer_role: none\n accountId: not set\n userId: not set\n slot: active\n\n ✓ Server reachable (version: v0.x.xx.x)\n ```\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 插件未生效 | 重跑安装,再执行 `openclaw gateway restart` |\n| 401 / 403 | 检查鉴权凭据 |\n\n## 参考\n\n- 手动配置文档:[OpenClaw](https://docs.openviking.net/zh/agent-integrations/03-openclaw)\n- 源码:[examples/openclaw-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/openclaw-plugin)',
|
|
150
|
+
guides: []
|
|
151
|
+
},
|
|
152
|
+
hermes: {
|
|
153
|
+
name: 'Hermes Agent',
|
|
154
|
+
description: '为 Hermes 提供长期记忆,自动捕获和召回。连接 OpenViking Service 或自有服务,也可通过外部插件使用 Quick Local。',
|
|
155
|
+
tags: [
|
|
156
|
+
'Provider'
|
|
157
|
+
],
|
|
158
|
+
markdown: '# 为 Hermes 配置 OpenViking Service\n\n[OpenViking Service](https://www.volcengine.com/product/openviking-service) 是\n火山引擎托管和运营的 OpenViking 云服务,无需安装服务端或配置本地模型。\n在 [OpenViking 控制台](https://console.volcengine.com/vikingdb/openviking/region:openviking+cn-beijing)\n开通服务,然后从**用户管理**的 **API Key** 中创建密钥。\n\n## 安装和配置\n\n在要使用的 Hermes profile 中运行:\n\n```bash\nhermes plugins install openviking --enable\nhermes memory setup openviking\n```\n\n安装时接受依赖安装提示。如果当前 Hermes 版本已内置 OpenViking,请跳过安装命令。\n\n在向导中:\n\n1. 选择 **Personal Agent** 可召回公共记忆和当前发送者的记忆,并保留现有历史设置。\n 选择 **Shared Agent** 可在每个群组或话题内共享历史,召回同一 OpenViking 用户\n 下所有发送者的记忆。Shared Agent 会要求确认。\n2. 若出现配置来源选项,选择 **Create new OpenViking profile**。也可以复用已保存的\n `ovcli.conf`。\n3. 选择 **OpenViking Service (VolcEngine Cloud)**。\n4. 输入服务 API Key。\n5. 选择保存位置。**Keep in Hermes only** 保存到 Hermes 的 `.env`。\n **Mirror to OpenViking store** 保存到本地 `ovcli.conf.<name>` 并关联到 Hermes。\n 两种方式都会将凭据保存在当前电脑。\n6. 保存 OpenViking profile 时,填写名称,例如 `hermes`。这只是本地配置名称,\n 不会创建用户或改变访问权限。\n\n然后启动新的 Hermes 会话:\n\n```bash\nhermes\n```\n\n外部插件还提供 **Quick Local**,可复用受支持的 Hermes LLM,安装本地服务和\nembedding 模型。要求和已知问题见[插件指南](https://hermes-agent.nousresearch.com/docs/plugins/openviking)。\n\n## 查看状态\n\n```bash\nhermes memory status\n```\n\n确认 provider 为 `openviking`,状态为 `available`。这只表示配置已保存,\n不代表服务健康或记忆抽取成功。\n\n## 故障排查\n\n| 问题 | 处理 |\n|------|------|\n| 插件未安装 | 在该 profile 中运行 `hermes plugins install openviking --enable`。 |\n| 使用了其他 provider | 重新运行 `hermes memory setup openviking`。 |\n| 状态不是 available | 检查保存的连接设置和关联的 `ovcli.conf`。 |\n\n## 更多信息\n\n- [Hermes 集成](https://docs.openviking.net/zh/agent-integrations/05-hermes)\n- [插件指南](https://hermes-agent.nousresearch.com/docs/plugins/openviking)',
|
|
159
|
+
guides: []
|
|
160
|
+
},
|
|
161
|
+
opencode: {
|
|
162
|
+
name: 'OpenCode',
|
|
163
|
+
description: '提供一个统一 OpenCode 插件,支持仓库上下文、记忆工具、session 同步与自动 recall',
|
|
164
|
+
tags: [
|
|
165
|
+
'Plugin'
|
|
166
|
+
],
|
|
167
|
+
markdown: '## 步骤1:安装\n\n1. 在终端执行以下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **OpenCode**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 重启 OpenCode。\n2. 输入 `/mcps` 命令,确认列表中显示 `openviking connected`。\n3. 在对话中明确要求调用 `openviking_search` 和 `openviking_read`,验证工具可用。自动召回由 hook 完成,不需要模型调用这些工具;可另开会话,询问已保存的信息来检查。\n\n## 步骤3:开始使用\n\n在 OpenCode 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 插件没加载 | 检查 `~/.config/opencode/plugins/openviking.js` 是否存在;不存在就重新执行安装 |\n| 连错服务 / 401 | 检查 `~/.openviking/ovcli.conf` 和 API Key |\n| 召回为空 | 确认云端实例里已有记忆 |\n\n## 参考\n\n- 手动配置文档:[OpenCode](https://docs.openviking.net/zh/agent-integrations/10-opencode)\n- 源码:[examples/opencode-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/opencode-plugin)',
|
|
168
|
+
guides: []
|
|
169
|
+
},
|
|
170
|
+
'deepseek-harness': {
|
|
171
|
+
name: 'DeepSeek Harness',
|
|
172
|
+
description: '为 DeepSeek Harness 提供跨项目、跨会话的长期记忆;安装后可自动召回相关记忆、捕获新内容,并直接使用 OpenViking 工具与 openviking-memory 技能,无需额外配置。',
|
|
173
|
+
tags: [
|
|
174
|
+
'Plugin'
|
|
175
|
+
],
|
|
176
|
+
markdown: '## 步骤1:安装\n\n运行安装器:\n\n```bash\ncurl -fsSL https://openviking.ai/install | bash\n# AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n```\n\n安装器会依次询问 Harness 和 OpenViking 凭据:\n\n1. Harness 选择 **DeepSeek Harness**。插件会装到 `web` profile;要装到其他 profile,把命令末尾的 `bash` 换成 `bash -s -- --dsh-profile <name>`。\n 在装有 DeepSeek Harness Desktop 桌面应用的 macOS 上,同时选择 **DeepSeek Harness Desktop**(检测到 Desktop 时默认选中)。运行安装器前先打开一次 Desktop 再用 ⌘Q 退出,装完后重新打开。Windows 上手动安装:先把服务地址和 API Key 写进 `%USERPROFILE%\\.openviking\\ovcli.conf`,再在 Desktop 的 **插件** 页点击 **添加插件**,输入 `@openviking/dsh-memory-plugin` 并 **安装**(见完整文档的[手动安装](https://docs.openviking.net/zh/agent-integrations/17-dsh#desktop-plugins-page))。\n2. 连接方式选择 **火山引擎 OpenViking 云服务**,并填入 API Key:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## 步骤2:验证\n\n1. 启动 `dsh --profile web` 并打开新会话,确认会话顶部显示“上下文注入 · openviking-memory”。\n2. 确认模型具有 `mcp__openviking__*` 工具,并能够在会话中正常调用。\n3. Desktop 用户在应用中新开会话,检查以上两点。`--dump-config` 对 Desktop 的 `desktop` profile 不可用,改为确认 `~/.dsh/profiles/desktop/package.json` 的 `dsh.profile.bundles` 中有该插件。\n\n## 步骤3:开始使用\n\n在 DeepSeek Harness 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 现象 | 排查方向 |\n|---|---|\n| 没有上下文注入,也没有 OpenViking 工具 | 执行 `dsh --profile web --dump-config`,确认输出中包含 `openviking-memory`;若缺失,重新运行安装器或执行 `dsh plugin --profile web add @openviking/dsh-memory-plugin` |\n| 安装后 Desktop 中没有任何变化 | 用 ⌘Q 退出 Desktop(关闭窗口只会隐藏)后重新打开;在 **插件** 页确认插件已启用 |\n| 提示 `profile "desktop" is managed exclusively by the Electron application` | 只有 Desktop 自带的 `dsh` 命令能修改 `desktop` profile,且任何命令都无法启动它;见完整文档的 [Desktop 一节](https://docs.openviking.net/zh/agent-integrations/17-dsh#deepseek-harness-desktop) |\n| 插件安装到了错误的 profile | 安装器默认使用 `web`;把命令末尾的 `bash` 换成 `bash -s -- --dsh-profile <name>` 重新运行 |\n| DSH 提示插件与当前 dsh 版本不兼容 | 插件接受 `0.1.0-rc.6` 起的所有 DSH 0.x 版本;DSH 已是 1.0 或更高时,升级插件或运行 `dsh plugin allow-version` |\n| 升级 DSH 后插件启动失败 | 更新的 0.x 版本不经预先验证就会被接受;请把 DSH 固定到已验证的版本(如 `0.2.0-rc.2`),并提 issue |\n| 安装时提示包不在 npm registry 中 | pnpm 默认拒绝发布不满 24 小时的版本;可稍后重试,或把精确版本加入 `pnpm-workspace.yaml` 的 `minimumReleaseAgeExclude` |\n| 无法召回历史记忆 | 先执行 `curl http://localhost:1933/health` 确认服务端正常;再检查端点配置,并确认 prompt 不少于 3 个字符 |\n| OpenViking 返回 401 / 403 | 检查 API Key;可信模式部署还需检查 `OPENVIKING_ACCOUNT` 与 `OPENVIKING_USER` |\n| 召回结果混入其他项目的记忆 | 设置 `OPENVIKING_RECALL_PEER_SCOPE=actor`,将 peer 记忆限定为当前 peer;用户级记忆仍会共享 |\n| 异常退出后没有 commit | commit 由 token 阈值和会话 teardown 触发;排队的写入会在下次会话开始时重放 |\n\n## 参考\n\n- 完整文档:[DeepSeek Harness](https://docs.openviking.net/zh/agent-integrations/17-dsh)\n- 源码:[examples/dsh-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/dsh-memory-plugin)',
|
|
177
|
+
guides: []
|
|
178
|
+
},
|
|
179
|
+
deerflow: {
|
|
180
|
+
name: 'DeerFlow',
|
|
181
|
+
description: 'DeerFlow 支持通过 MemoryManager 和 MCP 接入,实现记忆的自动写入、召回、注入及管理。建议同时启用两种方式,以获得完整的记忆体验。',
|
|
182
|
+
tags: [
|
|
183
|
+
'MemoryManager',
|
|
184
|
+
'MCP'
|
|
185
|
+
],
|
|
186
|
+
markdown: 'DeerFlow 支持通过 MemoryManager 接入 OpenViking 作为长期记忆后端。接入后,DeerFlow 会将对话消息写入 OpenViking,并在模型调用前通过 OpenViking 进行记忆召回,再注入到上下文中。\n\n本配置支持一个 DeerFlow 用户,使用 OpenViking `api_key` 模式下的普通 USER API Key。`owner_user_id: default` 适用于未开启 DeerFlow 登录认证的场景;已开启时填写对应的 DeerFlow 用户 ID。此接入不会为多用户自动分配凭据,切换前还需移除旧的 trusted 身份默认值。详见 [DeerFlow 的认证与迁移说明](https://github.com/bytedance/deer-flow/blob/main/docs/OPENVIKING.md#authentication-boundary)。\n\n## 步骤 1:配置 OpenViking 鉴权信息\n\n在 DeerFlow 项目根目录下编辑 `.env` 文件,把 API Key 填进去:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## 步骤 2:修改 DeerFlow 的 memory 配置\n\n打开项目根目录下的 `config.yaml`,找到 `memory:` 配置段,将默认的 DeerMem 配置替换为 OpenViking 配置:\n\n```yaml\nmemory:\n enabled: true\n injection_enabled: true\n shutdown_flush_timeout_seconds: 30\n manager_class: openviking\n mode: middleware\n backend_config:\n base_url: {{OPENVIKING_BASE_URL}}\n owner_user_id: default\n api_key_env: OPENVIKING_API_KEY\n startup_policy: fail_fast\n failure_policy:\n read: fail_open\n write: log_and_drop\n retrieval:\n top_k: 8\n score_threshold: 0.25\n max_injection_chars: 12000\n content_mode: overview\n injection_query: >-\n user profile preferences important entities events ongoing goals\n constraints and prior decisions\n```\n\n## 步骤 3:重启 DeerFlow\n\n保存 `.env` 和 `config.yaml` 后,重新启动 DeerFlow:\n\n```bash\nmake dev\n```\n\n## 步骤 4:验证 OpenViking 是否接入成功\n\n在项目根目录下查看 Gateway 日志:\n\n```bash\ngrep -i "memory manager resolved\\|openviking\\|deermem" logs/gateway.log\n```\n\n成功日志示例:\n\n```text\nMemory manager resolved: OpenVikingMemoryManager (manager_class=\'openviking\')\nHTTP Request: GET {{OPENVIKING_BASE_URL}}/health "HTTP/1.1 200 OK"\n```\n\n## 步骤 5:验证写入与召回\n\n下列日志可确认请求已接收、上下文已注入。等提取完成后,以同一用户另开会话,询问上一会话中一条容易识别的信息,验证记忆是否能召回:\n\n```bash\ngrep -Ei "messages/batch|commit|search/find|has_memory" logs/gateway.log | tail -100\n```\n\n成功日志示例:\n\n```text\n/messages/batch "HTTP/1.1 200 OK"\n/commit "HTTP/1.1 200 OK"\n/search/find "HTTP/1.1 200 OK"\nhas_memory=True\n```\n\n## 故障排查\n\n| 现象 | 原因 | 修复 |\n|------|------|------|\n| DeerFlow 启动失败,提示 OpenViking 配置错误 | `config.yaml` 中 OpenViking 配置不完整或格式错误 | 检查 `config.yaml` 中是否已配置 `manager_class: openviking`,并确认 `base_url`、`api_key_env` 等字段正确 |\n| DeerFlow 未接入 OpenViking | `memory.manager_class` 未改为 `openviking`,或修改配置后未重启服务 | 保存配置后重新启动 DeerFlow,并确认日志中出现 `OpenVikingMemoryManager` |\n| 远程认证失败,返回 401 或 403 | OpenViking API Key 缺失、错误或无权限 | 检查 `.env` 中的 `OPENVIKING_API_KEY` 是否正确 |\n| 检索失败,但 DeerFlow 仍继续回复 | 当前配置采用 `read: fail_open`,属于预期行为 | OpenViking 检索失败时不会注入记忆,但不会影响主 Agent 正常回复 |\n| 回复已生成,但记忆写入失败 | 当前配置采用 `write: log_and_drop`,写入失败会被记录到日志中 | 检查并修复 OpenViking 服务、网络和鉴权配置,后续新消息可继续写入 |\n| 已写入消息,但页面未立即看到记忆 | OpenViking 的摘要和记忆提取是异步完成的 | 等待后台任务完成后再查看 |\n| 服务关闭时仍有记忆操作未完成 | 系统会在 `shutdown_flush_timeout_seconds` 配置的时间内等待其完成 | 若等待超时,或 OpenViking 在关闭期间不可用,部分记忆写入可能无法完成。可适当调大该配置,并检查关闭期间 OpenViking 的网络和服务状态 |',
|
|
187
|
+
guides: [
|
|
188
|
+
{
|
|
189
|
+
id: 'memory-manager',
|
|
190
|
+
label: 'MemoryManager 接入',
|
|
191
|
+
markdown: 'DeerFlow 支持通过 MemoryManager 接入 OpenViking 作为长期记忆后端。接入后,DeerFlow 会将对话消息写入 OpenViking,并在模型调用前通过 OpenViking 进行记忆召回,再注入到上下文中。\n\n本配置支持一个 DeerFlow 用户,使用 OpenViking `api_key` 模式下的普通 USER API Key。`owner_user_id: default` 适用于未开启 DeerFlow 登录认证的场景;已开启时填写对应的 DeerFlow 用户 ID。此接入不会为多用户自动分配凭据,切换前还需移除旧的 trusted 身份默认值。详见 [DeerFlow 的认证与迁移说明](https://github.com/bytedance/deer-flow/blob/main/docs/OPENVIKING.md#authentication-boundary)。\n\n## 步骤 1:配置 OpenViking 鉴权信息\n\n在 DeerFlow 项目根目录下编辑 `.env` 文件,把 API Key 填进去:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## 步骤 2:修改 DeerFlow 的 memory 配置\n\n打开项目根目录下的 `config.yaml`,找到 `memory:` 配置段,将默认的 DeerMem 配置替换为 OpenViking 配置:\n\n```yaml\nmemory:\n enabled: true\n injection_enabled: true\n shutdown_flush_timeout_seconds: 30\n manager_class: openviking\n mode: middleware\n backend_config:\n base_url: {{OPENVIKING_BASE_URL}}\n owner_user_id: default\n api_key_env: OPENVIKING_API_KEY\n startup_policy: fail_fast\n failure_policy:\n read: fail_open\n write: log_and_drop\n retrieval:\n top_k: 8\n score_threshold: 0.25\n max_injection_chars: 12000\n content_mode: overview\n injection_query: >-\n user profile preferences important entities events ongoing goals\n constraints and prior decisions\n```\n\n## 步骤 3:重启 DeerFlow\n\n保存 `.env` 和 `config.yaml` 后,重新启动 DeerFlow:\n\n```bash\nmake dev\n```\n\n## 步骤 4:验证 OpenViking 是否接入成功\n\n在项目根目录下查看 Gateway 日志:\n\n```bash\ngrep -i "memory manager resolved\\|openviking\\|deermem" logs/gateway.log\n```\n\n成功日志示例:\n\n```text\nMemory manager resolved: OpenVikingMemoryManager (manager_class=\'openviking\')\nHTTP Request: GET {{OPENVIKING_BASE_URL}}/health "HTTP/1.1 200 OK"\n```\n\n## 步骤 5:验证写入与召回\n\n下列日志可确认请求已接收、上下文已注入。等提取完成后,以同一用户另开会话,询问上一会话中一条容易识别的信息,验证记忆是否能召回:\n\n```bash\ngrep -Ei "messages/batch|commit|search/find|has_memory" logs/gateway.log | tail -100\n```\n\n成功日志示例:\n\n```text\n/messages/batch "HTTP/1.1 200 OK"\n/commit "HTTP/1.1 200 OK"\n/search/find "HTTP/1.1 200 OK"\nhas_memory=True\n```\n\n## 故障排查\n\n| 现象 | 原因 | 修复 |\n|------|------|------|\n| DeerFlow 启动失败,提示 OpenViking 配置错误 | `config.yaml` 中 OpenViking 配置不完整或格式错误 | 检查 `config.yaml` 中是否已配置 `manager_class: openviking`,并确认 `base_url`、`api_key_env` 等字段正确 |\n| DeerFlow 未接入 OpenViking | `memory.manager_class` 未改为 `openviking`,或修改配置后未重启服务 | 保存配置后重新启动 DeerFlow,并确认日志中出现 `OpenVikingMemoryManager` |\n| 远程认证失败,返回 401 或 403 | OpenViking API Key 缺失、错误或无权限 | 检查 `.env` 中的 `OPENVIKING_API_KEY` 是否正确 |\n| 检索失败,但 DeerFlow 仍继续回复 | 当前配置采用 `read: fail_open`,属于预期行为 | OpenViking 检索失败时不会注入记忆,但不会影响主 Agent 正常回复 |\n| 回复已生成,但记忆写入失败 | 当前配置采用 `write: log_and_drop`,写入失败会被记录到日志中 | 检查并修复 OpenViking 服务、网络和鉴权配置,后续新消息可继续写入 |\n| 已写入消息,但页面未立即看到记忆 | OpenViking 的摘要和记忆提取是异步完成的 | 等待后台任务完成后再查看 |\n| 服务关闭时仍有记忆操作未完成 | 系统会在 `shutdown_flush_timeout_seconds` 配置的时间内等待其完成 | 若等待超时,或 OpenViking 在关闭期间不可用,部分记忆写入可能无法完成。可适当调大该配置,并检查关闭期间 OpenViking 的网络和服务状态 |'
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: 'mcp',
|
|
195
|
+
label: 'MCP 接入',
|
|
196
|
+
markdown: 'DeerFlow 支持通过 MCP Server 接入 OpenViking。MCP 接入的核心价值是打通知识检索能力,让 DeerFlow Agent 能够在任务执行过程中主动搜索、读取和使用 OpenViking 中的记忆与知识。\n\n## 步骤 1:配置 OpenViking 鉴权信息\n\n在 DeerFlow 项目根目录下编辑 `.env` 文件,把 API Key 填进去:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## 步骤 2:创建 MCP 配置文件\n\n复制 `extensions_config.example.json` 到项目根目录下的 `extensions_config.json`,用于配置 DeerFlow 可加载的 MCP Server:\n\n```bash\ncp extensions_config.example.json extensions_config.json\n```\n\n## 步骤 3:配置 OpenViking MCP Server\n\n打开项目根目录下的 `extensions_config.json`,在 `mcpServers` 中添加 OpenViking 配置:\n\n```json\n{\n "mcpServers": {\n "openviking": {\n "enabled": true,\n "type": "http",\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "X-API-Key": "$OPENVIKING_API_KEY"\n }\n }\n }\n}\n```\n\n## 步骤 4:重启 DeerFlow\n\n保存 `.env` 和 `extensions_config.json` 后,重新启动 DeerFlow:\n\n```bash\nmake dev\n```\n\n## 故障排查\n\n| 现象 | 原因 | 修复 |\n|------|------|------|\n| DeerFlow 启动后未加载 OpenViking MCP Server | `extensions_config.json` 未配置、配置格式错误,或 `enabled` 未设置为 `true` | 检查 `mcpServers.openviking` 配置,并确认 JSON 格式正确 |\n| OpenViking MCP 工具未出现在 Agent 可用工具中 | MCP 配置未生效,或服务未重启 | 保存配置后重启 DeerFlow,或刷新 MCP 配置缓存 |\n| 调用 OpenViking MCP 工具失败,返回 401 或 403 | API Key 缺失、错误或无权限 | 检查 `.env` 中的 `OPENVIKING_API_KEY` 是否正确,并确认 Header 使用 `X-API-Key` |\n| MCP Server 连接失败 | `url` 配置错误,或 DeerFlow Gateway 无法访问 OpenViking MCP Server | 检查 OpenViking MCP Server 地址、网络连通性和 Docker 网络配置 |\n| 修改 `.env` 后仍然使用旧鉴权信息 | 环境变量未重新加载,或 MCP 配置缓存未刷新 | 重启 DeerFlow,或调用 `/api/mcp/cache/reset` 刷新缓存 |\n| Agent 没有主动调用 OpenViking 工具 | MCP 工具由模型按需调用,不是自动记忆后端 | 在提示词中明确要求使用 OpenViking 工具,或改用 MemoryManager 接入实现自动召回 |'
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
pi: {
|
|
201
|
+
name: 'pi',
|
|
202
|
+
description: '为 pi 提供跨会话长期记忆,自动召回、逐轮捕获并接管上下文;服务端的 MCP 工具注册为 pi 原生工具',
|
|
203
|
+
tags: [
|
|
204
|
+
'Plugin'
|
|
205
|
+
],
|
|
206
|
+
markdown: '## 步骤1:安装\n\n1. 在终端执行以下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **pi**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 启动 `pi`,确认底部状态栏显示 `OV ✓`。\n2. 输入 `/viking` 命令,确认显示当前 session 映射和已注册的 `openviking_*` 工具数量。\n3. 新开会话,询问之前提到过的信息,确认召回生效。\n\n## 步骤3:开始使用\n\n在 pi 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 扩展没加载 | 检查 `~/.pi/agent/extensions/openviking/index.ts` 是否存在;不存在就重新执行安装。不要再用 `pi install` 注册,否则会加载两遍 |\n| `/viking` 命令出现两个 | 运行 `pi remove ~/.pi/agent/extensions/openviking`,删掉多余的 `packages` 条目 |\n| 状态栏显示 `OV ✗` / 401 | 检查 `~/.openviking/ovcli.conf` 和 API Key |\n| 状态栏显示 `tools ✗` | 运行 `/viking` 查看握手错误;`/mcp` 拒绝 root API Key,请改用 user key |\n\n## 参考\n\n- 手动配置文档:[pi](https://docs.openviking.net/zh/agent-integrations/11-pi)\n- 源码:[examples/pi-coding-agent-extension](https://github.com/volcengine/OpenViking/tree/main/examples/pi-coding-agent-extension)',
|
|
207
|
+
guides: []
|
|
208
|
+
},
|
|
209
|
+
zcode: {
|
|
210
|
+
name: 'ZCode',
|
|
211
|
+
description: '通过生命周期 Hook 和 MCP 工具,为 ZCode 提供画像注入、按问题召回和逐轮捕获',
|
|
212
|
+
tags: [
|
|
213
|
+
'Hook',
|
|
214
|
+
'MCP'
|
|
215
|
+
],
|
|
216
|
+
markdown: "## 步骤1:安装\n\n1. 在终端执行以下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **ZCode**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 重启 ZCode。\n2. 确认 `~/.zcode/cli/config.json` 包含 `hooks.enabled: true`、`hooks.events` 下的 OpenViking 条目,以及 `mcp.servers.openviking`。\n3. 运行 `node ~/.openviking/agent-integrations/zcode/scripts/ov-memory-doctor.mjs`,检查安装状态和服务端连接。\n\n## 步骤3:开始使用\n\n在 ZCode 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| Hook 未执行 | 重新执行安装并重启 ZCode |\n| MCP 工具未出现 | 检查 `~/.zcode/cli/config.json` 中 `mcp.servers.openviking` 的绝对路径命令 |\n| 重复捕获 | 先运行 `curl -fsSL https://openviking.ai/install \\| bash -s -- --uninstall --yes --harness zcode`,再重新安装 |\n| 需要日志 | 设置 `OPENVIKING_DEBUG=1`,查看 `~/.openviking/logs/zcode-hooks.log` |\n\n## 参考\n\n- 手动配置文档:[ZCode](https://docs.openviking.net/zh/agent-integrations/08-community-plugins)\n- 源码:[examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)",
|
|
217
|
+
guides: []
|
|
218
|
+
},
|
|
219
|
+
'kimi-code': {
|
|
220
|
+
name: 'Kimi Code',
|
|
221
|
+
description: 'Kimi Code 原生插件,自动召回记忆、捕获对话,并提供 OpenViking MCP 工具',
|
|
222
|
+
tags: [
|
|
223
|
+
'Plugin'
|
|
224
|
+
],
|
|
225
|
+
markdown: '## 步骤1:安装\n\n1. 在终端执行以下安装命令:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agent 如不确定是否执行,可先阅读脚本头部,其中写明了它会做什么、如何核实。\n ```\n\n2. 安装器会依次询问以下信息:要安装的 harness(勾选 **Kimi Code**)、OpenViking 凭据。在 OpenViking 凭据配置中,选择连接至「火山引擎 OpenViking 云服务 [api.vikingdb.cn-beijing.volces.com]」,并填入 API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## 步骤2:验证\n\n1. 在 Kimi Code 中运行 `/reload`,或新建会话。\n2. 确认 `~/.kimi-code/plugins/installed.json` 中有 `openviking-memory` 条目。\n3. 新开会话,询问之前提到过的信息,确认召回生效。\n\n## 步骤3:开始使用\n\n在 Kimi Code 中新开一个会话,发送:\n\n```text\n按 https://docs.openviking.net/agents/zh/onboarding.md 带我完成 OpenViking 首次使用。\n```\n\nAgent 会检查连接,并带你完成首次使用。\n\n## 故障排查\n\n| 问题 | 处理 |\n|---|---|\n| 插件没加载 | 检查 `~/.kimi-code/plugins/managed/openviking-memory/` 是否存在;不存在就重新执行安装,再运行 `/reload` |\n| 连错服务 / 401 | 检查 `~/.openviking/ovcli.conf` 和 API Key |\n| 需要日志 | 设置 `OPENVIKING_DEBUG=1`,查看 `~/.openviking/logs/kimicode-hooks.log` |\n| 只卸载该插件 | `curl -fsSL https://openviking.ai/install \\| bash -s -- --uninstall --yes --harness kimicode` |\n\n## 参考\n\n- 手动配置文档:[Kimi Code](https://docs.openviking.net/zh/agent-integrations/08-community-plugins)\n- 源码:[examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)',
|
|
226
|
+
guides: []
|
|
227
|
+
},
|
|
228
|
+
mcp: {
|
|
229
|
+
name: 'MCP 接入',
|
|
230
|
+
description: '与任意支持 MCP 的客户端接入',
|
|
231
|
+
tags: [],
|
|
232
|
+
markdown: '请为当前 Agent 安装或更新 OpenViking MCP,并安装最新官方 skills。\n\n### 步骤 1:MCP 配置\n\n使用以下连接配置:\n\n```json\n{\n "mcpServers": {\n "ov-mcp-server": {\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "Authorization": "Bearer {{OPENVIKING_API_KEY}}"\n }\n }\n }\n}\n```\n\n自行识别客户端及其支持的配置方式(设置界面、配置文件或安装命令),不假设支持 JSON 合并。若已有 OpenViking MCP server,先让我选择“沿用现有连接”或“使用上述新配置”,选择后再操作;保留其他 MCP 服务,不重复添加同一服务。使用已提供的 Key,不重复索取,不回显或写入命令参数、日志与规则。\n\n按官方方式升级已有的本地 MCP 组件;远程 HTTPS MCP 则更新所选连接并重新启用,不将重连称为升级了云端服务。\n\n### 步骤 2:安装最新 skills\n\n从 https://github.com/volcengine/OpenViking/tree/main/agent-plugins/skills 获取全部最新 skill 包,安装或更新到客户端支持的位置,保留完整附带文件;已有定制先说明差异再处理。\n\n### 步骤 3:测试工具有效性\n\n重新加载后,确认 MCP 工具列表可见,调用 OpenViking 的 `health` 工具校验有效性,再用 `list` 查看当前账号可访问的目录,并确认安装的 skills 可发现。`ov health` 只验证 CLI 连接,不能证明这个客户端的 MCP 已接通。',
|
|
233
|
+
guides: []
|
|
234
|
+
},
|
|
235
|
+
cli: {
|
|
236
|
+
name: 'CLI 接入',
|
|
237
|
+
description: 'OpenViking CLI 支持开发者在终端直接安装、配置和使用,也可以把安装配置指令交给 AI Agent,让它像 skill 一样学会并记住 CLI 用法。',
|
|
238
|
+
tags: [],
|
|
239
|
+
markdown: '按步骤复制以下命令到你的终端,运行即可完成安装、配置和使用 OpenViking CLI:\n\n### 步骤1:安装 OpenViking CLI,并进入配置流程:\n\n```bash\nnpm i -g @openviking/cli && ov config\n```\n\n\n### 步骤2:按提示填写 OpenViking Base URL 和 API Key\n\n- Base URL: 复制以下 Base URL 到你的终端\n```text\n{{OPENVIKING_BASE_URL}}\n```\n- API Key: 把 API Key 粘贴到终端\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n\n### 步骤3:配置完成后,可运行以下命令查看 CLI 用法:\n\n```bash\nov config validate\nov health\nov --help\n```',
|
|
240
|
+
guides: [
|
|
241
|
+
{
|
|
242
|
+
id: 'human',
|
|
243
|
+
label: '手动终端安装',
|
|
244
|
+
markdown: '按步骤复制以下命令到你的终端,运行即可完成安装、配置和使用 OpenViking CLI:\n\n### 步骤1:安装 OpenViking CLI,并进入配置流程:\n\n```bash\nnpm i -g @openviking/cli && ov config\n```\n\n\n### 步骤2:按提示填写 OpenViking Base URL 和 API Key\n\n- Base URL: 复制以下 Base URL 到你的终端\n```text\n{{OPENVIKING_BASE_URL}}\n```\n- API Key: 把 API Key 粘贴到终端\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n\n### 步骤3:配置完成后,可运行以下命令查看 CLI 用法:\n\n```bash\nov config validate\nov health\nov --help\n```'
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
id: 'agent',
|
|
248
|
+
label: '通过 AI Agent 安装',
|
|
249
|
+
markdown: '将下方提示词复制给你的 AI 助手(Claude Code、Codex、Cursor、Trae 等),让它完成 OpenViking CLI 安装、配置和连接验证:\n\n```text\n请先向用户询问 OpenViking API Key,并记为 OPENVIKING_API_KEY。\n\n请在 ~/.openviking/ovcli.conf 写入以下内容,将 ${OPENVIKING_API_KEY} 替换为用户提供的实际 key;CLI 不会在此文件中展开环境变量:\n{\n "url": "{{OPENVIKING_BASE_URL}}",\n "api_key": "${OPENVIKING_API_KEY}"\n}\n\n如发现 ~/.openviking/ovcli.conf 已存在且内容冲突,请先询问用户是否备份原文件,并在得到确认后再覆盖。\n\n请安装 OpenViking CLI:\nnpm i -g @openviking/cli\n\n安装完成后,请运行:\nov config validate\nov health\nov --help\n\n请查阅 ov --help 和具体命令的 --help,再总结常用操作。把常用操作写入长期记忆,只记录用法,不记录 API Key 或原始配置文件。\n```'
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
api: {
|
|
254
|
+
name: 'API 接入',
|
|
255
|
+
description: '标准 REST API,灵活调用所有能力',
|
|
256
|
+
tags: [],
|
|
257
|
+
markdown: '## 步骤 1: 写入资源\n在运行代码的 Python 环境中安装 `requests`(`python -m pip install requests`)。替换本地文件路径和完整目标 URI,目标需尚未占用;服务地址和 API Key 由页面填入。\n\n```python\nimport json\nfrom pathlib import Path\n\nimport requests\n\nurl = "{{OPENVIKING_BASE_URL}}"\napi_key = "{{OPENVIKING_API_KEY}}"\nfile_path = Path("[TODO]your-file-path") # e.g. test.txt\nresource_to = "[TODO]your-resource-path" # e.g. viking://resources/test.txt\nreason = "[TODO]your-reason" # e.g. External API documentation\n\n# 1. Initialize request headers.\nheaders = {\n "Content-Type": "application/json",\n "Authorization": "Bearer " + api_key,\n}\n\ndef post_json(path: str, payload: dict, timeout: float):\n response = requests.post(f"{url}{path}", headers=headers, json=payload, timeout=timeout)\n response.raise_for_status()\n return response.json()\n\n\n# 2. Upload the local file to a temporary resource.\nwith file_path.open("rb") as file:\n result = requests.post(\n f"{url}/api/v1/resources/temp_upload",\n headers={\n "Authorization": "Bearer " + api_key,\n },\n files={"file": (file_path.name, file, "application/octet-stream")},\n timeout=120.0,\n )\nresult.raise_for_status()\nresult = result.json()\nprint(json.dumps(result, ensure_ascii=False, indent=2))\ntemp_file_id = result["result"]["temp_file_id"]\n\n# 3. Create a resource from the temporary file.\nresult = post_json(\n "/api/v1/resources",\n {\n "temp_file_id": temp_file_id,\n "source_name": file_path.name,\n "to": resource_to,\n "reason": reason,\n },\n 120.0,\n)\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n```\n\n## 步骤 2: 写入记忆\n复用步骤 1 的导入、连接配置和 `post_json` 函数。创建会话、写入消息,再提交记忆提取:\n\n```python\ntext = "[TODO]your-message-text" # e.g. I am a developer\n \n# Create a session.\nsession = post_json("/api/v1/sessions", {}, 360.0)\nsession_id = session["result"]["session_id"]\n\n# Add a message.\npost_json(\n f"/api/v1/sessions/{session_id}/messages",\n {\n "role": "user",\n "parts": [{"type": "text", "text": text}],\n },\n 360.0,\n)\n\n# Commit the session.\nresult = post_json(\n f"/api/v1/sessions/{session_id}/commit",\n {"telemetry": False},\n 360.0,\n)\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n```\n\n资源导入和会话提交可能在后台处理完成前返回。若 `result["result"]` 中包含 `task_id`,用相同鉴权头请求 `GET /api/v1/tasks/{task_id}`,直到状态为 `completed`、`failed` 或 `cancelled`;先处理失败,再读取或检索结果。无待处理内容的 commit 可能不返回任务。',
|
|
258
|
+
guides: []
|
|
259
|
+
},
|
|
260
|
+
sdk: {
|
|
261
|
+
name: 'SDK 接入',
|
|
262
|
+
description: '多语言 SDK 封装,集成更便捷、高效',
|
|
263
|
+
tags: [],
|
|
264
|
+
markdown: '## 步骤 1:安装 Python SDK\n在运行代码的 Python 环境中安装独立 SDK:\n\n```bash\npython -m pip install --upgrade openviking-sdk\n```\n\n## 步骤 2 初始化客户端\n使用当前服务地址和 API Key 创建客户端,后续步骤复用该客户端:\n\n```python\nfrom openviking_sdk import SyncHTTPClient, TextPart\n\nurl = "{{OPENVIKING_BASE_URL}}"\napi_key = "{{OPENVIKING_API_KEY}}"\n\nclient = SyncHTTPClient(\n url=url,\n api_key=api_key,\n timeout=120.0,\n)\nclient.initialize()\n```\n\n\n## 步骤 3:写入资源\n将本地文件路径和目标 URI 替换为实际值。`to` 是完整目标 URI,请使用尚未占用的路径:\n\n```python\nfile_path = "[TODO]your-file-path"\nresource_to = "[TODO]your-resource-path" # e.g. viking://resources/my-document\nreason = "[TODO]your-reason" # e.g. External API documentation\n\n# Reuse the initialized client.\nresult = client.add_resource(\n path=file_path,\n to=resource_to,\n options={"reason": reason},\n)\n```\n\n## 步骤 4:写入记忆\n创建会话、写入消息,再提交记忆提取任务:\n\n```python\ntext = "[TODO]your-message-text" # e.g. I am a developer\n\n# Reuse the initialized client.\nsession = client.create_session()\nsession_id = session["session_id"]\nclient.add_message(\n session_id=session_id,\n role="user",\n parts=[TextPart(text=text)],\n)\nresult = client.commit_session(session_id=session_id)\n```\n\n资源导入和记忆提取都在后台处理。响应包含 `task_id` 时,保存它并用 `client.get_task(result["task_id"])` 查询;无待处理内容的 commit 可能不返回任务。等待 `completed` 后再检查结果,遇到 `failed` 或 `cancelled` 时先处理任务错误。用完后调用 `client.close()`。',
|
|
265
|
+
guides: []
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
const content_en = {
|
|
269
|
+
codex: {
|
|
270
|
+
name: 'Codex',
|
|
271
|
+
description: 'Adds persistent cross-session memory to Codex through lifecycle hooks and the OpenViking MCP endpoint.',
|
|
272
|
+
tags: [
|
|
273
|
+
'Plugin'
|
|
274
|
+
],
|
|
275
|
+
markdown: '## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script\'s header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **Codex**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Start Codex. The first launch shows a hook review prompt similar to this (exact layout varies by version); pick **Trust all and continue**:\n\n ```text\n Hooks need review\n 6 hooks are new or changed.\n Hooks can run outside the sandbox after you trust them.\n\n 1. Review hooks\n > 2. Trust all and continue\n 3. Continue without trusting (hooks won\'t run)\n ```\n\n If you skipped it or picked option 3, open `/hooks`. Review the OpenViking commands, then trust and enable the hooks you intend to use. In `/plugins`, confirm that `openviking-memory` is enabled. New or changed hooks require another review.\n2. Confirm that OpenViking MCP tools are available, then ask Codex to call `health` and `list`. This verifies tool access; automatic recall also requires `UserPromptSubmit`, and capture requires `Stop`.\n3. In a workspace with saved memories, ask about previously stored information and check the hook output or debug log. Recalled context looks similar to this:\n\n ```text\n • UserPromptSubmit hook (completed)\n hook context: <openviking-context source="auto-recall" format="digest">\n OpenViking memory digest:\n ```\n\n An empty new account may have no profile or relevant memories to inject. See the full guide for lifecycle commits and a complete memory check.\n\n## Step 3: Start using\n\nStart a new Codex session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Auth error | Check `api_key` in `~/.openviking/ovcli.conf`, restart Codex |\n| Connection error | `curl "$(jq -r \'.url\' ~/.openviking/ovcli.conf)/health"` |\n| `6 hooks need review`, or no hook fires | Trust and enable in `/hooks`; confirm the plugin is enabled in `/plugins` |\n| Need logs | `OPENVIKING_DEBUG=1` and `~/.openviking/logs/codex-hooks.log` |\n\n## Reference\n\n- Docs on Manual Settings: [Codex](https://docs.openviking.net/en/agent-integrations/04-codex)\n- Blog about how it works: [OpenViking for coding agents](https://blog.openviking.ai/post/openviking-coding-agent/)\n- Code: [examples/codex-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/codex-memory-plugin)',
|
|
276
|
+
guides: []
|
|
277
|
+
},
|
|
278
|
+
'claude-code': {
|
|
279
|
+
name: 'Claude Code',
|
|
280
|
+
description: 'Adds long-term memory to Claude Code across projects and sessions. Install once; recall and capture run automatically.',
|
|
281
|
+
tags: [
|
|
282
|
+
'Plugin'
|
|
283
|
+
],
|
|
284
|
+
markdown: "## Step 1: Install\n\nBecause Claude Code may block installation scripts from unknown sources, automatic setup may not complete. We recommend running the manual terminal steps below.\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **Claude Code**), your OpenViking credentials, and whether to enable the Statusline.\n3. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n4. OpenViking StatusLine is the status strip under the input box. It shows the memory plugin runtime status in real time. Enable or skip it based on your preference. Example:\n\n ```text\n OV ✓ │ Fable 5 · ctx 42% │ ↪ 6 mem (0.92) · 50ms │ ✎ 573/20k · 2 arch\n ```\n\n## Step 2: Verify\n\n1. Restart Claude Code.\n2. Run `/plugins` and confirm the installed list shows `openviking-memory`, and the `openviking` MCP is connected:\n\n ```text\n User\n ❯ openviking-memory Plugin · openviking · ✔ enabled\n └ openviking MCP · ✔ connected\n ```\n\n3. Run `/mcp` and confirm OpenViking is connected. The tool count depends on the server version:\n\n ```text\n Built-in MCPs (always available)\n ❯ plugin:openviking-memory:openviking · ✔ connected\n ```\n\n4. Run `/openviking-memory:ov` and confirm the service status is healthy:\n\n ```text\n OpenViking Memory Status\n ✅ Status: OpenViking server is healthy and running\n ```\n\n## Step 3: Start using\n\nStart a new Claude Code session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Plugin is not active | Re-run Install, or check `~/.openviking/ovcli.conf` |\n| Recall is empty | `curl \"$(jq -r '.url' ~/.openviking/ovcli.conf)/health\"` |\n| 401 / 403 | Refresh credentials |\n| Need logs | `OPENVIKING_DEBUG=1` and `~/.openviking/logs/cc-hooks.log` |\n\n## Reference\n\n- Docs on Manual Settings: [Claude Code](https://docs.openviking.net/en/agent-integrations/02-claude-code)\n- Blog about how it works: [OpenViking for coding agents](https://blog.openviking.ai/post/openviking-coding-agent/)\n- Code: [examples/claude-code-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/claude-code-memory-plugin)",
|
|
285
|
+
guides: []
|
|
286
|
+
},
|
|
287
|
+
doubao: {
|
|
288
|
+
name: 'Doubao Work',
|
|
289
|
+
description: 'Connect through the built-in connector to give Doubao Work persistent context memory, with automatic recall and capture during conversations.',
|
|
290
|
+
tags: [
|
|
291
|
+
'MCP'
|
|
292
|
+
],
|
|
293
|
+
markdown: '## Step 1: Install the connector\n\n1. Open Doubao Work, select **Skills · Connectors · Partners** in the sidebar, search for “OpenViking Context,” and select <strong>+</strong>.\n\n\n2. Enter the OpenViking USER API key in the authorization dialog:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n3. Select **Save and Connect**. Integration is complete when the “Connector installed” message appears and the <strong>+</strong> next to “OpenViking Context” changes to the added state.\n\n\n## Step 2: Verify\n\n1. Return to a Doubao conversation, select **Connectors** below the input box, and confirm that “OpenViking Context” is available.\n\n\n2. Select **More Skills**, confirm that “OpenViking Context Database” is available, and ask Doubao to call OpenViking and return relevant content.\n\n\n## Troubleshooting\n\n| Issue | Resolution |\n|---|---|\n| “OpenViking Context” does not appear in search | Confirm that you are using Doubao Work, clear the search and try again; if it is still unavailable, ask your organization administrator whether the connector has been enabled |\n| Connection fails | Check that the OpenViking USER API key is correct |',
|
|
294
|
+
guides: []
|
|
295
|
+
},
|
|
296
|
+
workbuddy: {
|
|
297
|
+
name: 'WorkBuddy',
|
|
298
|
+
description: 'Use MCP tools in WorkBuddy for memory recall and storage, knowledge resource management, and code context retrieval.',
|
|
299
|
+
tags: [
|
|
300
|
+
'MCP'
|
|
301
|
+
],
|
|
302
|
+
markdown: '## Step 1: Configure MCP\n\n1. Open WorkBuddy, select **Experts · Skills · Connectors** in the sidebar, and open the **Connectors** tab.\n\n\n2. Select **Custom Connector** in the upper-right corner to open MCP service management.\n\n\n3. Select **Configure MCP** to open the MCP configuration editor.\n\n\n4. Add this configuration:\n\n ```json\n {\n "mcpServers": {\n "OpenViking": {\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "Authorization": "Bearer {{OPENVIKING_API_KEY}}"\n }\n }\n }\n }\n ```\n\n5. Select **Save** in the upper-right corner. The configuration is saved when the green success message appears.\n\n\n6. Return to the MCP list. If WorkBuddy asks you to trust this MCP service on first connection, select **Trust**.\n\n\n## Step 2: Verify\n\nReturn to the MCP list. Confirm that `OpenViking` appears under “My MCP,” is enabled, and shows enabled tools when expanded.\n\n\n\n## Troubleshooting\n\n| Issue | Resolution |\n|---|---|\n| `OpenViking` does not appear in the MCP list | Check the JSON syntax and save again |\n| MCP connection status is abnormal | Refresh the connection; if it still fails, check the JSON configuration and network connectivity |',
|
|
303
|
+
guides: []
|
|
304
|
+
},
|
|
305
|
+
trae: {
|
|
306
|
+
name: 'TRAE',
|
|
307
|
+
description: 'Add automatic prompt recall and turn capture to TRAE and TRAE CN through native hooks plus MCP tools.',
|
|
308
|
+
tags: [
|
|
309
|
+
'Hook',
|
|
310
|
+
'MCP'
|
|
311
|
+
],
|
|
312
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for and for OpenViking credentials. Select **TRAE** for Trae International, **TRAE CN** for Trae China, or **TraeCode CLI 2.0**. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n**TRAE / TRAE CN**: open **Settings → MCP → Configured MCP Servers** and confirm that the `openviking` entry is visible.\n\n**TraeCode CLI 2.0**: start `trae-cli` and pick **Trust all and continue** at the hook review prompt (exact layout varies by version):\n\n```text\nHooks need review\n6 hooks are new or changed.\nHooks can run outside the sandbox after you trust them.\n\n 1. Review hooks\n> 2. Trust all and continue\n 3. Continue without trusting (hooks won't run)\n```\n\nIf you skipped it or picked option 3, review and enable the OpenViking hooks in `/hooks`. Confirm the plugin is enabled with `trae-cli plugin list`. New or changed hooks need another review. See the full guide for version-specific lifecycle support.\n\nAn MCP entry only confirms configuration. Ask the assistant to call OpenViking `health` and `list`, then check automatic recall separately using a new conversation in the same workspace after a previous session has been committed and processed.\n\n## Step 3: Start using\n\nStart a new TRAE, TRAE CN or TraeCode CLI 2.0 session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| No auto recall | Quit TRAE completely, restart, new Agent session |\n| TraeCode CLI 2.0 has the plugin but recalls nothing | The startup hook trust was skipped: trust and enable in `/hooks`, confirm the plugin is enabled in `/plugins` |\n| Connection / auth fails | Check `~/.openviking/ovcli.conf` and restart the client |\n| Need logs | `~/.openviking/logs/trae-hooks.log`, `trae-cn-hooks.log`, or `codex-hooks.log` (TraeCode CLI 2.0) |\n\n## Reference\n\n- Docs on Manual Settings: [TRAE](https://docs.openviking.net/en/agent-integrations/13-trae)\n- Code: [examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin) (TRAE / TRAE CN), [examples/codex-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/codex-memory-plugin) (TraeCode CLI 2.0)",
|
|
313
|
+
guides: []
|
|
314
|
+
},
|
|
315
|
+
cursor: {
|
|
316
|
+
name: 'Cursor',
|
|
317
|
+
description: 'One command installs Cursor lifecycle hooks, MCP tools, rules, and skills for automatic memory recall and capture.',
|
|
318
|
+
tags: [
|
|
319
|
+
'Plugin',
|
|
320
|
+
'Memory'
|
|
321
|
+
],
|
|
322
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **Cursor**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Open **Customize → MCPs** and confirm both **openviking User** and **openviking Plugin** are visible.\n2. Open **Customize → Hooks** and confirm the **openviking-memory** entry is visible.\n\n## Step 3: Start using\n\nStart a new Cursor session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Hooks do not run | Quit Cursor completely, restart, new Agent session |\n| Connection / auth fails | Check `~/.openviking/ovcli.conf` and restart Cursor |\n| Need logs | `OPENVIKING_DEBUG=1` and `~/.openviking/logs/cursor-hooks.log` |\n\n## Reference\n\n- Docs on Manual Settings: [Cursor](https://docs.openviking.net/en/agent-integrations/12-cursor)\n- Code: [examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)",
|
|
323
|
+
guides: []
|
|
324
|
+
},
|
|
325
|
+
openclaw: {
|
|
326
|
+
name: 'OpenClaw',
|
|
327
|
+
description: 'Plugin integration for OpenClaw as a context engine, with cross-agent memory and one-command setup through the npm helper.',
|
|
328
|
+
tags: [
|
|
329
|
+
'Plugin'
|
|
330
|
+
],
|
|
331
|
+
markdown: '## Step 1: Install\n\n1. Install the OpenViking plugin:\n\n ```bash\n openclaw plugins install clawhub:@openviking/openclaw-plugin\n ```\n\n2. Run the setup wizard. Enter `{{OPENVIKING_BASE_URL}}` as the service URL and the API key provided on this page:\n\n ```bash\n openclaw openviking setup\n ```\n\n Or configure it in one step, with the key in `OPENVIKING_API_KEY`:\n\n ```bash\n openclaw openviking setup --base-url {{OPENVIKING_BASE_URL}} --api-key "$OPENVIKING_API_KEY"\n ```\n\n3. Configure `peer_role`: `peer_role` identifies the type of conversation participant. It is not a permission role. `assistant` represents agents, tools, or models; `sender` represents message senders (the legacy value `person` remains an alias). After the setup above, `peer_role` defaults to `none`. To change `peer_role`, run:\n\n ```bash\n openclaw openviking setup --reconfigure\n ```\n\n4. Restart the Gateway to apply the configuration:\n\n ```bash\n openclaw gateway restart\n ```\n\n## Step 2: Verify\n\n1. Check the integration status in your terminal:\n\n ```bash\n openclaw openviking status\n ```\n\n2. A result similar to the following means the integration is successful:\n\n ```text\n 🦣 OpenViking Plugin Status\n\n Status: Configured\n mode: remote\n baseUrl: `https://api.vikingdb.cn-beijing.volces.com/openviking`\n apiKey: set\n peer_role: none\n accountId: not set\n userId: not set\n slot: active\n\n ✓ Server reachable (version: v0.x.xx.x)\n ```\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Plugin not active | Re-run Install, then `openclaw gateway restart` |\n| 401 / 403 | Refresh credentials |\n\n## Reference\n\n- Docs on Manual Settings: [OpenClaw](https://docs.openviking.net/en/agent-integrations/03-openclaw)\n- Code: [examples/openclaw-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/openclaw-plugin)',
|
|
332
|
+
guides: []
|
|
333
|
+
},
|
|
334
|
+
hermes: {
|
|
335
|
+
name: 'Hermes Agent',
|
|
336
|
+
description: 'Long-term memory for Hermes with automatic capture and recall. Connect to OpenViking Service or your own server, or use Quick Local with the external plugin.',
|
|
337
|
+
tags: [
|
|
338
|
+
'Provider'
|
|
339
|
+
],
|
|
340
|
+
markdown: "# OpenViking Service for Hermes\n\n[OpenViking Service](https://www.volcengine.com/product/openviking-service) is\nOpenViking hosted and operated by VolcEngine. You do not need to install a server\nor configure local models. Activate the service and create an API key in the\n[OpenViking console](https://console.volcengine.com/vikingdb/openviking/region:openviking+cn-beijing).\nOpen **User Management**, then **API Key**.\n\n## Set up\n\nRun these commands in the Hermes profile you want to use:\n\n```bash\nhermes plugins install openviking --enable\nhermes memory setup openviking\n```\n\nAccept the dependency prompt during installation. Skip the install command\nif your Hermes release already includes OpenViking.\n\nIn the wizard:\n\n1. Choose **Personal Agent** to recall common memory and the current sender's\n memory while keeping history settings. Choose **Shared Agent** to share\n history within each group or thread and recall all senders' memories under\n the same OpenViking user. Shared Agent asks for confirmation.\n2. If prompted, choose **Create new OpenViking profile**. You can also reuse\n a saved `ovcli.conf`.\n3. Choose **OpenViking Service (VolcEngine Cloud)**.\n4. Enter your service API key.\n5. Choose where to save the connection. **Keep in Hermes only** saves it in\n the Hermes `.env`. **Mirror to OpenViking store** saves a local\n `ovcli.conf.<name>` and links Hermes to it. Both save credentials on this\n computer.\n6. For a saved OpenViking profile, enter a name such as `hermes`. This is a\n local config name. It does not create a user or change access rights.\n\nThen start a new Hermes session:\n\n```bash\nhermes\n```\n\nFor a local server, the external plugin also offers **Quick Local**. It reuses\na supported Hermes language model and installs a local server and embedding model.\nSee the [plugin guide](https://hermes-agent.nousresearch.com/docs/plugins/openviking)\nfor requirements and known issues.\n\n## Check status\n\n```bash\nhermes memory status\n```\n\nConfirm that the provider is `openviking` and its status is `available`.\nThis confirms saved configuration, not server health or successful extraction.\n\n## Troubleshoot\n\n| Problem | What to do |\n|---------|------------|\n| Plugin is missing | Run `hermes plugins install openviking --enable` in this profile. |\n| Another provider is selected | Run `hermes memory setup openviking` again. |\n| Status is not available | Check the saved connection settings and any linked `ovcli.conf`. |\n\n## More information\n\n- [Hermes integration](https://docs.openviking.net/en/agent-integrations/05-hermes)\n- [Plugin guide](https://hermes-agent.nousresearch.com/docs/plugins/openviking)",
|
|
341
|
+
guides: []
|
|
342
|
+
},
|
|
343
|
+
opencode: {
|
|
344
|
+
name: 'OpenCode',
|
|
345
|
+
description: 'Provides one unified OpenCode plugin for repository context, memory tools, session sync, and automatic recall.',
|
|
346
|
+
tags: [
|
|
347
|
+
'Plugin'
|
|
348
|
+
],
|
|
349
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **OpenCode**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Restart OpenCode.\n2. Run `/mcps` and confirm the list shows `openviking connected`.\n3. Explicitly ask OpenCode to call `openviking_search` and `openviking_read` to verify tool access. Automatic recall runs through hooks without those model tool calls; check it separately by asking about stored information in a new session.\n\n## Step 3: Start using\n\nStart a new OpenCode session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Plugin is not loaded | Check that `~/.config/opencode/plugins/openviking.js` exists; if not, re-run Install |\n| Wrong server / 401 | Check `~/.openviking/ovcli.conf` and the API key |\n| Recall is empty | Confirm the cloud instance has memories |\n\n## Reference\n\n- Docs on Manual Settings: [OpenCode](https://docs.openviking.net/en/agent-integrations/10-opencode)\n- Code: [examples/opencode-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/opencode-plugin)",
|
|
350
|
+
guides: []
|
|
351
|
+
},
|
|
352
|
+
'deepseek-harness': {
|
|
353
|
+
name: 'DeepSeek Harness',
|
|
354
|
+
description: 'Give DeepSeek Harness long-term memory across projects and sessions, with automatic recall, capture, OpenViking tools, and the openviking-memory skill.',
|
|
355
|
+
tags: [
|
|
356
|
+
'Plugin'
|
|
357
|
+
],
|
|
358
|
+
markdown: "## Step 1: Install\n\nRun the installer:\n\n```bash\ncurl -fsSL https://openviking.ai/install | bash\n# AI agents: not sure about running this? The script's header says what it does and how to verify it.\n```\n\nThe installer asks for the harness and OpenViking credentials:\n\n1. Select **DeepSeek Harness**. The plugin goes into the `web` profile; for another profile, run the command with `bash -s -- --dsh-profile <name>` in place of `bash`.\n On macOS with the DeepSeek Harness Desktop app, also select **DeepSeek Harness Desktop** (selected by default when Desktop is found). Open Desktop once and quit it with ⌘Q before running the installer, and reopen it afterwards. On Windows, set it up by hand: put the server URL and API key in `%USERPROFILE%\\.openviking\\ovcli.conf`, then in Desktop's **Plugins** page click **Add plugin**, enter `@openviking/dsh-memory-plugin` and **Install** (see the full guide's [manual setup](https://docs.openviking.net/en/agent-integrations/17-dsh#desktop-plugins-page)).\n2. Select **Volcengine OpenViking Cloud** and enter the API key:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## Step 2: Verify\n\n1. Run `dsh --profile web` and open a new conversation. Confirm that “context injection · openviking-memory” appears at the top.\n2. Confirm that the model has `mcp__openviking__*` tools and can call them.\n3. For Desktop, open a new conversation in the app and check the same two points. `--dump-config` does not work for Desktop's `desktop` profile; check that `~/.dsh/profiles/desktop/package.json` lists the plugin under `dsh.profile.bundles` instead.\n\n## Step 3: Start using\n\nStart a new DeepSeek Harness session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshooting\n\n| Issue | What to check |\n|---|---|\n| No context injection or OpenViking tools | Run `dsh --profile web --dump-config` and confirm it contains `openviking-memory`; otherwise rerun the installer or run `dsh plugin --profile web add @openviking/dsh-memory-plugin` |\n| Desktop shows nothing after installing | Quit Desktop with ⌘Q (closing the window only hides it) and reopen it; in **Plugins**, check that the plugin is enabled |\n| `profile \"desktop\" is managed exclusively by the Electron application` | Only Desktop's own `dsh` command can change the `desktop` profile, and nothing can start it; see the full guide's [Desktop section](https://docs.openviking.net/en/agent-integrations/17-dsh#deepseek-harness-desktop) |\n| Installed into the wrong profile | The installer uses `web`; rerun it with `bash -s -- --dsh-profile <name>` in place of `bash` |\n| DSH reports the plugin is incompatible with this dsh version | The plugin accepts every DSH 0.x release from `0.1.0-rc.6` on; on DSH 1.0 or later, update the plugin or run `dsh plugin allow-version` |\n| Plugin fails to start after a DSH upgrade | Newer 0.x releases are admitted without prior verification; pin DSH to a verified release such as `0.2.0-rc.2` and open an issue |\n| Package reported missing from npm | pnpm rejects releases younger than 24 hours by default; wait and retry, or add the exact version to `minimumReleaseAgeExclude` in `pnpm-workspace.yaml` |\n| Recall returns no history | Run `curl http://localhost:1933/health` to confirm the server is healthy, then check the endpoint and make sure the prompt is at least 3 characters long |\n| OpenViking returns 401 / 403 | Check the API key; trusted-mode deployments must also check `OPENVIKING_ACCOUNT` and `OPENVIKING_USER` |\n| Memories from other projects appear | Set `OPENVIKING_RECALL_PEER_SCOPE=actor` to limit peer memories to the active peer; user-level memories remain shared |\n| Nothing committed after a crash | Commits run at the token threshold and session teardown; queued writes replay at the next session start |\n\n## References\n\n- Full guide: [DeepSeek Harness](https://docs.openviking.net/en/agent-integrations/17-dsh)\n- Source: [examples/dsh-memory-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/dsh-memory-plugin)",
|
|
359
|
+
guides: []
|
|
360
|
+
},
|
|
361
|
+
deerflow: {
|
|
362
|
+
name: 'DeerFlow',
|
|
363
|
+
description: 'DeerFlow can connect through MemoryManager and MCP to automatically write, recall, inject, and manage memory. Enable both methods for the full memory experience.',
|
|
364
|
+
tags: [
|
|
365
|
+
'MemoryManager',
|
|
366
|
+
'MCP'
|
|
367
|
+
],
|
|
368
|
+
markdown: 'DeerFlow can use OpenViking as a long-term memory backend through MemoryManager. After the integration is enabled, DeerFlow writes conversation messages to OpenViking, recalls relevant memories before model calls, and injects them into the context.\n\nThis setup supports one DeerFlow user with an ordinary OpenViking USER API key in `api_key` mode. `owner_user_id: default` applies when DeerFlow authentication is disabled; otherwise set the authenticated DeerFlow user\'s ID. It does not provision separate credentials for multiple users. Remove old trusted-mode identity defaults before switching. See [DeerFlow\'s authentication and migration notes](https://github.com/bytedance/deer-flow/blob/main/docs/OPENVIKING.md#authentication-boundary).\n\n## Step 1: Configure OpenViking credentials\n\nEdit the `.env` file in the DeerFlow project root and add the API key:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## Step 2: Update DeerFlow memory configuration\n\nOpen `config.yaml` in the project root, find the `memory:` section, and replace the default DeerMem configuration with OpenViking:\n\n```yaml\nmemory:\n enabled: true\n injection_enabled: true\n shutdown_flush_timeout_seconds: 30\n manager_class: openviking\n mode: middleware\n backend_config:\n base_url: {{OPENVIKING_BASE_URL}}\n owner_user_id: default\n api_key_env: OPENVIKING_API_KEY\n startup_policy: fail_fast\n failure_policy:\n read: fail_open\n write: log_and_drop\n retrieval:\n top_k: 8\n score_threshold: 0.25\n max_injection_chars: 12000\n content_mode: overview\n injection_query: >-\n user profile preferences important entities events ongoing goals\n constraints and prior decisions\n```\n\n## Step 3: Restart DeerFlow\n\nSave `.env` and `config.yaml`, then restart DeerFlow:\n\n```bash\nmake dev\n```\n\n## Step 4: Verify OpenViking integration\n\nCheck the Gateway logs from the project root:\n\n```bash\ngrep -i "memory manager resolved\\|openviking\\|deermem" logs/gateway.log\n```\n\nSuccessful log examples:\n\n```text\nMemory manager resolved: OpenVikingMemoryManager (manager_class=\'openviking\')\nHTTP Request: GET {{OPENVIKING_BASE_URL}}/health "HTTP/1.1 200 OK"\n```\n\n## Step 5: Verify memory write and recall\n\nThese logs show accepted requests and injected context. After extraction finishes, start another conversation as the same user and ask about a distinctive fact from the previous session to verify memory recall:\n\n```bash\ngrep -Ei "messages/batch|commit|search/find|has_memory" logs/gateway.log | tail -100\n```\n\nSuccessful log examples:\n\n```text\n/messages/batch "HTTP/1.1 200 OK"\n/commit "HTTP/1.1 200 OK"\n/search/find "HTTP/1.1 200 OK"\nhas_memory=True\n```\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| DeerFlow fails to start and reports an OpenViking configuration error | The OpenViking section in `config.yaml` is incomplete or malformed | Check that `manager_class: openviking` is configured and verify fields such as `base_url` and `api_key_env` |\n| DeerFlow is not connected to OpenViking | `memory.manager_class` was not changed to `openviking`, or the service was not restarted after the config change | Save the configuration, restart DeerFlow, and confirm that `OpenVikingMemoryManager` appears in the logs |\n| Remote authentication fails with 401 or 403 | The OpenViking API Key is missing, incorrect, or unauthorized | Check whether `OPENVIKING_API_KEY` is correctly set in `.env` |\n| Retrieval fails but DeerFlow still replies | The current configuration uses `read: fail_open`, which is expected behavior | If OpenViking retrieval fails, memory will not be injected, but the main Agent response will continue |\n| A response is generated but memory write fails | The current configuration uses `write: log_and_drop`, so write failures are recorded in logs | Check and fix OpenViking service, network, and authentication settings. New messages can continue to be written after recovery |\n| Messages have been written, but memories are not visible immediately | OpenViking summarization and memory extraction are asynchronous | Wait for background tasks to finish, then check again |\n| Memory operations are still pending during service shutdown | The system waits up to `shutdown_flush_timeout_seconds` for them to finish | If the wait times out, or OpenViking is unavailable during shutdown, some writes may not complete. Increase the timeout if needed and check OpenViking network/service availability during shutdown |',
|
|
369
|
+
guides: [
|
|
370
|
+
{
|
|
371
|
+
id: 'memory-manager',
|
|
372
|
+
label: 'MemoryManager Integration',
|
|
373
|
+
markdown: 'DeerFlow can use OpenViking as a long-term memory backend through MemoryManager. After the integration is enabled, DeerFlow writes conversation messages to OpenViking, recalls relevant memories before model calls, and injects them into the context.\n\nThis setup supports one DeerFlow user with an ordinary OpenViking USER API key in `api_key` mode. `owner_user_id: default` applies when DeerFlow authentication is disabled; otherwise set the authenticated DeerFlow user\'s ID. It does not provision separate credentials for multiple users. Remove old trusted-mode identity defaults before switching. See [DeerFlow\'s authentication and migration notes](https://github.com/bytedance/deer-flow/blob/main/docs/OPENVIKING.md#authentication-boundary).\n\n## Step 1: Configure OpenViking credentials\n\nEdit the `.env` file in the DeerFlow project root and add the API key:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## Step 2: Update DeerFlow memory configuration\n\nOpen `config.yaml` in the project root, find the `memory:` section, and replace the default DeerMem configuration with OpenViking:\n\n```yaml\nmemory:\n enabled: true\n injection_enabled: true\n shutdown_flush_timeout_seconds: 30\n manager_class: openviking\n mode: middleware\n backend_config:\n base_url: {{OPENVIKING_BASE_URL}}\n owner_user_id: default\n api_key_env: OPENVIKING_API_KEY\n startup_policy: fail_fast\n failure_policy:\n read: fail_open\n write: log_and_drop\n retrieval:\n top_k: 8\n score_threshold: 0.25\n max_injection_chars: 12000\n content_mode: overview\n injection_query: >-\n user profile preferences important entities events ongoing goals\n constraints and prior decisions\n```\n\n## Step 3: Restart DeerFlow\n\nSave `.env` and `config.yaml`, then restart DeerFlow:\n\n```bash\nmake dev\n```\n\n## Step 4: Verify OpenViking integration\n\nCheck the Gateway logs from the project root:\n\n```bash\ngrep -i "memory manager resolved\\|openviking\\|deermem" logs/gateway.log\n```\n\nSuccessful log examples:\n\n```text\nMemory manager resolved: OpenVikingMemoryManager (manager_class=\'openviking\')\nHTTP Request: GET {{OPENVIKING_BASE_URL}}/health "HTTP/1.1 200 OK"\n```\n\n## Step 5: Verify memory write and recall\n\nThese logs show accepted requests and injected context. After extraction finishes, start another conversation as the same user and ask about a distinctive fact from the previous session to verify memory recall:\n\n```bash\ngrep -Ei "messages/batch|commit|search/find|has_memory" logs/gateway.log | tail -100\n```\n\nSuccessful log examples:\n\n```text\n/messages/batch "HTTP/1.1 200 OK"\n/commit "HTTP/1.1 200 OK"\n/search/find "HTTP/1.1 200 OK"\nhas_memory=True\n```\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| DeerFlow fails to start and reports an OpenViking configuration error | The OpenViking section in `config.yaml` is incomplete or malformed | Check that `manager_class: openviking` is configured and verify fields such as `base_url` and `api_key_env` |\n| DeerFlow is not connected to OpenViking | `memory.manager_class` was not changed to `openviking`, or the service was not restarted after the config change | Save the configuration, restart DeerFlow, and confirm that `OpenVikingMemoryManager` appears in the logs |\n| Remote authentication fails with 401 or 403 | The OpenViking API Key is missing, incorrect, or unauthorized | Check whether `OPENVIKING_API_KEY` is correctly set in `.env` |\n| Retrieval fails but DeerFlow still replies | The current configuration uses `read: fail_open`, which is expected behavior | If OpenViking retrieval fails, memory will not be injected, but the main Agent response will continue |\n| A response is generated but memory write fails | The current configuration uses `write: log_and_drop`, so write failures are recorded in logs | Check and fix OpenViking service, network, and authentication settings. New messages can continue to be written after recovery |\n| Messages have been written, but memories are not visible immediately | OpenViking summarization and memory extraction are asynchronous | Wait for background tasks to finish, then check again |\n| Memory operations are still pending during service shutdown | The system waits up to `shutdown_flush_timeout_seconds` for them to finish | If the wait times out, or OpenViking is unavailable during shutdown, some writes may not complete. Increase the timeout if needed and check OpenViking network/service availability during shutdown |'
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
id: 'mcp',
|
|
377
|
+
label: 'MCP Integration',
|
|
378
|
+
markdown: 'DeerFlow can connect to OpenViking through an MCP Server. MCP integration lets DeerFlow agents actively search, read, and use memories and knowledge from OpenViking while executing tasks.\n\n## Step 1: Configure OpenViking credentials\n\nEdit the `.env` file in the DeerFlow project root and add the API key:\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n## Step 2: Create an MCP configuration file\n\nCopy `extensions_config.example.json` to `extensions_config.json` in the project root. DeerFlow uses this file to load MCP Servers:\n\n```bash\ncp extensions_config.example.json extensions_config.json\n```\n\n## Step 3: Configure the OpenViking MCP Server\n\nOpen `extensions_config.json` in the project root and add OpenViking under `mcpServers`:\n\n```json\n{\n "mcpServers": {\n "openviking": {\n "enabled": true,\n "type": "http",\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "X-API-Key": "$OPENVIKING_API_KEY"\n }\n }\n }\n}\n```\n\n## Step 4: Restart DeerFlow\n\nSave `.env` and `extensions_config.json`, then restart DeerFlow:\n\n```bash\nmake dev\n```\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| DeerFlow does not load the OpenViking MCP Server after startup | `extensions_config.json` is missing, malformed, or `enabled` is not set to `true` | Check `mcpServers.openviking` and make sure the JSON format is valid |\n| OpenViking MCP tools do not appear in the Agent tool list | The MCP configuration did not take effect, or the service was not restarted | Save the configuration and restart DeerFlow, or refresh the MCP configuration cache |\n| Calling OpenViking MCP tools fails with 401 or 403 | API Key is missing, incorrect, or unauthorized | Check whether `OPENVIKING_API_KEY` is correctly set in `.env` and confirm the header uses `X-API-Key` |\n| MCP Server connection fails | The `url` is incorrect, or DeerFlow Gateway cannot access the OpenViking MCP Server | Check the OpenViking MCP Server address, network connectivity, and Docker network configuration |\n| Old credentials are still used after modifying `.env` | Environment variables were not reloaded, or the MCP configuration cache was not refreshed | Restart DeerFlow, or call `/api/mcp/cache/reset` to refresh the cache |\n| Agent does not actively call OpenViking tools | MCP tools are invoked by the model on demand and are not an automatic memory backend | Explicitly ask the Agent to use OpenViking tools in the prompt, or use MemoryManager integration for automatic recall |'
|
|
379
|
+
}
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
pi: {
|
|
383
|
+
name: 'pi',
|
|
384
|
+
description: "Give pi cross-session long-term memory with automatic recall, turn capture, and context takeover; the server's MCP tools are registered as native pi tools.",
|
|
385
|
+
tags: [
|
|
386
|
+
'Plugin'
|
|
387
|
+
],
|
|
388
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **pi**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Start `pi` and confirm the footer shows `OV ✓`.\n2. Run `/viking` and confirm it shows the current session mapping and the number of registered `openviking_*` tools.\n3. In a new session, ask about something you mentioned earlier to confirm recall.\n\n## Step 3: Start using\n\nStart a new pi session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Extension does not load | Check that `~/.pi/agent/extensions/openviking/index.ts` exists; if not, re-run Install. Do not register it with `pi install`, which loads it twice |\n| `/viking` appears twice | Run `pi remove ~/.pi/agent/extensions/openviking` to drop the redundant `packages` entry |\n| `OV ✗` in the footer / 401 | Check `~/.openviking/ovcli.conf` and the API key |\n| `tools ✗` in the footer | Run `/viking` for the handshake error; a root API key is rejected on `/mcp`, use a user key |\n\n## Reference\n\n- Docs on Manual Settings: [pi](https://docs.openviking.net/en/agent-integrations/11-pi)\n- Code: [examples/pi-coding-agent-extension](https://github.com/volcengine/OpenViking/tree/main/examples/pi-coding-agent-extension)",
|
|
389
|
+
guides: []
|
|
390
|
+
},
|
|
391
|
+
zcode: {
|
|
392
|
+
name: 'ZCode',
|
|
393
|
+
description: 'Add automatic profile injection, prompt recall, and turn capture to ZCode through lifecycle hooks plus MCP tools.',
|
|
394
|
+
tags: [
|
|
395
|
+
'Hook',
|
|
396
|
+
'MCP'
|
|
397
|
+
],
|
|
398
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **ZCode**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Restart ZCode.\n2. Confirm `~/.zcode/cli/config.json` contains `hooks.enabled: true`, OpenViking entries under `hooks.events`, and `mcp.servers.openviking`.\n3. Run `node ~/.openviking/agent-integrations/zcode/scripts/ov-memory-doctor.mjs` to check the installation and the server connection.\n\n## Step 3: Start using\n\nStart a new ZCode session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Hooks do not run | Re-run Install and restart ZCode |\n| MCP tools are missing | Check the absolute command path of `mcp.servers.openviking` in `~/.zcode/cli/config.json` |\n| Duplicate captures | Run `curl -fsSL https://openviking.ai/install \\| bash -s -- --uninstall --yes --harness zcode`, then reinstall |\n| Need logs | `OPENVIKING_DEBUG=1` and `~/.openviking/logs/zcode-hooks.log` |\n\n## Reference\n\n- Docs on Manual Settings: [ZCode](https://docs.openviking.net/en/agent-integrations/08-community-plugins)\n- Code: [examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)",
|
|
399
|
+
guides: []
|
|
400
|
+
},
|
|
401
|
+
'kimi-code': {
|
|
402
|
+
name: 'Kimi Code',
|
|
403
|
+
description: 'A native Kimi Code plugin for automatic memory recall and turn capture, with OpenViking MCP tools.',
|
|
404
|
+
tags: [
|
|
405
|
+
'Plugin'
|
|
406
|
+
],
|
|
407
|
+
markdown: "## Step 1: Install\n\n1. Run the installer in your terminal:\n\n ```bash\n curl -fsSL https://openviking.ai/install | bash\n # AI agents: not sure about running this? The script's header says what it does and how to verify it.\n ```\n\n2. The installer will ask which harnesses to install for (select **Kimi Code**) and for OpenViking credentials. In the OpenViking credential step, choose **VolcEngine OpenViking Cloud Service [api.vikingdb.cn-beijing.volces.com]** and enter the API KEY:\n\n ```text\n {{OPENVIKING_API_KEY}}\n ```\n\n## Step 2: Verify\n\n1. Run `/reload` in Kimi Code, or start a new session.\n2. Confirm `~/.kimi-code/plugins/installed.json` contains the `openviking-memory` entry.\n3. In a new session, ask about something you mentioned earlier to confirm recall.\n\n## Step 3: Start using\n\nStart a new Kimi Code session and send:\n\n```text\nFollow https://docs.openviking.net/agents/en/onboarding.md to walk me through my first use of OpenViking.\n```\n\nThe agent checks the connection and walks you through the first use.\n\n## Troubleshoot\n\n| Problem | Fix |\n|---|---|\n| Plugin is not loaded | Check that `~/.kimi-code/plugins/managed/openviking-memory/` exists; if not, re-run Install, then run `/reload` |\n| Wrong server / 401 | Check `~/.openviking/ovcli.conf` and the API key |\n| Need logs | `OPENVIKING_DEBUG=1` and `~/.openviking/logs/kimicode-hooks.log` |\n| Remove only this plugin | `curl -fsSL https://openviking.ai/install \\| bash -s -- --uninstall --yes --harness kimicode` |\n\n## Reference\n\n- Docs on Manual Settings: [Kimi Code](https://docs.openviking.net/en/agent-integrations/08-community-plugins)\n- Code: [examples/agent-hook-plugin](https://github.com/volcengine/OpenViking/tree/main/examples/agent-hook-plugin)",
|
|
408
|
+
guides: []
|
|
409
|
+
},
|
|
410
|
+
mcp: {
|
|
411
|
+
name: 'MCP Integration',
|
|
412
|
+
description: 'Connect from any client that supports MCP.',
|
|
413
|
+
tags: [],
|
|
414
|
+
markdown: 'Install or update OpenViking MCP for the current Agent, and install the latest official skills.\n\n### Step 1: MCP configuration\n\nUse the following connection configuration:\n\n```json\n{\n "mcpServers": {\n "ov-mcp-server": {\n "url": "{{OPENVIKING_BASE_URL}}/mcp",\n "headers": {\n "Authorization": "Bearer {{OPENVIKING_API_KEY}}"\n }\n }\n }\n}\n```\n\nIdentify the client and its supported configuration method (settings UI, configuration file, or installation command); do not assume that JSON merging is supported. If an OpenViking MCP server already exists, first ask me to choose between "Keep the existing connection" and "Use the new configuration above", then proceed after I choose. Preserve other MCP services and do not add the same service twice. Use the Key already provided; do not ask for it again, echo it, or include it in command arguments, logs, or rules.\n\nUpgrade existing local MCP components using the official procedure. For remote HTTPS MCP, update the selected connection and re-enable it; do not describe reconnection as an upgrade to the cloud service.\n\n### Step 2: Install the latest skills\n\nGet all the latest skill packages from https://github.com/volcengine/OpenViking/tree/main/agent-plugins/skills and install or update them in the location supported by the client. Preserve all accompanying files. If existing skills have customizations, explain the differences before handling them.\n\n### Step 3: Verify tool functionality\n\nAfter reloading, confirm that MCP tools are listed, call OpenViking\'s `health` tool to verify the connection and authentication, then use `list` to check the directories accessible to your account. Confirm that the installed skills are discoverable. `ov health` checks the CLI connection; it does not verify this client\'s MCP connection.',
|
|
415
|
+
guides: []
|
|
416
|
+
},
|
|
417
|
+
cli: {
|
|
418
|
+
name: 'CLI Integration',
|
|
419
|
+
description: 'OpenViking CLI supports direct installation, configuration and use in the terminal. You can also give the setup instructions to an AI Agent so it learns and remembers CLI usage like a skill.',
|
|
420
|
+
tags: [],
|
|
421
|
+
markdown: 'Copy and run the following commands step by step in your terminal to complete OpenViking CLI installation, configuration, and usage:\n\n### Step 1: Install OpenViking CLI and enter the configuration flow:\n\n```bash\nnpm i -g @openviking/cli && ov config\n```\n\n### Step 2: When prompted, enter the OpenViking Base URL and API Key\n\n- Base URL: Copy the following Base URL into your terminal\n```text\n{{OPENVIKING_BASE_URL}}\n```\n\n- API Key: Copy the API Key shown on the page into your terminal\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n### Step 3: After configuration, run the following command to view CLI usage:\n\n```bash\nov config validate\nov health\nov --help\n```',
|
|
422
|
+
guides: [
|
|
423
|
+
{
|
|
424
|
+
id: 'human',
|
|
425
|
+
label: 'Manual terminal installation',
|
|
426
|
+
markdown: 'Copy and run the following commands step by step in your terminal to complete OpenViking CLI installation, configuration, and usage:\n\n### Step 1: Install OpenViking CLI and enter the configuration flow:\n\n```bash\nnpm i -g @openviking/cli && ov config\n```\n\n### Step 2: When prompted, enter the OpenViking Base URL and API Key\n\n- Base URL: Copy the following Base URL into your terminal\n```text\n{{OPENVIKING_BASE_URL}}\n```\n\n- API Key: Copy the API Key shown on the page into your terminal\n\n{{OPENVIKING_API_KEY_BLOCK}}\n\n### Step 3: After configuration, run the following command to view CLI usage:\n\n```bash\nov config validate\nov health\nov --help\n```'
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
id: 'agent',
|
|
430
|
+
label: 'Install via AI Agent',
|
|
431
|
+
markdown: 'Copy the following prompt to your AI assistant (Claude Code, Codex, Cursor, Trae, and so on). Ask it to install and configure the CLI, then verify the connection:\n\n```text\nFirst ask the user for the OpenViking API Key and store it as OPENVIKING_API_KEY.\n\nWrite the following content to ~/.openviking/ovcli.conf, replacing ${OPENVIKING_API_KEY} with the actual value provided by the user. The CLI does not expand environment variables in this file:\n{\n "url": "{{OPENVIKING_BASE_URL}}",\n "api_key": "${OPENVIKING_API_KEY}"\n}\n\nIf ~/.openviking/ovcli.conf already exists and the content conflicts, ask the user whether to back up the original file before overwriting it.\n\nInstall OpenViking CLI:\nnpm i -g @openviking/cli\n\nAfter installation, run:\nov config validate\nov health\nov --help\n\nRead ov --help and the help for individual commands, then summarize common operations. Save the workflow in long-term memory, including only usage notes, not the API key or raw config file.\n```'
|
|
432
|
+
}
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
api: {
|
|
436
|
+
name: 'API Integration',
|
|
437
|
+
description: 'Call OpenViking capabilities through the REST API.',
|
|
438
|
+
tags: [],
|
|
439
|
+
markdown: '## Step 1: Add a resource\n\nInstall `requests` in your Python environment (`python -m pip install requests`). Replace the local file path and use an unused complete target URI; the page supplies the service URL and API key.\n\n```python\nimport json\nfrom pathlib import Path\n\nimport requests\n\nurl = "{{OPENVIKING_BASE_URL}}"\napi_key = "{{OPENVIKING_API_KEY}}"\nfile_path = Path("[TODO]your-file-path") # e.g. test.txt\nresource_to = "[TODO]your-resource-path" # e.g. viking://resources/test.txt\nreason = "[TODO]your-reason" # e.g. External API documentation\n\n# 1. Initialize request headers.\nheaders = {\n "Content-Type": "application/json",\n "Authorization": "Bearer " + api_key,\n}\n\ndef post_json(path: str, payload: dict, timeout: float):\n response = requests.post(f"{url}{path}", headers=headers, json=payload, timeout=timeout)\n response.raise_for_status()\n return response.json()\n\n# 2. Upload the local file to a temporary resource.\nwith file_path.open("rb") as file:\n result = requests.post(\n f"{url}/api/v1/resources/temp_upload",\n headers={\n "Authorization": "Bearer " + api_key,\n },\n files={"file": (file_path.name, file, "application/octet-stream")},\n timeout=120.0,\n )\nresult.raise_for_status()\nresult = result.json()\nprint(json.dumps(result, ensure_ascii=False, indent=2))\ntemp_file_id = result["result"]["temp_file_id"]\n\n# 3. Create a resource from the temporary file.\nresult = post_json(\n "/api/v1/resources",\n {\n "temp_file_id": temp_file_id,\n "source_name": file_path.name,\n "to": resource_to,\n "reason": reason,\n },\n 120.0,\n)\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n```\n\n## Step 2: Add memory\n\nReuse the imports, connection settings, and `post_json` helper from Step 1. Add a message to a new session and submit memory extraction:\n\n```python\ntext = "[TODO]your-message-text" # e.g. I am a developer\n\n# Create a session.\nsession = post_json("/api/v1/sessions", {}, 360.0)\nsession_id = session["result"]["session_id"]\n\n# Add a message.\npost_json(\n f"/api/v1/sessions/{session_id}/messages",\n {\n "role": "user",\n "parts": [{"type": "text", "text": text}],\n },\n 360.0,\n)\n\n# Commit the session.\nresult = post_json(\n f"/api/v1/sessions/{session_id}/commit",\n {"telemetry": False},\n 360.0,\n)\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n```\n\nResource import and session commit may return before processing finishes. If `result["result"]` contains a `task_id`, query `GET /api/v1/tasks/{task_id}` with the same authorization header until it is `completed`, `failed`, or `cancelled`. Handle failures before reading or searching the result. A no-op commit may return no task.',
|
|
440
|
+
guides: []
|
|
441
|
+
},
|
|
442
|
+
sdk: {
|
|
443
|
+
name: 'SDK Integration',
|
|
444
|
+
description: 'Use SDK wrappers for faster and cleaner integration.',
|
|
445
|
+
tags: [],
|
|
446
|
+
markdown: '## Step 1: Install the Python SDK\n\nInstall the standalone SDK in the Python environment that runs your code:\n\n```bash\npython -m pip install --upgrade openviking-sdk\n```\n\n## Step 2: Initialize the client\n\nCreate a client with the service URL and API key. Reuse it in the following steps:\n\n```python\nfrom openviking_sdk import SyncHTTPClient, TextPart\n\nurl = "{{OPENVIKING_BASE_URL}}"\napi_key = "{{OPENVIKING_API_KEY}}"\n\nclient = SyncHTTPClient(\n url=url,\n api_key=api_key,\n timeout=120.0,\n)\nclient.initialize()\n```\n\n## Step 3: Add a resource\n\nReplace the local file path and target URI. `to` specifies the complete target URI; use an unused path:\n\n```python\nfile_path = "[TODO]your-file-path"\nresource_to = "[TODO]your-resource-path" # e.g. viking://resources/my-document\nreason = "[TODO]your-reason" # e.g. External API documentation\n\n# Reuse the initialized client.\nresult = client.add_resource(\n path=file_path,\n to=resource_to,\n options={"reason": reason},\n)\n```\n\n## Step 4: Add memory\n\nCreate a session, add a message, and submit it for memory extraction:\n\n```python\ntext = "[TODO]your-message-text" # e.g. I am a developer\n\n# Reuse the initialized client.\nsession = client.create_session()\nsession_id = session["session_id"]\nclient.add_message(\n session_id=session_id,\n role="user",\n parts=[TextPart(text=text)],\n)\nresult = client.commit_session(session_id=session_id)\n```\n\nResource imports and memory extraction run in the background. When a response contains a `task_id`, save it and check it with `client.get_task(result["task_id"])`. A no-op commit may return no task. Wait for `completed` before checking results; inspect the task error if it is `failed` or `cancelled`. Call `client.close()` when finished.',
|
|
447
|
+
guides: []
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
const INSTALLER_HARNESSES = {
|
|
451
|
+
codex: 'codex',
|
|
452
|
+
'claude-code': 'claude',
|
|
453
|
+
trae: 'trae',
|
|
454
|
+
cursor: 'cursor',
|
|
455
|
+
opencode: 'opencode',
|
|
456
|
+
'deepseek-harness': 'dsh',
|
|
457
|
+
pi: 'pi',
|
|
458
|
+
zcode: 'zcode',
|
|
459
|
+
'kimi-code': 'kimicode'
|
|
460
|
+
};
|
|
461
|
+
function shellArgument(value) {
|
|
462
|
+
return `'${value.replace(/'/g, "'\"'\"'")}'`;
|
|
463
|
+
}
|
|
464
|
+
function getInstallerInstructions(name, harness, locale, apiKey, baseUrl) {
|
|
465
|
+
const command = `curl -fsSL https://openviking.ai/install | bash -s -- --yes --lang ${locale} --harness ${harness},cli --url ${shellArgument(baseUrl)} --api-key ${shellArgument(apiKey)}`;
|
|
466
|
+
return 'zh' === locale ? `帮我为 ${name} 安装 OpenViking 记忆插件,并带我开始使用。OpenViking 是为 Agent 提供的上下文数据库(https://github.com/volcengine/OpenViking),下面的命令和链接来自它的官方文档。
|
|
467
|
+
|
|
468
|
+
1. 运行官方安装器。它需要联网并写入我的主目录,如果被你的沙箱拦住,请向我申请批准:
|
|
469
|
+
|
|
470
|
+
${command}
|
|
471
|
+
|
|
472
|
+
2. 装好后读 OpenViking 的接入引导,按它带我完成设置。导入历史、写协作规则这类选择,引导会让你先问我。docs.openviking.ai 和 docs.openviking.net 是同一个文档站,哪个打得开用哪个:https://docs.openviking.ai/agents/zh/onboarding.md
|
|
473
|
+
|
|
474
|
+
API key 是我在 OpenViking 控制台给自己生成的,安装器会把它存到本机的 ~/.openviking/ovcli.conf。命令里原样使用就行,回复里不用再显示它,也不要写进别的文件或规则。全程用中文和我交流。` : `Install the OpenViking memory plugin for ${name} and help me start using it. OpenViking is a context database for AI agents (https://github.com/volcengine/OpenViking); the command and link below are from its official docs.
|
|
475
|
+
|
|
476
|
+
1. Run the official installer. It needs network access and writes to my home directory; if your sandbox blocks that, ask me for approval:
|
|
477
|
+
|
|
478
|
+
${command}
|
|
479
|
+
|
|
480
|
+
2. Once it's installed, read the OpenViking onboarding guide and use it to walk me through setup. The guide has you ask me before choices like importing history or adding a working rule. docs.openviking.ai and docs.openviking.net are the same docs site; use whichever loads: https://docs.openviking.ai/agents/en/onboarding.md
|
|
481
|
+
|
|
482
|
+
The API key is one I created for myself in the OpenViking console; the installer stores it in ~/.openviking/ovcli.conf on this machine. Use it in the command as it is; there's no need to show it in your replies, and don't write it into any other file or rule. Talk to me in English.`;
|
|
483
|
+
}
|
|
484
|
+
const DEFAULT_BASE_URL = 'https://api.vikingdb.cn-beijing.volces.com/openviking';
|
|
485
|
+
function getAgentConnectContent(locale) {
|
|
486
|
+
return 'en' === locale ? content_en : content_zh;
|
|
487
|
+
}
|
|
488
|
+
function getAgentConnectInstructions(id, locale, apiKey, baseUrl, guideId) {
|
|
489
|
+
const content = getAgentConnectContent(locale)[id];
|
|
490
|
+
const harness = INSTALLER_HARNESSES[id];
|
|
491
|
+
if (harness) {
|
|
492
|
+
const instructions = (key)=>getInstallerInstructions(content.name, harness, locale, key, baseUrl);
|
|
493
|
+
return {
|
|
494
|
+
fixed: true,
|
|
495
|
+
display: instructions('••••••••'),
|
|
496
|
+
copy: instructions(apiKey)
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
const guide = content.guides.find((item)=>item.id === guideId);
|
|
500
|
+
let template = guide?.markdown ?? content.markdown;
|
|
501
|
+
if ('hermes' === id && baseUrl.replace(/\/+$/, '') !== DEFAULT_BASE_URL) {
|
|
502
|
+
template = template.replace(/^[\s\S]*?(?=^## )/m, ()=>'zh' === locale ? '# 为 Hermes 配置自定义 OpenViking 服务\n\n连接调用方指定的 OpenViking 服务,使用以下步骤填写服务地址和 API Key。\n\n' : '# Custom OpenViking server for Hermes\n\nConnect to the host-provided OpenViking server using the URL and API key in the setup steps below.\n\n');
|
|
503
|
+
template = template.replace(/^3\. (?:选择|Choose) \*\*OpenViking Service \(VolcEngine Cloud\)\*\*[。.][ \t]*$/m, ()=>'zh' === locale ? '3. 选择 **Custom**,服务地址填写 {{OPENVIKING_BASE_URL}}。' : '3. Choose **Custom** and enter {{OPENVIKING_BASE_URL}} as the server URL.');
|
|
504
|
+
}
|
|
505
|
+
if (!/\{\{OPENVIKING_API_KEY/.test(template)) template += '\n\nBase URL: {{OPENVIKING_BASE_URL}}\n\nAPI Key:\n\n{{OPENVIKING_API_KEY_BLOCK}}';
|
|
506
|
+
const pathBaseUrl = baseUrl.replace(/\/+$/, '');
|
|
507
|
+
function hydrate(key) {
|
|
508
|
+
return template.replace(/\{\{OPENVIKING_BASE_URL\}\}|\{\{OPENVIKING_API_KEY_BLOCK\}\}|\{\{OPENVIKING_API_KEY\}\}|<API_KEY>|https:\/\/api\.vikingdb\.cn-beijing\.volces\.com\/openviking/g, (token, offset)=>{
|
|
509
|
+
if ('{{OPENVIKING_API_KEY_BLOCK}}' === token) {
|
|
510
|
+
const value = 'deerflow' === id ? `OPENVIKING_API_KEY=${key}` : key;
|
|
511
|
+
return `\`\`\`text\n${value}\n\`\`\``;
|
|
512
|
+
}
|
|
513
|
+
if (token.includes('API_KEY')) return key;
|
|
514
|
+
return 'api' === id || '/' === template[offset + token.length] ? pathBaseUrl : baseUrl;
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
return {
|
|
518
|
+
fixed: false,
|
|
519
|
+
display: hydrate('••••••••'),
|
|
520
|
+
copy: hydrate(apiKey)
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
const SvgCopy = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
524
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
525
|
+
width: 16,
|
|
526
|
+
height: 16,
|
|
527
|
+
fill: "none",
|
|
528
|
+
viewBox: "0 0 16 16",
|
|
529
|
+
...props,
|
|
530
|
+
children: [
|
|
531
|
+
/*#__PURE__*/ jsx("g", {
|
|
532
|
+
clipPath: "url(#copy_svg__a)",
|
|
533
|
+
children: /*#__PURE__*/ jsx("g", {
|
|
534
|
+
clipPath: "url(#copy_svg__b)",
|
|
535
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
536
|
+
fill: "#fff",
|
|
537
|
+
fillRule: "evenodd",
|
|
538
|
+
d: "M10.667 4c.368 0 .666.299.666.667v9.407c0 .328-.278.593-.622.593H2.622c-.343 0-.622-.265-.622-.593V4.593C2 4.265 2.279 4 2.622 4zM10 5.334H3.333v8H10zm3.333-4c.368 0 .667.298.667.666v8.334c0 .184-.15.333-.333.333H13a.333.333 0 0 1-.333-.333V2.667H6.333A.333.333 0 0 1 6 2.334v-.667c0-.184.15-.334.333-.334z",
|
|
539
|
+
clipRule: "evenodd"
|
|
540
|
+
})
|
|
541
|
+
})
|
|
542
|
+
}),
|
|
543
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
544
|
+
children: [
|
|
545
|
+
/*#__PURE__*/ jsx("clipPath", {
|
|
546
|
+
id: "copy_svg__a",
|
|
547
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
548
|
+
fill: "#fff",
|
|
549
|
+
d: "M0 0h16v16H0z"
|
|
550
|
+
})
|
|
551
|
+
}),
|
|
552
|
+
/*#__PURE__*/ jsx("clipPath", {
|
|
553
|
+
id: "copy_svg__b",
|
|
554
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
555
|
+
fill: "#fff",
|
|
556
|
+
d: "M0 0h16v16H0z"
|
|
557
|
+
})
|
|
558
|
+
})
|
|
559
|
+
]
|
|
560
|
+
})
|
|
561
|
+
]
|
|
562
|
+
});
|
|
563
|
+
const copyreact = SvgCopy;
|
|
564
|
+
function Inline({ text }) {
|
|
565
|
+
return text.split(/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\(https?:\/\/[^)]+\))/g).map((part, index)=>{
|
|
566
|
+
const link = /^\[([^\]]+)\]\((https?:\/\/[^)]+)\)$/.exec(part);
|
|
567
|
+
if (link) return /*#__PURE__*/ jsx("a", {
|
|
568
|
+
href: link[2],
|
|
569
|
+
target: "_blank",
|
|
570
|
+
rel: "noopener noreferrer",
|
|
571
|
+
children: link[1]
|
|
572
|
+
}, index);
|
|
573
|
+
if (part.startsWith('`')) return /*#__PURE__*/ jsx("code", {
|
|
574
|
+
children: part.slice(1, -1)
|
|
575
|
+
}, index);
|
|
576
|
+
if (part.startsWith('**')) return /*#__PURE__*/ jsx("strong", {
|
|
577
|
+
children: part.slice(2, -2)
|
|
578
|
+
}, index);
|
|
579
|
+
return /*#__PURE__*/ jsx(external_react_Fragment, {
|
|
580
|
+
children: part
|
|
581
|
+
}, index);
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
function Prose({ text }) {
|
|
585
|
+
const lines = text.split('\n').filter((line)=>!/^\s*!\[/.test(line));
|
|
586
|
+
const blocks = [];
|
|
587
|
+
let current = '';
|
|
588
|
+
for (const line of lines)if (line.trim()) if (/^#{1,6}\s/.test(line)) {
|
|
589
|
+
if (current) blocks.push(current);
|
|
590
|
+
blocks.push(line);
|
|
591
|
+
current = '';
|
|
592
|
+
} else current += `${current ? '\n' : ''}${line}`;
|
|
593
|
+
else {
|
|
594
|
+
if (current) blocks.push(current);
|
|
595
|
+
current = '';
|
|
596
|
+
}
|
|
597
|
+
if (current) blocks.push(current);
|
|
598
|
+
return blocks.map((block, index)=>{
|
|
599
|
+
if (/^#{1,6}\s/.test(block)) return /*#__PURE__*/ jsx("h5", {
|
|
600
|
+
children: /*#__PURE__*/ jsx(Inline, {
|
|
601
|
+
text: block.replace(/^#{1,6}\s/, '')
|
|
602
|
+
})
|
|
603
|
+
}, index);
|
|
604
|
+
if (block.startsWith('|')) {
|
|
605
|
+
const rows = block.split('\n').filter((row)=>!/^\|[\s:|-]+\|$/.test(row));
|
|
606
|
+
return /*#__PURE__*/ jsx("table", {
|
|
607
|
+
children: /*#__PURE__*/ jsx("tbody", {
|
|
608
|
+
children: rows.map((row, rowIndex)=>/*#__PURE__*/ jsx("tr", {
|
|
609
|
+
children: row.split('|').slice(1, -1).map((cell, column)=>0 === rowIndex ? /*#__PURE__*/ jsx("th", {
|
|
610
|
+
children: /*#__PURE__*/ jsx(Inline, {
|
|
611
|
+
text: cell.trim()
|
|
612
|
+
})
|
|
613
|
+
}, column) : /*#__PURE__*/ jsx("td", {
|
|
614
|
+
children: /*#__PURE__*/ jsx(Inline, {
|
|
615
|
+
text: cell.trim()
|
|
616
|
+
})
|
|
617
|
+
}, column))
|
|
618
|
+
}, rowIndex))
|
|
619
|
+
})
|
|
620
|
+
}, index);
|
|
621
|
+
}
|
|
622
|
+
return /*#__PURE__*/ jsx("p", {
|
|
623
|
+
children: /*#__PURE__*/ jsx(Inline, {
|
|
624
|
+
text: block
|
|
625
|
+
})
|
|
626
|
+
}, index);
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
function AgentConnectMarkdown({ text }) {
|
|
630
|
+
return /*#__PURE__*/ jsx("div", {
|
|
631
|
+
className: "ov-agent-connect__markdown",
|
|
632
|
+
children: text.split(/(^[ \t]*```[^\n]*\n[\s\S]*?^[ \t]*```[ \t]*$)/gm).map((part, index)=>{
|
|
633
|
+
const code = /^[ \t]*```[^\n]*\n([\s\S]*?)\n[ \t]*```[ \t]*$/.exec(part);
|
|
634
|
+
return code ? /*#__PURE__*/ jsx("pre", {
|
|
635
|
+
children: /*#__PURE__*/ jsx("code", {
|
|
636
|
+
children: code[1]
|
|
637
|
+
})
|
|
638
|
+
}, index) : /*#__PURE__*/ jsx(Prose, {
|
|
639
|
+
text: part
|
|
640
|
+
}, index);
|
|
641
|
+
})
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
function AgentConnectInstructionsView({ instructions, locale, agreementUrl, onCopy }) {
|
|
645
|
+
const [status, setStatus] = useState('idle');
|
|
646
|
+
const pending = useRef(false);
|
|
647
|
+
const mounted = useRef(false);
|
|
648
|
+
const setRoot = useCallback((node)=>{
|
|
649
|
+
mounted.current = null !== node;
|
|
650
|
+
}, []);
|
|
651
|
+
const labels = AGENT_CONNECT_COPY[locale];
|
|
652
|
+
const message = 'copied' === status ? labels.copied : 'failed' === status ? labels.failed : '';
|
|
653
|
+
const copyLabel = instructions.fixed ? labels.copy : labels.copyMarkdown;
|
|
654
|
+
async function handleCopy() {
|
|
655
|
+
if (pending.current) return;
|
|
656
|
+
pending.current = true;
|
|
657
|
+
setStatus('pending');
|
|
658
|
+
try {
|
|
659
|
+
await navigator.clipboard.writeText(instructions.copy);
|
|
660
|
+
} catch {
|
|
661
|
+
if (mounted.current) setStatus('failed');
|
|
662
|
+
return;
|
|
663
|
+
} finally{
|
|
664
|
+
pending.current = false;
|
|
665
|
+
}
|
|
666
|
+
if (!mounted.current) return;
|
|
667
|
+
setStatus('copied');
|
|
668
|
+
onCopy?.(instructions.copy);
|
|
669
|
+
}
|
|
670
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
671
|
+
ref: setRoot,
|
|
672
|
+
className: "ov-agent-connect__instructions",
|
|
673
|
+
children: [
|
|
674
|
+
/*#__PURE__*/ jsxs("div", {
|
|
675
|
+
className: "ov-agent-connect__instructions-header",
|
|
676
|
+
children: [
|
|
677
|
+
/*#__PURE__*/ jsx("h4", {
|
|
678
|
+
className: "ov-agent-connect__instructions-title",
|
|
679
|
+
children: labels.instructions
|
|
680
|
+
}),
|
|
681
|
+
/*#__PURE__*/ jsxs("button", {
|
|
682
|
+
className: "ov-agent-connect__copy",
|
|
683
|
+
type: "button",
|
|
684
|
+
disabled: 'pending' === status,
|
|
685
|
+
onClick: ()=>void handleCopy(),
|
|
686
|
+
children: [
|
|
687
|
+
/*#__PURE__*/ jsx(copyreact, {
|
|
688
|
+
"aria-hidden": "true"
|
|
689
|
+
}),
|
|
690
|
+
'copied' === status ? labels.copied : copyLabel
|
|
691
|
+
]
|
|
692
|
+
})
|
|
693
|
+
]
|
|
694
|
+
}),
|
|
695
|
+
/*#__PURE__*/ jsx("div", {
|
|
696
|
+
className: "ov-agent-connect__body",
|
|
697
|
+
children: instructions.fixed ? instructions.display : /*#__PURE__*/ jsx(AgentConnectMarkdown, {
|
|
698
|
+
text: instructions.display
|
|
699
|
+
})
|
|
700
|
+
}),
|
|
701
|
+
/*#__PURE__*/ jsx("span", {
|
|
702
|
+
className: `ov-agent-connect__feedback${'failed' === status ? ' ov-agent-connect__feedback--error' : ''}`,
|
|
703
|
+
role: "status",
|
|
704
|
+
"aria-live": "polite",
|
|
705
|
+
children: message
|
|
706
|
+
}),
|
|
707
|
+
/*#__PURE__*/ jsxs("p", {
|
|
708
|
+
className: "ov-agent-connect__footer",
|
|
709
|
+
children: [
|
|
710
|
+
labels.notice,
|
|
711
|
+
agreementUrl ? /*#__PURE__*/ jsxs(Fragment, {
|
|
712
|
+
children: [
|
|
713
|
+
labels.seeAgreement,
|
|
714
|
+
/*#__PURE__*/ jsx("a", {
|
|
715
|
+
className: "ov-agent-connect__agreement",
|
|
716
|
+
href: agreementUrl,
|
|
717
|
+
target: "_blank",
|
|
718
|
+
rel: "noopener noreferrer",
|
|
719
|
+
children: labels.agreement
|
|
720
|
+
})
|
|
721
|
+
]
|
|
722
|
+
}) : null
|
|
723
|
+
]
|
|
724
|
+
})
|
|
725
|
+
]
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
function AgentConnectDetailView({ selected, apiKey, locale, baseUrl, agreementUrl, onCopy }) {
|
|
729
|
+
const [guideId, setGuideId] = useState('');
|
|
730
|
+
const activeGuide = selected.guides.find((guide)=>guide.id === guideId) ?? selected.guides[0];
|
|
731
|
+
const instructions = getAgentConnectInstructions(selected.id, locale, apiKey, baseUrl, activeGuide?.id);
|
|
732
|
+
const [credentials, setCredentials] = useState({
|
|
733
|
+
apiKey,
|
|
734
|
+
baseUrl,
|
|
735
|
+
revision: 0
|
|
736
|
+
});
|
|
737
|
+
if (credentials.apiKey !== apiKey || credentials.baseUrl !== baseUrl) setCredentials({
|
|
738
|
+
apiKey,
|
|
739
|
+
baseUrl,
|
|
740
|
+
revision: credentials.revision + 1
|
|
741
|
+
});
|
|
742
|
+
const labels = AGENT_CONNECT_COPY[locale];
|
|
743
|
+
const title = selected.name.endsWith(labels.integration) ? selected.name : `${selected.name} ${labels.integration}`;
|
|
744
|
+
return /*#__PURE__*/ jsxs("section", {
|
|
745
|
+
className: "ov-agent-connect__detail",
|
|
746
|
+
"aria-label": title,
|
|
747
|
+
children: [
|
|
748
|
+
/*#__PURE__*/ jsxs("div", {
|
|
749
|
+
className: "ov-agent-connect__identity",
|
|
750
|
+
children: [
|
|
751
|
+
'codex' === selected.id ? /*#__PURE__*/ jsx(codex_detailreact, {
|
|
752
|
+
className: "ov-agent-connect__detail-icon",
|
|
753
|
+
"aria-hidden": "true"
|
|
754
|
+
}) : /*#__PURE__*/ jsx("span", {
|
|
755
|
+
className: "ov-agent-connect__detail-icon ov-agent-connect__detail-icon--frame",
|
|
756
|
+
"aria-hidden": "true",
|
|
757
|
+
children: /*#__PURE__*/ jsx(selected.Icon, {})
|
|
758
|
+
}),
|
|
759
|
+
/*#__PURE__*/ jsxs("div", {
|
|
760
|
+
className: "ov-agent-connect__summary",
|
|
761
|
+
children: [
|
|
762
|
+
/*#__PURE__*/ jsx("h3", {
|
|
763
|
+
className: "ov-agent-connect__detail-title",
|
|
764
|
+
children: title
|
|
765
|
+
}),
|
|
766
|
+
/*#__PURE__*/ jsx("p", {
|
|
767
|
+
className: "ov-agent-connect__description",
|
|
768
|
+
children: selected.description
|
|
769
|
+
}),
|
|
770
|
+
selected.tags.length > 0 ? /*#__PURE__*/ jsx("div", {
|
|
771
|
+
className: "ov-agent-connect__tags",
|
|
772
|
+
children: selected.tags.map((tag)=>/*#__PURE__*/ jsx("span", {
|
|
773
|
+
className: "ov-agent-connect__tag",
|
|
774
|
+
children: tag
|
|
775
|
+
}, tag))
|
|
776
|
+
}) : null
|
|
777
|
+
]
|
|
778
|
+
})
|
|
779
|
+
]
|
|
780
|
+
}),
|
|
781
|
+
selected.guides.length > 0 ? /*#__PURE__*/ jsx("div", {
|
|
782
|
+
className: `ov-agent-connect__guides${'cli' === selected.id ? ' ov-agent-connect__guides--cli' : ''}`,
|
|
783
|
+
role: "group",
|
|
784
|
+
"aria-label": title,
|
|
785
|
+
children: selected.guides.map((guide)=>/*#__PURE__*/ jsx("button", {
|
|
786
|
+
className: "ov-agent-connect__guide",
|
|
787
|
+
type: "button",
|
|
788
|
+
"aria-pressed": guide.id === activeGuide?.id,
|
|
789
|
+
onClick: ()=>setGuideId(guide.id),
|
|
790
|
+
children: guide.label
|
|
791
|
+
}, guide.id))
|
|
792
|
+
}) : null,
|
|
793
|
+
/*#__PURE__*/ jsx(AgentConnectInstructionsView, {
|
|
794
|
+
instructions: instructions,
|
|
795
|
+
locale: locale,
|
|
796
|
+
agreementUrl: agreementUrl,
|
|
797
|
+
onCopy: onCopy
|
|
798
|
+
}, `${selected.id}:${locale}:${activeGuide?.id ?? ''}:${credentials.revision}`)
|
|
799
|
+
]
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
const SvgCodex = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
803
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
804
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
805
|
+
width: 20,
|
|
806
|
+
height: 20,
|
|
807
|
+
fill: "none",
|
|
808
|
+
viewBox: "0 0 20 20",
|
|
809
|
+
...props,
|
|
810
|
+
children: [
|
|
811
|
+
/*#__PURE__*/ jsx("rect", {
|
|
812
|
+
width: 15,
|
|
813
|
+
height: 15,
|
|
814
|
+
x: 2.5,
|
|
815
|
+
y: 2.5,
|
|
816
|
+
fill: "url(#codex_svg__a)",
|
|
817
|
+
rx: 4
|
|
818
|
+
}),
|
|
819
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
820
|
+
children: [
|
|
821
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
822
|
+
id: "codex_svg__a",
|
|
823
|
+
width: 1,
|
|
824
|
+
height: 1,
|
|
825
|
+
patternContentUnits: "objectBoundingBox",
|
|
826
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
827
|
+
xlinkHref: "#codex_svg__b",
|
|
828
|
+
transform: "translate(-.125 -.125)scale(.00244)"
|
|
829
|
+
})
|
|
830
|
+
}),
|
|
831
|
+
/*#__PURE__*/ jsx("image", {
|
|
832
|
+
xlinkHref: "data:image/png;base64,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",
|
|
833
|
+
id: "codex_svg__b",
|
|
834
|
+
width: 512,
|
|
835
|
+
height: 512,
|
|
836
|
+
preserveAspectRatio: "none"
|
|
837
|
+
})
|
|
838
|
+
]
|
|
839
|
+
})
|
|
840
|
+
]
|
|
841
|
+
});
|
|
842
|
+
const codexreact = SvgCodex;
|
|
843
|
+
const SvgClaudeCode = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
844
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
845
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
846
|
+
width: 20,
|
|
847
|
+
height: 20,
|
|
848
|
+
fill: "none",
|
|
849
|
+
viewBox: "0 0 20 20",
|
|
850
|
+
...props,
|
|
851
|
+
children: [
|
|
852
|
+
/*#__PURE__*/ jsx("path", {
|
|
853
|
+
fill: "url(#claude-code_svg__a)",
|
|
854
|
+
d: "M2.5 2.5h15v15h-15z"
|
|
855
|
+
}),
|
|
856
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
857
|
+
children: [
|
|
858
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
859
|
+
id: "claude-code_svg__a",
|
|
860
|
+
width: 1,
|
|
861
|
+
height: 1,
|
|
862
|
+
patternContentUnits: "objectBoundingBox",
|
|
863
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
864
|
+
xlinkHref: "#claude-code_svg__b",
|
|
865
|
+
transform: "matrix(.00676 0 0 .00676 -.04 0)"
|
|
866
|
+
})
|
|
867
|
+
}),
|
|
868
|
+
/*#__PURE__*/ jsx("image", {
|
|
869
|
+
xlinkHref: "data:image/png;base64,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",
|
|
870
|
+
id: "claude-code_svg__b",
|
|
871
|
+
width: 160,
|
|
872
|
+
height: 148,
|
|
873
|
+
preserveAspectRatio: "none"
|
|
874
|
+
})
|
|
875
|
+
]
|
|
876
|
+
})
|
|
877
|
+
]
|
|
878
|
+
});
|
|
879
|
+
const claude_codereact = SvgClaudeCode;
|
|
880
|
+
const SvgDoubao = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
881
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
882
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
883
|
+
width: 20,
|
|
884
|
+
height: 20,
|
|
885
|
+
fill: "none",
|
|
886
|
+
viewBox: "0 0 20 20",
|
|
887
|
+
...props,
|
|
888
|
+
children: [
|
|
889
|
+
/*#__PURE__*/ jsx("rect", {
|
|
890
|
+
width: 15,
|
|
891
|
+
height: 15,
|
|
892
|
+
x: 2.5,
|
|
893
|
+
y: 2.5,
|
|
894
|
+
fill: "url(#doubao_svg__a)",
|
|
895
|
+
rx: 4
|
|
896
|
+
}),
|
|
897
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
898
|
+
children: [
|
|
899
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
900
|
+
id: "doubao_svg__a",
|
|
901
|
+
width: 1,
|
|
902
|
+
height: 1,
|
|
903
|
+
patternContentUnits: "objectBoundingBox",
|
|
904
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
905
|
+
xlinkHref: "#doubao_svg__b",
|
|
906
|
+
transform: "matrix(.0047 0 0 .0047 -.125 -.125)"
|
|
907
|
+
})
|
|
908
|
+
}),
|
|
909
|
+
/*#__PURE__*/ jsx("image", {
|
|
910
|
+
xlinkHref: "data:image/png;base64,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",
|
|
911
|
+
id: "doubao_svg__b",
|
|
912
|
+
width: 266,
|
|
913
|
+
height: 266,
|
|
914
|
+
preserveAspectRatio: "none"
|
|
915
|
+
})
|
|
916
|
+
]
|
|
917
|
+
})
|
|
918
|
+
]
|
|
919
|
+
});
|
|
920
|
+
const doubaoreact = SvgDoubao;
|
|
921
|
+
const SvgWorkbuddy = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
922
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
923
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
924
|
+
width: 20,
|
|
925
|
+
height: 20,
|
|
926
|
+
fill: "none",
|
|
927
|
+
viewBox: "0 0 20 20",
|
|
928
|
+
...props,
|
|
929
|
+
children: [
|
|
930
|
+
/*#__PURE__*/ jsx("rect", {
|
|
931
|
+
width: 15,
|
|
932
|
+
height: 15,
|
|
933
|
+
x: 2.5,
|
|
934
|
+
y: 2.5,
|
|
935
|
+
fill: "url(#workbuddy_svg__a)",
|
|
936
|
+
rx: 4
|
|
937
|
+
}),
|
|
938
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
939
|
+
children: [
|
|
940
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
941
|
+
id: "workbuddy_svg__a",
|
|
942
|
+
width: 1,
|
|
943
|
+
height: 1,
|
|
944
|
+
patternContentUnits: "objectBoundingBox",
|
|
945
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
946
|
+
xlinkHref: "#workbuddy_svg__b",
|
|
947
|
+
transform: "scale(.00179)"
|
|
948
|
+
})
|
|
949
|
+
}),
|
|
950
|
+
/*#__PURE__*/ jsx("image", {
|
|
951
|
+
xlinkHref: "data:image/png;base64,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",
|
|
952
|
+
id: "workbuddy_svg__b",
|
|
953
|
+
width: 560,
|
|
954
|
+
height: 560,
|
|
955
|
+
preserveAspectRatio: "none"
|
|
956
|
+
})
|
|
957
|
+
]
|
|
958
|
+
})
|
|
959
|
+
]
|
|
960
|
+
});
|
|
961
|
+
const workbuddyreact = SvgWorkbuddy;
|
|
962
|
+
const SvgTrae = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
963
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
964
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
965
|
+
width: 20,
|
|
966
|
+
height: 20,
|
|
967
|
+
fill: "none",
|
|
968
|
+
viewBox: "0 0 20 20",
|
|
969
|
+
...props,
|
|
970
|
+
children: [
|
|
971
|
+
/*#__PURE__*/ jsx("rect", {
|
|
972
|
+
width: 15,
|
|
973
|
+
height: 15,
|
|
974
|
+
x: 2.5,
|
|
975
|
+
y: 2.5,
|
|
976
|
+
fill: "url(#trae_svg__a)",
|
|
977
|
+
rx: 4
|
|
978
|
+
}),
|
|
979
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
980
|
+
children: [
|
|
981
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
982
|
+
id: "trae_svg__a",
|
|
983
|
+
width: 1,
|
|
984
|
+
height: 1,
|
|
985
|
+
patternContentUnits: "objectBoundingBox",
|
|
986
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
987
|
+
xlinkHref: "#trae_svg__b",
|
|
988
|
+
transform: "scale(.00676)"
|
|
989
|
+
})
|
|
990
|
+
}),
|
|
991
|
+
/*#__PURE__*/ jsx("image", {
|
|
992
|
+
xlinkHref: "data:image/png;base64,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",
|
|
993
|
+
id: "trae_svg__b",
|
|
994
|
+
width: 148,
|
|
995
|
+
height: 148,
|
|
996
|
+
preserveAspectRatio: "none"
|
|
997
|
+
})
|
|
998
|
+
]
|
|
999
|
+
})
|
|
1000
|
+
]
|
|
1001
|
+
});
|
|
1002
|
+
const traereact = SvgTrae;
|
|
1003
|
+
const SvgCursor = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1004
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1005
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1006
|
+
width: 20,
|
|
1007
|
+
height: 20,
|
|
1008
|
+
fill: "none",
|
|
1009
|
+
viewBox: "0 0 20 20",
|
|
1010
|
+
...props,
|
|
1011
|
+
children: [
|
|
1012
|
+
/*#__PURE__*/ jsx("rect", {
|
|
1013
|
+
width: 15,
|
|
1014
|
+
height: 15,
|
|
1015
|
+
x: 2.5,
|
|
1016
|
+
y: 2.5,
|
|
1017
|
+
fill: "url(#cursor_svg__a)",
|
|
1018
|
+
rx: 4
|
|
1019
|
+
}),
|
|
1020
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
1021
|
+
children: [
|
|
1022
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
1023
|
+
id: "cursor_svg__a",
|
|
1024
|
+
width: 1,
|
|
1025
|
+
height: 1,
|
|
1026
|
+
patternContentUnits: "objectBoundingBox",
|
|
1027
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
1028
|
+
xlinkHref: "#cursor_svg__b",
|
|
1029
|
+
transform: "matrix(.00676 0 0 .00676 -.03 0)"
|
|
1030
|
+
})
|
|
1031
|
+
}),
|
|
1032
|
+
/*#__PURE__*/ jsx("image", {
|
|
1033
|
+
xlinkHref: "data:image/png;base64,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",
|
|
1034
|
+
id: "cursor_svg__b",
|
|
1035
|
+
width: 157,
|
|
1036
|
+
height: 148,
|
|
1037
|
+
preserveAspectRatio: "none"
|
|
1038
|
+
})
|
|
1039
|
+
]
|
|
1040
|
+
})
|
|
1041
|
+
]
|
|
1042
|
+
});
|
|
1043
|
+
const cursorreact = SvgCursor;
|
|
1044
|
+
const SvgOpenclaw = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1045
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1046
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1047
|
+
width: 20,
|
|
1048
|
+
height: 20,
|
|
1049
|
+
fill: "none",
|
|
1050
|
+
viewBox: "0 0 20 20",
|
|
1051
|
+
...props,
|
|
1052
|
+
children: [
|
|
1053
|
+
/*#__PURE__*/ jsx("path", {
|
|
1054
|
+
fill: "url(#openclaw_svg__a)",
|
|
1055
|
+
d: "M2.5 2.5h15v15h-15z"
|
|
1056
|
+
}),
|
|
1057
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
1058
|
+
children: [
|
|
1059
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
1060
|
+
id: "openclaw_svg__a",
|
|
1061
|
+
width: 1,
|
|
1062
|
+
height: 1,
|
|
1063
|
+
patternContentUnits: "objectBoundingBox",
|
|
1064
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
1065
|
+
xlinkHref: "#openclaw_svg__b",
|
|
1066
|
+
transform: "scale(.00444)"
|
|
1067
|
+
})
|
|
1068
|
+
}),
|
|
1069
|
+
/*#__PURE__*/ jsx("image", {
|
|
1070
|
+
xlinkHref: "data:image/png;base64,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",
|
|
1071
|
+
id: "openclaw_svg__b",
|
|
1072
|
+
width: 225,
|
|
1073
|
+
height: 225,
|
|
1074
|
+
preserveAspectRatio: "none"
|
|
1075
|
+
})
|
|
1076
|
+
]
|
|
1077
|
+
})
|
|
1078
|
+
]
|
|
1079
|
+
});
|
|
1080
|
+
const openclawreact = SvgOpenclaw;
|
|
1081
|
+
const SvgHermes = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1082
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1083
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1084
|
+
width: 20,
|
|
1085
|
+
height: 20,
|
|
1086
|
+
fill: "none",
|
|
1087
|
+
viewBox: "0 0 20 20",
|
|
1088
|
+
...props,
|
|
1089
|
+
children: [
|
|
1090
|
+
/*#__PURE__*/ jsx("rect", {
|
|
1091
|
+
width: 17,
|
|
1092
|
+
height: 18,
|
|
1093
|
+
x: 1.5,
|
|
1094
|
+
y: 1,
|
|
1095
|
+
fill: "url(#hermes_svg__a)",
|
|
1096
|
+
rx: 8
|
|
1097
|
+
}),
|
|
1098
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
1099
|
+
children: [
|
|
1100
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
1101
|
+
id: "hermes_svg__a",
|
|
1102
|
+
width: 1,
|
|
1103
|
+
height: 1,
|
|
1104
|
+
patternContentUnits: "objectBoundingBox",
|
|
1105
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
1106
|
+
xlinkHref: "#hermes_svg__b",
|
|
1107
|
+
transform: "matrix(.00083 0 0 .00078 -.03 0)"
|
|
1108
|
+
})
|
|
1109
|
+
}),
|
|
1110
|
+
/*#__PURE__*/ jsx("image", {
|
|
1111
|
+
xlinkHref: "data:image/png;base64,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",
|
|
1112
|
+
id: "hermes_svg__b",
|
|
1113
|
+
width: 1280,
|
|
1114
|
+
height: 1280,
|
|
1115
|
+
preserveAspectRatio: "none"
|
|
1116
|
+
})
|
|
1117
|
+
]
|
|
1118
|
+
})
|
|
1119
|
+
]
|
|
1120
|
+
});
|
|
1121
|
+
const hermesreact = SvgHermes;
|
|
1122
|
+
const SvgOpencode = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1123
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1124
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1125
|
+
width: 20,
|
|
1126
|
+
height: 20,
|
|
1127
|
+
fill: "none",
|
|
1128
|
+
viewBox: "0 0 20 20",
|
|
1129
|
+
...props,
|
|
1130
|
+
children: [
|
|
1131
|
+
/*#__PURE__*/ jsx("rect", {
|
|
1132
|
+
width: 15,
|
|
1133
|
+
height: 15,
|
|
1134
|
+
x: 2.5,
|
|
1135
|
+
y: 2.5,
|
|
1136
|
+
fill: "url(#opencode_svg__a)",
|
|
1137
|
+
rx: 4
|
|
1138
|
+
}),
|
|
1139
|
+
/*#__PURE__*/ jsxs("defs", {
|
|
1140
|
+
children: [
|
|
1141
|
+
/*#__PURE__*/ jsx("pattern", {
|
|
1142
|
+
id: "opencode_svg__a",
|
|
1143
|
+
width: 1,
|
|
1144
|
+
height: 1,
|
|
1145
|
+
patternContentUnits: "objectBoundingBox",
|
|
1146
|
+
children: /*#__PURE__*/ jsx("use", {
|
|
1147
|
+
xlinkHref: "#opencode_svg__b",
|
|
1148
|
+
transform: "matrix(.00676 0 0 .00676 -.375 0)"
|
|
1149
|
+
})
|
|
1150
|
+
}),
|
|
1151
|
+
/*#__PURE__*/ jsx("image", {
|
|
1152
|
+
xlinkHref: "data:image/png;base64,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",
|
|
1153
|
+
id: "opencode_svg__b",
|
|
1154
|
+
width: 259,
|
|
1155
|
+
height: 148,
|
|
1156
|
+
preserveAspectRatio: "none"
|
|
1157
|
+
})
|
|
1158
|
+
]
|
|
1159
|
+
})
|
|
1160
|
+
]
|
|
1161
|
+
});
|
|
1162
|
+
const opencodereact = SvgOpencode;
|
|
1163
|
+
const SvgDeepseekHarness = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1164
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1165
|
+
width: 20,
|
|
1166
|
+
height: 20,
|
|
1167
|
+
viewBox: "0 0 96 96",
|
|
1168
|
+
...props,
|
|
1169
|
+
children: [
|
|
1170
|
+
/*#__PURE__*/ jsx("defs", {
|
|
1171
|
+
children: /*#__PURE__*/ jsx("mask", {
|
|
1172
|
+
id: "deepseek-harness_svg__a",
|
|
1173
|
+
style: {
|
|
1174
|
+
maskType: "alpha"
|
|
1175
|
+
},
|
|
1176
|
+
children: /*#__PURE__*/ jsx("image", {
|
|
1177
|
+
width: 96,
|
|
1178
|
+
height: 96,
|
|
1179
|
+
href: "data:image/png;base64,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"
|
|
1180
|
+
})
|
|
1181
|
+
})
|
|
1182
|
+
}),
|
|
1183
|
+
/*#__PURE__*/ jsx("path", {
|
|
1184
|
+
fill: "currentColor",
|
|
1185
|
+
d: "M0 0h96v96H0z",
|
|
1186
|
+
mask: "url(#deepseek-harness_svg__a)"
|
|
1187
|
+
})
|
|
1188
|
+
]
|
|
1189
|
+
});
|
|
1190
|
+
const deepseek_harnessreact = SvgDeepseekHarness;
|
|
1191
|
+
const SvgDeerflow = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1192
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1193
|
+
width: 20,
|
|
1194
|
+
height: 20,
|
|
1195
|
+
viewBox: "0 0 96 96",
|
|
1196
|
+
...props,
|
|
1197
|
+
children: [
|
|
1198
|
+
/*#__PURE__*/ jsx("defs", {
|
|
1199
|
+
children: /*#__PURE__*/ jsx("mask", {
|
|
1200
|
+
id: "deerflow_svg__a",
|
|
1201
|
+
style: {
|
|
1202
|
+
maskType: "alpha"
|
|
1203
|
+
},
|
|
1204
|
+
children: /*#__PURE__*/ jsx("image", {
|
|
1205
|
+
width: 96,
|
|
1206
|
+
height: 96,
|
|
1207
|
+
href: "data:image/png;base64,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"
|
|
1208
|
+
})
|
|
1209
|
+
})
|
|
1210
|
+
}),
|
|
1211
|
+
/*#__PURE__*/ jsx("path", {
|
|
1212
|
+
fill: "currentColor",
|
|
1213
|
+
d: "M0 0h96v96H0z",
|
|
1214
|
+
mask: "url(#deerflow_svg__a)"
|
|
1215
|
+
})
|
|
1216
|
+
]
|
|
1217
|
+
});
|
|
1218
|
+
const deerflowreact = SvgDeerflow;
|
|
1219
|
+
const SvgPi = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1220
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1221
|
+
width: 20,
|
|
1222
|
+
height: 20,
|
|
1223
|
+
viewBox: "0 0 96 96",
|
|
1224
|
+
...props,
|
|
1225
|
+
children: [
|
|
1226
|
+
/*#__PURE__*/ jsx("defs", {
|
|
1227
|
+
children: /*#__PURE__*/ jsx("mask", {
|
|
1228
|
+
id: "pi_svg__a",
|
|
1229
|
+
style: {
|
|
1230
|
+
maskType: "alpha"
|
|
1231
|
+
},
|
|
1232
|
+
children: /*#__PURE__*/ jsx("image", {
|
|
1233
|
+
width: 96,
|
|
1234
|
+
height: 96,
|
|
1235
|
+
href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAACeklEQVR42u2dS27UQBQAyzN2AgsQAUVR+FyCQ3AArsC1uAIHYkWQQJMgJbBNMp5m4bZkeYEy3Y4/Q9XGq+lxd/n5856fDCIiIiIiIiIio1Ek/OY48XdzJgB3cTtrAcfAV+AE2B6AiABUwDfgA3AV5zSaiDJB2Evg2YFFwAmwmuKPy4Tf1HG7O5AIWHXmtAgB3Wg4tGvB6KxcAgUoQBSgAFGAAkQBChAFKEBYRC6IARJhTFTTUICJvGkF1MA1eUWdEPf/FbBWwMMXrQBugI/Ad5qKVEiIni3wFvgCnHfGVsAD2AIXwM/Mce7jWJ6CEjjqFHVSIiB0xlBA4ukoZNwRhSneYvA5wAcxUYACRAEKEAUoQBSgAFEA5oLIeLu6yCjmFJ2cUGo+iU4qe4g3vsNSBNwNsHD3NPWEXJEVTVp79ATfVALWwDuaJo8qcdI1cAZs4jh1xhpc0hR1ysTqWhtBddyf8Fh12SfxD15kVqBq4Fc8gosMiVfAp7hdZxSH3gCfgdMMkWvgD/AeuF1CBJwPdB3ZxCM4d39eRwE5PN/3gFrqaylt9PWvAamVtSqOFRIju7s//81rKUXvLii3slb07q5G6ZnzOcAHMQWIAhQgClCAKEABogAFCPaI7VPJUgDjJ+OKXo+BAti/CHJJekGm7Q/7YYdMfo9YmXgqafvErpd8OpqyS3JDU5b0IjwROZWsx2j4tkfM5wBRgAJEAQoQBShAFKAAUYAChLnmgkJGOpqZf9ZktHmVic0MqdFT9MaYE5PMq0wwfRO328RGhiqOsZvR4u/iPj0lrUrXVuh+7xtBU33IbbIPp/1jHY4GmtctIiIiIiIiIiLz5C8JhYlXfr0gqQAAAABJRU5ErkJggg=="
|
|
1236
|
+
})
|
|
1237
|
+
})
|
|
1238
|
+
}),
|
|
1239
|
+
/*#__PURE__*/ jsx("path", {
|
|
1240
|
+
fill: "currentColor",
|
|
1241
|
+
d: "M0 0h96v96H0z",
|
|
1242
|
+
mask: "url(#pi_svg__a)"
|
|
1243
|
+
})
|
|
1244
|
+
]
|
|
1245
|
+
});
|
|
1246
|
+
const pireact = SvgPi;
|
|
1247
|
+
const SvgZcode = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1248
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1249
|
+
width: 20,
|
|
1250
|
+
height: 20,
|
|
1251
|
+
viewBox: "0 0 96 96",
|
|
1252
|
+
...props,
|
|
1253
|
+
children: [
|
|
1254
|
+
/*#__PURE__*/ jsx("defs", {
|
|
1255
|
+
children: /*#__PURE__*/ jsx("mask", {
|
|
1256
|
+
id: "zcode_svg__a",
|
|
1257
|
+
style: {
|
|
1258
|
+
maskType: "alpha"
|
|
1259
|
+
},
|
|
1260
|
+
children: /*#__PURE__*/ jsx("image", {
|
|
1261
|
+
width: 96,
|
|
1262
|
+
height: 96,
|
|
1263
|
+
href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFaklEQVR42u2cTahVVRTHf/ve60evD0oo6UMLrEFmZIWzrEEYlpShg4qiQUnNxJJQKhsUhkWBFEFGgQT2ikJeNAht0OdA0KiwN8hyYBoqYVb41Pdxzmmw1+bsdzn3hfr2OspZfzicy+O+e9ZaZ+3/XnutvRcYDAaDwWAwGAwGg8FgMBgMBoPBYDCcGpzJU7+AbWAqUCjI3wKGgayHbgUwTb6nIU8bGKrjBbSAHLgMGABuBkYTvWAnz5oG/ADcDxyKDB7LcwfwAXAJMJZwROTAdGAz8GSXLCqjqC1KvyUP1riGgCWRwen6fCmwQ1GeH4FZFfKo0ADAo+L1mXhECiVz8eQCeC56vuuSxwFvy/eyhEbP5PpLRlttxp8PHIiMlFLhAvgU6BNDuwp5HpMXlSX2+vD7q6M5QNX4DrgY+FLB28KL3QvMqZjDgvK3yJyg4f0F8KHMR6oRl4sUflUEGUtMPTlwHFjag/edTLZfKRp/EJhdR8gblF8OnIiGe57gymRuKYCX/4f3X4ucoUjsDMeAu+ugHhfx/kHFKGM7cJEYuyrqeRA4mXgOir1/3WRMup3TNH4HeAD4G9ifeOZvA0eBp4F/e8T7c4FXhItTxt+5PPMzod4zjvfdGVDQhYkXN7GMo+LdscLhuX3AJ8Bi8c52YuPvBe4B9kQO0Mg8Uxh1LypFYJkEAcvq4P2zDcH490W8r7H+2BAZ3zXd+NcKDWitP0IQ4JpsfCcv4Dxgq0LIGX77ADCvjlTD2er9a5UWfxkwAjxivF8O+0XAP4q8/2aPxV+jEDzvSmC3YqrhO2DGuVJdS837U4AtCrwfjH8QWGC8Xyq/MjJQat4fw1e2LN6X+23AEcV6w3uSbmlZvA+XAzsVef97YKbxfpn1fEeR948CC433S+VXKNeZVxnvl8a/FTisyPv9EmkZ7+PrzN8q5nkGgauN98uhv1GJ9zNZVd9lvD++tDhSw/6idtO9H+AGYJ8i7w9Qvb+ocZ7fwufatyvy/m9U7y9qZLwPfsuJ1v6iIXw1zXhf7kvFKLkS76+3FHOp+ByhAy3e77W/qHHGdzIBDijy/j6Z6C3el8/PKqaYRyTENd5nfGkxS+z9gfc3WrxfKj4b+FmR97+R9AZN5/1QWuxX5P3DkthrPPUE3l+luKVkFJ/SNt6X+0J80aNQ4v1NUbjZeN6fCexSLC3uxJczjffxBe53FXn/CL6Qb7wv9yeicDM17xf4LSzG+3JfQHmUSYP3t1hpsVR8Bn57nxbv7wauaHphPU4xv6HE+7msqhc1Pc8Te97DyqXFtcb7pfLzgD8UD1BsxR/aaDzvO8aXFjXyPHvwx5UaH+8H6tmgyPsnqW5d0FjeX4Y/ypkpef9LPYzvmtTjLRxWvg74HF9izBN6ZDiMvQ3fq+K4/L379Hyf0qgIh8eP1fECwv9PBT4G7k1s/EKe+Tv+tPpg12n1YIwlwAuyIEt5kj30pFsPfFTHyflg6HUKvB+4fxh4qIJ6Ag1eA/yi2ERkW3SOrBbeXyzDL/WpxRByvt612IsXf9PxfSMKfC0gT3SF3/412tzVqqu0OKiYavga35TJ9WhZ84xSkT+MxOV1pT2ccF+/ovHj0mK7wvh34tvnaPeNaNVFPau7UsCpt5E/PkGLylnAT4rO8AVwQR2beoPCt+NbNWZKCm+agPc7wPsKdeYgy37gxjpbVF6Fb1KqFWXswDdhpeIFQFnk17iGKftGTIrxO6cY8wI8D1yPbx+WMt7v4Av4a4A/e8T7NwFPRatvl1iezfhWyO3JivdPR+DzezTLTtUjeniC3mxTFBZbsTwnrCW+yWMwGAwGg8FgMBgMBoPBYDAYDAaD4RzDf8XVrSBLHjsKAAAAAElFTkSuQmCC"
|
|
1264
|
+
})
|
|
1265
|
+
})
|
|
1266
|
+
}),
|
|
1267
|
+
/*#__PURE__*/ jsx("path", {
|
|
1268
|
+
fill: "currentColor",
|
|
1269
|
+
d: "M0 0h96v96H0z",
|
|
1270
|
+
mask: "url(#zcode_svg__a)"
|
|
1271
|
+
})
|
|
1272
|
+
]
|
|
1273
|
+
});
|
|
1274
|
+
const zcodereact = SvgZcode;
|
|
1275
|
+
const SvgKimiCode = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1276
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1277
|
+
width: 20,
|
|
1278
|
+
height: 20,
|
|
1279
|
+
viewBox: "0 0 96 96",
|
|
1280
|
+
...props,
|
|
1281
|
+
children: [
|
|
1282
|
+
/*#__PURE__*/ jsx("defs", {
|
|
1283
|
+
children: /*#__PURE__*/ jsx("mask", {
|
|
1284
|
+
id: "kimi-code_svg__a",
|
|
1285
|
+
style: {
|
|
1286
|
+
maskType: "alpha"
|
|
1287
|
+
},
|
|
1288
|
+
children: /*#__PURE__*/ jsx("image", {
|
|
1289
|
+
width: 96,
|
|
1290
|
+
height: 96,
|
|
1291
|
+
href: "data:image/png;base64,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"
|
|
1292
|
+
})
|
|
1293
|
+
})
|
|
1294
|
+
}),
|
|
1295
|
+
/*#__PURE__*/ jsx("path", {
|
|
1296
|
+
fill: "currentColor",
|
|
1297
|
+
d: "M0 0h96v96H0z",
|
|
1298
|
+
mask: "url(#kimi-code_svg__a)"
|
|
1299
|
+
})
|
|
1300
|
+
]
|
|
1301
|
+
});
|
|
1302
|
+
const kimi_codereact = SvgKimiCode;
|
|
1303
|
+
const SvgMcp = (props)=>/*#__PURE__*/ jsx("svg", {
|
|
1304
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1305
|
+
width: 20,
|
|
1306
|
+
height: 20,
|
|
1307
|
+
fill: "none",
|
|
1308
|
+
viewBox: "0 0 16 16",
|
|
1309
|
+
...props,
|
|
1310
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
1311
|
+
fill: "currentColor",
|
|
1312
|
+
d: "M14.604 1.405c.26.26.26.682 0 .942l-.982.982a4 4 0 0 1-.432 5.147l-.943.943a.667.667 0 0 1-.943 0L6.59 4.705a.667.667 0 0 1 0-.943l.943-.943a4 4 0 0 1 5.147-.432l.981-.982c.26-.26.683-.26.943 0M8.476 3.762l-.471.471 3.77 3.771.472-.471a2.667 2.667 0 0 0-3.771-3.771M3.33 13.622a4 4 0 0 0 5.146-.432l.943-.943a.667.667 0 0 0 0-.943l-.472-.471.707-.707a.667.667 0 0 0-.942-.943l-.707.707-1.886-1.886.707-.707a.667.667 0 1 0-.943-.943l-.707.708-.471-.472a.667.667 0 0 0-.943 0l-.943.943a4 4 0 0 0-.432 5.146l-.982.982a.667.667 0 1 0 .943.943zm.432-1.375a2.667 2.667 0 0 1 0-3.771l.471-.472.47.47.002.002 3.3 3.3-.472.471a2.667 2.667 0 0 1-3.771 0"
|
|
1313
|
+
})
|
|
1314
|
+
});
|
|
1315
|
+
const mcpreact = SvgMcp;
|
|
1316
|
+
const SvgCli = (props)=>/*#__PURE__*/ jsx("svg", {
|
|
1317
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1318
|
+
width: 20,
|
|
1319
|
+
height: 20,
|
|
1320
|
+
fill: "none",
|
|
1321
|
+
viewBox: "0 0 16 16",
|
|
1322
|
+
...props,
|
|
1323
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
1324
|
+
stroke: "currentColor",
|
|
1325
|
+
strokeLinecap: "round",
|
|
1326
|
+
strokeLinejoin: "round",
|
|
1327
|
+
strokeWidth: 1.2,
|
|
1328
|
+
d: "m3 4.8 3.432 3.05a.2.2 0 0 1 0 .3L3 11.2m10 0H8.2"
|
|
1329
|
+
})
|
|
1330
|
+
});
|
|
1331
|
+
const clireact = SvgCli;
|
|
1332
|
+
const SvgApi = (props)=>/*#__PURE__*/ jsx("svg", {
|
|
1333
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1334
|
+
width: 20,
|
|
1335
|
+
height: 20,
|
|
1336
|
+
fill: "none",
|
|
1337
|
+
viewBox: "0 0 16 16",
|
|
1338
|
+
...props,
|
|
1339
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
1340
|
+
stroke: "currentColor",
|
|
1341
|
+
strokeLinecap: "round",
|
|
1342
|
+
strokeLinejoin: "round",
|
|
1343
|
+
strokeWidth: 1.2,
|
|
1344
|
+
d: "M11.333 11.333 14.667 8l-3.334-3.333m-6.666 0L1.333 8l3.334 3.333M9.333 2 6.667 14"
|
|
1345
|
+
})
|
|
1346
|
+
});
|
|
1347
|
+
const apireact = SvgApi;
|
|
1348
|
+
const SvgSdk = (props)=>/*#__PURE__*/ jsxs("svg", {
|
|
1349
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1350
|
+
width: 20,
|
|
1351
|
+
height: 20,
|
|
1352
|
+
fill: "none",
|
|
1353
|
+
viewBox: "0 0 16 16",
|
|
1354
|
+
...props,
|
|
1355
|
+
children: [
|
|
1356
|
+
/*#__PURE__*/ jsx("path", {
|
|
1357
|
+
fill: "currentColor",
|
|
1358
|
+
d: "M7.351 1.46a2.72 2.72 0 0 1 3.84 0c.594.594.854 1.394.782 2.17a2.77 2.77 0 0 1 2.15.68l.102.097.032.03a2.7 2.7 0 0 1 0 3.857l-5.506 5.42c-.04.04-.04.101 0 .141l1.13 1.113a.603.603 0 0 1-.846.859l-1.13-1.113a1.3 1.3 0 0 1 0-1.858l5.506-5.421c.6-.592.6-1.547 0-2.138l-.032-.032a1.574 1.574 0 0 0-2.038-.136 3 3 0 0 1-.15.166L6.677 9.798a.603.603 0 0 1-1-.243.6.6 0 0 1 .123-.684l4.534-4.464q.071-.07.145-.132c.44-.59.394-1.427-.142-1.962a1.51 1.51 0 0 0-2.135 0L2.23 8.276a.603.603 0 0 1-.852-.853z"
|
|
1359
|
+
}),
|
|
1360
|
+
/*#__PURE__*/ jsx("path", {
|
|
1361
|
+
fill: "currentColor",
|
|
1362
|
+
d: "M8.815 2.92a.603.603 0 0 1 .857.85L5.319 8.156a1.507 1.507 0 0 0 0 2.117l.112.103c.58.477 1.433.442 1.974-.103l4.353-4.388a.603.603 0 0 1 .857.85L8.26 11.122a2.67 2.67 0 0 1-3.799 0 2.71 2.71 0 0 1 0-3.815z"
|
|
1363
|
+
})
|
|
1364
|
+
]
|
|
1365
|
+
});
|
|
1366
|
+
const sdkreact = SvgSdk;
|
|
1367
|
+
const mainstream = [
|
|
1368
|
+
{
|
|
1369
|
+
id: 'codex',
|
|
1370
|
+
Icon: codexreact
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
id: 'claude-code',
|
|
1374
|
+
Icon: claude_codereact
|
|
1375
|
+
},
|
|
1376
|
+
{
|
|
1377
|
+
id: 'doubao',
|
|
1378
|
+
Icon: doubaoreact
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
id: 'workbuddy',
|
|
1382
|
+
Icon: workbuddyreact
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
id: 'trae',
|
|
1386
|
+
Icon: traereact
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
id: 'cursor',
|
|
1390
|
+
Icon: cursorreact
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
id: 'openclaw',
|
|
1394
|
+
Icon: openclawreact
|
|
1395
|
+
},
|
|
1396
|
+
{
|
|
1397
|
+
id: 'hermes',
|
|
1398
|
+
Icon: hermesreact
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
id: 'opencode',
|
|
1402
|
+
Icon: opencodereact
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
id: 'deepseek-harness',
|
|
1406
|
+
Icon: deepseek_harnessreact
|
|
1407
|
+
},
|
|
1408
|
+
{
|
|
1409
|
+
id: 'deerflow',
|
|
1410
|
+
Icon: deerflowreact
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
id: 'pi',
|
|
1414
|
+
Icon: pireact
|
|
1415
|
+
},
|
|
1416
|
+
{
|
|
1417
|
+
id: 'zcode',
|
|
1418
|
+
Icon: zcodereact
|
|
1419
|
+
},
|
|
1420
|
+
{
|
|
1421
|
+
id: 'kimi-code',
|
|
1422
|
+
Icon: kimi_codereact
|
|
1423
|
+
}
|
|
1424
|
+
];
|
|
1425
|
+
const overseasAgents = new Set([
|
|
1426
|
+
'codex',
|
|
1427
|
+
'claude-code',
|
|
1428
|
+
'cursor',
|
|
1429
|
+
'openclaw',
|
|
1430
|
+
'hermes',
|
|
1431
|
+
'opencode',
|
|
1432
|
+
'pi'
|
|
1433
|
+
]);
|
|
1434
|
+
const custom = [
|
|
1435
|
+
{
|
|
1436
|
+
id: 'mcp',
|
|
1437
|
+
Icon: mcpreact
|
|
1438
|
+
},
|
|
1439
|
+
{
|
|
1440
|
+
id: 'cli',
|
|
1441
|
+
Icon: clireact
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
id: 'api',
|
|
1445
|
+
Icon: apireact
|
|
1446
|
+
},
|
|
1447
|
+
{
|
|
1448
|
+
id: 'sdk',
|
|
1449
|
+
Icon: sdkreact
|
|
1450
|
+
}
|
|
1451
|
+
];
|
|
1452
|
+
function getAgentConnectDesign(locale) {
|
|
1453
|
+
const content = getAgentConnectContent(locale);
|
|
1454
|
+
const labels = AGENT_CONNECT_COPY[locale];
|
|
1455
|
+
return {
|
|
1456
|
+
tabs: [
|
|
1457
|
+
{
|
|
1458
|
+
id: 'mainstream',
|
|
1459
|
+
label: labels.mainstream
|
|
1460
|
+
},
|
|
1461
|
+
{
|
|
1462
|
+
id: 'custom',
|
|
1463
|
+
label: labels.custom
|
|
1464
|
+
}
|
|
1465
|
+
],
|
|
1466
|
+
mainstream: mainstream.map((item)=>({
|
|
1467
|
+
...item,
|
|
1468
|
+
...content[item.id],
|
|
1469
|
+
tags: [
|
|
1470
|
+
...content[item.id].tags,
|
|
1471
|
+
...overseasAgents.has(item.id) ? [
|
|
1472
|
+
labels.overseas
|
|
1473
|
+
] : []
|
|
1474
|
+
]
|
|
1475
|
+
})),
|
|
1476
|
+
custom: custom.map((item)=>({
|
|
1477
|
+
...item,
|
|
1478
|
+
...content[item.id]
|
|
1479
|
+
}))
|
|
1480
|
+
};
|
|
1481
|
+
}
|
|
1482
|
+
function AgentConnect({ apiKey, locale, baseUrl = DEFAULT_BASE_URL, agreementUrl, activeTabId: controlledTabId, selectedId: controlledSelectedId, onTabChange, onSelect, onCopy, className, ...rest }) {
|
|
1483
|
+
const id = useId();
|
|
1484
|
+
const [localTabId, setLocalTabId] = useState('mainstream');
|
|
1485
|
+
const [localSelection, setLocalSelection] = useState({
|
|
1486
|
+
mainstream: 'codex',
|
|
1487
|
+
custom: 'mcp'
|
|
1488
|
+
});
|
|
1489
|
+
const activeTabId = controlledTabId ?? localTabId;
|
|
1490
|
+
const selectedId = controlledSelectedId ?? localSelection[activeTabId];
|
|
1491
|
+
const design = getAgentConnectDesign(locale);
|
|
1492
|
+
const labels = AGENT_CONNECT_COPY[locale];
|
|
1493
|
+
const tabs = design.tabs;
|
|
1494
|
+
const items = design[activeTabId];
|
|
1495
|
+
const activeIndex = Math.max(0, tabs.findIndex((tab)=>tab.id === activeTabId));
|
|
1496
|
+
const selected = items.find((item)=>item.id === selectedId) ?? items[0];
|
|
1497
|
+
function selectTab(tabId) {
|
|
1498
|
+
setLocalTabId(tabId);
|
|
1499
|
+
onTabChange?.(tabId);
|
|
1500
|
+
}
|
|
1501
|
+
function selectItem(item) {
|
|
1502
|
+
setLocalSelection((previous)=>({
|
|
1503
|
+
...previous,
|
|
1504
|
+
[activeTabId]: item.id
|
|
1505
|
+
}));
|
|
1506
|
+
onSelect?.({
|
|
1507
|
+
id: item.id,
|
|
1508
|
+
name: item.name
|
|
1509
|
+
});
|
|
1510
|
+
}
|
|
1511
|
+
return /*#__PURE__*/ jsx("div", {
|
|
1512
|
+
...rest,
|
|
1513
|
+
className: [
|
|
1514
|
+
'ov-agent-connect',
|
|
1515
|
+
className
|
|
1516
|
+
].filter(Boolean).join(' '),
|
|
1517
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
1518
|
+
className: "ov-agent-connect__canvas",
|
|
1519
|
+
children: [
|
|
1520
|
+
/*#__PURE__*/ jsxs("header", {
|
|
1521
|
+
className: "ov-agent-connect__header",
|
|
1522
|
+
children: [
|
|
1523
|
+
/*#__PURE__*/ jsx("h2", {
|
|
1524
|
+
className: "ov-agent-connect__title",
|
|
1525
|
+
children: labels.title
|
|
1526
|
+
}),
|
|
1527
|
+
/*#__PURE__*/ jsx("div", {
|
|
1528
|
+
className: "ov-agent-connect__tabs",
|
|
1529
|
+
role: "tablist",
|
|
1530
|
+
"aria-label": labels.title,
|
|
1531
|
+
children: tabs.map((tab, index)=>/*#__PURE__*/ jsx("button", {
|
|
1532
|
+
id: `${id}-tab-${index}`,
|
|
1533
|
+
className: "ov-agent-connect__tab",
|
|
1534
|
+
type: "button",
|
|
1535
|
+
role: "tab",
|
|
1536
|
+
"aria-selected": index === activeIndex,
|
|
1537
|
+
"aria-controls": `${id}-panel`,
|
|
1538
|
+
tabIndex: index === activeIndex ? 0 : -1,
|
|
1539
|
+
onClick: ()=>selectTab(tab.id),
|
|
1540
|
+
onKeyDown: (event)=>{
|
|
1541
|
+
let next;
|
|
1542
|
+
if ('Home' === event.key) next = 0;
|
|
1543
|
+
else if ('End' === event.key) next = tabs.length - 1;
|
|
1544
|
+
else {
|
|
1545
|
+
if ('ArrowRight' !== event.key && 'ArrowLeft' !== event.key) return;
|
|
1546
|
+
next = (index + ('ArrowRight' === event.key ? 1 : -1) + tabs.length) % tabs.length;
|
|
1547
|
+
}
|
|
1548
|
+
const nextTab = tabs[next];
|
|
1549
|
+
if (!nextTab) return;
|
|
1550
|
+
event.preventDefault();
|
|
1551
|
+
const buttons = event.currentTarget.parentElement?.querySelectorAll('button');
|
|
1552
|
+
buttons?.[next]?.focus();
|
|
1553
|
+
selectTab(nextTab.id);
|
|
1554
|
+
},
|
|
1555
|
+
children: tab.label
|
|
1556
|
+
}, tab.id))
|
|
1557
|
+
})
|
|
1558
|
+
]
|
|
1559
|
+
}),
|
|
1560
|
+
/*#__PURE__*/ jsxs("div", {
|
|
1561
|
+
id: `${id}-panel`,
|
|
1562
|
+
className: "ov-agent-connect__layout",
|
|
1563
|
+
role: "tabpanel",
|
|
1564
|
+
"aria-labelledby": `${id}-tab-${activeIndex}`,
|
|
1565
|
+
children: [
|
|
1566
|
+
/*#__PURE__*/ jsx("ul", {
|
|
1567
|
+
className: "ov-agent-connect__list",
|
|
1568
|
+
children: items.map((item)=>/*#__PURE__*/ jsx("li", {
|
|
1569
|
+
children: /*#__PURE__*/ jsxs("button", {
|
|
1570
|
+
type: "button",
|
|
1571
|
+
className: "ov-agent-connect__item",
|
|
1572
|
+
"aria-pressed": item.id === selected.id,
|
|
1573
|
+
onClick: ()=>selectItem(item),
|
|
1574
|
+
children: [
|
|
1575
|
+
/*#__PURE__*/ jsx(item.Icon, {
|
|
1576
|
+
className: "ov-agent-connect__item-icon",
|
|
1577
|
+
"aria-hidden": "true"
|
|
1578
|
+
}),
|
|
1579
|
+
/*#__PURE__*/ jsx("span", {
|
|
1580
|
+
className: "ov-agent-connect__item-name",
|
|
1581
|
+
children: item.name
|
|
1582
|
+
})
|
|
1583
|
+
]
|
|
1584
|
+
})
|
|
1585
|
+
}, item.id))
|
|
1586
|
+
}),
|
|
1587
|
+
/*#__PURE__*/ jsx(AgentConnectDetailView, {
|
|
1588
|
+
selected: selected,
|
|
1589
|
+
apiKey: apiKey,
|
|
1590
|
+
locale: locale,
|
|
1591
|
+
baseUrl: baseUrl,
|
|
1592
|
+
agreementUrl: agreementUrl,
|
|
1593
|
+
onCopy: onCopy
|
|
1594
|
+
}, `${activeTabId}:${selected.id}:${locale}`)
|
|
1595
|
+
]
|
|
1596
|
+
})
|
|
1597
|
+
]
|
|
1598
|
+
})
|
|
1599
|
+
});
|
|
1600
|
+
}
|
|
1601
|
+
export { AgentConnect };
|