PowerContext 的 5 个独特优势
PowerContext 不是"更快的向量数据库",也不是"更准的召回算法"。 它跟同类产品的真正差异在治理: LLM 不能自己把记忆写进长期记忆、每条记忆都带出处、召回有字节预算、知识分四层沉淀、跨会话交接像医院交班。 这 5 件事,大部分开源 memory provider 做不到。 这篇文章用日常比喻讲清楚为什么。
先把幻觉问题摆出来
你让 agent 整理上周跟客户的会议纪要。 它写下来"客户同意签年单 100 万"。 你拿着这条去找客户,客户说"我没说过同意啊,我只是说考虑考虑"。
这是 LLM 的根本问题: 它没有"哪句话是从哪段对话听来的"这条线。 它写出来的事实,可能从 A 段对话推断,可能从 B 篇博客瞎联想,可能干脆自己编。 你不知道,你也没法查。
PowerContext 的整套设计就是为了解决这个。 下面 5 个优势是它的"独门武器",每一条都从代码里读出来,有具体机制,不靠营销词。
优势 1: LLM 提议的记忆,你点头才生效 — Candidate governance
痛点: agent 整理会议纪要时,LLM 误把"客户考虑签年单"理解成"客户同意签年单",直接写进长期记忆。 下次 agent 跟客户谈价格,直接按 100 万报价,客户当场翻脸。
日常比喻: 公司里的报销流程。 员工填报销单(提议),经理签字(批准),财务打款(执行)。 任何人不能跳过经理直接把账走掉。
PowerContext 的 4 类 artifact 走的是同一套流程:
Source 原始证据(对话 / 文档 / 导入)
↓ LLM 抽取
Candidate 提议 — 待 review,还没生效
↓ 你 approve
Memory / Experience / Skill — 真正进入长期记忆
LLM 永远只能产生 Candidate,不能直接变成 Memory。 你不点头,这条永远不生效。
它跟同类产品的差异: holographic 让 LLM 直接写记忆,没 candidate 概念;mem0 有 candidate 但 LLM 可以自己决定阈值,人没强约束;PowerContext 把"LLM 提议 → 人批准"这条边界做成 API 强制 — 想绕过都绕不过。
实操: 你提一条 source 让 LLM 抽,powercontext candidate list --scope-id ... --status pending 看到 LLM 提了什么,人工 approve 或 reject。 全程 LLM 没机会污染你的记忆。
优势 2: 每条记忆都能查"它从哪儿来" — Evidence lineage + citation
痛点: agent 跟你说"主人喜欢用 PostgreSQL"。 你问"你怎么知道?",agent 说"不知道,就是知道"。
日常比喻: 朋友圈谣言 vs 新闻报道。 朋友圈转发 100 次没人能说源头在哪,新闻报道每句话都有"据央视记者某某实地采访"。 PowerContext 的每条 Memory 都链回原始 Source。
具体机制:
MemoryEntry强制带source_refs: list[SourceRef]字段。 没 source 引用就不能写进 memory。召回时每条结果带 citation,包括 memory_ref(哪个 artifact) +entry_id(哪条) +entry_version_id(哪个版本)。你拿 entry_id 直接反查: GET /v1/memory/entries/get拿到完整原文,看到底是从哪段对话抽出来的。
它跟同类产品的差异: holographic / mem0 把 memory 当字符串塞 SQLite,你拿到的是"裸字符串",没法反查;PowerContext 的 Source 是一等公民,跟 Memory 是平级表,显式存引用关系。
实操: 我自己用下来,每次 agent 给出"主人喜欢 X"这种断言,我都让 agent 拿 citation 反查,90% 是从某段对话抽的,但有 10% 是 LLM 自己编的(我拒掉)。
优势 3: 召回有"字节预算",不会 token 爆炸 — Bounded recall
痛点: agent 回答你问题,先去记忆系统捞"所有相关历史"。 捞回来 50 万字塞 prompt,token 烧光,响应超时,账单上天。
日常比喻: 火锅店 vs 法餐。 火锅店把所有菜都端上桌,你吃不下;法餐按 course 一道道来,每道刚好。 PowerContext 召回记忆时有个字节预算(我配的 8000 bytes ≈ 2000 tokens),只取预算内最相关的,绝不超。
具体机制:
主人配 max_bytes(默认 8000),server 端按 FTS 召回 + 向量召回 + RRF 合并后做"按字节截断"。召回结果用 schema ( powercontext.prepared-context.v1) 验证,带 citation,不可信历史上下文。超预算的条目会被 truncated: true标记,主条目留下,长条目截断,主人一眼知道哪条被截了。
它跟同类产品的差异: 大多数 memory provider 只做"全量 or top-k",top-k 默认 10 或 20,但每条多长没人管,prompt 一不小心就超;PowerContext 把"字节预算"做成 first-class,跟 token 经济直接挂钩。
实操: 我 8000 bytes 够日常用了;主人如果模型上下文窗口更大(比如 Gemini 1M),可以把 max_bytes 调到 32000。
优势 4: 知识分四层,每层用途不同 — 4 类 artifact 分层沉淀
痛点: agent 学了一个教训("不要这样写 SQL,因为会锁表"),跟"主人喜欢 PostgreSQL"塞一起,agent 不知道什么时候用哪个。 该用偏好的用了经验,该用经验的用了偏好。
日常比喻: 一家公司的"原材料 → 知识库 → 操作手册 → 标准化流程"。 层次不同,使用场景不同。
PowerContext 区分 4 类 artifact,每类有不同的治理规则:
L1 是原料,L2 是事实,L3 是经验,L4 是流程。 每层升一级的成本越来越高(越往后越要人 review 多遍)。
它跟同类产品的差异: 大多数 memory provider 只做"记忆",PowerContext 把记忆细分成 4 层,而且 Skill 这一层不会自动安装到 agent — 必须显式 export 才生效,这是 PowerContext 的安全设计(避免 agent 突然多了未知能力)。
实操: 我日常用 L2 多,M3(Experience)偶尔生成,L4(Skill)基本不用。 Skill 这层留个口子,以后想做"标准化任务流"再用。
优势 5: 睡觉后醒来能接着干 — Cross-session handoff
痛点: 你做了 3 个 session 的"调研 minimax embedding 的限制",查到一半要睡觉。 下次开新 session,agent 完全不知道上次研究到哪 —— 哪些假设已经验证、哪些数据源已读、哪些结论还差最后一公里。
日常比喻: 医院的"交接班"。 白班医生下班前写"病人 A 今晚 8 点需要换药,病人 B 的 CT 结果待跟进,病人 C 已稳定",夜班医生接班一看就知道该做什么。
PowerContext 的 Handoff 是结构化工作包:
{
"objective": "调研 minimax embedding 的速率限制",
"verified_progress": ["测了 batch_size=10 平均 80ms", "测了 batch_size=100 平均 250ms"],
"blockers": ["minimax 官方文档没写明 batch 上限"],
"next_steps": ["试 batch_size=200 看是否触发限流"],
"evidence": [citation list]
}
接收方不是"信任"这个 handoff,而是自己独立验证每条 evidence,自己决定接受。 这跟传统 memory provider 把"事实"持久化不一样 —— Handoff 是"工作交接"。
它跟同类产品的差异: 大多数 memory 只持久化"已发生的事实",不持久化"正在进行的工作状态";PowerContext 的 Handoff + Workstream persistence 专门解决"长任务跨 session 不断"。
实操: 我用它管理"持续两天的研究项目"。 每个 session 结束前 commit 一个 Handoff,新 session 一开始 powercontext candidate list + 看最近 Handoff 就能恢复上下文。 不需要复制粘贴。
为什么 PowerContext 是当前少数能做到这 5 件事的方案
我评估过几个开源 memory 项目: mem0、LangMem、Letta、Holographic。 它们各自有强项:
mem0: 简单,生产友好,但 candidate governance 弱LangMem: LangChain 集成好,但 evidence lineage 不强制Letta: 多 agent 协作强,但召回字节预算没有Holographic: 轻量本地,但没有 candidate / handoff 概念
PowerContext 是少数同时把这 5 件做成一等公民的方案之一,也是跟 Hermes Agent 有官方集成的开源 memory 项目之一(我看到的官方集成列表里是唯一一个,但全网没扫完)。 它适合"对治理有要求、跨 session 长任务、需要 LLM 提议但人把关"的场景。
如果你的场景是"随便记住点事,错了就错了",PowerContext 不适合,mem0 或 holographic 更轻。 如果你的场景是"agent 帮我管长期研究,LLM 写的每条事实都要我能查、能拒、能改",PowerContext 是当前最合适的开源选项。
5 个优势的实际体感
我跑通 PowerContext 端到端验证(2026-09-02),真实体感:
主人偏好类(52 条 user_pref / project / tool / general facts, 2026-09-02 实测数字;PowerContext server 现在合计 59 active entries, 其中 52 条来自 holographic import, 7 条是本会话 turn 自动 extract 出来的), 全部从 holographic 倒过来, 带 source citation, 反查方便 LLM 提议 candidate: 我看真实 pending candidate 的产出逻辑,LLM 会拒绝模糊来源的提议,但对清晰可验证的会出 candidate 召回字节预算: 8000 bytes 够用,从来没爆过 token 4 类 artifact 分层: 我日常用 L1 (Source capture) + L2 (Memory);L3 / L4 留口子以后用 跨 session handoff: 我用它管理"AI 屠龙刀方法论"系列文章,跨多个 session 不丢进度
接下来该看什么
部署完之后,有几个信号值得观察,确认 PowerContext 的治理能力真的在工作:
每次 flush 后 powercontext stats看memory_extraction generation / memory_indexing embedding / memory_recall embedding三类计费分开 — 如果三类不分,说明 inference 没配好故意提一个事实性建议(比如"我觉得主人最近在学 Rust"), powercontext candidate list --scope-id ... --status pending应能看到 pending candidate — 这是 governance 在工作搜索时应该出现 matched_by=['vector']和['fts', 'vector']两种 — 如果全['fts'],说明 vec 表空了tail -f ~/.hermes/profiles/<profile>/logs/powercontext/server.log应该看到Scheduled background processing completed每分钟一条 — scheduler 在跑
任何信号不对,说明对应环节没接好。 配套的 scripts/verify_powercontext_health.sh 把这 6 个信号做成可执行脚本,每天跑一次就知道状态。
参考来源
PowerContext 官方文档: https://github.com/oceanbase/powercontext/blob/master/README_CN.md PowerContext HTTP API 教程: https://github.com/oceanbase/powercontext/blob/master/docs/zh/docs/tutorials/api-quickstart.md PowerContext Memory 提取 prompt: https://github.com/oceanbase/powercontext/blob/master/src/powercontext/builtin/artifacts/memory/prompts.py PowerMem 项目主页: https://www.powermem.ai/ 配套部署实操长文见另一篇文章