AI对话知识管理工具

Tessera是一个本地运行的AI对话知识管理工具,提供持久记忆和文档搜索功能,支持多种文件类型和自动化脚本集成。

  • by besslframework-stack
  • Python
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 besslframework-stack/project-tessera

使用说明

镶嵌物

每一次人工智能对话都会产生知识。当会话结束时,它就消失了。泰塞拉保留着它。

ClaudeDesktop的一个知识库,带有用于脚本和自动化的HTTP API。在当地运行。没有API密钥,没有Docker,没有数据离开您的机器。

pip install project-tessera
tessera setup
# Done. Claude Desktop now has persistent memory + document search.

为什么泰塞拉选择替代品

Tessera Mem0 基本内存 mcp内存服务
在没有API密钥的情况下工作 是 否(需要OpenAI) 是 部分
在没有Docker的情况下工作 是 否 是 不
文档搜索(40+种) 是 否 仅Markdown 否
ChatGPT集成(通过隧道) 是 否 否 不
矛盾检测 是 否 否 不
记忆信心评分 是 否 否 不
加密保管库(AES-256) 是 否 否 不
用于非MCP工具的HTTP API 58个端点 是 否 是
从对话中自动学习 是 是 否 否
MCP工具 58 ~10 ~15 24

简短版本

大多数内存工具都会存储文本并进行搜索。Tessera会这样做,此外:

  • HTTP API:58个REST端点允许脚本、ChatGPT(通过隧道+自定义GPT操作)和本地LLM读写相同的知识库。
  • 自我维持:发现新旧记忆之间的矛盾,通过强化频率得分,标记过时的知识,自动合并接近重复的内容。
  • 零基础设施: pip install 然后走。LanceDB和fastembed是嵌入式的——没有Docker,没有数据库服务器,没有API密钥。
  • 加密:set TESSERA_VAULT_KEY 并且所有存储器在静止时都是AES-256-CBC加密的。

建筑

搜索的工作原理(查询路径)

    User asks: "What did we decide about the database?"
                            |
                            v
                +-----------------------+
                |    Query Processing   |
                |  Multi-angle decomp   |    "database decision"
                |  (2-4 perspectives)   |    "database", "decision"
                +-----------------------+    "decision about database"
                            |
              +-------------+-------------+
              |                           |
              v                           v
    +------------------+        +------------------+
    |  Vector Search   |        |  Keyword Search  |
    |  (LanceDB)       |        |  (FTS index)     |
    |  384-dim MiniLM  |        |  BM25 scoring    |
    +------------------+        +------------------+
              |                           |
              +-------------+-------------+
                            |
                            v
                +-----------------------+
                |      Reranking        |
                |  70% semantic weight  |    LinearCombinationReranker
                |  30% keyword weight   |    + version-aware scoring
                +-----------------------+
                            |
                            v
                +-----------------------+
                |   Result Assembly     |
                |  Dedup (content hash) |    2-pass deduplication
                |  Verdict labels       |    found / weak / none
                |  Cache (60s TTL)      |
                +-----------------------+
                            |
                            v
                    Top-K results with
                    confidence scores

摄入是如何工作的(摄入路径)

    Documents: .md .pdf .docx .xlsx .py .ts .go ...  (40+ types)
                            |
                            v
                +-----------------------+
                |   File Type Router    |
                |  Markdown, CSV, XLSX  |    Type-specific parsers
                |  Code, PDF, Images    |    with metadata extraction
                +-----------------------+
                            |
                            v
                +-----------------------+
                |   Chunking Engine     |
                |  1024 tokens/chunk    |    Sentence-boundary aware
                |  100 token overlap    |    Heading-preserving
                +-----------------------+
                            |
                            v
                +-----------------------+
                |   Local Embedding     |
                |  fastembed/ONNX       |    paraphrase-multilingual
                |  384 dimensions       |    MiniLM-L12-v2
                |  No API calls         |    101 languages
                +-----------------------+
                            |
              +-------------+-------------+
              |                           |
              v                           v
    +------------------+        +------------------+
    |    LanceDB       |        |     SQLite       |
    |  Vector storage  |        |  File metadata   |
    |  Columnar format |        |  Search analytics|
    |  Zero-config     |        |  Interaction log |
    +------------------+        +------------------+

系统概述

                    +--------------------------------------------+
                    |              src/core.py                    |
                    |         58 orchestration functions          |
                    |   69 specialized modules, 31k LOC           |
                    +--------------------------------------------+
                     /                |                \
    +---------------+  +-------------------+  +--------------+
    | MCP Server    |  | HTTP API Server   |  | CLI          |
    | Claude Desktop|  | FastAPI + Swagger |  | 11 commands  |
    | 58 tools      |  | 58 endpoints      |  | setup, sync  |
    | stdio         |  | port 8394         |  | ingest, api  |
    +---------------+  +-------------------+  +--------------+
           |                    |                     |
           v                    v                     v
    +------------------------------------------------------------+
    |                    Storage Layer                            |
    |  LanceDB         SQLite           Filesystem               |
    |  (vectors)       (metadata,       (memories as .md,        |
    |                   analytics,       encrypted with           |
    |                   interactions)    AES-256-CBC)             |
    |                                                            |
    |  fastembed/ONNX: local embedding, no API keys              |
    |  101 languages, 384-dim vectors, ~220MB model              |
    +------------------------------------------------------------+

开始

1.安装

pip install project-tessera

或与 紫外线:

uvx --from project-tessera tessera setup

2.设置

tessera setup

创建工作区配置,下载嵌入模型(约220MB,仅限首次),配置Claude Desktop。

3.重新启动克劳德桌面

问克劳德你的文件。它会自动搜索。

与ChatGPT一起使用(自定义GPT操作)

tessera api                     # Start REST API on localhost:8394
ngrok http 8394                 # Expose to the internet
# Then create a Custom GPT with the Actions spec from /chatgpt-actions/openapi.json

完整设置指南,请访问 http://127.0.0.1:8394/chatgpt-actions/setup.Swagger文档位于 http://127.0.0.1:8394/docs.


运作原理

混合搜索与重新排名

每次搜索都会经历四个阶段:

  1. 查询分解——将查询分为2-4个搜索角度(核心关键字、单个术语、反向强调)
  2. 混合检索——向量相似度(LanceDB)和关键字匹配(FTS/BM25)并行运行
  3. 重新排序——线性组合排序器合并两个结果集(70%语义,30%关键字权重)
  4. 判决评分——每个结果都有一个标签: confident match (>= 45%), possible match (25-45%),或 low relevance (< 25%)

当同一文档存在多个版本时,Tessera更喜欢最新版本。

跨会话内存

# Via MCP (Claude)
"Remember that we chose PostgreSQL for the production database"

# Via HTTP API (scripts, local LLMs, ChatGPT via tunnel)
curl -X POST http://127.0.0.1:8394/remember \
  -H "Content-Type: application/json" \
  -d '{"content": "Use PostgreSQL for production", "tags": ["db", "architecture"]}'

每个记忆都有一个类别(决策、偏好或事实),与现有记忆进行重复检查(余弦相似性,0.92阈值),并获得一个置信度得分——按重复(35%)、新近度(25%)、来源多样性(20%)和类别(20%)加权。集 TESSERA_VAULT_KEY 使用AES-256-CBC加密所有内存。

自动学习

Tessera在没有被问到的情况下,从你的对话中获取决定、偏好和事实。 toggle_auto_learn 打开或关闭它; review_learned 显示了它捕获了什么。

矛盾检测

记忆随着时间的推移而相互矛盾。泰塞拉找到了他们:

CONTRADICTION (HIGH severity):
  "We decided to use PostgreSQL" (2026-03-01)
  vs
  "Switched to MongoDB for the main database" (2026-03-10)

  The newer memory (2026-03-10) likely reflects the current state.

适用于英语和韩语否定模式。

ChatGPT集成(需要隧道)

ChatGPT可以通过自定义GPT操作与Tessera对话,但由于ChatGPT的服务器需要访问您的计算机,因此您需要一个隧道(ngrok、Cloudflare隧道等)来暴露您的本地API。

要求: 您的计算机必须已打开,API服务器正在运行,并且隧道处于活动状态。当其中任何一个停止时,ChatGPT将失去访问权限。

# 1. Start Tessera API + tunnel
tessera api
ngrok http 8394   # or: cloudflared tunnel --url http://localhost:8394

# 2. Get the OpenAPI spec for your Custom GPT
curl https://your-tunnel-url/chatgpt-actions/openapi.json?server_url=https://your-tunnel-url

# 3. Get the GPT instruction template
curl https://your-tunnel-url/chatgpt-actions/instructions

创建自定义GPT,粘贴说明,将OpenAPI规范作为操作导入。

您还可以导入过去的ChatGPT对话,以从中提取知识:

curl -X POST http://127.0.0.1:8394/import-conversations \
  -H "Content-Type: application/json" \
  -d '{"data": "<ChatGPT export JSON>", "source": "chatgpt"}'

导出为黑曜石保管库(维基链接)、Markdown、CSV或JSON:

curl http://127.0.0.1:8394/export?format=obsidian

内存健康状况

每个记忆都是健康的、陈旧的(90多天没有强化)或孤立的(没有元数据,没有类别)。健康报告告诉你要清理什么,并跟踪一段时间的增长。

插件挂钩

发生事情时运行自己的脚本:

# workspace.yaml
hooks:
  on_memory_created:
    - script: ./notify-slack.sh
  on_contradiction_found:
    - script: ./alert.py

7种事件类型: on_memory_created, on_memory_deleted, on_search, on_session_start, on_session_end, on_ingest_complete, on_contradiction_found.


支持的文件类型(40+)

类别 扩展 安装
文件 .md .txt .rst .csv 包括
办公室 .xlsx .docx .pdf pip install project-tessera[xlsx,docx,pdf]
代码 .py .js .ts .tsx .jsx .java .go .rs .rb .php .c .cpp .h .swift .kt .sh .sql .cs .dart .r .lua .scala 包括
配置 .json .yaml .yml .toml .xml .ini .cfg .env 包括
Web .html .htm .css .scss .less .svg 包括
图片 .png .jpg .jpeg .webp .gif .bmp .tiff pip install project-tessera[ocr]

MCP工具(58)

Search (5)
工具 它做什么
search_documents 跨所有文档的语义+关键字混合搜索
unified_search 在一次通话中搜索文档和记忆
view_file_full 完整文件视图(CSV为表格,XLSX为每张表)
read_file 读取任何文件的完整内容
list_sources 查看索引内容
Memory (13)
工具 它做什么
remember 保存跨会话持续存在的知识
recall 使用日期/类别过滤器搜索过去的记忆
learn 保存并立即索引新知识
list_memories 浏览已保存的记忆
forget_memory 删除特定内存
export_memories 将所有内存批量导出为JSON
import_memories 从JSON批量导入内存
memory_tags 列出所有具有计数的唯一标签
search_by_tag 按特定标签过滤内存
memory_categories 列出自动检测的类别(决策/偏好/事实)
search_by_category 按类别筛选记忆
find_similar 查找与给定文件类似的文档
knowledge_graph 构建文档关系的美人鱼图
Auto-learn (5)
工具 它做什么
digest_conversation 从当前会话中提取并保存知识
toggle_auto_learn 打开/关闭自动学习或检查状态
review_learned 查看最近自动学习的记忆
session_interactions 查看当前/过去会话中的工具调用
recent_sessions 包含交互计数的会话历史记录
Intelligence (7)
工具 它做什么
decision_timeline 你的决定如何随着时间的推移而变化,按主题分列
context_window 将最佳上下文打包到令牌预算中
smart_suggest 根据您过去的搜索结果查询建议
topic_map 使用Mermaid思维导图按主题聚类记忆
knowledge_stats 汇总统计数据(类别、标签、增长)
user_profile 自动构建的配置文件(语言、偏好、专业知识)
explore_connections 显示围绕特定主题的联系
Insight (6)
工具 它做什么
deep_search 将查询分为2-4个角度,每个角度进行搜索,合并最佳结果
deep_recall 带有判断标签的多角度记忆回忆
detect_contradictions 查找具有严重性评级的冲突记忆
memory_confidence 每个记忆的可靠性如何(重复性、近因性、来源多样性)
memory_health 哪些记忆是健康的、陈旧的或孤立的
list_plugin_hooks 查看已注册的挂钩
Import/Export (4)
工具 它做什么
export_for_ai 以便携格式导出存储器
import_from_ai 从外部来源导入内存
import_conversations 从ChatGPT/Claude对话导出中提取知识
export_knowledge 导出为黑曜石(维基链接)、Markdown、CSV或JSON

ChatGPT可以通过自定义GPT操作进行连接(需要隧道)。看 /chatgpt-actions/setup.

Security and data (2)
工具 它做什么
vault_status 检查AES-256加密状态
migrate_data 从旧架构版本升级数据
Workspace (11)
工具 它做什么
ingest_documents 索引文档(首次或完全重建)
sync_documents 增量同步(仅更改文件)
project_status 每个项目最近的更改
extract_decisions 从日志中查找过去的决策
audit_prd 检查PRD质量(13节结构)
organize_files 移动、重命名、存档文件
suggest_cleanup 检测备份文件、空目录、放错位置的文件
tessera_status 服务器运行状况:跟踪文件、同步历史、缓存
health_check 全工作区诊断
search_analytics 搜索使用模式、热门查询、响应时间
check_document_freshness 检测超过N天的过时文档

HTTP API(58个端点)

pip install project-tessera[api]
tessera api  # http://127.0.0.1:8394

Swagger用户界面位于 http://127.0.0.1:8394/docs.可选的身份验证方式 TESSERA_API_KEY 有人是。

All endpoints
方法 路径 它的作用
得到 /health 健康检查
得到 /version 版本信息
职位 /search 语义+关键字搜索
职位 /unified-search 搜索文档+回忆
职位 /remember 保存内存
职位 /recall 使用过滤器搜索记忆
职位 /learn 保存和索引知识
得到 /memories 列出回忆
删除 /memories/{id} 删除内存
得到 /memories/categories 列出类别
得到 /memories/search-by-category 按类别筛选
得到 /memories/tags 列表标签
得到 /memories/search-by-tag 按标签筛选
职位 /context-window 构建令牌预算上下文
得到 /decision-timeline 决策演变
得到 /smart-suggest 查询建议
得到 /topic-map 主题集群
得到 /knowledge-stats 统计仪表板
职位 /batch 一次通话中进行多项操作
得到 /export 导出为黑曜石/MD/CSV/JSON
得到 /export-for-ai 以便携格式导出存储器
职位 /import-from-ai 从外部来源导入内存
职位 /import-conversations 导入过去的对话
职位 /migrate 运行数据迁移
得到 /vault-status 加密状态
得到 /user-profile 用户资料
得到 /status 服务器状态
得到 /health-check 工作区诊断
职位 /deep-search 多角度文档搜索
职位 /deep-recall 多角度记忆回忆
得到 /contradictions 检测冲突的记忆
得到 /memory-confidence 内存可靠性得分
得到 /memory-health 内存健康分析
得到 /hooks 列出插件挂钩
得到 /entity-search 搜索实体知识图
职位 /entity-graph 实体美人鱼图
得到 /consolidation-candidates 查找相似的内存集群
职位 /consolidate 合并相似的记忆
得到 /dashboard Web仪表板(深色主题、实体图、统计数据)
职位 /sleep-consolidate 自动合并几乎重复的内存
职位 /retention-policy 标记旧的或低质量的记忆
得到 /retention-summary 年龄分布和风险计数
得到 /adapters/{framework} LangChain、CrewAI、AutoGen的设置代码
职位 /auto-curate 对记忆进行分类、标记、重复数据消除和清理
得到 /auto-insights 热门话题、决策模式、隐藏联系
得到 /chatgpt-actions/openapi.json 自定义GPT操作的OpenAPI规范
得到 /chatgpt-actions/instructions GPT指令模板
得到 /chatgpt-actions/setup ChatGPT集成设置指南

