Cyber-self: Build a Local Repository for Every Identity

前言

在 DSH 里做长期对话时,常见做法是把笔记散落在工作区文件里,靠模型读文件或自己 grep。资料一多,格式杂、身份混在一起,检索和引用出处都不稳定。若你希望「一个角色一套库、导入后自动切块索引、问答带编号出处、数据只在本机」,需要一套挂在工作区上的专用能力。下面介绍社区插件 cyber-self(赛博镜像)——由 MrLsss 维护,在 DSH 插件目录中归类为记忆,当前 GitHub 星标为 0。

这是什么

cyber-self 的定位是:一个人可以有多重身份,每种身份对应一个 DSH 工作区,工作区里挂一份只属于自己的本地资料库。把资料收进来后自动整理、建立全文与向量索引,之后用自然语言提问,回答会注明出处。

一个身份 = 一个 DSH 工作区 = 一个资料库;库文件位于工作区目录下的 .cyberself/kb.db,检索只在当前工作区的库里进行,没有跨身份检索。

插件版本 0.2.0(MIT),兼容 DSH 0.2.1-rc.4 至 0.3.0 之前(>=0.2.1-rc.4 <0.3.0-0)。DSH 社区插件目录由 SkillHub 独立收录,与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看 GitHub 源码 与许可证。插件以当前 DSH 进程权限运行,导入目录路径、调用 Ollama 与视觉模型均在本机完成。

核心功能

用法在 README 里归纳成一条线:收集 → 整理归纳与向量化 → 提问复用。

收集与格式
支持上传文件,或填写 Host 上目录的绝对路径做整目录导入。文档含 PDF、DOCX(Word 内嵌图片会解析);表格含 xlsx、xls、csv;笔记与纯文本含 md、txt 等(自动识别 UTF-8 与 GBK);网页 html;图片与扫描件(依赖能看图的对话模型转写);聊天记录需先导出为 txt、Markdown 或 html。单文件上限 64 MB。.doc 不支持,需另存为 docx 或 PDF。

自动整理
导入时按格式解析正文,按标题、表格行、段落切块,按内容 hash 去重;同一内容重复导入会提示已导入过。

索引
切块写入 SQLite,并建 trigram 全文索引与向量索引(默认通过本机 Ollama 使用 bge-m3)。向量在后台补齐;未完成时仍可提问,此时主要依赖关键词匹配。

问答与引用
对话中提问时插件先检索资料,把命中片段交给对话模型;回答中结论后带 [1]、[2] 等编号,可在面板核对原文块。资料库没有的内容会直说缺什么,不猜测。每个身份可设「仅资料库」或「允许补充(补充句注明资料库外)」。

面板
顶栏或右栏「资料库」:统计、导入、文档列表与分块查看、仅检索不调用模型的检索框,以及向量化全部、清空资料、删除数据等操作。

环境与依赖

  • Node.js 22.5 及以上(资料库使用 node:sqlite)
  • pnpm、DSH 0.2.1-rc 系列
  • 本机 Ollama,嵌入模型需先拉取:
ollama pull bge-m3

扫描件与图片导入还需要能看图的对话模型。从 GitHub 安装时仓库已带构建产物 lib/index.js 与 lib/client.js,一般无需本地再构建;若改源码则:

pnpm install
pnpm build

安装与启用

DSH Desktop

桌面应用的 desktop profile 由 Electron 应用独占管理,命令行 dsh plugin 无法写入。在 DSH Desktop 插件市场搜索 cyber-self 安装即可。桌面里所有工作区均可按需「设为资料库」。

命令行 profile

适合市场未收录时的安装,或做一个「模型只能看资料库」的专用入口。

1、新建 profile

dsh --profile kb --from-default-profile web

--from-default-profile 仅接受 DSH 自带模板 web、headless、tui;不能用 desktop 作模板。

2、安装插件

dsh plugin --profile kb add github:MrLsss/cyber-self

本地开发可在项目根目录执行:

dsh plugin --profile kb add link:"$PWD"

改完源码需 pnpm build 并重启 DSH。确认 ~/.dsh/profiles/kb/package.json 中 dsh.profile.bundles 包含 cyberself。

3、(可选)关掉非资料库工具

编辑 ~/.dsh/profiles/kb/cordis.patch.yml,将 tool-bash、tool-fs、tool-web 等设为 disabled: true,使模型侧不再出现读写文件、联网、执行命令等工具;资料库读取仍通过插件自带的 cyberself_search、cyberself_read。

4、启动

dsh --profile kb

修改 cordis.patch.yml 后必须重启才生效。

两个 profile(Desktop 与 kb)可同时存在;打开同一工作区时共用同一份 .cyberself/kb.db,无需重复导入。

典型用法

四步流程

  1. 打开对应工作区,在资料库面板点「设为资料库」,上传文件或填目录路径导入。
  2. 结构化整理与向量化由插件自动完成。
  3. 在面板查看「已向量化 K 段 / 共 M 段」。
  4. 在对话里直接提问;也可用面板检索框只查资料、不调用模型。

可复现示例(客户跟进)

工作区导入 客户-林总.txt,内容包含报价、第二版方案、签约约定等对话片段。提问:「和林总推进到哪一步了?」回答会归纳到签约阶段,并在句末带 [1] 指向原文块。README 中给出了完整问答示例,可在安装后用自己的导出文件复现同一流程。

其他 README 场景包括:按 mood 从个人歌单资料里筛歌、按条件整理表格数据、学生问知识点、销售问某客户进度等——身份 A/B/C/D 可以是同一人,库之间互不影响。

配置与数据位置

内容 位置
资料库数据库 <工作区>/.cyberself/kb.db
资料库标记与回答范围 <工作区>/.cyberself/config.json
Ollama 等嵌入设置 $DSH_HOME/cyberself/settings.json

设置 → 资料库可改 Ollama 地址(默认 http://127.0.0.1:11434)、嵌入模型名、超时、批大小等。改动模型或部分分块相关选项会清空向量并后台重算;保存前会探测嵌入服务,连不上则不会保存。

检索条数、回答模型、answer.verify 等可在 profile 的 cordis.patch.yml 里配置,默认值见仓库 src/host/config.ts,例如:

- id: cyberself
  config:
    retrieval:
      topK: 8
    answer:
      model: deepseek-chat
      verify: true

若工作区会提交 Git,建议忽略:

.cyberself/

适用场景与注意

适合
需要按「身份 / 项目 / 客户」隔离资料、希望问答带出处、数据留在本机 SQLite 的用户;与 DSH「一切皆插件」的思路一致,记忆能力以 bundle 形式挂进 profile。

限制(README 已写明)
不支持 .doc;扫描 PDF 依赖 @napi-rs/canvas 预编译包,部分平台可能失败;Word 分块可能比 Markdown 更碎;一个工作区一个库、无跨库检索;每库同一时间只有一个向量化任务;向量相似度在 JS 中逐块计算,规模很大时检索耗时会上升。

运维
Ollama 未启动或缺少 bge-m3 会导致嵌入失败;导入成功但语义搜不到时,先看面板「已向量化」是否为 0。连不上服务可用 curl http://127.0.0.1:11434/api/tags 自检。

结尾

cyber-self 把「收集 → 索引 → 带引用问答」绑在 DSH 工作区上,用 .cyberself 目录实现身份级隔离,适合把歌单、工单、笔记、客户聊天记录等收进同一套本地流程。进一步了解与安装:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye