powercontext_tools() 返回三个工具,PowerContextRecall 准备模型输入,PowerContextScope 携带每个运行的配置。它连接到单独运行的 PowerContext Server。
成熟度与安装
从已审阅的源码提交安装 Server 和适配器:
固定提交消除了可变分支的歧义,但文档验证没有运行上游 VCS 安装路径,也没有运行外部模型提供方往返验证。请在部署环境中分别验证。
最小用法
下面的代码展示集成接缝,不是可独立运行的程序:请传入应用已经初始化的聊天model 和 LangGraph my_checkpointer。接入这两个依赖前,可以先按 API 串讲写入共用 Memory,再用适配器专项测试直接调用 PowerContextRecall;上游测试不依赖外部模型提供方,也能验证这一段。
create_react_agent 已经会读取召回 Hook 写入的 llm_input_messages 频道。
powercontext_search 与 powercontext_context 会把模型给出的查询截到 8,192 个 Python 字符。powercontext_tools() 按搜索、记住、上下文的顺序返回工具。
执行流程
PowerContextRecall,但同一用户轮次最多准备一次。ReAct 循环使用 Scope 加最新用户消息 ID 作为缓存键;没有 ID 时使用消息 文本。键包含 Scope,因此两个租户的相同提示词不会共享召回内容。
召回成功时,输入最前面是一条标记为不可信历史证据的 SystemMessage,后面保持原始消息顺序。召回空结果或失败时,只传原始消息。
保持模型输入临时
召回把完整输入写到llm_input_messages,从不把召回的内容块追加到 messages,所以检查点存储器不会积累过期上下文。
自定义图必须声明这个频道,在模型前执行召回,并由模型节点读取它:
state["messages"],模型会静默丢掉召回的上下文。把召回的内容块写回 messages 则破坏检查点边界。
Scope 与配置
多租户服务应在每次调用传入PowerContextScope。每个运行的 Scope、基础 URL、令牌和超时会覆盖对应环境变量。
Scope 优先顺序:
Bearer 的不带前缀的令牌约定。适配器不严格校验该语法,部署前应拒绝错误配置。repr=False 只能减少意外显示,不是敏感信息 vault。除非调用方提供并显式标记可信传输层,共享的 PowerContextClient 会拒绝向非本机回环地址宿主使用明文 HTTP。
为什么没有 BaseStore
LangGraph
BaseStore 要求 GetOp、caller-keyed PutOp upsert/删除和 SearchOp。只有搜索能自然映射到 PowerContext Memory。Memory 标识与版本由 Server 分配,并不提供 caller-key 读取、写入 或删除语义。compile(store=...)。
失败、隐私与 Scope 边界
自动召回为 fail-open。Scope 缺失、配置错误、校验错误、认证失败、超时或 Server 错误都会跳过召回的内容块,让图继续使用原始消息。HTTP 401/403 会记录为配置问题,不会冒充空结果 Memory。 显式工具不会把失败伪装成空结果 success,也不会把异常抛穿图。它们返回简短、模型可见的的不可用或无效请求字符串,模型可以重试或继续。真正的搜索 miss 使用单独的(no matching PowerContext memory) 结果。
适配器不做自动采集。显式 powercontext_remember 仍会持久化模型选择的文本,因此要设置宿主工具权限和保留策略。
当前不支持或尚未验证
完成检查清单
- Server 单独运行,源码安装的适配器固定到经过审阅的提交。
- 图使用
ainvoke或astream。 PowerContextRecall在模型前运行;自定义模型节点读取state.get("llm_input_messages") or state["messages"]。- 检查持久化的检查点,确认召回的内容块从不进入持久化的
messages。 - 每次调用收到预期 Scope;跨 Scope 测试证明相同提示词仍保持隔离。
MAX_BYTES在 512 到 32,768 之间,长查询会在 8,192 字符截断,远程传输层使用 HTTPS。- Server 不可用时召回让图继续;显式工具失败对模型可见,并与空结果搜索区分。
- 显式 Memory 写入已纳入工具权限与保留策略。
- 部署记录没有混淆 Unsupported 与 Not validated。
先运行无模型召回 inspection。确认 Scope、Server reachability、临时状态和失败行为都可观察后,再加入真实模型提供方。

