AnalyticDB for PostgreSQL 长记忆 Skills 对接 Qoder
AnalyticDB for PostgreSQL长记忆 Skills 是一套运行在 Qoder 中的开发知识管理工具集。每个 Skill 是 AI IDE 中的技能模块,可通过斜杠命令(如 /adbpgmem-record)或自然语言(如“记录一下”)触发。它通过对接AnalyticDB for PostgreSQL长记忆服务 API,让 AI 助手能够在日常开发对话中捕获、检索和维护开发过程中产生的隐性知识——即那些不在代码里、但对项目至关重要的经验、决策和踩坑记录。
核心价值:让团队的开发经验不再随对话消失,而是沉淀为可检索、可复用的知识资产。
工作原理
AnalyticDB for PostgreSQL长记忆 Skills 的工作原理分为三个核心环节:
环境识别与配置加载
当用户在 AI IDE 的对话中触发某个 Skill 时,Skill 首先通过环境变量自动识别当前 IDE 类型(QODER_AGENT 或 VSCODE_BRAND 标识 Qoder 环境)。识别完成后,Skill 从对应的 IDE 配置目录(.qoder/)中读取 adbpgmem.conf 配置文件,获取 API 地址、认证令牌和用户标识。
记忆操作执行
根据触发的 Skill 类型,通过AnalyticDB for PostgreSQL长记忆服务的 REST API 执行相应操作:
-
写入知识(
POST /v3/memories/add/):将结构化的开发知识写入远端记忆库。 -
语义检索(
POST /v3/memories/search/):按语义相似度搜索历史记忆。 -
记忆列表(
POST /v3/memories/?page=X&page_size=Y):分页获取用户的记忆列表。 -
更新记忆(
PUT /v1/memories/{id}/):修改已有记忆的内容。 -
删除记忆(
DELETE /v1/memories/{id}/):移除过期或无用的记忆。
结果处理与呈现
API 返回的结果经 AI 处理后以结构化方式呈现给用户——包括写入摘要、检索结果排序、健康度统计和清理建议等。
关键设计:
-
IDE 自动检测:通过环境变量自动识别当前 IDE,配置文件存放在对应目录,无需手动指定。
-
项目级配置:每个项目独立一份
adbpgmem.conf,不同项目可以使用不同的 API 地址和用户标识。 -
REST API 通信:所有记忆操作通过 HTTP API 完成,支持语义搜索、智能去重、分页拉取。
Skill 功能概览
|
Skill |
命令 |
功能 |
说明 |
|
setup |
|
配置引导 |
配置 API 地址、Token 和用户标识。 |
|
record |
|
知识捕获 |
将对话中的高价值知识写入记忆库。 |
|
recall |
|
知识召回 |
从记忆库中检索历史开发经验。 |
|
review |
|
记忆维护 |
审查记忆库健康度,清理过期或重复条目。 |
适用场景
|
场景 |
推荐 Skill |
说明 |
|
首次使用,需要配置连接信息 |
|
必须首先完成。 |
|
解决了一个棘手的 bug,想记录下来 |
|
说“记住这个”即可触发。 |
|
遇到类似问题,想看看以前怎么处理 |
|
说“之前怎么解决的”即可触发。 |
|
记忆库用了一段时间,想清理整理 |
|
说“清理记忆”即可触发。 |
前提条件
-
AI IDE:Qoder。
-
AnalyticDB for PostgreSQL长记忆服务:需要一个可访问的AnalyticDB for PostgreSQL实例(请参见上下文服务),包含:
-
API URL(如
http://your-server:8000)。 -
API Token(用于认证)。
-
User ID(用户名,用于标识记忆归属)。
开通完成后需要在API Key 管理内单击操作列的管理授权,将 API KEY 授权给长记忆服务才能使用。
-
-
网络连通:IDE 所在机器能访问AnalyticDB for PostgreSQL长记忆服务 API 地址(API 地址是一个公网地址)。
安装 Skills
Skills 以 Markdown 文件形式存放在 AI IDE 的 skills 目录中,支持全局安装和项目级安装两种方式:
# 项目级 skills(仅对当前项目生效,随项目仓库管理)
{项目根目录}/.qoder/skills/
├── adbpgmem-setup/SKILL.md # 配置引导
├── adbpgmem-record/SKILL.md # 知识捕获
├── adbpgmem-recall/SKILL.md # 知识召回
└── adbpgmem-review/SKILL.md # 记忆维护
# 全局 skills(对所有项目生效)
~/.qoder/skills/
├── adbpgmem-setup/SKILL.md
├── adbpgmem-record/SKILL.md
└── ...
安装步骤:
-
将 4 个
adbpgmem-*/SKILL.md文件复制到对应 IDE 的 skills 目录下(项目级或全局均可)。 -
重启 IDE 或重新加载 skills 配置。
-
在对话中输入
/adbpgmem-确认 skill 已识别。
.agents/skills/ 是 Agent Skills 开放标准的通用目录,三个 IDE 均兼容。如果希望同一套 skills 在不同 IDE 间通用,可使用此路径。
配置 Skills
首次使用前,必须执行 /adbpgmem-setup 完成配置。
步骤一:执行配置命令
在 AI IDE 对话中输入:
/adbpgmem-setup
或说“配置记忆”、“设置 adbpgmem”。
步骤二:填写配置信息
AI 会依次询问三个配置项:
|
配置项 |
说明 |
示例 |
|
API URL |
AnalyticDB for PostgreSQL长记忆服务地址。 |
|
|
API Token |
认证令牌。 |
|
|
User ID |
用户标识(用户名)。 |
|
如果已有配置,可选择“保持不变”沿用旧值,或输入新值覆盖。
步骤三:连通性测试
配置完成后会自动进行连通性测试(最多重试 2 次):
-
HTTP 200:连通成功,配置写入。
-
HTTP 401/403:Token 无效,需重新输入。
-
超时/连接失败:URL 有误或服务不可用。
步骤四:确认完成
配置成功后,配置文件会自动写入项目对应 IDE 的目录下:
# 配置文件路径示例
Qoder 项目: .qoder/adbpgmem.conf
配置文件内容示例:
# ============================================================
# adbpgmem x AI IDE 集成配置
# 文件权限: chmod 600 (含 API Token)
# ============================================================
# ── 连接 ──
ADBPGMEM_API_URL="http://192.168.1.100:8000"
ADBPGMEM_API_TOKEN="your-api-token-here"
# ── 用户标识 (user_id,仅为用户名,非项目名) ──
# 优先级: 此值 > whoami
ADBPGMEM_USER_ID="zhangsan"
配置的更新与删除
-
重新配置:执行
/adbpgmem-setup,选择“重新配置”,可修改部分或全部参数。 -
删除配置:执行
/adbpgmem-setup,选择“删除”,会移除配置文件。
使用 Skill
知识记录(record)
触发方式(任选其一):
-
斜杠命令:
/adbpgmem-record -
自然语言:“记住这个”、“记录一下”、“这个坑要记住”、“这个经验很重要”、“以后别再犯这个错”
-
AI 主动建议:当对话产生高价值知识时,AI 会主动建议记录。
工作流程:
-
识别知识:从当前对话中识别高价值知识,按三要素结构化。
-
自动查重:通过语义搜索检查是否已有高度相似的记忆(score > 0.85),有则更新,无则创建。
-
写入记忆库:使用 jq 安全构造 JSON,避免特殊字符导致写入失败。
-
输出摘要:展示写入结果。
知识分类:
|
类型 |
说明 |
示例 |
|
architecture |
架构决策。 |
“选择 Redis 而非 Memcached,因为需要持久化” |
|
solution |
问题解决方案。 |
“Kafka 消费延迟通过增加 partition 解决” |
|
pattern |
编码模式或约定。 |
“所有 API 返回统一使用 Result 包装类” |
|
debug |
调试经验。 |
“连接池耗尽的根因是未关闭 PreparedStatement” |
|
context |
环境或业务上下文。 |
“生产环境数据库主从延迟约 200ms” |
输出示例:
已写入 2 条记忆到 adbpgmem(用户:zhangsan)
1. Kafka offset 提交使用手动模式避免重复消费
2. 订单服务超时阈值从 3s 调整为 5s 的原因
注意事项:
-
每次最多捕获 5 条记忆,超出时让用户选择最重要的。
-
如果本次对话没有值得记录的高价值知识,会直接告知用户并结束。
-
不要记录密码、API Key、Token、个人身份信息、生产环境 IP。
-
包含
<private>标签的内容会被自动丢弃。
知识召回(recall)
触发方式:
-
斜杠命令:
/adbpgmem-recall -
自然语言:“上次怎么解决的”、“之前遇到过类似问题”、“有没有相关经验”、“这个以前踩过坑”
-
AI 主动建议:当 AI 判断当前问题可能有历史先例时。
工作流程:
-
理解意图:从用户问题中提取检索主题、关键词、时间范围和项目范围。
-
语义搜索:通过AnalyticDB for PostgreSQL语义搜索 API 检索相关记忆(默认 top_k=5)。
-
筛选排序:过滤 score < 0.5 的低相关结果,按相关度降序排列。
-
结构化呈现:以类型标签 + 内容 + 相关度的格式展示结果。
跨项目检索:如果需要跨项目检索,去掉 user_id 过滤条件,扩大搜索范围(top_k=10)。
输出示例:
找到 3 条相关历史记忆:
1. [solution] Kafka offset 提交使用手动模式避免重复消费(相关度:0.92)
详情:自动提交模式下,消费者崩溃重启后会从上次提交的 offset 之后开始...
记录时间:2025-05-15
2. [debug] Kafka 消费者 group 重平衡导致消息丢失(相关度:0.75)
详情:max.poll.interval.ms 设置过小,处理耗时超过该值会触发重平衡...
记录时间:2025-04-20
3. [pattern] 消息队列消费者统一使用 @KafkaListener 注解(相关度:0.65)
记录时间:2025-03-10
注意事项:
-
搜索查询截断到 500 字符,避免 API 超限。
-
单次最多返回 10 条结果。
-
无匹配时,建议尝试不同关键词或使用
/adbpgmem-record记录当前经验。
记忆维护(review)
触发方式:
-
斜杠命令:
/adbpgmem-review -
自然语言:“清理记忆”、“看看记了什么”、“记忆有多少了”、“review 一下记忆”
建议频率:每月一次,或每积累 50 条新记忆后执行一次。
工作流程:
-
拉取记忆:通过列表 API 分页获取记忆(默认最多 200 条)。
-
统计面板:按类型和时间维度生成健康度报告。
-
识别问题:标记过期、低质、重复、孤立四类问题记忆。
-
呈现建议:展示问题清单和推荐操作,等待用户逐条确认。
-
执行清理:按确认结果执行更新或删除。
-
提权建议:识别高价值记忆(architecture/pattern 类型),建议同步到 AGENTS.md。
-
输出总结:展示操作统计和当前记忆总数。
问题记忆识别标准:
|
问题类型 |
识别标准 |
建议操作 |
|
过期记忆 |
context 类型且内容涉及临时配置或环境问题。 |
删除。 |
|
低质记忆 |
内容过于笼统(少于 20 字)或缺乏具体细节。 |
更新补充或删除。 |
|
重复记忆 |
两条记忆描述高度相似(语义相近)。 |
合并为一条。 |
|
孤立记忆 |
未被标注类型标签的记忆。 |
补充分类。 |
输出示例:
=== 记忆库健康度报告 ===
项目:my-project
总记忆数:83 条(本次分析 83 条)
按类型分布:
architecture(架构决策):8 条
solution(解决方案):15 条
pattern(编码模式):12 条
debug(调试经验):9 条
context(项目上下文):3 条
未分类:36 条
发现以下需要关注的记忆:
[过期](2条)
1. "测试环境数据库地址是 10.0.0.5" → 建议删除
[重复](1组)
1. "Kafka offset 手动提交"与"Kafka 消费者 offset 管理" → 建议合并
清理完成:更新 1 条,删除 2 条,合并 1 组
提权建议:2 条架构决策建议同步到 AGENTS.md
当前记忆总数:44 条
========================
注意事项:
-
列表 API 支持分页(每页 50 条),默认最多拉取 200 条。
-
更新和删除操作需要用户逐条确认,不会批量自动执行。
-
更新后的记忆总长度不超过 2000 token,超出时先汇总压缩。
典型使用场景
场景一:Bug 排查闭环
开发者:这个订单接口响应时间从 200ms 飙到了 5s,帮我查一下
AI:(排查过程... 发现是 N+1 查询)已修复,在 OrderRepository 中添加了 JOIN FETCH
开发者:记录一下这个坑
AI:→ 触发 /adbpgmem-record,写入 [debug] 类型记忆
下次遇到类似问题:
开发者:用户列表接口又慢了,之前有没有类似的经验?
AI:→ 触发 /adbpgmem-recall
AI:根据历史记忆,上次订单接口也是 N+1 查询问题,
通过在 Repository 中添加 JOIN FETCH 解决。建议先检查 SQL 日志。
场景二:团队协作知识共享
新成员加入项目:
开发者:有没有这个项目的开发经验和注意事项?
AI:→ 触发 /adbpgmem-recall(跨项目检索模式)
AI:找到 12 条团队历史记忆:
1. [architecture] 选择 PostgreSQL 而非 MySQL,因为需要 JSONB 支持
2. [pattern] 所有 REST API 统一返回 ApiResponse 包装类
3. [debug] Redis 集群模式下 KEYS 命令会阻塞,必须用 SCAN
...
场景三:多 IDE 协同开发
在 Qoder 中配置(自动检测 .qoder/ 目录):
/adbpgmem-setup → 配置写入 .qoder/adbpgmem.conf
在 Cursor 中配置同一服务(自动检测 CURSOR_AGENT 环境变量):
/adbpgmem-setup → 配置写入 .cursor/adbpgmem.conf
两个 IDE 共享同一个长记忆服务和 User ID,记忆互通。
在 Qoder 中记录的知识,在 Cursor 中也能检索到。
命令速查表
|
命令 |
自然语言触发 |
功能 |
|
|
“配置记忆”、“设置 adbpgmem” |
配置、重新配置或删除连接参数。 |
|
|
“记住这个”、“记录一下”、“这个坑要记住” |
捕获当前对话中的知识。 |
|
|
“之前怎么做的”、“有没有相关经验” |
检索历史开发经验。 |
|
|
“清理记忆”、“记忆有多少了” |
审查和维护记忆库健康度。 |