Skip to content

Repository files navigation

Illustrative codex-keysmith dry-run terminal preview; actual paths and output vary

Illustrative preview / 示意预览;实际路径与输出以本机 dry-run 为准。

codex-keysmith

Versioned Codex instruction deployment with preview, ownership manifests, hook isolation, and layered uninstall.

简体中文 · English · Reference · 智能体安装 / Agent install · Security · License

Blocking CI tests Source version v0.1.3 Python 3.10 to 3.14 recommended License MIT

简体中文

这是什么

codex-keysmith 是一个零依赖的单文件 Python 脚本,把一份指令 Markdown 部署到你的 Codex 配置目录(~/.codex),并让 Codex 的每个新会话都加载它。默认预览、显式确认才写入,支持随时撤销。

这会改变 Codex 的全局行为,不是项目级设置:部署会修改 ~/.codex/config.toml 里的 model_instructions_file,因此影响该配置下的所有新会话;默认还会暂停你现有的整份 hooks.json,直到你显式恢复。内置的示例提示词会让模型不再用拒绝式话术回答,把 reverse shell / keygen / bypass 一类请求当作本地样本处理,也覆盖成人题材、化学/药理/武器类内容。这不是安全边界,是一次影响很广的行为切换——用前请打开 examples/gpt-unrestricted.md 看一眼,或者用 --file 换成你自己的指令。

Warning

不要在 Windows 上使用已发布的 v0.1.0;它有已知的清理缺陷(详见「兼容性与限制」)。v0.1.1 及后续版本已提供原生恢复后端;Windows fresh deployment 仍标记为 beta。

快速开始(macOS / Linux)

# 1. 下载并校验(把 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

# 2. 先看,不要先信——确认目标目录、内置提示词来源和将要写入的内容
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

# 3. 确认无误后才写入
python3 codex-instruct-vX.Y.Z.py --codex-dir ~/.codex --yes --lang zh-CN

不要从浮动 main 安装正式版本,也不要用 curl | python 直接执行——务必先落盘、校验,再运行。部署完成后关闭旧任务、开启一个新的 Codex 会话:Codex 只在会话启动时加载配置,运行中的会话不会热更新。

省略 --codex-dir 会处理全部自动发现的 .codex 目录;只有明确需要多目录一起部署时才这样做。

它会改哪些文件

路径 会发生什么
<codex-dir>/gpt-unrestricted.md(或自定义 --name 新建,或先备份再替换
<codex-dir>/config.toml 只拥有并修改顶层 model_instructions_file;外部工具重写其他字段不会阻塞 status/uninstall,卸载会保留这些字段
<codex-dir>/hooks.json 默认整体隔离为 hooks.json.disabled(先备份)
<codex-dir>/.codex-keysmith-manifest.json 记录这次部署改了什么,供后续卸载用

完整字段、临时事务目录和边界条件见 docs/reference.md

与 CCSwitch 配置切换配合

当 CCSwitch 以 Provider 为单位保存并整体写回 Codex config.toml 时,可以让两个 Provider 副本分别保存 Keysmith 的 On / Off 配置:

  1. 先检查 CCSwitch 的 Codex 通用配置片段:其中不能包含 model_instructions_file,On / Off 两个副本也不要借助「应用通用配置」共享该字段,否则 Off 的有效 live config 仍会被合并成 On。
  2. 选择准备作为 On 的副本,再部署 Keysmith;若只想切换提示词、不想让 hooks 状态成为全局副作用,部署时使用 --skip-hooks-isolation
  3. 切到不含顶层 model_instructions_fileOff 副本,再运行 --status 验证。On 应显示 配置激活状态: active,Off 应显示 inactive-by-config;若 Off 仍是 active,先从 Provider 配置和通用配置片段中移除该字段。Off 不是损坏,但部署和卸载仍保持 blocked;先切回 On 副本再执行写操作。
  4. 卸载后在 CCSwitch 普通模式下切离刚清理的 On 副本,检查是否出现“旧供应商配置回填失败”提示,再查看该副本保存的 config,确认字段已消失;单次切换本身不能证明回填成功。

这条流程按 CCSwitch v3.18.0(ff3bc242)的普通 Provider 切换与回填行为核对。代理接管热切换在该版本也可能从目标 Provider 的有效配置重建 live config,但还叠加 restore backup、通用配置合并和代理字段覆盖,Keysmith 不把它作为稳定兼容契约。配置切换只影响新会话,也不会随之切换 hooks.json / hooks.json.disabled

撤销

# 只想拿回 hooks,不动指令/配置:
python3 codex-instruct.py --codex-dir ~/.codex --restore-hooks --lang zh-CN

# 想整体撤销这次部署(配置、指令、hooks 一起还原):
python3 codex-instruct.py --codex-dir ~/.codex --uninstall --lang zh-CN        # 先预览
python3 codex-instruct.py --codex-dir ~/.codex --uninstall --yes --lang zh-CN  # 确认卸载

卸载每次只撤销最新一层部署;部署过多次的话,重复运行逐层撤销。config 的长期所有权只覆盖顶层 model_instructions_file:CCSwitch 等工具重写其他字段时,只要该字段仍引用本层 MD,status 和卸载仍可继续;卸载只恢复/移除部署前的该字段语句并保留其余当前内容。字段缺失时,只读 status 会识别为 inactive-by-config,但 deploy/uninstall 仍会 fail closed,直到切回引用本层 MD 的配置;字段改指其他路径、存在歧义或使用扫描器不支持的语句结构仍属于冲突。

出问题了怎么办

现象 应该做的事
中途被强制中断(比如 SIGKILL、断电) --status 看是否报告 blocked;有的话用 --recover 预览,确认无误再加 --yes
--status 报告异常残留 不要手工删除任何 .codex-keysmith-transaction-*、备份或 manifest;按上面 --recover 流程处理,或参考 docs/hooks-transactions.md
想彻底清掉旧备份 docs/reference.md 里的清理前置条件,工具本身不自动删备份

兼容性与限制

  • 推荐 Python 3.10–3.14;已验证 Codex CLI codex-cli 0.144.1
  • macOS / Linux 是主要支持范围。
  • Windows:已发布的 v0.1.0 存在已知缺陷(os.utime 失败后触发第二个 PermissionError,会留下无法用旧脚本恢复的 journal)。v0.1.1 及后续版本已重写 Windows 文件系统后端并标记 EXPLICIT_BETA,可以试用,但还不是正式支持;如果 v0.1.0 留下了 journal,用最新已校验 Release 脚本按 --status--recover 预览 → --recover --yes--status 的顺序恢复,不要手工删除任何证据。
  • 单文件 CLI,没有 pip install 或自动更新;备份和卸载归档不会自动清理。
  • 完整限制清单、事务保证、维护者验证步骤见 docs/reference.md

参与贡献与安全报告

提交前阅读 CONTRIBUTING.md。漏洞通过 SECURITY.md 指定的 GitHub 私密渠道报告;不要在公开 Issue 中粘贴凭证、完整配置或私人路径。

友链 / Community

本项目接受 LINUX DO 社区佬友监督与反馈:LINUX DO

同系列项目 / Same series:

  • codex-keysmith - Codex CLI instruction-file deployment for local configuration.
  • claude-keysmith - Claude Code CLAUDE.md import-block installer for local instruction files.
  • grok-keysmith - Grok Build AGENTS.md installer with compat/hook isolation.
  • zcode-keysmith - ZCode AGENTS.md installer for local instructions.

English version: README.en.md。智能体安装提示词见 docs/agent-install.md

About

Version-independent Codex instruction deployment with dry-run, backups, hook isolation, and recovery.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages