Jia-Ethan/codex-keysmith · 上手攻略
- 仓库:Jia-Ethan/codex-keysmith
- 链接:https://github.com/Jia-Ethan/codex-keysmith
- 分类:工具 · Codex 配置管理
- 作者:Tom
- 更新:2026-08-09
这是什么
codex-keysmith 是一个零依赖的单文件 Python 脚本,把一份指令 Markdown 部署到 Codex CLI 的配置目录(~/.codex),让 Codex 的每个新会话自动加载这份指令。内置 dry-run 预览、SHA256 校验、manifest 追踪和逐层卸载,同时默认将已有的 hooks.json 隔离为 hooks.json.disabled,防止全局行为被意外覆盖。
解决什么问题:当你需要让 Codex 每次启动都默认加载自定义指令(比如"不要拒绝请求""用中文回答"),但又担心误改全局配置或无法还原。Keysmith 通过事务化的部署流程(预览 → 确认 → 写入 → manifest 记录)让这个过程完全可逆。
快速安装
环境要求:Python 3.10–3.14,macOS / Linux(Windows 支持尚在 beta)。
第一步:下载并校验(将 vX.Y.Z 替换为 Releases 页面 最新 tag):
base='https://github.com/Jia-Ethan/codex-keysmith/releases/download/vX.Y.Z'
curl --fail --location --remote-name "$base/codex-instruct-vX.Y.Z.py"
curl --fail --location --remote-name "$base/SHA256SUMS"
shasum -a 256 -c SHA256SUMS
⚠️ 不要用 curl | python 直接管道执行,也不要从浮动的 main 分支安装。务必先落盘再校验。
第二步:预览部署效果(不写入任何文件):
python3 codex-instruct-vX.Y.Z.py --version
python3 codex-instruct-vX.Y.Z.py --codex-dir ~/.codex --status --lang zh-CN
python3 codex-instruct-vX.Y.Z.py --codex-dir ~/.codex --dry-run --lang zh-CN
第三步:确认无误后写入:
python3 codex-instruct-vX.Y.Z.py --codex-dir ~/.codex --yes --lang zh-CN
部署完成后关闭当前 Codex 会话、新开一个,Codex 仅在会话启动时加载配置。
核心用法
部署自定义指令文件
# 用内置的 gpt-unrestricted.md(默认)
python3 codex-instruct.py --codex-dir ~/.codex --yes --lang zh-CN
# 用自己的指令文件
python3 codex-instruct.py --file ./my-prompt.md --name my-rules \
--codex-dir ~/.codex --dry-run --lang zh-CN
# 确认后把 --dry-run 换成 --yes
--name 仅接受 ASCII 字母、数字、点、下划线和连字符,不能是路径或空名。
查看部署状态
python3 codex-instruct.py --codex-dir ~/.codex --status --lang zh-CN
输出包括:config.toml 路径、受管 MD 文件路径、hooks 隔离状态、manifest 健康度、卸载就绪度。
卸载(逐层撤销)
# 预览
python3 codex-instruct.py --codex-dir ~/.codex --uninstall --lang zh-CN
# 确认
python3 codex-instruct.py --codex-dir ~/.codex --uninstall --yes --lang zh-CN
卸载只撤销最新一层部署;部署多次则重复运行逐层撤销。
单独恢复 hooks(不碰指令和配置)
python3 codex-instruct.py --codex-dir ~/.codex --restore-hooks --lang zh-CN
中断恢复
如果部署/卸载被 SIGKILL 或断电中断,--status 会报告 blocked,用 --recover 恢复:
python3 codex-instruct.py --codex-dir ~/.codex --recover --lang zh-CN # 预览
python3 codex-instruct.py --codex-dir ~/.codex --recover --yes --lang zh-CN # 确认
与 CCSwitch 配合(Provider 级别 On/Off)
如果使用 CCSwitch(多 Provider 管理器),可以让两个副本分别保存 Keysmith 的 On / Off 配置:
# 1. 确保 CCSwitch 的通用配置片段不包含 model_instructions_file
# 2. 选择准备作为 On 的副本,部署 Keysmith(可用 --skip-hooks-isolation 只切换指令)
# 3. 切到 Off 副本,--status 验证:On → active,Off → inactive-by-config
# 4. 卸载后切换回 On 副本确认字段消失
典型适用场景
- 深度定制 Codex 行为:希望所有新会话默认使用特定角色提示词、禁用拒绝话术、或覆盖敏感内容处理逻辑。
- 团队共享指令规范:用
--file指向一份团队共创的指令文件,一键部署到所有成员的 Codex。 - 安全地试验 prompt:先用
--dry-run看清写入内容,确认无误才真正部署,随时--uninstall撤销。 - 与 CCSwitch 多 Provider 工作流结合:用 On/Off 两个副本控制指令加载,切换 Provider 时同步切换行为。
坑与注意
-
这不是安全边界:内置的
gpt-unrestricted.md覆盖了 reverse shell / keygen / 武器化内容等的拒绝逻辑,是一次影响很广的行为切换——用前务必先读examples/gpt-unrestricted.md。 -
Windows 支持仍在 beta:已发布的 v0.1.0 有已知清理缺陷;v0.1.1 及后续版本重写了 Windows 文件系统后端,但还不是正式支持。
-
无自动更新:需要手动从 Release 下载新版本并重新部署,旧脚本和资产不会被覆盖式替换。
-
单文件 CLI,没有 pip install:不通过包管理器管理,备份和卸载归档不会自动清理。
-
仅影响新会话:部署后需关闭旧会话、新开一个才能生效;运行中的会话不会热更新。
-
hooks 隔离是全局的:默认 hooks.json 隔离不跟随 Provider 配置切换,需要纯指令 On/Off 时在部署时加
--skip-hooks-isolation。 -
事务残留不要手工删除:如果遇到
.codex-keysmith-transaction-*残留,用--status检出后按--recover流程处理,不要手动删文件。
与同类对比
| 工具 | 类型 | 核心功能 | 优势 | 局限 |
|---|---|---|---|---|
| codex-keysmith | 单文件脚本 | 全局指令部署 + hooks 隔离 + 逐层卸载 | 零依赖、事务化、dry-run、manifest 可审计 | 仅支持 Codex CLI,Windows 仍在 beta |
| OpenClaw Skills | 配置系统 | 指令 + 工具 + 记忆 | 多实例管理、权限隔离、群组共享 | 复杂度更高,学习曲线陡 |
Claude Code --resume |
启动参数 | 加载 CLAUDE.md | 无需额外工具 | 仅在启动时生效,无法管理全局行为 |
| 手动编辑 config.toml | 手工操作 | 直接改配置 | 无额外依赖 | 无 dry-run、无备份、无卸载机制 |
一句话推荐结论
如果你重度使用 Codex CLI、需要全局指令管理、且希望有可审计的部署/卸载记录,codex-keysmith 是目前最轻量且最安全的方案——零依赖、单文件、事务化,动手前先 --dry-run 永远是对的。