﻿---
title: "安装 context-mode 插件"
summary: "从 mksglu/context-mode 安装插件，开启 hooks 和 plugin_hooks，并审查插件钩子权限。"
category: skills
level: starter
surfaces: [cli, app]
tags: ["plugins", "hooks", "MCP", "context-mode"]
canonical: /tips/context-mode-codex-plugin/
---

# 安装 context-mode 插件

从 mksglu/context-mode 安装插件，开启 hooks 和 plugin_hooks，并审查插件钩子权限。

context-mode 用 marketplace 加 mksglu/context-mode，再在 /plugins 安装。这是仓库 README 的 Codex CLI 专节，不是 Claude 的 `/plugin marketplace add`，也不是旧文里的 `codex plugin install context-mode/context-mode`。

先确认本机有 Node.js 22.5 或更高（或 Bun），并且 **启动 Codex 的那个进程** 能在 PATH 里找到 `node`。插件不会自带 Node，也不会自动继承 login shell 的 PATH。

```bash
codex plugin marketplace add mksglu/context-mode
codex plugin list --json
```

清单 `.agents/plugins/marketplace.json` 的 name 是 `context-mode`，插件 name 也是 `context-mode`。README 现行主路径是加完 marketplace 后在 TUI `/plugins` 或桌面 Plugins 里安装。CLI 等价（动词是 `add` 不是 `install`）是：

```bash
codex plugin add context-mode@context-mode
```

IDE 扩展没有 `/plugins`，装插件用 CLI 或桌面应用。

捆绑插件钩子在现行 Codex 里仍可能被门控。README 要你在 `~/.codex/config.toml` 写：

```toml
[features]
plugin_hooks = true
hooks = true
```

优先 `[features].hooks`（或 `codex --enable hooks`）。`[features].codex_hooks` 只是现行构建里的遗留别名。`plugin_hooks` 是给**插件自带钩子**用的，直到 Codex 默认放行插件钩子；不要把 ECC / Nowledge Mem 那句「不要手写 plugin_hooks」套到这份插件上。

默认存储写失败时，给启动 Codex 的环境设绝对可写根：

```bash
CONTEXT_MODE_DIR="$HOME/.codex-context-mode" codex
```

会话和统计在 `CONTEXT_MODE_DIR/sessions`，索引内容在 `CONTEXT_MODE_DIR/content`。不要用相对路径。

重启 Codex。用会话里的 `ctx stats` 验证 MCP 通了；这句话**不能**证明钩子已信任。打开 `/hooks`，只审并信任 context-mode 那组命令，不要「信任全部钩子」。哈希变了要再审一次。

插件清单用 `.codex-plugin/mcp.json` 起 stdio MCP（`CONTEXT_MODE_PLATFORM=codex`），技能在 `./skills/`，钩子在 `.codex-plugin/hooks.json`。`plugin_hooks` 打开且钩子已信任时，**不要**再手写 `[mcp_servers.context-mode]`，也不要再写 `$CODEX_HOME/hooks.json`。不要 `codex mcp login context-mode`，该服务不是 OAuth 远程。

只有构建还没有 `plugin_hooks` 时才走后备：`npm install -g context-mode`，再手写 `[mcp_servers.context-mode]`（`command = "context-mode"`，环境 `CONTEXT_MODE_PLATFORM = "codex"`）和 `$CODEX_HOME/hooks.json`。那是后备，不是现行主路径。可选把 `configs/codex/AGENTS.md` 拷到项目 `AGENTS.md` 或 `~/.codex/AGENTS.md` 给模型看路由说明。

Codex PreToolUse 目前只支持 deny / 拦截，还不能靠 `updatedInput` 改写工具入参（跟 openai/codex#18491）。`additionalContext` 也不走 PreToolUse，插件改走 PostToolUse / SessionStart。`PreCompact` 在 CLI 0.130.0 起有运行时门控；更旧的构建不会在压缩前做快照。

配置说明：

- 不要一上来信任全部钩子，也不要 `--yolo`。
- 不要 `required = true` 挂全局。

网页 Cloud 不读本机插件缓存，也不读 `~/.codex/config.toml`。0.154 起先看当前会话的 `/plugins` 和 `/mcp`；当前会话没有再新开。用 `codex plugin list` 确认 `context-mode@context-mode` 已装。

## 来源

- [mksglu/context-mode](https://github.com/mksglu/context-mode)
- [npm · context-mode](https://www.npmjs.com/package/context-mode)
- [context-mode · marketplace.json](https://github.com/mksglu/context-mode/blob/main/.agents/plugins/marketplace.json)
