1,124· 191 forks· Python· MIT开发工具

Codex CLI 指令部署工具:全局提示词管理与回滚

Jia-Ethan/codex-keysmith

为 Codex CLI 提供版本化指令部署、预演、备份与分层卸载的 Python 单文件工具,支持中断恢复和 hooks 隔离

成熟度维护活跃,3天前最新提交,open issues 1个,新项目处于早期阶段

项目体检

技术 · Python 单文件脚本,标准库实现,支持 Python 3.10-3.14

许可 · MIT 协议,可自由商用、修改与分发

活跃 · 3天前最新提交,1个贡献者,v0.1.0 发布于2026年7月,新项目活跃开发中

解决什么

Codex CLI 的全局指令配置分散在 config.tomlmodel_instructions_file 字段中,手动修改容易出错且难以回滚。codex-keysmith 提供版本化的指令部署流程:预演(dry-run)展示即将修改的文件、备份原配置、写入新指令 Markdown、隔离现有 hooks 防止冲突,并生成带指纹的部署清单支持分层卸载。工具还实现了持久化事务日志,即使 SIGKILL 中断也能通过 --recover 检查和恢复到一致状态,避免配置损坏导致 Codex 无法启动。

为何火

该项目在 GitHub 上获得 1124 stars,主要因为填补了 Codex CLI 生态的配置管理空白。Codex 的指令文件是全局生效的顶层配置,影响所有新会话,但官方未提供版本控制或回滚机制。codex-keysmith 用单文件 Python 脚本(零运行时依赖)实现了类似包管理器的部署流程,并内置了一个移除模型拒绝机制的提示词示例(gpt-unrestricted.md),吸引了需要突破默认限制的开发者。项目强调"先预览再确认"的安全流程,以及通过 SHA-256 校验防止供应链篡改,在安全敏感场景中获得认可。

核心功能

  1. 版本化部署: 将 Markdown 指令文件部署到 Codex 配置目录,自动更新 config.toml 中的 model_instructions_file 路径
  2. 预演模式: --dry-run 显示将修改的文件、备份路径、hooks 隔离计划和内置提示词的 SHA-256,无需 --yes 即可安全检查
  3. hooks 隔离: 默认将活跃的 hooks.json 重命名为 .hooks.json.codex-keysmith-disabled,避免与全局指令冲突,可通过 --skip-hooks-isolation 跳过
  4. 分层卸载: 生成 .codex-keysmith-manifest.json 记录部署的文件和配置变更,卸载时只移除工具管理的资源,保留用户手动添加的内容
  5. 中断恢复: 首次修改前创建持久化事务日志,中断后通过 --recover 检查并恢复到部署前或部署后的一致状态
  6. 内置提示词: v0.1.0 嵌入 gpt-unrestricted.md(SHA-256: 0ac8420d...),指示模型避免拒绝式回复、重解释安全请求为本地样本、覆盖成人题材等,也可通过 --file 部署自定义指令

安装

固定版本安装(推荐):

# 下载 v0.1.0 Release 资产
base='https://github.com/Jia-Ethan/codex-keysmith/releases/download/v0.1.0'
curl -LO "$base/codex-instruct-v0.1.0.py"
curl -LO "$base/SHA256SUMS"

# 校验完整性
shasum -a 256 -c SHA256SUMS  # macOS/Linux
# 或 sha256sum --check SHA256SUMS  # Linux

# 验证安装
python3 codex-instruct-v0.1.0.py --version

首次部署:

# 检查当前状态
python3 codex-instruct-v0.1.0.py --codex-dir ~/.codex --status --lang zh-CN

# 预演部署计划
python3 codex-instruct-v0.1.0.py --codex-dir ~/.codex --dry-run --lang zh-CN

# 确认后执行(需显式 --yes)
python3 codex-instruct-v0.1.0.py --codex-dir ~/.codex --yes --lang zh-CN

部署后需关闭旧 Codex 会话并启动新会话,配置才会生效。卸载用 --uninstall --yes,中断恢复用 --recover --yes

