AI Agent自学习记忆系统置信度排行榜评测
说实话,市面上这些 AI 编码 Agent——无论是 Claude Code、Cursor 还是 GitHub Copilot——在单次对话中的表现确实抢眼,但一旦开启新会话,一切归零。没有上下文延续,也缺乏那种“之前遇到过类似情况”的洞察力。这就好比每次走进同一个房间,都要重新认出每一件家具。
当前主流应对方案是什么?CLAUDE.md 文件、系统提示词、手工维护的规则列表——说到底,都是把人当成记忆载体。你来观察模式、记录规则、维护文件,Agent 只负责执行指令。但问题在于:记忆本应是 Agent 在反复实践中自行习得的能力,而不该是人手分发的标准化配置。
核心理念:置信度驱动的自学习
多数 AI Agent 的记忆系统走显式建模路线——人类编写规则,Agent 照做。但 instinct 另辟蹊径,借鉴了大脑中习惯形成的基本机制:
观察 → 重复 → 成熟 → 建议
Agent 第一次执行某个操作时,instinct 将其记录为一条 raw 观察,初始置信度设为 1。同一模式再次出现,置信度加 1。当置信度突破第一道阈值,模式进入 mature 状态,自动出现在建议列表;如果继续积累到更高的阈值,模式晋升为 rule,可自动应用。
Confidence 1-4: raw (observed, not actionable)
Confidence 5-9: mature (ready to suggest)
Confidence 10+: rule (strong enough to auto-apply)
那么何时一个模式才算“做好准备”?不需要人工判断,数据说了算。
工作原理
1、观察
只要发现某个模式反复出现——比如一组工具调用序列、特定的编码偏好、某类频繁的修复操作——就立刻将其记录下来:
instinct observe "seq:lint->fix->test"
instinct observe "pref:style=black" --cat preference
instinct observe "fix:missing-import" --cat fix_pattern
命名约定通过前缀区分模式类别,清晰可辨:
seq: → Action sequence (e.g. seq:lint->fix->lint)
pref: → User preference (e.g. pref:stdlib-first)
fix: → Recurring fix (e.g. fix:missing-import)
combo: → Tools used together (e.g. combo:pytest+coverage)
每次观察都是一次 upsert 操作:模式已存在则置信度加 1,不存在则新建一条置信度为 1 的记录。一条命令完成积累。
2、合并
会话结束时(或定期),运行 consolidate 触发自动晋升:
instinct consolidate
# Promoted to mature: 3
# Promoted to rule: 1
# Total instincts: 12
学习的核心步骤在这里完成。累积观察次数达标的模式自动晋升,无需人工介入,也无需手动审核。
3、建议
下一次会话开启时,Agent 向系统请求建议:
instinct suggest
# seq:test->fix->test conf=8 [mature] sequence
# pref:stdlib-first conf=12 [rule] preference
# 2 suggestions
只有 mature 和 rule 级别的模式才会返回。Raw 观察始终静默,直到置信度积累到位——不会在 Agent 还“不确定”时给出不成熟的建议。
架构
三个核心组件无需复杂的外部依赖(仅依赖 MCP SDK),且 SQLite 直接内置于 Python 标准库;MCP 服务器基于 FastMCP 实现。
为什么选择 SQLite?
备选方案评估过 JSON 文件、Redis、简单的键值存储,最终选择了 SQLite,原因有四:可用 SQL 按置信度、类别、项目任意查询;ACID 事务保证状态一致性;无需守护进程、无需额外配置,整个存储就是一个文件;迁移学习历史只需复制这个文件。
核心的 upsert 查询把创建和更新合并到一条语句中:
INSERT INTO instincts (pattern, category, confidence, ...)
VALUES (?, ?, 1, ...)
ON CONFLICT(pattern) DO UPDATE SET
confidence = confidence + 1,
last_seen = excluded.last_seen
首次观察建行,重复观察加分。一条查询搞定所有状态更新。
为什么选择 MCP?
Model Context Protocol 是一个将 AI Agent 与外部工具连接的开放标准。instinct 实现为 MCP 服务器后,天然兼容所有支持该协议的 Agent——Claude Code、Cursor、Goose,或者任何其他 MCP 客户端。
{
"mcpServers": {
"instinct": {
"command": "instinct",
"args": ["serve"]
}
}
}
配置文件中加上这几行,任意 MCP Agent 就能接入自学习记忆。
项目感知的学习
并非所有模式都具有普适性。“用 black 格式化”也许适用于某个 Python 项目,换到 Go 项目就不适用了。所以 instinct 用项目指纹来划定作用域:
def project_fingerprint(path=None):
p = Path(path or Path.cwd()).resolve()
return hashlib.sha256(str(p).encode()).hexdigest()[:12]
每个项目依据其目录路径生成一个稳定的 12 字符 SHA256 指纹。模式分为两类:项目级模式只在对应项目中生效;全局模式(project 字段为空)在所有项目中可见。
Agent 调用 suggest 时,返回结果同时包含全局模式和当前项目的专属模式。Python 项目的格式化偏好不会渗透到 Go 项目中,干净利落。
衰减:遗忘过时的模式
人的习惯长期不用会逐渐淡化,instinct 中的模式也遵循同样的逻辑。
instinct decay --days 90
超过 90 天未被观察到的模式,置信度减 1。减到零的模式自动删除。系统以此避免积累过时的建议,保持记忆库的时效性。
实际使用
以下是与 Claude Code 集成的典型场景。在 MCP 服务器的指令中,instinct 对 Agent 说:
Use 'observe' to record patterns you notice. Use 'suggest' to get mature patterns that should guide your behavior. Run 'consolidate' periodically to auto-promote high-confidence patterns.
几次会话之后,Agent 开始形成自己的操作手册:
seq:test->fix->test conf=8 [mature] — Always re-run tests after fixes
pref:stdlib-first conf=12 [rule] — Prefer stdlib over third-party
fix:missing-init conf=6 [mature] — Check for __init__.py in new packages
combo:pytest+coverage conf=5 [mature] — Always run coverage with tests
没有人显式地教过 Agent 这些内容——它从跨会话的重复行为中自行归纳出来。到第五次会话,Agent 对工作流的熟悉程度已经超过一个新加入的团队成员。
深入底层:数据库 Schema
完整的 SQLite schema 如下:
CREATE TABLE instincts (
pattern TEXT PRIMARY KEY,
category TEXT NOT NULL DEFAULT 'sequence',
confidence INTEGER NOT NULL DEFAULT 1,
first_seen TEXT NOT NULL,
last_seen TEXT NOT NULL,
source TEXT NOT NULL DEFAULT '',
project TEXT NOT NULL DEFAULT '',
promoted INTEGER NOT NULL DEFAULT 0,
metadata TEXT NOT NULL DEFAULT '{}'
)
一张表,构成完整的数据模型。promoted 字段对应成熟度等级:0 = raw,1 = mature,2 = rule。metadata 列存储任意 JSON,用于在不做 schema 迁移的前提下扩展功能。
Python API
CLI 和 MCP 服务器之外,instinct 也提供了 Python API:
from instinct.store import InstinctStore
store = InstinctStore() # 默认: ~/.instinct/instinct.db
# 观察模式
store.observe("seq:test->fix->test", source="claude-code")
store.observe("seq:test->fix->test") # 置信度现在 = 2
# 查询
suggestions = store.suggest() # 获取成熟模式
store.list(min_confidence=3) # 按置信度筛选
store.search("test") # 全文搜索
# 生命周期
store.consolidate() # 自动提升
store.decay(days_inactive=90) # 减少过时模式
stats = store.stats() # 汇总统计
# 导出
rules = store.export_rules() # 仅置信度 >= 10
store.close()
借助该 API,instinct 可以方便地嵌入自定义工具链、CI 流水线或数据分析面板。
本地测试
pip install instinct-mcp
# 记录你的第一个模式
instinct observe "seq:your->first->pattern"
# 查看系统学到了什么
instinct suggest
# 启动 MCP 服务器用于 Agent 集成
instinct serve
代码完全开源,包已发布在 PyPI 上。
