deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
基于 ChromaDB 向量 + BM25 关键词双轨混合检索的 Hermes Agent 原生持久化记忆插件
中日英多语言支持 · RRF 融合重排 · A-Res 加权采样 · 上下文自动缝合 · 毫秒级增量缓存 · 零配置开箱即用
🇨🇳 中文说明 | 🇺🇸 English
本仓库同时维护 mihaji 的两个实现,机制同源、各自独立演进:
| 🐍 Hermes 版(本页) | ⚡ DSH 版(dsh-mihaji) | |
|---|---|---|
| 平台 | Hermes Agent(Python / ChromaDB + BM25) | DeepSeek Harness profile bundle(Node) |
| 代码目录 | mihaji/ |
dsh-mihaji/ |
| 存储 | ChromaDB 向量库 | JSON 单文件(memory.json)+ 关键词/向量混合检索 |
| 默认嵌入模型 | fp32 PyTorch(SentenceTransformer) | INT8 q8 ONNX 量化(transformers.js,文件 ~113MB、进程内 ~450MB) |
| 安装 / 文档 | 按本页下方说明 | dsh-mihaji/README.md |
docs/dsh-port-design.md。chunk_idx ± 1 片段,杜绝断句断意。bm25_cache.json;新记忆存入时仅对新块做增量分词追加,彻底消除每轮对话全量扫描带来的 1~2 秒主线程卡顿。remember(主动存储)、search(精准查询)、delete(语义/ID遗忘纠错)、count(条目统计)。maintenance.py:超短噪音清洗、跨桶 Jaccard 相似度去重、JSON 全量备份。flowchart TB
subgraph AgentLoop ["🤖 Hermes Agent 运行循环"]
direction TB
UserMsg["👤 用户消息 (User Message)"]
subgraph Retrieval ["🔍 检索与提示词注入阶段"]
Prefetch["⚡ prefetch(query)"]
Hybrid["🧠 Hybrid Search (Vector + BM25)"]
RRF["⚖️ RRF 融合排序"]
Stitch["🧵 上下文缝合 (chunk ± 1)"]
PromptBlock["📋 自动注入系统提示词 (System Prompt)"]
end
Assistant["✨ LLM 思考与回复"]
subgraph Memorization ["💾 记忆存储阶段"]
SyncTurn["📥 sync_turn() 钩子"]
Chunker["✂️ 300字切块 (50重叠)"]
DB[("🗄️ ChromaDB 向量库")]
BM25Cache["⚡ BM25 增量追加 & 磁盘缓存"]
end
UserMsg -->|"对话开始前"| Prefetch
Prefetch --> Hybrid --> RRF --> Stitch --> PromptBlock
PromptBlock --> Assistant
Assistant -->|"对话结束后"| SyncTurn
SyncTurn --> Chunker --> DB & BM25Cache
end
mihaji_memory)插件会自动为 Hermes Agent 注册 mihaji_memory 工具,LLM 可在需要时主动调用:
| 动作 (Action) | 说明 | 关键参数 | 示例场景 |
|---|---|---|---|
search |
混合检索过往记忆 | query, limit (默认5) |
"搜一下用户之前提到的芒果糯米饭做法" |
remember |
主动记录高价值长期记忆 | text, strength (1-100), memory_type, tags |
"记住用户换到了上海工作,偏好泰餐" |
delete |
主动删除错误/过时的记忆 | query, doc_id 或 group_id |
"删除关于之前旧地址的记忆" |
count |
查看当前记忆库总条目数 | 无 | 统计当前记忆容量 |
💡 记忆类型 (
memory_type) 支持:preference(偏好)、knowledge(知识)、event(事件)、task(任务)、general(通用)。
git clone https://github.com/Miyamiz39/mihaji-memory.git
cd mihaji-memory
# Linux / macOS:
ln -s $(pwd)/mihaji ~/.hermes/plugins/mihaji
# Windows (PowerShell 以管理员或开发者模式运行):
# New-Item -ItemType SymbolicLink -Path "$env:LOCALAPPDATA\hermes\plugins\mihaji" -Target "$((Get-Location).Path)\mihaji"
建议在 Hermes 的 Python 虚拟环境中安装:
# 使用 uv (推荐)
uv pip install -r requirements.txt --python ~/.hermes/hermes-agent/venv/bin/python3
# 或使用 pip (请确保处于 Hermes 的 venv 中)
pip install -r requirements.txt
PyTorch 提示:
sentence-transformers依赖 PyTorch。如仅使用 CPU,可安装轻量 CPU 版:pip install torch --index-url https://download.pytorch.org/whl/cpu
在 ~/.hermes/config.yaml 中配置:
memory:
provider: mihaji
# 可选配置(留空则自动使用默认值):
plugins:
mihaji:
db_path: "" # 留空默认使用 profile 下的 mihaji_memory 目录
model_name: "paraphrase-multilingual-MiniLM-L12-v2"
[!NOTE] 关于嵌入模型(Embedding Model): 本插件为多语言跨会话记忆量身设计,固化选用
paraphrase-multilingual-MiniLM-L12-v2(原生支持中、日、英等 50+ 种语言)。 模型推理直接由应用层托管,纯本地离线运行(首次自动通过高速镜像拉取),并配备后台静默预热机制,开箱即用,无需额外配置。 本版为 fp32 PyTorch 加载;同一模型的 INT8 q8(ONNX)量化默认版见 DSH 实现(dsh-mihaji/),两版产出向量可互认。
重启 Hermes 即可生效:
hermes memory status
maintenance.py)项目附带了离线记忆巩固脚本,建议通过 Cron 定期在夜间执行:
# 预览清理效果 (不修改数据库)
python mihaji/maintenance.py --dry-run
# 执行实际清理并自动备份
python mihaji/maintenance.py --backup-dir ~/memory-backups --min-length 20 --dedup-threshold 0.95
功能说明:
< 20 字符的无效碎语噪音;mihaji-memory/
├── README.md # 中文文档
├── README.en.md # English Documentation
├── requirements.txt # 运行时依赖清单
├── LICENSE # MIT License
├── AGENTS.md # 架构 handoff 说明与已知问题排查
└── mihaji/ # 插件核心代码 (对应 Hermes 插件目录)
├── __init__.py # MemoryProvider 入口与 Tool Schema
├── store.py # ChromaDB 存储封装、分块与上下文缝合
├── hybrid_search.py # BM25 增量索引、RRF 融合与 A-Res 加权采样
├── maintenance.py # 记忆维护与去重巩固脚本
└── plugin.yaml # Hermes 插件元数据声明
Built with ❤️ by Miyamiz39 & Hina (Beijing, 2026). 本项目遵循 MIT 开源协议。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。