AnalyticDB for PostgreSQL 长记忆 Skills 对接 Qoder

更新时间:
复制为 MD 格式

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_AGENTVSCODE_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

/adbpgmem-setup

配置引导

配置 API 地址、Token 和用户标识。

record

/adbpgmem-record

知识捕获

将对话中的高价值知识写入记忆库。

recall

/adbpgmem-recall

知识召回

从记忆库中检索历史开发经验。

review

/adbpgmem-review

记忆维护

审查记忆库健康度,清理过期或重复条目。

适用场景

场景

推荐 Skill

说明

首次使用,需要配置连接信息

/adbpgmem-setup

必须首先完成。

解决了一个棘手的 bug,想记录下来

/adbpgmem-record

说“记住这个”即可触发。

遇到类似问题,想看看以前怎么处理

/adbpgmem-recall

说“之前怎么解决的”即可触发。

记忆库用了一段时间,想清理整理

/adbpgmem-review

说“清理记忆”即可触发。

前提条件

  • 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
└── ...

安装步骤:

  1. 将 4 个 adbpgmem-*/SKILL.md 文件复制到对应 IDE 的 skills 目录下(项目级或全局均可)。

  2. 重启 IDE 或重新加载 skills 配置。

  3. 在对话中输入 /adbpgmem- 确认 skill 已识别。

.agents/skills/ 是 Agent Skills 开放标准的通用目录,三个 IDE 均兼容。如果希望同一套 skills 在不同 IDE 间通用,可使用此路径。

配置 Skills

首次使用前,必须执行 /adbpgmem-setup 完成配置。

步骤一:执行配置命令

在 AI IDE 对话中输入:

/adbpgmem-setup

或说“配置记忆”、“设置 adbpgmem”。

步骤二:填写配置信息

AI 会依次询问三个配置项:

配置项

说明

示例

API URL

AnalyticDB for PostgreSQL长记忆服务地址。

http://192.168.1.100:8000

API Token

认证令牌。

your-api-token-here

User ID

用户标识(用户名)。

zhangsan

如果已有配置,可选择“保持不变”沿用旧值,或输入新值覆盖。

步骤三:连通性测试

配置完成后会自动进行连通性测试(最多重试 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 会主动建议记录。

工作流程

  1. 识别知识:从当前对话中识别高价值知识,按三要素结构化。

  2. 自动查重:通过语义搜索检查是否已有高度相似的记忆(score > 0.85),有则更新,无则创建。

  3. 写入记忆库:使用 jq 安全构造 JSON,避免特殊字符导致写入失败。

  4. 输出摘要:展示写入结果。

知识分类

类型

说明

示例

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 判断当前问题可能有历史先例时。

工作流程

  1. 理解意图:从用户问题中提取检索主题、关键词、时间范围和项目范围。

  2. 语义搜索:通过AnalyticDB for PostgreSQL语义搜索 API 检索相关记忆(默认 top_k=5)。

  3. 筛选排序:过滤 score < 0.5 的低相关结果,按相关度降序排列。

  4. 结构化呈现:以类型标签 + 内容 + 相关度的格式展示结果。

跨项目检索:如果需要跨项目检索,去掉 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 条新记忆后执行一次。

工作流程

  1. 拉取记忆:通过列表 API 分页获取记忆(默认最多 200 条)。

  2. 统计面板:按类型和时间维度生成健康度报告。

  3. 识别问题:标记过期、低质、重复、孤立四类问题记忆。

  4. 呈现建议:展示问题清单和推荐操作,等待用户逐条确认。

  5. 执行清理:按确认结果执行更新或删除。

  6. 提权建议:识别高价值记忆(architecture/pattern 类型),建议同步到 AGENTS.md。

  7. 输出总结:展示操作统计和当前记忆总数。

问题记忆识别标准

问题类型

识别标准

建议操作

过期记忆

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-setup

“配置记忆”、“设置 adbpgmem”

配置、重新配置或删除连接参数。

/adbpgmem-record

“记住这个”、“记录一下”、“这个坑要记住”

捕获当前对话中的知识。

/adbpgmem-recall

“之前怎么做的”、“有没有相关经验”

检索历史开发经验。

/adbpgmem-review

“清理记忆”、“记忆有多少了”

审查和维护记忆库健康度。