适合谁

  1. Codex 重度用户: 需要定制全局模型行为(如移除安全护栏、添加领域知识、统一代码风格),且希望配置可版本控制和回滚
  2. 安全研究者: 在隔离环境中测试模型的边界行为,内置的 gpt-unrestricted.md 提供了绕过拒绝机制的起点
  3. 团队协作场景: 通过 Git 管理自定义指令文件,用 codex-keysmith 在团队成员机器上一致部署
  4. 配置洁癖者: 不想手动编辑 TOML 或担心误删配置,需要工具保证原子性操作和自动备份

不适合: 只用 Codex 默认配置的普通用户;需要项目级(而非全局)指令隔离的场景(工具修改的是顶层配置,影响所有会话)。

社区评价

暂无足量社区公开讨论,以下为基于项目本身的中立评估:

项目在一个月内获得 1124 stars 和 191 forks,增长速度较快,表明 Codex 用户对配置管理工具有明确需求。代码库包含完整的测试套件(pytest + coverage ≥80%)、CI 工作流和详尽的事务文档(docs/transactions/),工程质量较高。README 用大量警告框强调全局行为边界和内置提示词的影响范围,显示作者对安全责任的重视。

潜在争议点在于内置提示词的激进设定:移除拒绝机制、重解释安全请求、覆盖成人内容等,这在生产环境或共享设备上可能引发合规风险。项目通过强制预览 + SHA-256 校验 + 显式 --yes 的三层确认流程缓解风险,但用户仍需自行评估法律和伦理边界。另一个限制是 Windows 支持标记为 experimental,CI 中 Windows 矩阵为非阻断观察项,跨平台可靠性有待验证。

选型对比

vs 手动编辑 config.toml:

  • codex-keysmith 优势: 原子性操作、自动备份、中断恢复、分层卸载、SHA-256 校验
  • 手动编辑优势: 无需额外工具,适合一次性修改
  • 取舍: 频繁切换指令或团队协作场景选 codex-keysmith,偶尔调整选手动

vs Git 直接管理 .codex 目录:

  • codex-keysmith 优势: 不污染 Git 历史(备份在 .bak 目录),支持 hooks 隔离和事务恢复
  • Git 优势: 通用版本控制,可管理更多配置文件
  • 取舍: 只管理指令文件选 codex-keysmith,需管理整个配置目录选 Git

vs 同系列工具(claude-keysmith/zcode-keysmith):

  • 功能类似,分别针对 Claude Code 的 CLAUDE.md 和 ZCode 的 AGENTS.md
  • codex-keysmith 特有: hooks 隔离机制(Codex 的 hooks.json 可能与全局指令冲突)
  • 选型依据: 根据使用的 AI 编程助手选择对应工具

已知坑

  1. 全局生效非沙箱: 部署的指令影响所有新 Codex 会话,不是项目级隔离。多项目场景需频繁切换指令或用 --uninstall 恢复默认
  2. hooks 默认被禁用: 部署时会重命名 hooks.json.hooks.json.codex-keysmith-disabled,需手动恢复或用 --skip-hooks-isolation 跳过。恢复 hooks 需确保其与全局指令不冲突
  3. Windows 支持未稳定: v0.1.0 标记为 experimental,原子重命名在某些 Windows 文件系统上可能失败,生产环境建议先在测试机验证
  4. 内置提示词的合规风险: gpt-unrestricted.md 移除安全护栏,可能违反企业政策或当地法规。部署前务必审阅 examples/gpt-unrestricted.md 或用 --file 指定自己的指令
  5. Python 3.8 已 EOL: 虽保留兼容性测试,但不建议作为生产运行时,推荐 Python 3.10+
  6. 需手动重启会话: Codex 在会话启动时加载配置,部署后必须关闭旧会话才能生效,自动化场景需额外处理

中国用户特别注意: 工具本身是本地 Python 脚本无需网络,但 Codex CLI 调用 OpenAI 模型需解决网络访问问题(代理或 API 中转)。内置提示词包含敏感内容重解释逻辑,在受监管环境使用前需评估合规性。

安装方式:直接下载 Python 脚本