Codex CLI
让你的 Codex 智能体记住过往决策、查找相关上下文,并从每次会话中积累经验,跨工具延续记忆。
给你的智能体
把这行交给你的智能体。它应该先读取当前指南,再改配置或运行命令:
读取 https://mem.nowledge.co/docs/integrations/codex-cli.mdx,然后帮我为 Codex CLI 安装或更新 Nowledge Mem。优先使用指南中的推荐路径,按成功检查验证结果,并总结你改了什么。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
hooks = true
plugin_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 依靠 hook 自动捕获线程。hooks = true 会开启生命周期 hook,plugin_hooks = true 会允许 Codex 读取插件包内置的 hook。安装或更新插件后,运行一次插件自带的 hook setup:
HOOK_SETUP="$(find ~/.codex/plugins/cache -path '*/nowledge-mem/*/scripts/install_hooks.py' -print 2>/dev/null | sort | tail -1)"
if [ -z "$HOOK_SETUP" ]; then
echo "没有找到 hook setup。请打开 Codex,运行 /plugins,安装 nowledge-mem@nowledge-community,然后重试。"
else
python3 "$HOOK_SETUP"
fi这个 Stop hook 会在 Codex 回合结束后调用 nmem t save --from codex。它先读取本机 Codex 记录的 transcript,再通过你的 nmem 客户端配置上传。因此本地 Mem 和远程 Mem 使用同一套配置。MCP 对检索和写入记忆很有用,但自动捕获 Codex 线程不依赖 MCP。如果 Codex 同时看到插件内置 hook 和宿主级兜底 hook,同一份 transcript 状态只会保存一次。
同一个 setup 也会检查你的 nmem 客户端配置。如果 nmem 里已经保存了 API key,或你使用的不是默认本地地址,setup 会在 ~/.codex/config.toml 里写入一段托管的 Codex MCP 配置,让 Codex 和 CLI 指向同一个 Mem。
在 Windows PowerShell 中,用 Python launcher 运行同一个已安装 setup 脚本:
$HookSetup = Get-ChildItem "$env:USERPROFILE\.codex\plugins\cache" -Recurse -Filter install_hooks.py |
Where-Object { $_.FullName -like "*nowledge-mem*" } |
Sort-Object FullName |
Select-Object -Last 1
if ($null -eq $HookSetup) {
Write-Host "没有找到 hook setup。请打开 Codex,运行 /plugins,安装 nowledge-mem@nowledge-community,然后重试。"
} else {
py -3 $HookSetup.FullName
}可选:添加项目级引导
将插件的 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。如果你安装的插件版本是 0.1.11 或更新,也可以直接重新运行上面的 hook setup。直接 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.13 之前安装的 Codex 包,请先刷新 marketplace。当前 Codex 有时只会刷新 marketplace checkout,不会重新安装已经缓存的插件包;在你从 /plugins 更新插件包之前,hook setup 文件或插件内置 hook 的变化仍可能不存在。
codex plugin marketplace upgrade nowledge-community打开 Codex,运行 /plugins,更新或重新安装 nowledge-mem@nowledge-community,然后重启 Codex。
插件包本身更新完成后,再刷新 hook runtime:
HOOK_SETUP="$(find ~/.codex/plugins/cache -path '*/nowledge-mem/*/scripts/install_hooks.py' -print 2>/dev/null | sort | tail -1)"
if [ -z "$HOOK_SETUP" ]; then
echo "hook setup 仍然不存在。请从 Codex /plugins 重新安装 nowledge-mem@nowledge-community,然后重试。"
else
python3 "$HOOK_SETUP"
fi如果这个 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 能用吗"、出错时 | 检查服务器连接和配置状态 |
Codex 使用 Nowledge FS
Nowledge FS 是知识树背后的共享路径层,不是 Codex 专属功能。Codex 可以通过同一个 MCP 服务器使用 mem_fs,在记忆、线程、Wiki、工作记忆、动态、来源和产物之间按路径浏览。
mem_fs: recall "为什么改了 token refresh?" --in /memories -k 5
mem_fs: cat /memories/by-id/<id>.memory.md
mem_fs: ls /memories/by-label/auth如果当前环境没有 MCP,可以直接用 CLI:
nmem fs recall "session token strategy" --in /memories -k 5
nmem fs grep "JWT rotation" /memories
nmem fs cat /memories/by-id/<id>.memory.md模糊问题用 recall,结构化条件用 find,精确短语用 grep;读取大内容前先用 stat 看元数据,确定路径后再 cat。这个预览版走 API,可用于桌面端、Web 端和远程连接;真正挂载成系统文件夹会在后续阶段实现。
直接使用 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、hooks = true、plugin_hooks = 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/config.toml 中开启两个 hook 开关,并为仍需要 ~/.codex/hooks.json 的 Codex 版本保留宿主级兜底 hook。如果 Codex 里能打开 /hooks,确认 Nowledge Mem 的 Stop hook 处于启用状态。
codex mcp list 显示 Not logged in
先更新 nmem,确保它和你的 Mem app/server 版本一致。如果你使用本机桌面版 Mem,请在桌面端重新安装 CLI 配置,然后重新运行 hook setup:
pip install -U nmem-cli
nmem status
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"不要运行 codex mcp login nowledge-mem。这个命令是给 OAuth MCP 服务器用的。Nowledge Mem 的 Codex 路径使用 nmem config mcp show --host codex 生成的 URL 和 headers。
显示 "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 来覆盖内置地址。