快速示例

# Search documents
curl -X POST http://127.0.0.1:8394/search \
  -H "Content-Type: application/json" \
  -d '{"query": "database architecture", "top_k": 5}'

# Save a memory
curl -X POST http://127.0.0.1:8394/remember \
  -H "Content-Type: application/json" \
  -d '{"content": "Use PostgreSQL for production", "tags": ["db"]}'

# Export memories
curl http://127.0.0.1:8394/export-for-ai?target=chatgpt

# Batch (multiple operations, single request)
curl -X POST http://127.0.0.1:8394/batch \
  -H "Content-Type: application/json" \
  -d '{"operations": [{"method": "search", "params": {"query": "test"}}, {"method": "knowledge_stats"}]}'

CLI(11个命令)

tessera setup          # One-command setup (config + model download + Claude Desktop)
tessera init           # Interactive setup
tessera ingest         # Index all document sources
tessera sync           # Re-index changed files only
tessera serve          # Start MCP server (stdio)
tessera api            # Start HTTP API server (port 8394)
tessera migrate        # Upgrade data schema
tessera check          # Workspace health diagnostics
tessera status         # Project status summary
tessera install-mcp    # Configure Claude Desktop
tessera version        # Show version

Claude桌面配置

使用uvx(推荐):

{
  "mcpServers": {
    "tessera": {
      "command": "uvx",
      "args": ["--from", "project-tessera", "tessera-mcp"]
    }
  }
}

使用pip:

{
  "mcpServers": {
    "tessera": {
      "command": "tessera-mcp"
    }
  }
}

配置位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

配置

tessera setup 创造 workspace.yaml:

workspace:
  root: /Users/you/Documents
  name: my-workspace

sources:
  - path: .
    type: document

search:
  reranker_weight: 0.7     # Semantic vs keyword balance (0.0 = keyword only, 1.0 = vector only)
  max_top_k: 50            # Max results per search

ingestion:
  chunk_size: 1024         # Tokens per chunk
  chunk_overlap: 100       # Overlap between chunks

hooks:                      # Optional plugin hooks
  on_memory_created:
    - script: ./my-hook.sh

或设置 TESSERA_WORKSPACE=/path/to/docs 完全跳过配置文件。

环境变量:

  • TESSERA_API_KEY --启用API身份验证
  • TESSERA_VAULT_KEY --为存储器启用AES-256加密

技术细节

组件 技术 为什么
矢量存储 LanceDB 嵌入式列式存储。无需服务器进程,本机处理矢量+元数据查询
嵌入 fastembed/ONNX 本地推理,无API密钥。 paraphrase-multilingual-MiniLM-L12-v2 (384 dim,101种语言)
元数据 SQLite 文件跟踪、搜索分析、交互日志记录。带可缩锁的螺纹安全
内存存储 文件系统(.md) 人类可读、git友好、可加密。用于元数据的YAML frontmatter
加密 纯Python AES-256-CBC 不依赖OpenSSL。PKCS7填充,每个内存随机IV
HTTP API FastAPI Swagger文档,Pydantic验证,异步功能
MCP FastMCP(stdio) Claude Desktop的标准MCP协议

数字

度量 计数
MCP工具 58
HTTP端点 58
CLI命令 11
核心模块 69
代码行数 31000+
测试 1102
文件类型 40+

许可证

AGPL-3.0——见 许可证.

商业许可:bessl.framework@gmail.com