Codex CLI
让你的 Codex 智能体记住过往决策、查找相关上下文,并从每次会话中积累经验,跨工具延续记忆。
Codex 复用型记忆包
现代 Codex 的推荐做法是:安装插件、保留插件内置的 Nowledge Mem MCP,并运行一次 hook setup。插件负责记忆行为引导,MCP 提供更顺手的检索和写入工具,Stop hook 会自动捕获真实 Codex 会话。
在 Codex、Claude Code、Gemini、Cursor 之间切换,不丢失上下文。这个 Codex 包会稳定完成 Working Memory 启动,内置本地 MCP 连接,提供搜索和蒸馏技能,并自动捕获 Codex 对话线程。实际体验里,现代 Codex 往往比起 skill-only 引导,更愿意直接调用 MCP 工具,所以推荐组合是:插件 + MCP + hook。
如何确认安装成功
开始一次会话,先问「我在做什么?」你应该看到最近的工作重点和优先事项。然后再问一个延续型问题,比如「我们之前对这个发布流程做过什么决定?」正常情况下,Codex 不应该停在简报这里,而会继续进入检索。完成一个短回合后,运行 nmem t search "这轮里的一句话" --source codex,应该能看到被捕获的 Codex 线程。
开始之前
- Nowledge Mem 已在本地运行(安装指南),或有可访问的远程 Mem 服务
- 已安装 Codex CLI
nmemCLI 在你的PATH中
设置
安装 nmem
# 方式一:uvx
curl -LsSf https://astral.sh/uv/install.sh | sh
uvx --from nmem-cli nmem --version
# 方式二:pip
pip install nmem-cli如果 Nowledge Mem 桌面应用已在同一台机器上运行,推荐的方式是 Settings → Preferences → Developer Tools → Install CLI。
安装插件
优先使用 marketplace 安装
如果你看到旧文档让你手动复制文件到 ~/.codex/plugins/cache/local/...,请把它当作兼容旧流程。当前推荐路径是:先添加 marketplace,再到 Codex 的 /plugins 安装插件,最后在配置里启用。
codex plugin marketplace add nowledge-co/community如果你的 Codex 还是旧版顶层子命令:
codex marketplace add nowledge-co/community打开 Codex 的 /plugins,安装 nowledge-mem@nowledge-community。
启用插件
把下面这段放进 ~/.codex/config.toml:
[features]
plugins = true
codex_hooks = true
[plugins."nowledge-mem@nowledge-community"]
enabled = true安装完成后重启 Codex。
插件里已经包含什么
当前插件包已经内置本地 Nowledge Mem MCP,地址是 http://127.0.0.1:14242/mcp/。如果你在 ~/.codex/config.toml 里自己定义 mcp_servers.nowledge-mem,Codex 会优先使用你的配置,所以远程 Mem 和自定义端口仍然是显式可控的。
开启自动线程捕获
当前稳定版 Codex 会从 ~/.codex/hooks.json 读取宿主级 hook。安装或更新插件后,运行一次插件自带的 hook setup:
HOOK_SETUP="$(find ~/.codex/plugins/cache -path '*/nowledge-mem/*/scripts/install_hooks.py' -print 2>/dev/null | sort | tail -1)"
test -n "$HOOK_SETUP" && python3 "$HOOK_SETUP"这个 hook 会在 Codex 回合结束后调用 nmem t save --from codex。它先读取本机 Codex 记录的 transcript,再通过你的 nmem 客户端配置上传。因此本地 Mem 和远程 Mem 使用同一套配置。
可选:添加项目级引导
将插件的 AGENTS.md 复制或合并到你的项目根目录,增强该仓库中的记忆行为:
git clone https://github.com/nowledge-co/community.git /tmp/nowledge-community
cp /tmp/nowledge-community/nowledge-mem-codex-plugin/AGENTS.md ./AGENTS.md
rm -rf /tmp/nowledge-community如果你的项目已经有 AGENTS.md,请把 Nowledge 部分合并进去,而不是直接覆盖。这一步能明显改善 continuation-heavy 仓库里只读 Working Memory、不继续搜索的情况。
不要修改已安装插件里的文件
把你仓库自己的 AGENTS.md 当作长期 override 层。插件包里的 AGENTS.md 只是参考文本,用来复制或合并,不要直接去改 Codex 插件安装目录里的那份。
需要远程 Mem 时配置
nmem config client set url https://mem.example.com
nmem config client set api-key nmem_your_keynmem 的连接优先级:
--api-url/--api-key参数NMEM_API_URL/NMEM_API_KEY环境变量~/.nowledge-mem/config.json- 默认值
如果 Mem 在远程机器上,也要在 ~/.codex/config.toml 中覆盖插件内置的本地 MCP 地址:
nmem config mcp show --host codex把生成的 TOML 放进 ~/.codex/config.toml。直接 MCP 客户端不会自动读取 ~/.nowledge-mem/config.json;这一步能确保 Codex MCP 和本机 nmem 客户端指向同一台 Mem 服务器。MCP 给 Codex 直接工具,nmem 继续负责插件里的兜底行为和真实 save-thread。
项目级安装(可选方案)
除了共享 marketplace 源,也可以把插件打包进项目仓库,通过本地 Codex marketplace 文件让 Codex 自动发现。这样克隆仓库的人可以直接使用。
git clone https://github.com/nowledge-co/community.git /tmp/nowledge-community
mkdir -p .agents
cp -r /tmp/nowledge-community/nowledge-mem-codex-plugin ./.agents/nowledge-mem
rm -rf /tmp/nowledge-community
mkdir -p .agents/plugins创建 .agents/plugins/marketplace.json:
{
"name": "local",
"plugins": [
{
"name": "nowledge-mem",
"source": {
"source": "local",
"path": "./.agents/nowledge-mem"
},
"policy": {
"installation": "INSTALLED_BY_DEFAULT",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}path 相对于仓库根目录,而非 marketplace 文件本身。这个本地方案需要使用:
[plugins."nowledge-mem@local"]
enabled = true然后从项目内插件运行 hook setup:
python3 ./.agents/nowledge-mem/scripts/install_hooks.py更新
如果你是在 0.1.10 之前安装的 Codex 包,只更新 marketplace 只能刷新插件文件,不一定会刷新宿主级 Stop hook。更新后请继续运行下面的 hook setup;它会替换 Codex 当前稳定版会跳过的旧 async hook。
codex plugin marketplace upgrade nowledge-community然后刷新 hook runtime:
HOOK_SETUP="$(find ~/.codex/plugins/cache -path '*/nowledge-mem/*/scripts/install_hooks.py' -print 2>/dev/null | sort | tail -1)"
test -n "$HOOK_SETUP" && python3 "$HOOK_SETUP"如果这个 marketplace 还没有注册,请运行:
codex plugin marketplace add nowledge-co/community || codex marketplace add nowledge-co/community然后重启 Codex。如果你用的是项目内 @local 源,请更新本地源路径。
技能
在 hybrid 配置里,这些技能仍然重要。它们负责告诉 Codex 什么时候该用记忆,而 MCP 负责在 Codex 决定行动时,给它一个更顺手的执行入口。
| 技能 | 触发条件 | 功能 |
|---|---|---|
$nowledge-mem:working-memory | 会话开始、”我在做什么” | 读取当天的工作记忆简报;如果有 MCP,就优先走 read_working_memory |
$nowledge-mem:search-memory | 涉及过往工作、过去的决策 | 搜索记忆和对话,支持逐层深入查看;如果有 MCP,就优先走检索工具 |
$nowledge-mem:save-thread | 用户明确要求保存,或 hook setup 不可用时 | 通过 nmem t save --from codex 导入真实 Codex 会话 |
$nowledge-mem:distill-memory | 做出决策、发现经验教训 | 主动将有价值的洞察保存为记忆;如果有 MCP,就优先走写入工具 |
$nowledge-mem:status | "Mem 能用吗"、出错时 | 检查服务器连接和配置状态 |
直接使用 nmem
nmem 仍然是通用兜底层,也是 Codex 真实线程导入的正确路径。Stop hook 自动调用的也是同一个命令:
nmem --json wm read
nmem --json m search "auth token rotation" --mode deep
nmem --json t save --from codex -p . -s "完成了 auth 重构"
nmem --json m add "JWT 刷新失败源于时钟偏移" --title "JWT 刷新失败追溯到时钟偏移" --importance 0.9 --unit-type learning -l auth -s codex默认情况下,nmem t save --from codex 会去 ~/.codex 里找会话。如果 Codex Home 在其他位置,设置 CODEX_HOME 即可。
从自定义提示词迁移
如果之前使用的是 nowledge-mem-codex-prompts,这个插件完整覆盖了原有功能:
- 安装插件(见上方步骤)。
- 删除旧提示词:
rm ~/.codex/prompts/{read_working_memory,search_memory,save_session,distill}.md - 插件技能一一对应替代旧提示词。
| 旧提示词 | 新技能 |
|---|---|
/prompts:read_working_memory | $nowledge-mem:working-memory |
/prompts:search_memory | $nowledge-mem:search-memory |
/prompts:save_session | $nowledge-mem:save-thread |
/prompts:distill | $nowledge-mem:distill-memory |
| (无) | $nowledge-mem:status |
常见问题
找不到 nmem 命令
用 pip install nmem-cli 安装,或使用 uvx --from nmem-cli nmem。参见安装指南。
无法连接服务器
运行 nmem status 和 nmem config client show 检查远程配置是否正确。参见远程访问。
技能没有出现
安装插件后需重启 Codex。确认三件事:已经添加 marketplace、已经在 /plugins 安装 nowledge-mem@nowledge-community,以及 ~/.codex/config.toml 中同时包含 [features] plugins = true 和 [plugins."nowledge-mem@nowledge-community"] enabled = true。如果你是项目内本地源方案,使用 [plugins."nowledge-mem@local"]。
Codex 线程没有自动出现
重新运行 hook setup,然后重启 Codex:
HOOK_SETUP="$(find ~/.codex/plugins/cache -path '*/nowledge-mem/*/scripts/install_hooks.py' -print 2>/dev/null | sort | tail -1)"
test -n "$HOOK_SETUP" && python3 "$HOOK_SETUP"setup 会写入 ~/.codex/hooks.json,并确保 ~/.codex/config.toml 中有 codex_hooks = true。
显示 "plugin is not installed"
先运行 codex plugin marketplace add nowledge-co/community(旧版 Codex 用 codex marketplace add nowledge-co/community),再到 /plugins 安装 nowledge-mem@nowledge-community,然后检查 ~/.codex/config.toml 里的插件 key 是否正确。
只会读取 Working Memory,不继续搜索或蒸馏
这通常说明 Codex 现在只看到了插件侧最稳定的启动动作。先确认 Codex 能看到内置的 nowledge-mem MCP 服务器,再把插件里的 AGENTS.md 合并到项目根目录。如果 Mem 在远程机器上,或本地端口不是默认值,请在 ~/.codex/config.toml 中添加 mcp_servers.nowledge-mem 来覆盖内置地址。