OpenContext:把 Agent 记忆变成可治理的上下文资产

从目录、manifest、检索、写回和隐私边界出发,分析 OpenContext 如何为现有编程 Agent 建立可治理的长期上下文层。

把应用部署到土耳其|BRNCHOST · 土耳其 VDS
云服务器,积分可续期|雨云 · 国内外节点 · 积分兑换权益
低价年付,大流量 VPS|RackNerd · SSD 存储 · 1Gbps 端口
香港轻量,搭个小站|晚安云 · 香港云服务器
香港 VPS,大带宽可选|野草云 · BGP 直连
大陆访问,精品线路|搬瓦工 · CN2 GIA / CTGNet 套餐
资料归档,交给 AI 整理|WorkBuddy · 本地文件处理
建站起步,先看应用镜像|腾讯云 · 轻量应用服务器
CN2 GIA,中国方向优化|DMIT · Premium 网络
双 ISP 原生住宅 IP|丽萨主机 · 美国 9929 精品线路
高频 CPU,多地部署|Evoxt · 云服务器 · 每周异地备份
京东云轻量云主机:129元/年,新人专享,限购1台

给编程 Agent 加“记忆”,真正难的不是把旧对话保存下来,而是让过去的知识在下一次工作中以正确的范围、正确的时机和可追溯的方式重新出现。否则,所谓长期记忆只是另一种上下文噪音:过期决策被当成现行规则,临时想法被误认成项目约束,敏感日志则在不该出现的地方被再次召回。

OpenContext 的价值,不在于替 Codex、Claude Code、Cursor 或 OpenCode 再造一个聊天窗口,而在于给已有的编码工具补一层可操作的个人上下文库。它把背景、技术决策、项目约定和复盘记录放进全局 contexts/ 库,再通过 CLI、MCP、Skills、斜杠命令、桌面端和本地 Web UI,让这些资料可以被人和 Agent 共同维护。

先把“记忆”拆成四种东西

工程团队经常把所有历史都叫记忆,但不同材料的保质期并不一样。项目事实,例如数据库端口、目录边界和部署方式,适合长期保存;技术决策,例如为什么选择某个队列或暂时不做某个功能,需要带日期和适用范围;工作过程,例如某次构建失败的完整日志,通常只适合短期保留;个人偏好,例如回答语言和代码风格,则属于用户级上下文。

如果这些内容全部混在一张“长期记忆”里,检索系统很难判断优先级。更稳的做法,是把它们拆成有名字、有描述、有目录归属的文档。OpenContext 的 contexts/ 库和 folder、doc、manifest、search 这些命令,提供的正是这种结构化入口。它不是替你决定什么值得保存,而是让保存后的内容能被定位、查看和修订。

OpenContext 的边界:上下文层,不是新 Agent

官方项目将 OpenContext 定义为 personal context / knowledge store。它复用你已有的编码 Agent CLI,而不是要求你换模型或购买另一套 Agent 订阅。CLI 负责管理全局文档库;MCP Server 让兼容客户端把它当作工具调用;Skills 和斜杠命令让 Agent 按固定动作加载、搜索、创建和迭代上下文;桌面端和 Web UI 则给人留下浏览和编辑入口。

这个边界很重要。OpenContext 能帮助 Agent 读到“项目为何这样做”,但它不会自动证明这条信息仍然正确;它能生成写回入口,但不会替你审查一条新事实是否应该成为团队规则。记忆系统解决的是上下文的存取和复用,不是事实治理本身。

安装之后,先建立一套小而清楚的目录

官方 README 给出的 CLI 安装方式是:

npm install -g @aicontextlab/cli

进入项目后运行 oc init,可以为 Cursor、Claude Code 和 Codex 生成用户级 Skills 与斜杠命令,并设置相应的 MCP 配置。需要非交互指定工具时,可以使用官方文档列出的 --tools cursor,claude,codex,或者用 --no-cursor、--no-claude、--no-codex 排除某个集成。

不要一开始就把整个硬盘的笔记搬进去。先建三个目录就够了:projects/ 放项目事实和边界,decisions/ 放带日期的技术决策,playbooks/ 放已经验证过的操作流程。每个文档开头写清楚负责人、适用项目、更新时间和失效条件。目录少一点,反而更容易让 Agent 找到真正重要的内容。

