dsh-openviking-enhance

uitested: passnpmMIT

OpenViking in the DSH web GUI: a Studio panel, a per-session memory-commit status pill with its commit timeline, and a right-sidebar tab showing what the current session retrieves.

下载量 / Downloads
1,710
依赖体积 / node_modules
451.98 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-openviking-enhance

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-openviking-enhance

[English](README.md) | 中文

v0.2.3 · [更新记录](CHANGELOG.md)

把本地 OpenViking 记忆服务接进 DeepSeek Harness

(DSH)的 Web 界面:左侧边栏多一个 OpenViking Studio 面板,输入框下方多一个

commit 状态胶囊,随时能看到每次提交对本会话记忆做了什么。

不需要给 DSH 或 OpenViking 插件打补丁——它就是一个普通的 DSH bundle。

功能

在 DSH 里用 OpenViking Studio。 左侧边栏最后一行点开,主区域直接加载

OpenViking 服务自带的 Studio 界面,浏览记忆、会话、检索都不用离开 DSH 或另开浏览器。

每个会话的 commit 状态。 OpenViking 是按「提交(commit)」写入记忆的:会话的

对话轮次累积到 token 阈值(或会话结束)时归档一次,并抽取其中的记忆。输入框下方的

胶囊告诉你当前会话处在哪一步:

胶囊 · 含义

OV · 未提交 · 本会话还没有内容被提交

OV · 12.3k/20k · 正在累积,接近提交阈值

OV · 抽取中… · 正在归档并抽取记忆

OV · 3 次提交 · 已提交 3 次

OV · 抽取失败 · 最新一次提交已归档,但记忆抽取失败

OV · 已取消 · 最新一次提交在抽取记忆前被取消

OV · 不可用 · 连不上本地 OpenViking 服务

点开胶囊可以看到:

  • 时间线:最近 3 次提交分别发生在什么时候、抽取成功还是失败、各新增/更新/删除了多少条记忆

(其余一次点击展开);

  • 点某一次提交,列出它具体改了哪些记忆,含 viking:// 路径;
  • 抽取失败的时间,以及服务端给出的原因。比最新提交更早的失败仍会列在这里,但不会改变胶囊状态。

面板和胶囊都只读——本插件不会向 OpenViking 提交、写入或删除任何东西。

这个会话检索到了什么。 右侧边栏多一个「记忆召回」tab:显示当前会话会被

OpenViking 拉进上下文的记忆——检索用的那句话(默认是本会话最近一次提问,也可以自己输入)、

三个来源(记忆 / 资源 / 技能)里每条命中的分数(按高低从红到橙到绿分级)、文件名、

类型(entity、event 等)与摘要——完整 viking:// 路径悬停可见,点开任意一条可看全文——

以及服务端给出的检索计划。从右侧边栏的 + 引导页打开,和该栏本身一样是按会话的。

Studio 面板、打开它的侧边栏行,以及输入框下方的提交状态胶囊。

前置条件

DSH · 0.2.0-rc.2 或更新(desktop / web profile 均可;已在 0.2.1-rc.3 实测)

OpenViking · 需要一个本地服务,实测 0.5.1.1。Studio 由同一端口的 /studio/ 提供

记忆插件 · 建议装 @openviking/dsh-memory-plugin——会话提交由它完成。不装也能用,只是看不到提交阈值进度

安装

从 Plugins 页安装(Add plugin → 填包名或 tarball),或:

# 从 npm 装
dsh plugin --profile desktop add dsh-openviking-enhance

# 或从最新 release 装预构建 tarball
dsh plugin --profile desktop add https://github.com/A2chitect/dsh-openviking-enhance/releases/latest/download/dsh-openviking-enhance.tgz

直接用 Git 地址安装会被 pnpm 拒绝(这个包声明了构建脚本,pnpm 在得到允许前一律不放行),

所以源码目录要打成 tarball 再装——客户端半部分是预构建产物,源码安装等于装了个没东西可加载的壳:

pnpm pack && dsh plugin --profile desktop add ./dsh-openviking-enhance-<版本>.tgz

安装后重启一次 DSH 应用(宿主部分在启动时加载)。卸载:

dsh plugin --profile desktop remove dsh-openviking-enhance

配置

默认值适配标准本地环境,开箱无需配置。要改的话,打开侧边栏的 Plugins 页,找到本插件,

点它那一行的 Configure:表单包含下表的全部字段,地址旁边有 检测 按钮可以在保存前先试连,

每个字段还有 默认 按钮——它是清除覆盖、恢复继承,而不是写入一个空值。

