关于 Amnesic
Amnesic 是面向数据库开发者的 MCP 服务,为 SQL 数据库保存可跨会话复用的语义注释和关系信息。它采用本地 SQLite 存储,并以只读方式执行查询,知识可导出和导入。
主要功能
- 01保存列含义与枚举注释
- 02记录数据库关系
- 03跨会话复用语义信息
- 04导出和导入知识
- 05只读查询并回滚事务
适用场景
- 01为状态代码添加一次说明并供后续会话使用
- 02记录没有外键约束的表关系
- 03向接手项目的开发者移交数据库知识
MCP 相关
作为 MCP 服务向兼容客户端提供数据库语义记忆及相关工具。它可与数据库查询执行器搭配使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
amnesic — 注册目录中名字最具讽刺意味的 MCP 服务
将数据库的组织记忆作为 MCP 服务提供。这个名字颇具讽刺意味——它什么都记得。
“注册目录中名字最具讽刺意味的 MCP 服务。它一点也不健忘——它会记住你的数据库,让 AI 无需操心。”
大多数数据库 MCP 服务都是查询执行器:它们连接数据库、检查结构、运行 SQL,然后就忘了。amnesic 是一种语义记忆——它会不断积累关于架构含义的信息(status = 3 代表什么,哪些列实际上是外键,那个遗留表有什么用途),并自动提供给之后的每个会话。可以把它看作数据目录,但没有平台、数据摄取管道和账单。了解 amnesic 的定位 ↓
适用于 Claude Code · Claude Desktop · Cursor · VS Code · Cline · Windsurf——以及任何 兼容 MCP 的客户端。
可通过以下渠道获取: Official MCP Registry · Claude Code plugin marketplace
👋 正在使用 amnesic? 来采用者讨论帖打个招呼——下载量无法告诉我大家实际在用什么,而你的反馈会直接影响接下来要构建的内容。
🔒 从设计上保证只读。 amnesic 拒绝执行
INSERT、UPDATE、DELETE、DROP、TRUNCATE、ALTER、CREATE、EXEC、MERGE、GRANT、REVOKE,以及任何藏在WITHCTE 中的写入语句。两层防护:静态 SQL 分析会在连接前拒绝该语句,并且每个查询都会在随即回滚的事务中运行。可放心连接生产环境。详情 ↓
问题所在
每次与 AI 开启会话时,都得从头开始。你要先花几分钟重新解释有哪些表、status 列的值 3 代表什么,以及哪个外键连接了 orders 和 users。然后会话结束,第二天又得从头来过。
**amnesic 能解决这个问题。**它为 AI 提供持久化的 SQLite 知识库——每个数据库对应一个——并且能够跨会话保留。只需标注一次状态枚举,之后每个会话都会自动看到这些标签。只需发现一次外键关系,之后的每个 JOIN 查询都能使用这张关系图。
这些知识还可移植,即使你无法再访问数据库也能保留下来。当你从一个项目调离时,amnesic export 会把你教给它的一切交给下一位开发者——多年来积累的“哦,那个列其实表示……”等信息,不会再随着你离开而流失。
amnesic 的定位
数据库 MCP 生态分为两大阵营,而 amnesic 刻意不属于其中任何一方。
查询执行器 — DBHub、Postgres MCP Pro、Google's MCP Toolbox 和各厂商提供的服务(Supabase、Neon)。它们会检查实时数据库、执行 SQL,有些还深入处理性能问题——Postgres MCP Pro 可进行真正的索引调优和 PgHero 风格的健康检查。它们在这方面表现出色,但也都是无状态的:每次会话都要从头了解你的架构,而且它们返回的信息无法告诉你某个列代表什么,因为数据库自己也不知道。
企业级目录 — DataHub、Atlan、Cube、AtScale。它们确实能保存语义上下文:术语表、列描述、所有权、数据血缘。但使用它们也意味着采用一整套平台——元数据采集、需要运行的服务,通常还要付费。对企业规模而言物有所值;但如果只是某位开发者想记住旧版 MSSQL 数据库里六种状态码的含义,而这套数据库永远不会接入目录,这种做法就太过了。
amnesic 是第三种选择:以查询执行器级别的配置成本,获得目录级别的语义记忆。pipx install、一个 TOML 文件、每个数据库一个本地 SQLite 文件。不需要平台,不需要数据采集,也不需要运行服务。
坦诚对比
| amnesic | 查询执行器 | 企业级目录 | |
|---|---|---|---|
| 语义上下文(某个值代表什么) | ✅ 持久保存,归你所有 | ❌ 无 | ✅ 由平台管理 |
| 跨会话保留 | ✅ | ❌ | ✅ |
| 可移植 / 超越数据库访问权限继续留存 | ✅ export/import | ❌ | ⚠️ 受平台限制 |
| 配置成本 | 一条命令 | 一条命令 | 数据采集管道 |
| 实时架构的新鲜度 | ⚠️ 缓存,需手动刷新 | ✅ 始终实时 | ⚠️ 数据采集有延迟 |
| 执行计划 / 索引调优 | ❌ | ✅(Postgres MCP Pro) | ❌ |
| 数据血缘 / 所有权 / 治理 | ❌ | ❌ | ✅ |
| 适用于没有 FK 约束的旧版架构 | ✅ 自行添加注释 | ❌ 无内容可供检查 | ⚠️ 需要数据采集 |
如果你需要执行计划、索引建议或数据库健康诊断,请改用查询执行器,而不是 amnesic——这不是 amnesic 的职责,加入这些功能只会让它变成现有工具的较差版本。
将 amnesic 与查询执行器搭配使用。 两者可以协同工作:你完全可以同时运行它们。amnesic 保存语义;查询执行器提供工具能力。
上表中标记为 ⚠️ 的项目是已知缺口,且已有开放问题——请参阅路线图 ↓。
快速开始(90 秒)
pipx install amnesic # install the core
amnesic init # interactive wizard
⚡ 无需凭据即可试用。 改为运行
amnesic init --demo——它会添加一个独立的 SQLite 示例数据库(电子商务架构:customers / products / orders,包含 FK 和枚举列),让你在一分钟内试用所有工具。先快速了解一下,再将 amnesic 连接到真实数据库,非常合适。
向导会询问你要连接的数据库类型;如果尚未安装对应驱动,它会告诉你需要运行的唯一一条命令——你无需一开始就猜测要安装哪些额外组件。
向导将:
- 询问数据库类型、主机和凭据
- 在保存任何内容之前测试连接
- 将密码安全地存储在
~/.config/amnesic/.env中(chmod 600) - 将连接配置块写入
~/.config/amnesic/connections.toml
然后将 amnesic 添加到你的 AI 客户端并重启。
没有 pipx?或者更喜欢 uv / 普通 pip?
安装 pipx(一次性操作):
brew install pipx # macOS
sudo apt install pipx # Linux (Debian/Ubuntu)
python -m pip install --user pipx # Windows / generic
或者使用 uv(单二进制替代方案——速度快,无需 Python):
brew install uv # macOS
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux / macOS
powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
uv tool install amnesic
或者使用普通 pip(安装到当前启用的 Python 环境中):
pip install amnesic
无论你选择哪种方式,
amnesic init都会询问你要连接的数据库,并打印安装对应驱动所需的那条额外命令——无需一开始就决定要安装哪些额外组件。
安装后,可在任何终端中运行 amnesic --help。
amnesic 存储文件的位置
| 文件 | macOS / Linux | Windows |
|---|---|---|
| 配置 | ~/.config/amnesic/connections.toml | %APPDATA%\amnesic\connections.toml |
| 密钥 | ~/.config/amnesic/.env (chmod 600) | %APPDATA%\amnesic\.env (user profile ACL) |
| 知识 | ~/.config/amnesic/knowledge_<name>.db | %APPDATA%\amnesic\knowledge_<name>.db |
设置 $AMNESIC_HOME(或在 Linux 上设置 $XDG_CONFIG_HOME)以覆盖存储位置。
稍后添加更多连接
amnesic add # add another connection to existing config
amnesic test # verify all connections
amnesic test orders.prod # verify one connection
设置和轮换密码
amnesic init 和 amnesic add 会自动保存密码——对于常见的设置流程,无需关注本节。
需要稍后更改已保存的密码时,请使用 set-secret——例如,IT 部门轮换了密码、设置时输错了密码,或者你在手动编辑配置。
$ amnesic set-secret ORDERS_PROD_PASSWORD
Value: **** ← hidden input (your typing is invisible)
Confirm: ****
✓ Set ORDERS_PROD_PASSWORD in ~/.config/amnesic/.env
变量名是什么? 它是 connections.toml 中该连接的密码所引用的环境变量。向导会自动按 <CONNECTION_NAME_UPPERCASE_WITH_UNDERSCORES>_PASSWORD 的格式生成变量名:
| 连接名称 | 生成的环境变量 |
|---|---|
orders.prod | ORDERS_PROD_PASSWORD |
analytics | ANALYTICS_PASSWORD |
drive.staging | DRIVE_STAGING_PASSWORD |
若要查看配置使用的确切名称,请检查 ~/.config/amnesic/connections.toml——${...} 中的内容就是传给 set-secret 的变量。
底层机制:在 ~/.config/amnesic/.env 中写入(或替换)对应行,将文件权限设为 chmod 600(只有你自己的用户可以读取),并保留所有其他条目。
管理连接和知识
知识会按连接累积在本地 SQLite 文件中。这些命令可用于在机器之间迁移数据以及清理:
# Hand off everything you've taught amnesic about a database (annotations +
# relationships, not the re-derivable schema cache) as portable JSON:
amnesic export orders.prod -o orders-knowledge.json
amnesic export orders.prod # or print to stdout to pipe/redirect
# Load that knowledge into another connection (e.g. promote staging → prod,
# or onboard a teammate). Unconditional upsert — existing entries are overwritten:
amnesic import orders.prod orders-knowledge.json
# Wipe stored knowledge for a connection but keep the config entry:
amnesic clear orders.staging
# Drop a connection from connections.toml entirely (knowledge file kept
# unless you pass --delete-knowledge):
amnesic remove old.connection
amnesic remove old.connection --delete-knowledge
export/import/clear/remove 只操作本地文件——它们不会连接数据库,因此即使尚未设置某个连接的凭据也能使用。remove 会通过精确的字符串编辑修改 connections.toml,其他区块的格式和注释均保持逐字节不变。
添加到你的 AI 客户端
安装 amnesic 并添加正确的驱动额外依赖后(参见快速入门(90 秒)),amnesic 命令就会位于你的 PATH 中。所有 MCP 客户端都可以使用同一段配置:
Claude Code
一键安装(推荐——无需编辑 JSON)。在 Claude Code 中:
/plugin marketplace add https://github.com/SurajKGoyal/amnesic-marketplace
/plugin install amnesic@amnesic
这会自动将 amnesic 配置为 MCP 服务。来源:SurajKGoyal/amnesic-marketplace。
或者手动配置——编辑 ~/.claude/mcp.json
{
"mcpServers": {
"amnesic": {
"command": "amnesic"
}
}
}
Claude Desktop
将配置添加到你平台上的 Claude Desktop 配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"amnesic": {
"command": "amnesic"
}
}
}
Cursor
一键安装——点击下方按钮,Cursor 会为你完成配置:
或者手动配置——编辑 .cursor/mcp.json
将以下内容添加到项目中的 .cursor/mcp.json(或添加到全局配置 ~/.cursor/mcp.json):
{
"mcpServers": {
"amnesic": {
"command": "amnesic"
}
}
}
不进行全局安装(临时使用)
如果你不想在系统上安装 amnesic,可以使用 uvx 或 pipx,在每次 MCP 客户端启动时获取它。请注意,必须显式传入驱动额外依赖:
// uvx — requires `uv` installed (see Install section for per-OS instructions)
{
"mcpServers": {
"amnesic": {
"command": "uvx",
"args": ["--from", "amnesic[mssql]", "amnesic"]
}
}
}
// pipx — usually pre-installed via Homebrew or system package manager
{
"mcpServers": {
"amnesic": {
"command": "pipx",
"args": ["run", "--spec", "amnesic[mssql]", "amnesic"]
}
}
}
要使用多个驱动,请在方括号内用逗号分隔,例如 amnesic[postgres,mssql];也可以使用 amnesic[all] 安装全部驱动。
VS Code(使用 MCP 扩展)
添加到 .vscode/mcp.json:
{
"servers": {
"amnesic": {
"type": "stdio",
"command": "amnesic"
}
}
}
更新
amnesic 经常发布新版本。请使用安装时所用的工具升级:
| 安装方式 | 升级命令 |
|---|---|
pipx | pipx upgrade amnesic |
uv tool | uv tool upgrade amnesic |
pip | pip install --upgrade amnesic |
uvx(临时运行,位于 MCP 配置中) | uvx 会缓存构建结果——运行 uv cache clean amnesic 以获取最新版本 |
然后重启 MCP 客户端(Claude Code、Cursor 等),让它重新启动 amnesic 服务并加载新增工具。
升级安全,不会丢失注释。 首次加载时,你的知识文件会自动迁移到新架构;amnesic 只会添加列,从不会删除你的数据。
查看已安装版本:amnesic --version。最新版本:PyPI · Releases。
工具
| 工具 | 描述 |
|---|---|
db_list_connections() | 列出所有已配置的连接(不会暴露机密信息) |
db_list_tables(connection) | 列出所有已知表及其描述和列数 |
db_search(query, connection, target, limit) | 对表/列描述和别名进行 BM25 搜索 |
db_get_schema(table, connection) | 获取与已保存注释合并后的列架构 |
db_query(sql, connection) | 执行只读 SELECT 查询 |
db_annotate(table, connection, ...) | 为表/列保存语义注释 |
db_deprecate(table, connection, column?, reason?, undo?) | 软退役过时注释——标记并发出警告,但予以保留,且可撤销 |
db_detect_drift(connection) | 对照实时架构审计注释——查找孤立注释和未记录的表 |
db_forget(table, connection, column?, cascade?) | 永久删除注释(可选择级联) |
db_sync_knowledge(from, to) | 在连接之间复制注释(例如从 staging → prod) |
db_discover_relationships(connection) | 从实时数据库发现所有 FK 关系 |
db_get_relationships(table, connection) | 浏览 FK 图,以规划 JOIN |
搜索知识库
对于大型架构,db_list_tables 并不实用——你会把 500 多行内容都塞进 Claude 的上下文。改用 db_search 按关键词查找相关表/列:
"What table tracks customer payments?"
→ db_search("payments")
Top results:
- dbo.payments (table) "Customer payment records..."
- dbo.orders.payment_method (column) "Mode of payment..."
db_search 使用 SQLite FTS5 和 BM25 排序——速度快、在本地运行,无需嵌入或外部服务。搜索语法支持:
| 语法 | 效果 |
|---|---|
payment | 匹配该词(包含词干匹配,也会匹配 “payments”“paying”) |
"payment method" | 精确短语 |
pay* | 前缀匹配——“payment”“payable”等 |
payment AND status | 必须包含两个词 |
payment OR refund | 包含任一词即可 |
结果会返回经过排序的表/列行,并附带描述和高亮片段。
知识层
这是核心差异化功能。每条注释都会跨重启、模型更新和新会话保留。
会话 1 — 你发现了某些信息
You: What does status=3 mean in the orders table?
AI: Let me check. [runs db_query: SELECT DISTINCT status FROM dbo.orders]
I see values 1, 2, 3, 4. Let me look at some examples...
Based on the data, 3 appears to be "cancelled".
You: Save that. And status=1 is "pending", 2 is "confirmed", 4 is "delivered".
AI: [calls db_annotate]
db_annotate(
table="dbo.orders",
column="status",
column_description="Order lifecycle status",
enum_values={"1": "pending", "2": "confirmed", "3": "cancelled", "4": "delivered"}
)
Saved. Future sessions will see these labels automatically.
会话 2 — 知识已就绪
You: How many cancelled orders are there this month?
AI: [calls db_get_schema("dbo.orders")]
Schema response includes:
column: "status"
description: "Order lifecycle status"
enum_values: {"1": "pending", "2": "confirmed", "3": "cancelled", "4": "delivered"}
[writes correct SQL immediately]
SELECT COUNT(*) FROM dbo.orders WHERE status = 3 AND ...
无需重新发现,也不会浪费交互轮次。注释已持久保存。
关系图
只需了解一次架构中的 JOIN 结构,即可永久复用。
AI: [db_discover_relationships(connection="orders.prod")]
Discovered 47 foreign key relationships.
AI: [db_get_relationships(table="orders", depth=2)]
neighbors:
orders → users (via user_id → id)
orders → order_items (via id ← order_id)
paths:
orders -> users
orders -> order_items
order_items -> products
现在,AI 无需猜测,就能准确知道如何跨架构执行 JOIN。
在不同环境之间同步
在 staging 中积累注释,然后将其推广到 prod:
db_sync_knowledge(from_connection="orders.staging", to_connection="orders.prod")
返回 {synced: [...], skipped: [{table, reason}], warnings: [{table, column, reason}]}。
目标架构缓存中缺失的表会被跳过,并附上明确原因。目标架构中缺失的列会触发警告,但不会阻止同步其余内容。
高级用法:手动编辑 TOML
如果你更喜欢自行管理配置文件,可以生成一个空白模板:
amnesic init --template
这会将 ~/.config/amnesic/connections.toml 写入包含注释示例的文件,然后退出——不会启动向导。直接编辑该文件:
# ~/.config/amnesic/connections.toml
# Nested style: [connections.product.env]
[connections.orders.prod]
driver = "mssql"
server = "localhost"
port = 11433
database = "OrdersDB"
user = "${ORDERS_USER}"
password = "${ORDERS_PROD_PASSWORD}"
tunnel_script = "~/.scripts/mssql-tunnel.sh" # macOS / Linux (bash)
# tunnel_script = "C:/scripts/mssql-tunnel.ps1" # Windows (PowerShell)
[connections.orders.staging]
driver = "mssql"
server = "localhost"
port = 11434
database = "OrdersDB_Staging"
user = "${ORDERS_USER}"
password = "${ORDERS_STAGING_PASSWORD}"
# Flat style: [connections.name]
[connections.analytics]
driver = "postgres"
server = "analytics.company.com"
port = 5432
database = "warehouse"
user = "${ANALYTICS_DB_USER}"
password = "${ANALYTICS_DB_PASSWORD}"
# SQLite — no credentials needed
[connections.local]
driver = "sqlite"
database = "/absolute/path/to/local.db" # macOS / Linux
# database = "C:/path/to/local.db" # Windows (use forward slashes)
使用 ${ENV_VAR} 存储凭据——切勿将密码硬编码。
系统会自动从 ~/.config/amnesic/.env 加载密钥(格式:每行一个 KEY=VALUE,使用 # 添加注释)。对于 TOML 中引用的每个 ${VAR_NAME},使用 amnesic set-secret VAR_NAME 填写对应的 .env 条目(输入内容会隐藏,并设置 chmod 600),也可以自行编写 .env。
规范的连接名称使用点号表示法:orders.prod、orders.staging、analytics、local。
支持的数据库
| 数据库 | Python 驱动程序 | 安装方式 |
|---|---|---|
| PostgreSQL | psycopg2-binary | 选择 Postgres 时,向导会提示安装;也可安装 amnesic[postgres] extras |
| MySQL / MariaDB | pymysql | 选择 MySQL 时,向导会提示安装;也可安装 amnesic[mysql] extras |
| Microsoft SQL Server | pymssql | 选择 MSSQL 时,向导会提示安装;也可安装 amnesic[mssql] extras |
| SQLite | 标准库 sqlite3 | 始终可用,无需额外安装 |
安全性与只读强制机制
amnesic 的设计旨在安全地连接生产数据库。
为什么 AI 无法破坏你的数据
每条查询在到达数据库之前,都会经过两个独立层的检查:
- 静态分析(位于
amnesic/readonly.py)——SQL 会被分词;如果包含以下任一语句,就会被拒绝:INSERT、UPDATE、DELETE、DROP、TRUNCATE、ALTER、CREATE、EXEC、EXECUTE、MERGE、BULK、GRANT、REVOKE、DENY。 这也包括藏在 CTE 中的写入语句(例如WITH x AS (SELECT ...) UPDATE ...会被检测并拒绝)。 - 事务回滚——即使写入语句以某种方式绕过了静态检查,查询也会在
BEGIN TRANSACTION ... ROLLBACK中运行,因此任何操作都不会被提交。双重保险。
只有 SELECT 和 WITH ... SELECT 会到达数据库。分析前会去除注释,因此无法通过 /* DELETE FROM users */ 隐藏攻击。
其他安全措施
- 响应中不包含凭据:
db_list_connections会从输出中移除密码和用户名。AI 可以看到有哪些连接,但永远看不到如何向这些连接进行身份验证。 - 凭据仅通过环境变量提供:配置加载时扩展
${ENV_VAR}——密码绝不会写入磁盘上的connections.toml。 - 安全存储
.env:在 macOS/Linux 上使用chmod 0o600(仅所有者可读写);在 Windows 上,.env位于%APPDATA%,Windows ACL 会将其限制在你的用户配置文件范围内。 - 标识符验证:在将表名、模式名和数据库名称插入 SQL 字符串之前,会根据
[A-Za-z0-9_]+对其进行检查。 - 经过测试:
tests/test_readonly.py中的 40 多个单元测试涵盖所有写入关键字、注释剥离边界情况、尝试在 CTE 中写入、以分号分隔的多条语句,以及标识符注入尝试。运行pytest tests/test_readonly.py,即可在你的机器上验证。
这对我的数据安全吗?
amnesic 仅在本地运行,且仅使用协议。它不会引入新的外部信任边界——**信任边界在于 MCP 客户端将数据发送到哪里,而不是 amnesic 本身。**选择 AI 客户端就决定了适用于你数据行的策略。
your DB → amnesic (local) → MCP client → your AI deployment
↑ trust boundary lives here
无论你是独立开发者还是企业,都应该坦诚地问自己:
我信任我的 AI 客户端处理此数据库中的数据吗?
如果信任——对于大多数设置来说,答案都是肯定的——那就没问题。适用场景包括:
- 使用 Claude Pro / Cursor / Copilot 处理自己的项目、开发数据库或测试数据的独立开发者
- 查询个人 SQLite 或可自托管 Postgres 的业余项目
- 处理公开架构的开源维护者
- 使用具有明确隔离机制的企业级 AI 的团队:AWS Bedrock(租户 + IAM)、Azure OpenAI(固定区域,使用你的订阅)、Anthropic Enterprise(零数据保留,可选择不用于训练)、Vertex AI(你的 GCP 项目)、可自托管(Ollama、vLLM、本地部署的 Claude/GPT——数据不会离开网络)
- 使用提供零保留保证且 DPA 覆盖你所用场景的付费 AI 计划的用户
值得进一步留意的情况
- 你的数据库中包含属于他人的数据(用户、客户、患者),且你尚未确认 AI 提供商的条款涵盖对此类数据的处理
- 你使用的是面向消费者的 AI(免费版 / 个人 Pro),并且正在处理受监管数据——PHI(受 HIPAA 约束的实体)、持卡人数据(PCI-DSS)、受 GDPR / 印度 DPDP Act 限制的 PII
- 你的雇主有明确政策,限制在生产数据库上使用外部 AI 工具
- 你受数据驻留规则约束,数据行不得离开特定区域
内置数据最小化
这是设计的一部分,而非事后补救:注释层意味着 AI 会从本地 SQLite 知识文件中回答大多数架构问题——不会运行 db_query,也不会将任何数据行发送到别处。
- “status=3 是什么意思?” → 从已保存的注释中获取答案
- “orders 如何与 users 连接?” → 从 FK 图中获取答案
- “哪些表有
created_at列?” → 从架构缓存中获取答案
对于纯粹的结构探索,六种工具不会触碰你的数据:db_list_tables、db_get_schema、db_search、db_annotate、db_discover_relationships、db_get_relationships。它们只返回元数据。
与“裸露”的 SQL MCP 相比,这显著减少了数据传输——当 AI 不清楚某个枚举值时,SQL MCP 每次都必须运行 SELECT DISTINCT status FROM orders。amnesic 则会从本地注释中一次性给出答案。
免责声明:amnesic 按原样依据 MIT License 提供(不提供保证、不承担责任——请参阅 LICENSE)。本节不构成法律或合规建议。你使用 amnesic 以及连接到它的 AI 客户端,均由你自行负责。如果你处理受监管数据,请先咨询安全 / 合规团队,再将其用于生产环境。
路线图
目前已发布:知识层(v0.1)、BM25 搜索(v0.1.5)、生命周期管理——弃用 / 漂移检测 / 遗忘(v0.2),以及可移植的知识导出 / 导入(v0.2.2)。
**接下来(v0.3——“让记忆创造价值”):**无需任何人输入即可积累的知识——枚举自动发现、为没有约束的旧版架构推断软外键,以及学习 JOIN 模式。此外还包括基础工作:为每个响应设置令牌预算、在架构获取中加入索引和主键、缓存陈旧标记,以及精简工具数量。
完整计划及排序背后的原因,请参阅 ROADMAP.md。
🙌 欢迎贡献
v0.3 的每个事项都已作为 GitHub issue 提交,并且设计已考虑周全,包括问题、提议的方案、需要修改的文件以及测试方法。其中有几项标记为 good first issue。
选一个并提交 PR——无需事先征求同意。只需在 issue 下评论,避免两个人做同一件事。
- 👉 浏览未解决的 issue · 需要帮助 · 适合初次贡献的 issue
- 新驱动?请遵循
amnesic/drivers.py和amnesic/tools/schema.py中的结构。 - 测试位于
tests/中。新工具需要单元测试;提交 PR 前请运行pytest tests/。
有未列出的想法?提交 issue。 用例比补丁更有价值——能省去返工。
查看使用情况
pypistats.org/packages/amnesic
许可证
MIT — 详见 LICENSE。
MCP Registry
此服务已在 官方 MCP Registry 注册。
mcp-name: io.github.SurajKGoyal/amnesic
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。