manifest 不是装饰,而是上下文入口

在大型项目中,Agent 不应该每次都把所有 Markdown 读一遍。oc context manifest <folder> 可以生成供 AI 读取的文件清单。这个清单的意义,不是替代正文,而是先给 Agent 一张地图:这个目录有哪些文件、每个文件解决什么问题、需要深入哪一层。

一个好的 manifest 应该帮助 Agent 做两次判断。第一次是范围判断:当前任务是否真的需要读取这组资料;第二次是证据判断:某个结论来自项目事实、临时记录还是尚未确认的想法。若目录描述写成“各种开发笔记”,检索入口仍然模糊;若写成“生产部署约束,更新于某日期,修改前必须验证双实例健康状态”,Agent 才更容易把它当作约束而不是普通参考。

把“先读再做”变成显式步骤

长期上下文最实用的工作方式不是让 Agent 每次无条件加载全部历史,而是在任务开始时执行一次有目的的读取。可以先用 oc search "query" 找到相关文档,再用 oc context manifest <folder> 了解目录范围,最后只打开与当前任务有关的文件。

例如,准备修改部署脚本时,先检索“部署、端口、回滚、健康检查”,而不是搜索一个过于宽泛的“项目”。找到候选文档后,人工或 Agent 都要核对更新时间、适用环境和是否存在替代版本。这样做的核心不是增加仪式感,而是避免把不相关的旧经验注入当前上下文。

写回必须经过验收

OpenContext 提供 /opencontext-iterate 这样的写回入口,适合把一次任务中确认过的经验沉淀回库。但“任务结束”不等于“所有输出都值得保存”。一次临时错误、某个已经关闭的 issue、包含密钥的终端输出,都不应直接进入长期库。

写回前至少做四个检查:这条信息是否可复用;它的适用范围是否写清;它是否包含敏感数据;未来发现错误时能否定位和撤销。建议把“事实”“决策”“待验证假设”分开记录,不要把推测写成规则。对重要文档保留更新时间和变更原因,必要时在正文中链接到代码提交、测试结果或官方文档。

权限和隐私要从一开始设计

全局上下文库很方便,也意味着它可能跨项目暴露信息。项目路径、内部域名、客户名称、故障日志和访问令牌都可能出现在 Agent 读写范围内。OpenContext 的 MIT 许可和本地 CLI 形态,并不自动等于“所有数据都安全”;安全边界仍取决于目录权限、MCP 客户端配置、备份方式和你允许 Agent 执行的操作。

最基本的做法是把凭据、会话 Cookie、私钥和完整生产日志排除在 contexts/ 之外。需要保留时,只记录变量名、轮换方式和验证步骤,不记录秘密值。不同项目如果有不同保密等级,最好分目录、分权限、分备份,不要因为“Agent 需要上下文”就把所有资料放入一个全局平面。

如何判断它真的有用

不要用“安装成功”作为验收标准。可以选一个跨天任务做小实验:第一天在上下文库写入项目约束和一个明确决策,第二天新开会话,让 Agent 只通过搜索和 manifest 找到它;随后故意提出一个与旧决策冲突的方案,观察 Agent 是否能指出冲突,而不是盲目执行。

再做一次写回测试:让 Agent 总结本次工作,但把临时日志、未验证推测和已经废弃的方案混在输入中,检查最终文档是否仍能区分事实与假设。最后检查配置范围,确认 oc init 写入的是用户级工具目录和对应 MCP 配置,没有把敏感内容复制进仓库。只有跨会话可找回、检索结果相关、写回内容可审查、配置范围可解释,这层记忆才真正减少了重复沟通。

记忆系统最重要的能力是允许忘记

上下文越多不一定越聪明。旧文档如果没有失效标记,会逐渐变成错误的权威;重复文档越多,Agent 越难判断哪个版本优先。应当定期清理低价值记录,给暂时有效的决定设置复查日期,把项目迁移后的旧目录归档,并在文档中明确“不要再使用”的状态。

OpenContext 解决了知识跨项目、跨会话被重新调用的问题,但治理仍然需要人负责。最可靠的长期记忆,不是永远保存一切,而是只保存那些经过判断、能被定位、能够复核、过期后可以撤回的上下文。把它当作 Agent 的可操作工作台,而不是自动长出正确答案的记忆魔法,才是更稳妥的使用方式。