同样的设置也仍然可以手写在 profile 的 patch 文件

(~/.dsh/profiles/desktop/cordis.patch.yml)里 openviking-enhance 这一行下面:

- id: openviking-enhance
  name: 'dsh-openviking-enhance'
  config:
    endpoint: http://127.0.0.1:1933

字段 · 默认值 · 说明

endpoint · 读 ~/.openviking/ovcli.conf,否则 http://127.0.0.1:1933 · OpenViking 地址

apiKey · 读 ovcli.conf · 仅在服务端开启鉴权时需要

account / user · default / default · 读取记忆所用的身份

studioPath · /studio/ · Studio 在该地址下的路径

cacheTtlMs · 2500 · 状态结果的缓存时长

recallCacheTtlMs · 15000 · 单次检索结果的缓存时长

showSidebarEntry · true · 界面开关:左侧边栏里的 OpenViking 入口

showCommitStatus · true · 界面开关:输入框下方的提交状态胶囊

showRecallPanel · true · 界面开关:右侧边栏的「记忆召回」tab

三个界面开关分别控制这三个入口,保存后立即生效——界面会当场挂载或卸载对应入口,

不需要重载窗口或重启应用。Configure 表单本身永远不会被隐藏,所以关掉的入口随时可以

在这里重新打开。隐藏左侧入口会一并卸载 Studio 页面(重新打开后重新加载);隐藏召回 tab

后不再提供该页,已打开的召回页会在回到对话时自动收起(若它在后台分屏里、不是激活页,

则需要手动关闭——框架没有提供枚举标签页的接口)。

常见问题

侧边栏没有 OpenViking 行,或输入框下方没有胶囊。

先看插件自己的开关(Plugins → 本插件 → Configure → 「界面」):某个入口可能被关掉了,

而且三个开关互相独立。否则是客户端部分没加载:重载窗口(⌘R)即可,仍然没有就重启应用。

我把 OpenViking 行 / 胶囊 / 召回 tab 关掉了,想找回来。

打开 Plugins → dsh-openviking-enhance → 它那一行的 Configure,把开关打开再保存。

即使三个入口全都隐藏,这个配置表单也始终可用。

面板提示连不上 OpenViking。

先起服务并直接验证:curl http://127.0.0.1:1933/health。面板会显示它尝试的地址,

endpoint 不是默认值时这个信息很有用。

胶囊显示「抽取失败」。

归档成功了,但 OpenViking 没能把它变成记忆——那部分记忆不在你的库里。点开胶囊看

服务端返回的原因,通常是 ~/.openviking/ov.conf 里抽取所用模型的问题。

胶囊显示 token 数而不是提交次数。

说明没装 @openviking/dsh-memory-plugin,插件无从得知提交阈值。提交本身照常发生,

只是少了进度分母。

时间线只有 3 条。

这是默认值,点「显示全部」展开。

右侧边栏里没有召回 tab。

该 tab 从右侧边栏自己的 + 引导页进入,且需要重载窗口后才会出现(客户端部分是页面加载时

取用的文件)。若 DSH 低于 0.2.0-rc.2,它没有右侧边栏可供挂载:这一行会被跳过,

Studio 面板和胶囊照常工作。

改了代码但界面没变化。

两半的加载方式不同:客户端部分重载窗口即可,宿主部分必须重启应用。

说明

  • 本插件自身的界面文字跟随应用语言:内置中英两套文案,读取 DSH 设置的语言,

切换应用语言即切换本插件的文案;其他语言退回英文。

  • OpenViking 会定期清理 commit 任务记录,所以失败列表只覆盖最近的提交;归档文件

本身是永久的。

  • 插件的内部接口只接受本机 loopback 且来自 DSH 窗口自身来源的请求。

开发

pnpm install
pnpm run build      # lib/index.js(宿主)+ lib/client.js(浏览器)
pnpm test           # 类型检查、构建、发布要求核对、单测、冒烟
pnpm run watch      # 改动后自动重建

冒烟脚本不需要开界面就能打印提交时间线;OpenViking 没在跑时它会跳过实时数据部分

(SMOKE_REQUIRE_SERVER=1 可让跳过变成失败)。各部分的实现细节见源码注释。

版本号写在 package.json,每次发布在 git 里打 vX.Y.Z 标签;0.x 期间内部实现

仍可能调整。每个版本包含什么见 [CHANGELOG.md](CHANGELOG.md),发版步骤和必须在界面里

过一遍的验收清单见 [RELEASING.md](RELEASING.md)。

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::4,最后更新 2026-11-04

Links

GitHub · Homepage · npm

Same category