内容
<div align="center">
<img src="img/thoth-mem.png" alt="Thoth-Mem" width="400" />
# Thoth-Mem
**为 AI 编程代理提供持久性内存**
[](https://www.npmjs.com/package/thoth-mem)
[](https://nodejs.org)
[](LICENSE)
给你的 AI 编程代理一个可以在会话、压缩和上下文重置之间存活的大脑。
</div>
---
Thoth-Mem 是一个 MCP 服务器,带有可选的 HTTP REST API,用于存储代理学习的内容 —— 架构决策、错误修复、模式、偏好 —— 在本地 SQLite 数据库中,支持全文搜索。当新会话开始时,代理会立即接续上一个会话的内容。
```
代理会话 1 代理会话 2
┌─────────────────┐ ┌─────────────────┐
│ 发现认证 │──── 保存 ───▶│ 回忆认证模式 │
│ 使用 JWT+refresh │ │ 模式立即生效 │
│ 修复边缘情况 │──── 保存 ───▶│ 避免相同错误 │
└─────────────────┘ └─────────────────┘
│ ▲
└──── thoth.db (SQLite) ──────────┘
```
## 功能
- **6 种紧凑的 MCP 工具** —— 工作流级别的工具,而不是每个内部视图一个工具
- **仪表板 v2 操作控制台** 通过 HTTP 网桥在 `/` 处提供,OpenAPI 文档在 `/docs` 处保留
- **CLI + MCP 双模式** —— 作为服务器或直接从终端使用
- **SQLite + FTS5** 全文搜索(快速,无外部依赖)
- **Git 友好同步** —— 将内存导出为 gzip 压缩块以进行版本控制
- **JSON 导出/导入** —— 便携式内存备份和传输
- **项目迁移** —— 在一次操作中重命名项目的所有实体
- **知识图谱账本重建** —— 为现有内存填充派生 KG/账本事实;保留旧图谱端点兼容性
- **MCP 服务器指令** —— 为连接的代理提供内置协议指导
- **观察版本控制** —— 主题键更新时保留完整历史记录
- **会话丰富** —— 会话在重新连接时自动填充缺少的项目/目录
- **规范化重复数据删除** —— 不区分大小写/格式的重复数据检测
- **严格类型分类** —— 在数据库级别强制执行观察类型
- **分页检索** —— 大型观察结果分块返回,通过偏移量/最大长度
- **隐私保护** —— 存储前剥离 `<private>` 标签
- **令牌高效回忆** —— 紧凑融合证据优先,仅在需要时扩展上下文
- **检索和 KG 评估基准** —— 确定性混合检索和图谱质量基准(词汇、语义原始/HyDE、KG、压缩、血统、禁止三元组、可选 LLM KG 接受)
- **面向代理的 MCP 工具** —— 回忆、保存、上下文、项目导航、会话生命周期和完整内容获取
- **通过 CLI 和 HTTP 进行管理员操作** —— 导出、导入、同步和迁移,无需混淆 MCP 工具表面
- **操作跟踪日志** —— MCP 和 HTTP 调用保留已净化的请求/响应跟踪记录,供仪表板检查
## 快速入门
```bash
# 直接运行 MCP 服务器 + HTTP 网桥(无需安装)
npx -y thoth-mem@latest mcp
# 或全局安装
pnpm add -g thoth-mem
thoth-mem mcp
```
需要 Node.js >= 18。
为了向后兼容,运行 `thoth-mem` 且不带子命令也会启动 MCP 服务器和 HTTP 网桥。新 MCP 客户端配置应优先使用明确的 `mcp` 子命令。
## MCP 配置
### Claude 代码
```bash
claude mcp add thoth-mem -- npx -y thoth-mem@latest mcp
```
### OpenCode
添加到 `~/.config/opencode/config.json`:
```json
{
"mcp": {
"thoth": {
"type": "local",
"command": [
"npx",
"-y",
"thoth-mem@latest",
"mcp"
]
}
}
}
```
### Gemini CLI
添加到 `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"thoth": {
"command": "npx",
"args": ["-y", "thoth-mem@latest", "mcp"]
}
}
}
```
## CLI 命令
Thoth-Mem 也可用作独立的 CLI。当不提供子命令时,它会启动 MCP 服务器(默认为 HTTP 网桥)。
```bash
thoth-mem # 启动 MCP 服务器 + HTTP 网桥(默认)
thoth-mem mcp # 启动 MCP 服务器(显式)
thoth-mem mcp --no-http # 启动 MCP 服务器,无 HTTP 网桥
thoth-mem search <查询> # 搜索内存
thoth-mem save <标题> <内容> # 保存内存
thoth-mem timeline <观察 ID> # 观察的时序上下文
thoth-mem context # 最近的会话上下文
thoth-mem stats # 内存统计
thoth-mem export [文件] # 导出到 JSON(如果没有文件,则输出到 stdout)
thoth-mem import <文件> # 从 JSON 导入
thoth-mem sync [--sync-dir=<路径>] # Git 同步导出
thoth-mem sync-import [--sync-dir=<路径>] # 从另一个实例导入 Git 同步
thoth-mem migrate-project <旧> <新> # 在所有实体中重命名项目
thoth-mem delete-project <项目> # 删除项目及其相关数据
thoth-mem rebuild-graph --project <名称> # 为一个项目重建图谱事实
thoth-mem rebuild-graph --all # 为所有项目重建图谱事实
thoth-mem rebuild-index --project <名称> # 为一个项目排队语义索引重建
thoth-mem rebuild-index --all # 为所有项目排队语义索引重建
thoth-mem rebuild-index --all --process 500 # 排队并处理最多 500 个作业
thoth-mem rebuild-index --status # 显示语义索引队列/覆盖进度
thoth-mem version # 显示版本
thoth-mem help # 显示帮助
```
常见的 CLI 路径/过滤标志:
```bash
thoth-mem stats --data-dir=/custom/path
thoth-mem search "认证模式" -p my-project
```
`--no-http` 是服务器启动标志,因此在 MCP/服务器模式下使用:
```bash
thoth-mem mcp --no-http
```
## HTTP REST API
Thoth-Mem 默认情况下会运行一个 HTTP REST API 网桥与 MCP 服务器。网桥监听端口 `7438`,在构建仪表板资产时在 `/` 处提供仪表板 v2,并通过标准 HTTP 提供对内存操作的完全访问。
**本地仪表板:**
- 仪表板:`http://localhost:7438/`
- 使用 `pnpm run dashboard:build` 在开发或发布打包期间本地构建资产。
- 如果缺少 `dist/dashboard/index.html`,则 `/` 返回清晰的本地构建消息,而 `/docs`、`/openapi.json` 和 REST API 仍然可用。
- 仪表板 v2 是一个用于检索通道、操作跟踪、索引/后台状态、图谱探索和 HTTP/CLI 等效命令的本地操作控制台。
- 仪表板深链接位于 `/console/*` 下,因此 API 路由(如 `/operations` 和 `/graph/rebuild`)永远不会被遮蔽。
- 控制台可以通过相同的 REST 合同创建观察和排队重建操作。

_内存宇宙 D3 图视图,带有集群节点和关系边。_
**交互式文档:**
- OpenAPI 规范:`http://localhost:7438/openapi.json`
- 交互式文档:`http://localhost:7438/docs`
**禁用 HTTP 网桥:**
```bash
thoth-mem mcp --no-http
# 或
THOTH_HTTP_DISABLED=true thoth-mem mcp
```
**示例:通过 HTTP 搜索内存**
```bash
curl http://localhost:7438/observations/search?query=auth+pattern
```
**示例:获取内存统计信息**
```bash
curl http://localhost:7438/stats
```
**示例:检查操作跟踪**
```bash
curl "http://localhost:7438/operation-traces?origin=http&status=error&limit=20"
```
**示例:排队索引重建**
```bash
curl -X POST http://localhost:7438/index/rebuild \
-H "content-type: application/json" \
-d '{"project":"my-project","reason":"manual","process_limit":0}'
```
HTTP API 支持会话、观察、提示、搜索、导出/导入、同步、操作跟踪、索引状态/重建、图谱重建、操作目录和版本检查。有关完整的 API 参考,请参见交互式 `/docs` 接口。
## 开发检查
```bash
pnpm run build
pnpm run dashboard:typecheck
pnpm run dashboard:build
pnpm test
pnpm run eval:retrieval
pnpm run eval:kg
```
`pnpm run eval:retrieval` 在种子观察、精选非合成项目文档示例和合成干扰项上运行确定性内存混合检索评估。它报告混合召回率、噪声、语料库大小、直接与转述与非合成案例混合、衡量手术压缩、HyDE 提升、待处理/降级回退、词汇前缀行为、语义原始与 HyDE 贡献、句子优先小到大推广、KG 丰富、KG 作为主要通道率和证据血统覆盖率,而无需下载模型或远程 API。新门控现在要求每个评估案例都达到排名 1。
使用 `THOTH_RETRIEVAL_EVAL_NOISE` 缩放检索评估,当您需要数百或数千个合成干扰项时。在 PowerShell 中:
```powershell
$env:THOTH_RETRIEVAL_EVAL_NOISE='250'; pnpm run eval:retrieval
```
`pnpm run eval:kg` 运行确定性 KG 质量评估,用于主题-关系-对象提取。它报告预期三元组召回率、禁止三元组率、需要可选 LLM 丰富度的长对话案例以及验证的 LLM 三元组接受度,同时拒绝未知关系。
## MCP 工具(6)
| 工具 | 目的 |
| ----------------------- | ----------------------------------------------------------------- |
| `mem_save` | 保存观察、提示、会话摘要或被动学习结果 |
| `mem_recall` | 跨语义、KG 和词汇通道的主要融合召回 |
| `mem_context` | 获取最近的上下文 —— 会话、提示、观察、统计信息 |
| `mem_get` | 通过 ID、时间线或分页检索观察或提示 |
| `mem_project` | 列出项目、总结一个项目、检查图谱事实/主题 |
| `mem_session` | 启动、检查点或总结内存会话 |
当前工具/操作映射:
| 工具 | 当前形状 |
| --- | --- |
| `mem_save` | `kind="observation"`、`kind="prompt"`、`kind="session_summary"` 或 `kind="passive_learnings"` |
| `mem_recall` | 默认 `mode="compact"`,然后 `mode="context"` 获取检索文本;支持过滤器和 `hyde` 及 `debug` |
| `mem_context` | 最近的会话/提示/观察,带有可选的 `recall_query` 融合证据 |
| `mem_get` | `id`、`kind`、`offset`、`max_length`、`include_timeline`、`before` 和 `after` |
| `mem_project` | `action="list"`、`"summary"`、`"graph"`、`"topics"` 或 `"topic"` |
| `mem_session` | `action="start"`、`"checkpoint"` 或 `"summary"` |
旧的一工具一视图名称故意过时,不会被注册。请使用 `mem_recall` 代替 `mem_search`,使用 `mem_get` 代替 `mem_get_observation` 或 `mem_timeline`,使用 `mem_project` 代替 `mem_project_summary`、`mem_project_graph` 或 `mem_topic_keys`,使用 `mem_session` 代替 `mem_session_start` 或 `mem_session_summary`,使用 `mem_save(kind="prompt")` 代替 `mem_save_prompt`。
> **管理员操作**(导出、导入、同步、同步导入、迁移项目、删除项目、重建图谱、重建索引)可通过 [CLI](#cli-commands) 使用。导出、导入、同步、迁移、操作跟踪、索引状态/重建、图谱重建、操作目录和版本检查也可通过 [HTTP REST API](#http-rest-api) 使用。它们不会被注册为 MCP 工具,以保持代理的工具表面清洁。
## 检索和嵌入
- `mem_recall` 是主要的检索工具。首先使用 `mode=compact`,然后对于最强的命中,使用 `mode=context`,仅在需要完整内容时使用 `mem_get`。
- `mem_recall` 接受 `project`、`session_id`、`scope`、`topic_key`、`type`、`time_from` 和 `time_to` 的精度过滤器;这些过滤器会传递给所有检索通道。
- 默认的混合检索使用调整后的核心通道融合:句子 top-k 100,块 top-k 20,词汇限制 20,最小语义分数 0.3,通道顺序 `sentence > kg > chunk > lexical`。知识图谱事实现在作为一流的排名通道,并用支持的图谱证据丰富返回的命中结果。
- 词汇排名过滤低信号查询停用词,并根据内容术语覆盖率对前缀匹配进行评分,因此在噪声语料库下,广泛的单字重叠无法优于更强的语义/KG 证据。
- 在 `mem_recall mode=context` 中进行外科手术修剪:句子命中返回一个 `primary_sentence`,当分数超过小到大阈值时,返回一个标记的 `surrounding_parent_chunk`。词汇命中返回匹配的句子而不是整个观察结果。每个上下文命中包括 `retrieval_contract`、`compression_ratio`、`evidence_chars` 和 `full_chars`,因此可以衡量噪声减少而不是声称噪声减少。
- 语义索引是最终一致且非阻塞的。保存/更新操作可以在索引在后台保持待处理时返回。终端作业失败保留 `last_error` 和 `finished_at`,陈旧的正在运行的租约可以恢复,并且后续排队的作业继续处理而不是被饥饿的作业饿死。
- 语义通道状态在启动/状态读取时根据队列健康状况和向量覆盖率进行协调,因此在队列和覆盖率干净时,完成的通道不会在重启后保持 `pending` 状态。
- `/viz/health`、`/observatory/health` 和 `/index/status` 包括语义通道、作业总数、作业类型分解、队列滞后、向量覆盖率比率和最近的索引/KG 警告的产品遥测数据。可选的 KG LLM 失败被记录为作业遥测数据,而确定性 KG 提取仍然完成。
- 当嵌入配置哈希更改时触发自动重建;通过 `thoth-mem rebuild-index --project <name>`、`thoth-mem rebuild-index --all` 和 `POST /index/rebuild` 提供手动重建。使用 `thoth-mem rebuild-index --status` 或 `GET /index/status` 检查队列进度、通道状态、最近的错误和向量覆盖率。
- 当语义通道待处理或不可用时,检索安全地降级为词汇召回,并使用匹配的事实进行 KG 丰富,并在存在时报告回退元数据(`pending`、`degraded_fallback`)而不是失败。
- `sqlite-vec` 在运行时是可选的:如果不可用,Thoth-Mem 标记语义通道已降级,并继续使用词汇检索和 KG 丰富功能。
- 本地嵌入默认提供者为 `transformers_local`,模型为 `nomic-ai/nomic-embed-text-v1.5`,除非被覆盖。
- 默认启用 HyDE。本地回退使用 Transformers.js 文本生成,带有 `onnx-community/Qwen2.5-Coder-0.5B-Instruct`;远程 HyDE 可以使用 Ollama 或兼容 OpenAI 的 LM Studio 服务器。
- KG 提取首先是确定性的。可选的 LLM 丰富度可以通过 Ollama 或 LM Studio 为长对话启用;生成的三元组通过相同的关系分类法进行过滤,并与确定性的三元组合并。如果远程提取器被禁用或不可用,则确定性 KG 提取仍然完成。
### 推荐的嵌入模型
模型选择会影响向量维度、质量、内存使用和索引兼容性。对于现有的语义索引,请保持相同的提供者/模型/维度;更改它们会使嵌入过时并排队重建。
| 用例 | Ollama 模型 | LM Studio 模型查找 | 备注 |
| --- | --- | --- | --- |
| 轻量级本地默认 | [`nomic-embed-text`](https://ollama.com/library/nomic-embed-text) | [`nomic-ai/nomic-embed-text-v1.5`](https://lmstudio.ai/docs/typescript/embedding) | 适用于本地 RAG 的良好首选。下载量小,支持成熟, 上游模型卡中 768 维嵌入。 |
| 强大的一般检索 | [`mxbai-embed-large`](https://ollama.com/library/mxbai-embed-large) | [`mixedbread-ai/mxbai-embed-large-v1`](https://huggingface.co/mixedbread-ai/mxbai-embed-large-v1) | 适用于英语和技术笔记的质量/性能平衡。使用 LM Studio 中显示的精确加载模型 ID。 |
| 多语言/西班牙语重 | [`bge-m3`](https://ollama.com/library/bge-m3) | [`BAAI/bge-m3`](https://huggingface.co/BAAI/bge-m3) | 强大的多语言选项。上游模型卡片突出显示 100+ 种语言和最多 8192 个令牌输入。 |
| 更高质量的现代选项 | [`qwen3-embedding:0.6b`](https://ollama.com/library/qwen3-embedding) | [`Qwen/Qwen3-Embedding-0.6B`](https://huggingface.co/Qwen/Qwen3-Embedding-0.6B) | 当您能够比 `nomic-embed-text`花费更多 RAM/CPU 时,更好的多语言/代码检索。上游列表 0.6B 参数, 32K 上下文,最多 1024 维。 |
Ollama 示例:
```bash
ollama pull bge-m3
THOTH_EMBEDDING_PROVIDER=ollama \
THOTH_EMBEDDING_BASE_URL=http://127.0.0.1:11434 \
THOTH_EMBEDDING_MODEL=bge-m3 \
thoth-mem
```
LM Studio 示例:
```bash
# 在 LM Studio 中,加载启用嵌入的模型并启动本地服务器。
# 使用 LM Studio 显示的精确模型 ID 作为 THOTH_EMBEDDING_MODEL。
THOTH_EMBEDDING_PROVIDER=lmstudio \
THOTH_EMBEDDING_BASE_URL=http://127.0.0.1:1234 \
THOTH_EMBEDDING_MODEL=nomic-embed-text-v1.5 \
thoth-mem
```
`THOTH_EMBEDDING_DIMENSIONS` 为已知模型(如 `nomic-ai/nomic-embed-text-v1.5` 和 `nomic-embed-text`)推断。对于使用自定义模型或所选运行时支持稳定维度覆盖的运行时,请显式设置它,并强制采用特定的 sqlite-vec 表形状。
### 推荐的 HyDE 模型
HyDE 需要一个生成/指令模型,而不是嵌入模型。它会为召回查询编写一个简短的假设答案;Thoth-Mem 将原始查询和 HyDE 答案作为单独的语义输入进行嵌入。
| 用例 | 提供商/模型 | 备注 |
| --- | --- | --- |
| 默认本地备用 | [`onnx-community/Qwen2.5-Coder-0.5B-Instruct`](https://huggingface.co/onnx-community/Qwen2.5-Coder-0.5B-Instruct) 通过 Transformers.js | 小型 ONNX 模型用于本地文本生成。足够用于短检索提示和代码密集的记忆;加载 `dtype: "q4"`。 |
| Ollama 代码密集型内存 | [`qwen2.5-coder:7b`](https://ollama.com/library/qwen2.5-coder) | 推荐的 7B 级本地模型,用于编码代理内存和技术 HyDE 提示。 |
| Ollama 通用/多语言 | [`qwen2.5:7b-instruct`](https://ollama.com/library/qwen2.5) | 当内存主要不是代码时,更好的通用选择。 |
| LM Studio 代码密集型内存 | [`Qwen/Qwen2.5-Coder-7B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) GGUF | 在 LM Studio 中,使用开发者面板中显示的确切模型 ID,通常从 `lmstudio-community/...-GGUF` 下载。 |
| LM Studio 通用备用 | [`meta-llama/Meta-Llama-3.1-8B-Instruct`](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) GGUF | 如果您已经在本地使用 Llama,则为 8B 级选项提供强大的通用能力。 |
使用 LM Studio 嵌入和 LM Studio HyDE 的示例:
```json
{
"embedding": {
"provider": "lmstudio",
"model": "text-embedding-nomic-embed-text-v1.5@q8_0",
"baseUrl": "http://127.0.0.1:1234",
"dimensions": 768
},
"hyde": {
"enabled": true,
"provider": "lmstudio",
"model": "loaded_model",
"baseUrl": "http://127.0.0.1:1234/v1",
"timeoutMs": 4000
}
}
```
### 可选的 KG LLM 增强
KG 提取默认使用确定性提取器。要增强长观察结果,请启用本地 Transformers.js 提供商或远程本地模型提供商,并设置应触发 LLM 传递的最小内容长度:
```bash
THOTH_KG_LLM_ENABLED=true \
THOTH_KG_LLM_PROVIDER=transformers_local \
THOTH_KG_LLM_MODEL=onnx-community/Qwen2.5-Coder-0.5B-Instruct \
THOTH_KG_LLM_MIN_CONTENT_CHARS=12000 \
thoth-mem
```
Ollama 仍然可用于远程本地生成:
```bash
THOTH_KG_LLM_ENABLED=true \
THOTH_KG_LLM_PROVIDER=ollama \
THOTH_KG_LLM_BASE_URL=http://127.0.0.1:11434 \
THOTH_KG_LLM_MODEL=qwen2.5:7b-instruct \
THOTH_KG_LLM_MIN_CONTENT_CHARS=12000 \
thoth-mem
```
LM Studio 使用与 OpenAI 兼容的聊天完成端点:
```bash
THOTH_KG_LLM_ENABLED=true \
THOTH_KG_LLM_PROVIDER=lmstudio \
THOTH_KG_LLM_BASE_URL=http://127.0.0.1:1234/v1 \
THOTH_KG_LLM_MODEL=loaded_model \
thoth-mem
```
LLM 传递是一个增强步骤,而不是事实来源:无效的关系名称被丢弃,重复的三元组被去重,如果远程请求失败,KG 作业将继续使用确定性的三元组。
## 同步与移植
### JSON 导出/导入
单个 JSON 文件中的完整内存备份:
```bash
# 导出所有内容
thoth-mem export backup.json
# 导出一个项目
thoth-mem export --project=my-app backup.json
# 导入(通过 sync_id 跳过重复项)
thoth-mem import backup.json
```
### Git 同步
增量、只追加的 gzip 块,适用于版本控制 - 无合并冲突:
```bash
# 将块导出到同步目录
thoth-mem sync --sync-dir=.thoth-sync
# 创建的结构:
# .thoth-sync/
# manifest.json ← 有序块列表
# chunks/
# <timestamp>.json.gz ← 压缩内存块
```
在另一台机器上导入:
```bash
thoth-mem sync-import --sync-dir=.thoth-sync
```
每个观察和提示都带有 `sync_id`(UUID),以防止在重新导入时出现重复。
**增量导出:** 仅自上次同步以来更改的内容会被导出,通过变异日志进行跟踪以提高效率。
**墓碑:** 已删除的观察结果会在同步的实例中正确传播,确保一致性。
**重放安全性:** 重新导入相同的数据是安全的;重复项会自动通过 `sync_id` 检测并跳过。
### 项目迁移
在单个事务中重命名项目中的每个实体:
```bash
thoth-mem migrate-project old-name new-name
```
原子更新会话、观察和提示。
### 项目删除
安全删除项目及其相关数据:
```bash
thoth-mem delete-project project-name
```
此操作作为事务运行,如果在另一个项目中检测到共享会话或数据,则阻止删除,并保持同步墓碑一致。
## 配置
Thoth-Mem 在启动时创建 `~/.thoth/config.json`(如果不存在),并在文件不完整时回填缺失的键。配置以在 unpkg 上发布的软件包中提供的公共 `$schema` URL 开头;模式源位于此存储库中的 `config.schema.json`。环境变量在运行时覆盖配置文件的默认值,但不会写回文件。
默认可编辑配置:
```json
{
"$schema": "https://unpkg.com/thoth-mem@0.3.1/config.schema.json",
"version": 1,
"maxContentLength": 100000,
"maxContextResults": 20,
"maxSearchResults": 20,
"dedupeWindowMinutes": 15,
"previewLength": 300,
"http": {
"port": 7438,
"disabled": false
},
"retrievalDefaults": {
"sentenceTopK": 100,
"chunkTopK": 20,
"lexicalLimit": 20,
"minSemanticScore": 0.3,
"l2DistanceScale": 20
},
"embedding": {
"provider": "transformers_local",
"model": "nomic-ai/nomic-embed-text-v1.5",
"baseUrl": null,
"dimensions": 768
},
"hyde": {
"enabled": true,
"provider": "transformers_local",
"model": "onnx-community/Qwen2.5-Coder-0.5B-Instruct",
"baseUrl": null,
"timeoutMs": 4000
},
"kgLlm": {
"enabled": false,
"provider": "transformers_local",
"model": "onnx-community/Qwen2.5-Coder-0.5B-Instruct",
"baseUrl": null,
"timeoutMs": 8000,
"minContentChars": 12000
}
}
```
| 环境变量 | 默认值 | 描述 |
| ----------------------------- | ---------- | ------------------------------------------- |
| `THOTH_DATA_DIR` | `~/.thoth` | SQLite 数据库的数据目录 |
| `THOTH_MAX_CONTENT_LENGTH` | `100000` | 最大内容长度(警告,不会截断) |
| `THOTH_MAX_CONTEXT_RESULTS` | `20` | 上下文响应中的最大观察数 |
| `THOTH_MAX_SEARCH_RESULTS` | `20` | 返回的最大搜索结果数 |
| `THOTH_DEDUPE_WINDOW_MINUTES` | `15` | 滚动去重窗口 |
| `THOTH_PREVIEW_LENGTH` | `300` | 搜索结果预览长度 |
| `THOTH_HTTP_PORT` | `7438` | HTTP REST API 端口 |
| `THOTH_HTTP_DISABLED` | `false` | 禁用 HTTP REST API 桥 |
| `THOTH_EMBEDDING_PROVIDER` | `transformers_local` | 嵌入提供商(`transformers_local`、`ollama`、`lmstudio`) |
| `THOTH_EMBEDDING_MODEL` | `nomic-ai/nomic-embed-text-v1.5`(本地) | 嵌入模型 ID |
| `THOTH_EMBEDDING_BASE_URL` | 提供者特定 | 远程/本地 API 提供者的基本 URL |
| `THOTH_EMBEDDING_DIMENSIONS` | 为已知模型推断 | 可选的嵌入维度覆盖 |
| `THOTH_HYDE_ENABLED` | `true` | 启用 HyDE 双输入语义查询扩展 |
| `THOTH_HYDE_PROVIDER` | `transformers_local` | HyDE 生成提供商(`transformers_local`、`ollama`、`lmstudio`) |
| `THOTH_HYDE_MODEL` | `onnx-community/Qwen2.5-Coder-0.5B-Instruct` | HyDE 生成模型 ID |
| `THOTH_HYDE_BASE_URL` | 未设置 | 可选的 HyDE 提供商基本 URL |
| `THOTH_HYDE_TIMEOUT_MS` | `4000` | 原始查询备用之前的 HyDE 超时 |
| `THOTH_KG_LLM_ENABLED` | `false` | 为长观察结果启用可选的 LLM KG 增强 |
| `THOTH_KG_LLM_PROVIDER` | `transformers_local` | KG LLM 提供商(`transformers_local`、`ollama`、`lmstudio`) |
| `THOTH_KG_LLM_MODEL` | `onnx-community/Qwen2.5-Coder-0.5B-Instruct` | KG LLM 模型 ID |
| `THOTH_KG_LLM_BASE_URL` | 未设置 | 远程提供商的 KG LLM 提供商基本 URL |
| `THOTH_KG_LLM_TIMEOUT_MS` | `8000` | 确定性备用之前的 KG LLM 超时 |
| `THOTH_KG_LLM_MIN_CONTENT_CHARS` | `12000` | 触发 LLM 增强的最小观察大小 |
## 存储
所有数据都存储在 `~/.thoth/thoth.db`(可通过 `THOTH_DATA_DIR` 或 `--data-dir` 配置)的单个 SQLite 数据库中。
- **WAL 日志模式** 用于并发读取性能
- **FTS5** 对观察和提示进行全文搜索
- **外键 + CHECK 约束** 用于数据完整性
- **自动模式迁移** 用于无缝升级
## 观察类型
观察被分类为强制分类法:
| 类型 | 用途 |
| ----------------- | --------------------------------------- |
| `decision` | 架构或设计选择 |
| `architecture` | 系统结构和模式 |
| `bugfix` | 错误修复和根本原因 |
| `pattern` | 已建立的约定 |
| `config` | 配置和环境设置 |
| `discovery` | 关于代码库的非显而易见的发现 |
| `learning` | 一般性学习和经验教训 |
| `session_summary` | 会话总结 |
| `manual` | 不适合上述任何分类的内容 |
## 许可证
MIT
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器