前言¶
在 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,無需重複導入。
典型用法¶
四步流程¶
- 打開對應工作區,在資料庫面板點「設爲資料庫」,上傳文件或填目錄路徑導入。
- 結構化整理與向量化由插件自動完成。
- 在面板查看「已向量化 K 段 / 共 M 段」。
- 在對話裏直接提問;也可用面板檢索框只查資料、不調用模型。
可復現示例(客戶跟進)¶
工作區導入 客戶-林總.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 目錄實現身份級隔離,適合把歌單、工單、筆記、客戶聊天記錄等收進同一套本地流程。進一步瞭解與安裝: