openviking接入

https://www.openviking.ai/

uv tool安装

uv tool install openviking --python 3.12

按照道理来讲,安装完了这个就可以使用Ov和OpenViking Server了。 也可以接入OpenCode,OpenCode要装个插件。但是我现在需要解决embedding模型的问题和VLM模型的问题。
VLM可以用小米的模型。
Embedding模型用Agent Plan带的吧。

Embedding:

  • embedding 模型id: doubao-embedding-vision
  • baseURL : https://ark.cn-beijing.volces.com/api/plan/v3
    VLM:
  • Opencode Go的 mimo2.5

在整理这个资料的过程当中,学习到了几个新的知识:

  • uv管理的python是只占用同一份存储空间的
  • uv tool install 是安装全局,且工具使用自己的python解释器,互相独立
  • 之前的markitdown其实也可以用uv tool install安装,而并不要找一个路径uv sync装

好那就开始安装openviking吧。
具体步骤记录:

安装ov

uv tool install openviking --upgrade

Installed 4 executables: openviking, openviking-server, ov, vikingbot

安装完成,可以使用客户端命令 ovopenviking 是其别名)和服务端命令 openviking-server

配置

openviking-server init

通过它自带的配置了一下。然后呢我发现它火山引擎配的那个URL不对,因为我是Agent的plan。所以我就手动去配置文件里面改了一下。

然后再运行openviking-server doctor报一个socks错(因为我命令行有时候开了代理):

 openviking-server doctor

OpenViking Doctor

  Config:        PASS  /Users/rhett/.openviking/ov.conf
  Python:        PASS  3.14.2 (>= 3.10 required)
  Native Engine: PASS  variant=native
  AGFS:          PASS  AGFS SDK 0.1.7
13:05:11 - LiteLLM:WARNING: get_model_cost_map.py:264 - LiteLLM: Failed to fetch remote model cost map from https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.. Falling back to local backup.
  Embedding:     FAIL  volcengine/doubao-embedding-vision api_base=https://ark.cn-beijing.volces.com/api/plan/v3 dimension=1024 (invalid embedding config: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.)
                 Fix: Fix embedding.dense provider/model/api_base/dimension in ov.conf
  VLM:           PASS  openai/mimo-v2.5
  Ollama:        PASS  not configured
  VikingBot:     PASS  VikingBot aligned with dev OpenViking auth
  Disk:          PASS  2164.6 GB free in /Users/rhett/.openviking/data

  1 check(s) failed. See above for fix suggestions.

但我现在不知道怎么,因为我是用UV tool install 安装的ov,那怎么给这个ov的依赖安装httpx[socks]呢?

查询发现可以用--with来安装。

追加重装了一次:

uv tool install openviking --reinstall --with "httpx[socks]"

这次校验通过了。


at 13:09 ❯ openviking-server doctor

OpenViking Doctor

  Config:        PASS  /Users/rhett/.openviking/ov.conf
  Python:        PASS  3.14.2 (>= 3.10 required)
  Native Engine: PASS  variant=native
  AGFS:          PASS  AGFS SDK 0.1.7
  Embedding:     PASS  volcengine/doubao-embedding-vision api_base=https://ark.cn-beijing.volces.com/api/plan/v3 dimension=1024 probe ok (dimension=1024)
  VLM:           PASS  openai/mimo-v2.5
  Ollama:        PASS  not configured
  VikingBot:     PASS  VikingBot aligned with dev OpenViking auth
  Disk:          PASS  2164.5 GB free in /Users/rhett/.openviking/data

  All checks passed.

运行服务端

居然报错:

openviking-server

Traceback (most recent call last):
  File "/Users/rhett/.local/bin/openviking-server", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Users/rhett/.local/share/uv/tools/openviking/lib/python3.14/site-packages/openviking_cli/server_bootstrap.py", line 104, in main
    _real_main()
    ~~~~~~~~~~^^
  File "/Users/rhett/.local/share/uv/tools/openviking/lib/python3.14/site-packages/openviking/server/bootstrap.py", line 282, in main
    app = create_app(config)
  File "/Users/rhett/.local/share/uv/tools/openviking/lib/python3.14/site-packages/openviking/server/app.py", line 716, in create_app
    from openviking.server.mcp_endpoint import create_mcp_app
  File "/Users/rhett/.local/share/uv/tools/openviking/lib/python3.14/site-packages/openviking/server/mcp_endpoint.py", line 27, in <module>
    from mcp.server.fastmcp import FastMCP
ModuleNotFoundError: No module named 'mcp.server.fastmcp'
$ uv tool uninstall openviking && uv tool install openviking --python 3.12 --with "httpx[socks]" 2>&1 | tail -15

降级3.12 依然不行,

$ uv tool install openviking --python 3.12 --with "httpx[socks]" --with "mcp<2" --reinstall 2>&1 | tail -6

mcp 报错的原因(和 httpx[socks] 无关):

  • openviking 依赖声明 mcp>=1.27.0 无上限,uv 解析时拿了刚发布的 mcp 2.0.0
  • mcp 2.0 是破坏性重构,删掉了 mcp.server.fastmcp 模块,openviking 0.4.11 还在用旧 API
    修复:重装并 pin mcp<2:
uv tool install openviking --python 3.12 --with "httpx[socks]" --with "mcp<2" --reinstall

两个关键选择:

  1. Python 3.12(不是 3.14):mcp 1.x 不支持 3.14,3.14 会强迫 uv 用 mcp 2.0
  2. --with "mcp<2":显式锁住 mcp 1.x,这是核心修复

启动成功,可在浏览器打开http://localhost:1933/

配置OpenCode接入

bash <(curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/memory-plugin-shared/install.sh) --harness opencode
# 输入 http://127.0.0.1:1933;如果启用了认证,再输入 API Key
at 13:31 ❯ bash <(curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/memory-plugin-shared/install.sh) --harness opencode
Language / 语言
   ( ) English
 > (•) 中文
   ↑/↓ move · 1-9 jump · enter confirm

1. 环境检查
==> OS: Darwin
==> 已选择: opencode
安装源模式
   ( ) GitHub  (默认;支持远程更新)
 > (•) 火山引擎 TOS 镜像(无法访问 GitHub 时使用)
   ↑/↓ 移动 · 数字直选 · 回车确认

2. OpenViking 凭据配置 (/Users/rhett/.openviking/ovcli.conf)
==> 未找到已有配置。
连接到哪个 OpenViking 服务?
   ( ) 自建 / 本地  [http://127.0.0.1:1933]
   ( ) 火山引擎 OpenViking 云服务  [api.vikingdb.cn-beijing.volces.com]
 > (•) 自定义 URL / 保持当前  [http://127.0.0.1:1933]
   ↑/↓ 移动 · 数字直选 · 回车确认
??  服务地址 [http://127.0.0.1:1933]:
??  API key(本地免鉴权模式请直接回车):
==> 已更新: url: — -> http://127.0.0.1:1933
==> 凭据已就绪: /Users/rhett/.openviking/ovcli.conf
==> 之后可重跑本安装脚本重新配置。
==> 安装源模式: archive (渠道: tos)

3. Marketplace 归档
==> 下载归档
==>   https://ovrelease.tos-cn-beijing.volces.com/releases/latest/memory-plugin-marketplace.zip

4. OpenCode 插件
==> OpenCode 文件插件已安装: /Users/rhett/.config/opencode/plugins/openviking

5. 安装校验
==> opencode: openviking-memory 看起来已安装
==> opencode: MCP server 已注册

完成
==> 凭据: /Users/rhett/.openviking/ovcli.conf
==> OpenCode: @openviking/opencode-plugin

~/Downloads took 42s
at 13:32 ❯

重启Opencode生效,可以在/status里看到。
后续聊天会自动被hook写入记忆到openviking中。

设置开机自启动server

手动创建~/Library/LaunchAgents/com.openviking.server.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.openviking.server</string>

    <key>ProgramArguments</key>
    <array>
        <string>/Users/rhett/.local/bin/openviking-server</string>
    </array>

    <key>RunAtLoad</key>
    <true/>

    <key>KeepAlive</key>
    <true/>

    <key>WorkingDirectory</key>
    <string>/Users/rhett/.openviking</string>

    <key>StandardOutPath</key>
    <string>/Users/rhett/.openviking/openviking.log</string>

    <key>StandardErrorPath</key>
    <string>/Users/rhett/.openviking/openviking.err.log</string>
</dict>
</plist>

配置hermes接入

原始状态:

at 13:55 ❯ hermes memory status

Memory status
────────────────────────────────────────
  Built-in:  always active
  Provider:  (none — built-in only)

  Installed plugins:
    • byterover  (API key / local)
    • hindsight  (API key / local)
    • holographic  (local)
    • honcho  (API key / local)
    • mem0  (API key / local)
    • openviking  (API key / local)
    • retaindb  (API key / local)
    • supermemory  (requires API key)

改成接入openviking:

hermes memory setup
# 选择 openviking,然后输入 endpoint / API Key
hermes memory status

使用体验

随着在Paseo中使用OpenCode对话,或者在terminal中直接跟Hermes发起对话。在对话结束时,它就会把一些记忆自动地归档进去,提取并归档。然后同时session也会完整地保存到库当中,这倒是挺方便。

但是像Identity啊、 Soul啊,这几个文档,它并不是完整的从Hermes当中同步过来,而是自动根据所需提取一些关键信息。

目前对我来说好像能够体会到的就是Hermes跟Open Code的记忆可以互相打通了,那之前是各存各的。那当然了,其实之前我如果一定要互相调取的话,也能调得到,这其实都是存在本地磁盘上嘛,只是路径不一样。但是现在有一个统一管理呢,也还好。而且这个统一管理之后,它会把每一次的对话都做embedding,相当于一个全自动的复盘。比之前只存原始对话记录要更科学一些。

目前我感受到最大的好处就是我每天零散的布置给Open Code的各种任务,可以晚上一句话让它复盘总结。