陷阱核心
AI编码助手的自托管长期记忆。
你的AI在会话之间会忘记一切。Trapic Core是一个 主控程序 修复该问题的服务器——决策、约定和发现被捕获为结构化跟踪,通过标签和关键字进行搜索,并在会话开始时自动调用。
没有矢量数据库。没有嵌入。无API成本。
How Trapic works — one memory layer, every AI assistant remembers
目录
快速开始
git clone https://github.com/trapicAi/trapic-core.git
cd trapic-core
docker compose up服务器运行于 http://localhost:3000/mcp.连接您的AI工具:
{
"mcpServers": {
"trapic": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}另存为 .mcp.json 在您的项目根目录中(Claude Code、Cursor、Windsurf)或添加到 claude_desktop_config.json (克劳德桌面)。
运作原理
传统的RAG将所有内容嵌入向量中,并希望余弦相似性能找到正确的答案。Trapic采用了一种不同的方法——人工智能在编写时构建知识,人工智能在搜索时推断出正确的查询。中间的数据库保持简单。
Query Planner — traditional RAG vs Trapic's LLM query planner
每条知识轨迹:
type: decision | convention | fact | state | preference
content: "Chose CSS custom properties over Tailwind theme config"
context: "Tailwind doesn't support runtime theme switching"
tags: [topic:theming, topic:css, project:my-app, branch:main]
confidence: high | medium | low标签与 project: / branch: 使用AND逻辑(必须全部匹配)。 topic: 标签使用OR逻辑(任何匹配计数)。结合全文搜索和新近度评分。
MCP工具
| 工具 | 说明 |
|---|---|
trapic-create | 创建知识追踪 |
trapic-search | 按标签、关键字、类型、时间范围搜索 |
trapic-recall | 会话简报——启动时加载项目上下文 |
trapic-update | 更新内容、状态、标签或取代跟踪 |
trapic-get | 按ID获取完整跟踪 |
trapic-health | 健康报告——类型分布、过时率、趋势 |
trapic-decay | 扫描过时的知识(特定类型的半衰期) |
trapic-review-stale | 确认或弃用过时的跟踪 |
trapic-import-git | 来自git提交历史的Bootstrap知识 |
Full parameter reference
梯形创建
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
content | string | 是 | 知识内容(最多5000个字符) | ||
context | string | 否 | 为什么——因果解释 | ||
tags | string\[\] | 否 | 类型+主题+项目/分支标签 | ||
confidence | high | medium | low | 否 | 默认值: medium |
陷阱搜索
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
query | string | 否 | 关键字搜索(最多500个字符) | ||
tags | string\[\] | 否 | 筛选标签(项目/分支=AND,主题=OR) | ||
status | active | superseded | deprecated | 否 | 默认值: active |
types | string\[\] | 否 | 按跟踪类型筛选 | ||
time_days | number | 否 | 仅过去N天 | ||
limit | number | No | 最大结果数(默认值:10,最大值:50) |
陷阱式召回
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
context | string | 是 | 你正在做什么 |
project | string | 否 | 项目名称到范围 |
tags | string\[\] | 否 | 其他筛选器标签 |
max_contexts | number | No | 最大上下文簇数(默认值:5,最大值:10) |
梯形更新
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
trace_id | UUID | 是 | 要更新的跟踪 | ||
content | string | 否 | 新内容 | ||
context | string | 否 | 新上下文 | ||
status | active | superseded | deprecated | 否 | 新状态 |
superseded_by | UUID | 否 | 替换跟踪的ID | ||
tags | string\[\] | 否 | 新标签 | ||
confidence | high | medium | low | 否 | 新信心 |
陷阱得到
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
trace_id | UUID | 是 | 跟踪ID |
陷阱健康
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project | string | 否 | 项目名称到范围 |
tags | string\[\] | 否 | 其他筛选器标签 |
陷波衰变
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
project | string | 否 | 项目名称到范围 |
tags | string\[\] | 否 | 其他筛选器标签 |
threshold | number | No | 衰减分数阈值(默认值:0.3) |
dry_run | boolean | 否 | 仅预览(默认值: true) |
trapic评论过时
| 参数 | 类型 | 必填 | 说明 | |
|---|---|---|---|---|
trace_id | UUID | 是 | 过时的跟踪ID | |
action | confirm | deprecate | 是 | 确认(重置衰减)或弃用 |
reason | string | 否 | 操作原因 |
trapic导入git
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 是 | Git存储库URL(HTTPS) |
project | string | 是 | 项目名称 |
branch | string | 否 | 分支(默认值: main) |
max_commits | number | No | 最大提交数(默认值:100,最大值:500) |
since | string | 否 | 在此日期之后(YYYY-MM-DD) |
dry_run | boolean | 否 | 仅预览(默认值: true) |
数据库
三个后端,可通过以下方式切换 TRAPIC_DB_ADAPTER:
| 后端 | 最适合 | 扩展 | 全文搜索 |
|---|---|---|---|
| SQLite (默认) | 本地开发,单用户 | 单实例 | FTS5 |
| PostgreSQL | 生产,团队 | 水平(多个副本) | tsvector+GIN |
| MariaDB | 生产,团队 | 水平(多个副本) | FULLTEXT索引 |
SQLite
零配置。输入数据 ./data/trapic.db.
docker compose upPostgreSQL
cp .env.example .env # set PG_PASSWORD
docker compose -f docker-compose.postgres.yml up| 环境变量 | 默认值 | 描述 |
|---|---|---|
TRAPIC_PG_HOST | localhost | 主持人 |
TRAPIC_PG_PORT | 5432 | 港口 |
TRAPIC_PG_USER | trapic | 用户 |
TRAPIC_PG_PASSWORD | -- | 密码 |
TRAPIC_PG_DATABASE | trapic | 数据库 |
MariaDB
cp .env.example .env # set MARIADB_PASSWORD
docker compose -f docker-compose.mariadb.yml up| 环境变量 | 默认值 | 描述 |
|---|---|---|
TRAPIC_MARIADB_HOST | localhost | 主持人 |
TRAPIC_MARIADB_PORT | 3306 | 港口 |
TRAPIC_MARIADB_USER | trapic | 用户 |
TRAPIC_MARIADB_PASSWORD | -- | 密码 |
TRAPIC_MARIADB_DATABASE | trapic | 数据库 |
认证
默认情况下打开(localhost,不需要身份验证)。通过设置管理员密码启用用户管理:
TRAPIC_ADMIN_PASSWORD=my-secret docker compose up然后打开 http://localhost:3000/admin 创建用户和团队。
auth的工作原理
| 状态 | 行为 |
|---|---|
| 无用户,无管理员密码 | 打开模式 --所有请求均已接受 |
| 管理员密码已设置,还没有用户 | 打开模式--在以下位置创建用户 /admin |
| 数据库中存在用户 | 需要承载令牌 (sk-...) |
用户和API密钥
- 打开管理UI(
/admin) - 创建用户-获取自动生成的API密钥(
sk-...) - 使用密钥配置MCP客户端:
{
"mcpServers": {
"trapic": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer sk-a1b2c3d4..."
}
}
}
}API密钥存储为SHA-256散列。明文密钥在创建时只显示一次。
团队
同一团队中的用户可以看到彼此的痕迹。
Team: backend-team
├── alice (sees bob's traces)
└── bob (sees alice's traces)一个用户可以属于多个团队。
管理员API
所有端点都需要 Authorization: Bearer .
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /admin/api/users | 列出用户 |
POST | /admin/api/users | 创建用户 |
DELETE | /admin/api/users/:id | 删除用户 |
POST | /admin/api/users/:id/regenerate | 重新生成API密钥 |
GET | /admin/api/teams | 列出团队 |
POST | /admin/api/teams | 创建团队 |
DELETE | /admin/api/teams/:id | 删除团队 |
GET | /admin/api/teams/:id/members | 列出成员 |
POST | /admin/api/teams/:id/members | 添加成员 |
DELETE | /admin/api/teams/:id/members/:userId | 删除成员 |
部署
码头工人
公众形象: ghcr.io/trapicAi/trapic-core:latest
# SQLite (default)
docker compose up
# PostgreSQL
docker compose -f docker-compose.postgres.yml up
# MariaDB
docker compose -f docker-compose.mariadb.yml upKubernetes
清单在 k8s/.
SQLite (单个副本):
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/pvc.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yamlMariaDB (可扩展):
# Create secret first (copy from example, fill in passwords)
cp k8s/mariadb-secret.example.yaml k8s/mariadb-secret.yaml
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/mariadb-secret.yaml
kubectl apply -f k8s/mariadb.yaml
kubectl apply -f k8s/deployment-mariadb.yaml
kubectl apply -f k8s/service.yamlNode.js
npm install && npm run build && npm start配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
TRAPIC_PORT | 3000 | 服务器端口 |
TRAPIC_HOST | 127.0.0.1 | 绑定地址(0.0.0.0 揭露) |
TRAPIC_DB_ADAPTER | sqlite | sqlite, postgres,或 mariadb |
TRAPIC_DB | ./data/trapic.db | SQLite数据库路径 |
TRAPIC_USER | local-user | 默认用户ID(打开模式) |
TRAPIC_ADMIN_PASSWORD | -- | 在以下位置启用管理UI /admin |
建筑
Structured search vs vector search — precision over approximation
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ AI Client │ ── MCP/HTTP ──► │ Trapic Core │ ── adapter ──► │ Database │
│ Claude Code │ POST /mcp │ MCP Server │ │ SQLite / PG │
│ Cursor, etc │ ◄── JSON ── │ │ │ / MariaDB │
└─────────────┘ └──────────────┘ └──────────────┘- 协议: 模型上下文协议 (流式HTTP)
- 搜索:结构化标签+全文搜索,无嵌入
- 衰变:特定类型的半衰期(状态:30d,决定:90d,惯例:180d,事实:365d)
- 安全:API密钥哈希(SHA-256),管理速率限制,恒定时间身份验证比较
云版本
不想自己主持? trapic.ai 提供具有OAuth登录和团队协作的托管版本。
使用 Trapic插件 一键设置。
许可证
麻省理工学院
