feat: codex config installer with rollback

This commit is contained in:
tukuaiai
2026-05-12 20:09:01 +08:00
parent 51ab7a3e10
commit 32955fcea2
11 changed files with 407 additions and 233 deletions
+4 -1
View File
@@ -34,6 +34,7 @@
<a href="#dao-fa-shu-qi"><img src="https://img.shields.io/badge/☯️_道法术器-底层框架-purple?style=for-the-badge" alt="道法术器"></a>
<a href="./docs/getting-started/README.md#learning-map"><img src="https://img.shields.io/badge/🚀_从零开始-完整入门-red?style=for-the-badge" alt="从零开始完整入门"></a>
<a href="./docs/getting-started/README.md#vibe-coding-experience"><img src="https://img.shields.io/badge/🧠_Vibe_Coding-经验必读-crimson?style=for-the-badge" alt="Vibe Coding 经验"></a>
<a href="./tools/config/.codex/README.md"><img src="https://img.shields.io/badge/⚙️_Codex配置-一键安装-blue?style=for-the-badge" alt="Codex 配置一键安装"></a>
<a href="./docs/concepts/README.md#concept-problem-solving"><img src="https://img.shields.io/badge/🧩_问题求解-必读-purple?style=for-the-badge" alt="问题求解"></a>
<a href="./docs/philosophy/README.md#philosophy-thinking-models"><img src="https://img.shields.io/badge/🧭_思维模型-认知工具-purple?style=for-the-badge" alt="思维模型"></a>
<a href="./docs/philosophy/README.md#philosophy-methodology-toolbox"><img src="https://img.shields.io/badge/🔮_哲学方法论-底层协议-purple?style=for-the-badge" alt="哲学与方法论"></a>
@@ -251,7 +252,7 @@ pip install -r tools/prompts-library/scripts/requirements.txt
- Markdown lint 配置:`.github/lint_config.json`
- Markdown lint 版本:`Makefile` 中固定为 `markdownlint-cli@0.48.0`
- CI 配置:`.github/workflows/ci.yml`,在 `develop` / `master` 分支的 push / pull_request 上运行 markdown-lint、本地链接检查、docs 结构检查与 link-checker
- Codex 配置基线:`tools/config/.codex/config.toml`
- Codex 配置基线:`tools/config/.codex/README.md`,支持一键安装、自动备份和恢复。
- Submodule 来源:`.gitmodules`
### 部署
@@ -420,6 +421,7 @@ pip install -r tools/prompts-library/scripts/requirements.txt
#### AI CLI 与模型服务
* [**Codex CLI**](docs/getting-started/README.md#cli-setup): 本教程默认 AI CLI 路线,用于需求拆解、代码修改、命令执行、测试验证与 Git 迭代。
* [**Codex CLI 配置基线**](tools/config/.codex/README.md): 可通过一条命令安装到 `~/.codex/`,安装前自动备份,支持恢复。
* [**Claude Opus 4.7**](https://claude.ai/new): 性能强大的 AI 模型,通过 Claude Code 等平台提供服务,并支持 CLI 和 IDE 插件。
* [**gpt-5.5 (xhigh)**](https://chatgpt.com/codex/): 适用于处理大型项目和复杂逻辑的 AI 模型,可通过 Codex CLI 等平台使用。
* [**Droid**](https://factory.ai/news/terminal-bench): 提供对 Claude Opus 4.7 等多种模型的 CLI 访问。
@@ -494,6 +496,7 @@ pip install -r tools/prompts-library/scripts/requirements.txt
* [**从零开始完整入门**](docs/getting-started/README.md#learning-map): 新手从网络环境、CLI 配置、开发环境和 Git 闭环开始。
* [**Vibe Coding 经验**](docs/getting-started/README.md#vibe-coding-experience): 通用语言能力、人机分工、机器门禁和入门铁律。
* [**CLI 配置**](docs/getting-started/README.md#cli-setup): Codex CLI 默认路线与 OpenCode 备选路线。
* [**Codex 配置一键安装**](tools/config/.codex/README.md): 安全默认配置、高权限配置、自动备份和一键恢复。
* [**开发流程**](docs/workflow/README.md#workflow-development-process): 默认任务推进顺序、质量门禁、版本控制和交付闭环。
* [**问题求解**](docs/concepts/README.md#concept-problem-solving): 用目标、现状、差距、标准、约束、对象和路径定义问题。
* [**拼好码(胶水编程的超集)**](docs/concepts/README.md#concept-glue-coding): 复用成熟能力,用胶水代码连接、编排、适配业务流程。
+2 -1
View File
@@ -47,6 +47,7 @@ GEOFlow 的关键启发是:GEO 不是关键词堆砌,而是内容工程链
- docs/getting-started/README.md#learning-map:新手、开发者、团队、Prompt、Skill、质量门禁和 GEO/SEO 的路线选择。
- docs/getting-started/README.md#network-environmentOpenAI、GitHub、文档和依赖源访问配置。
- docs/getting-started/README.md#cli-setupCodex CLI 默认路线与 OpenCode 备选路线。
- tools/config/.codex/README.mdCodex CLI 全局配置基线,支持一键安装、自动备份和恢复。
- docs/getting-started/README.md#development-environment:让 Agent 主动配置开发依赖、编辑器建议和测试命令。
- docs/concepts/README.md:核心概念索引,汇总问题求解、拼好码、系统构建方法、开发范式演进、语言层要素和递归自优化系统。
- docs/concepts/README.md#concept-problem-solving:问题定义、目标、约束、对象、路径。
@@ -79,7 +80,7 @@ GEOFlow 的关键启发是:GEO 不是关键词堆砌,而是内容工程链
当用户不知道从哪里开始时,优先推荐 `docs/README.md`。更具体的路由如下:
- 新手入门:读取 `docs/getting-started/README.md#vibe-coding-experience`、`docs/getting-started/README.md#learning-map`、`docs/getting-started/README.md#cli-setup`,再读 `docs/concepts/README.md#concept-problem-solving`、`docs/concepts/README.md#concept-glue-coding` 和 `docs/references/README.md#reference-engineering-practice`。
- 新手入门:读取 `docs/getting-started/README.md#vibe-coding-experience`、`docs/getting-started/README.md#learning-map`、`docs/getting-started/README.md#cli-setup`、`tools/config/.codex/README.md`,再读 `docs/concepts/README.md#concept-problem-solving`、`docs/concepts/README.md#concept-glue-coding` 和 `docs/references/README.md#reference-engineering-practice`。
- 工程开发:读取 `docs/concepts/README.md#concept-glue-coding`、`docs/concepts/README.md#concept-system-building`、`docs/references/README.md#reference-technology-stack` 和 `docs/references/README.md#reference-engineering-practice`。
- 思维模型:读取 `README.md#dao-fa-shu-qi`、`docs/philosophy/README.md#philosophy-thinking-models`、`docs/philosophy/README.md#philosophy-compositional-description-model`、`docs/philosophy/README.md#philosophy-programming-dao`、`docs/philosophy/README.md#philosophy-software-engineering-truths` 和 `docs/philosophy/README.md#philosophy-methodology-toolbox`。
- 新技术判断:读取 `docs/research/README.md`,再读具体研究笔记,例如 `docs/research/README.md#research-harness-engineering`。
+25 -6
View File
@@ -540,7 +540,7 @@ ____
-> npm 安装 Codex CLI
-> codex --version 验证
-> codex login 浏览器登录
-> 复制本仓库 Codex 配置基线
-> 安全安装本仓库 Codex 配置基线
-> 进入项目运行 codex
```
@@ -719,17 +719,36 @@ $env:OPENAI_API_KEY | codex login --with-api-key
### 使用仓库配置基线
本仓库已经提供 CLI 配置基线:
本仓库已经提供可回滚的 Codex CLI 配置基线:
- `tools/config/.codex/config.toml`
- `tools/config/.codex/config.power.toml`
- `tools/config/.codex/AGENTS.safe.md`
- `tools/config/.codex/AGENTS.md`
- `tools/config/.codex/install.sh`
在仓库根目录执行
推荐使用安全默认版。脚本会先备份你已有的 `~/.codex/config.toml``~/.codex/AGENTS.md`,再安装新配置
```bash
mkdir -p ~/.codex
cp -f tools/config/.codex/config.toml ~/.codex/config.toml
cp -f tools/config/.codex/AGENTS.md ~/.codex/AGENTS.md
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash
```
如果已经 clone 本仓库,也可以在仓库根目录执行:
```bash
bash tools/config/.codex/install.sh
```
需要完全可信本地环境下的高权限配置时,显式安装 `power` profile
```bash
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash -s -- --profile power
```
恢复最近一次安装前的配置:
```bash
bash ~/.codex/backups/vibe-coding-cn/LATEST/restore.sh
```
详细说明见:[Codex 配置基线](../../tools/config/.codex/README.md)。
+1
View File
@@ -26,6 +26,7 @@ vibe-coding-cn 是一个中文 Vibe Coding / AI 结对编程系统教程,帮
- docs/getting-started/README.md#learning-map
- docs/getting-started/README.md#network-environment
- docs/getting-started/README.md#cli-setup
- tools/config/.codex/README.md
- docs/getting-started/README.md#development-environment
- docs/concepts/README.md#concept-problem-solving
- docs/concepts/README.md#concept-glue-coding
+24
View File
@@ -0,0 +1,24 @@
# Codex 全局安全默认指令
你是用户本地 Codex Agent。默认以安全、可验证、可回滚的方式协助用户完成软件工程任务。
## 工作原则
- 先读当前目录与任务上下文,再修改文件。
- 优先复用成熟方案、官方能力、稳定工具和项目既有模式。
- 不硬编码密钥、Token、Cookie、私钥或个人敏感信息。
- 不执行不可逆或破坏性操作,除非用户明确要求并已经说明风险。
- 修改前尽量缩小影响范围,修改后给出验证命令和结果。
- 涉及 Git 时,先查看 `git status --short --branch`,避免混入无关改动。
## 质量门禁
- 能用测试、lint、类型、schema、脚本或 CI 验证的规则,不只写在提示词里。
- 不把“看起来对”当成完成;优先给出可复现命令、diff、测试输出和剩余风险。
- 遇到不确定事实时,明确说明不确定性和查证路径。
## 输出风格
- 默认使用中文。
- 简洁直接,先给结论,再给关键证据和下一步。
- 对人看的文档、注释和说明使用中文;代码符号保持英文且语义清楚。
+84 -27
View File
@@ -1,49 +1,106 @@
# `tools/config/.codex/` 用法说明
# Codex CLI 配置基线
本目录用于在仓库内版本化管理 Codex CLI 的“全局配置基线”,便于多人同步、审阅与回滚
本目录 Codex CLI 全局配置做成可审阅、可安装、可回滚的公开基线
你只需要把本目录里的两个文件复制到 **Codex Home**(默认 `~/.codex/`)即可生效:
## 字多不看
- `tools/config/.codex/config.toml``~/.codex/config.toml`
- `tools/config/.codex/AGENTS.md``~/.codex/AGENTS.md`
- 默认安装 `safe` 配置:不写入本机路径,不启用 `danger-full-access`,不设置 `approval_policy = "never"`
- 需要全自动高权限体验时,显式安装 `power` 配置。
- 安装前会备份用户现有 `~/.codex/config.toml``~/.codex/AGENTS.md`
- 每次安装都会生成恢复脚本,误覆盖后可以一键恢复。
- 支持通过 `CODEX_HOME` 指定 Codex Home。
## 1. 一键安装(推荐)
## 一键安装
在仓库根目录执行
安全默认版
```bash
mkdir -p ~/.codex
cp -f tools/config/.codex/config.toml ~/.codex/config.toml
cp -f tools/config/.codex/AGENTS.md ~/.codex/AGENTS.md
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash
```
## 2. 路径示例
高权限版:
### Linux / WSL(实际生效位置)
```bash
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash -s -- --profile power
```
- `\\wsl.localhost\\Ubuntu\\home\\<你的用户名>\\.codex\\config.toml`
- `\\wsl.localhost\\Ubuntu\\home\\<你的用户名>\\.codex\\AGENTS.md`
指定 Codex Home
(在 WSL 内对应:`~/.codex/config.toml``~/.codex/AGENTS.md`
```bash
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | CODEX_HOME="$HOME/.codex" bash
```
### Windows(原生)
## 恢复
Codex Home 默认是 `~/.codex/`;在 Windows 上 `~` 通常展开为用户目录
恢复最近一次安装前的配置
- `C:\\Users\\<你的用户名>\\.codex\\config.toml`
- `C:\\Users\\<你的用户名>\\.codex\\AGENTS.md`
```bash
bash ~/.codex/backups/vibe-coding-cn/LATEST/restore.sh
```
如果你自己的 Codex Home 被改到了其它位置(例如 `C:\\Users\\<你的用户名>\\.config\\...`),请把两份文件复制到你实际的 Codex Home。
也可以恢复某一次具体备份:
## 3. 配置优先级(重要)
```bash
bash ~/.codex/backups/vibe-coding-cn/YYYYMMDD-HHMMSS/restore.sh
```
- **全局配置**`~/.codex/config.toml`
- **项目覆盖**:在项目根目录创建 `.codex/config.toml`(仅对当前项目生效)
备份目录包含:
如果你想把某些配置“只对本仓库生效”,建议使用项目覆盖(`.codex/config.toml`),全局配置只保留你长期通用的习惯与安全策略
- `config.toml`:安装前的用户原配置;如果原文件不存在,会写入 `.missing-config.toml` 标记
- `AGENTS.md`:安装前的用户原指令;如果原文件不存在,会写入 `.missing-AGENTS.md` 标记。
- `MANIFEST.txt`:安装来源、profile、目标路径和恢复脚本位置。
- `restore.sh`:恢复脚本。
## 4. 参考(官方文档)
## 文件说明
- Configuration / Config file:说明 `~/.codex/config.toml` 与项目级 `.codex/config.toml` 的优先级
- Custom instructions / Global instructions:说明 `~/.codex/AGENTS.md` 的全局指令加载方式
| 文件 | 用途 |
|:---|:---|
| `install.sh` | 一键安装、备份和恢复入口 |
| `config.toml` | 公开安全默认配置 |
| `config.power.toml` | 高权限配置,显式 `--profile power` 才安装 |
| `AGENTS.safe.md` | 公开安全默认全局指令 |
| `AGENTS.md` | 高强度个人工作流指令,配合 `power` profile 使用 |
## 安全边界
`safe` profile 适合新手和公共分发:
- 不自动信任任何本机项目路径。
- 不放开全盘读写和命令执行权限。
- 不关闭审批确认。
`power` profile 只适合完全可信的本地环境:
- 会写入 `sandbox_mode = "danger-full-access"`
- 会写入 `approval_policy = "never"`
- 会安装更强势的全局 `AGENTS.md`
如果你不确定该选哪个,使用默认 `safe`
## 本地仓库内安装
如果你已经 clone 本仓库,也可以在仓库根目录执行:
```bash
bash tools/config/.codex/install.sh
```
安装高权限版:
```bash
bash tools/config/.codex/install.sh --profile power
```
## 路径示例
Linux / WSL
- `~/.codex/config.toml`
- `~/.codex/AGENTS.md`
Windows 原生:
- `C:\Users\<你的用户名>\.codex\config.toml`
- `C:\Users\<你的用户名>\.codex\AGENTS.md`
如果你自己的 Codex Home 被改到了其它位置,请通过 `CODEX_HOME``--codex-home` 指定。
+47
View File
@@ -0,0 +1,47 @@
# ==================== Codex CLI 高权限基线 ====================
#
# 这个 profile 面向完全可信的本地机器和仓库:
# - sandbox_mode = "danger-full-access" 会放开文件系统和命令执行能力。
# - approval_policy = "never" 会减少确认弹窗,让 Agent 自动推进。
# - 不包含任何本机 projects 信任路径;请按需在本地 config.toml 中追加。
#
# 安装方式:
# bash install.sh --profile power
model = "gpt-5.5"
model_provider = "openai-http"
model_reasoning_effort = "xhigh"
sandbox_mode = "danger-full-access"
approval_policy = "never"
web_search = "live"
personality = "pragmatic"
startup_timeout_ms = 20000
[tui]
notifications = true
[tui.model_availability_nux]
"gpt-5.5" = 4
[features]
multi_agent = true
responses_websockets = false
responses_websockets_v2 = false
[model_providers.openai-http]
name = "OpenAI"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
[notice]
hide_gpt5_1_migration_prompt = true
"hide_gpt-5.1-codex-max_migration_prompt" = true
hide_rate_limit_model_nudge = true
# 本地可信项目示例:
# [projects."/absolute/path/to/your/project"]
# trust_level = "trusted"
+11 -197
View File
@@ -1,223 +1,37 @@
# ==================== 基础配置 ====================
# ==================== Codex CLI 安全默认基线 ====================
#
# 这是公开分发默认配置:
# - 不包含本机 projects 信任路径。
# - 不设置 danger-full-access。
# - 不设置 approval_policy = "never"。
# - 适合新用户先跑通 Codex CLI,再按项目需要逐步放开权限。
#
# 需要更高权限时,请显式安装 config.power.toml
# bash install.sh --profile power
# 模型:
# - 这里填写 Codex CLI 支持的模型名(字符串)。
# - 建议写成你常用的默认模型,临时切换用命令行 `-m` 覆盖更合适。
# - 经验上:`*-codex` 更偏“写代码/改代码”,非 `*-codex` 更偏通用对话(以你实际使用体验为准)。
model = "gpt-5.5"
model_provider = "openai-http"
# 推理强度(思考深度):
# - low → 更快,适合“明确指令 + 小改动”
# - medium → 均衡,适合多数日常任务
# - high → 更深,适合复杂重构/疑难排障
# - xhigh → 最深,适合架构级设计/大范围推理(可能更慢)
# 注意:
# - 不同模型对选项支持范围可能不同;遇到报错优先降一档再试。
model_reasoning_effort = "xhigh"
# 运行策略
# sandbox_mode
# - 用来约束/放开文件系统、命令执行等能力(不同版本 Codex/运行器实现可能略有差异)。
# - `danger-full-access` 表示最大权限:可读写任意路径、可执行任意命令。
# - 仅在你明确知道自己在做什么、并且仓库/机器可信时使用。
sandbox_mode = "danger-full-access"
# approval_policy
# - 控制是否需要用户确认(例如写文件、跑命令等高影响操作)。
# - `never` 表示不再弹确认,自动执行。
# - 风险提示:如果你经常在不熟的目录/不可信脚本环境里使用,建议改成更保守的策略。
approval_policy = "never"
# web_search
# - 控制联网搜索能力策略(以你安装的 Codex CLI 版本为准)。
# - `live` 通常表示允许实时联网搜索(适用于需要最新信息的任务)。
model_reasoning_effort = "medium"
web_search = "live"
# 交互风格
# personality
# - 影响输出风格(例如更务实/更解释型等)。
personality = "pragmatic"
# 指令来源(可选,与 AGENTS.md 二选一)
# experimental_instructions_file
# - 指定一份“系统指令/长期提示词”文件路径。
# - 如果项目内已经用 `AGENTS.md` 管理行为准则,通常不需要再额外打开。
# experimental_instructions_file = "/home/lenovo/.codex/custom-instructions.md"
# ==================== MCP 默认配置 ====================
# startup_timeout_ms
# - MCPModel Context Protocol)服务器启动/握手的超时时间(毫秒)。
# - 如果你启用了某些 MCP(npx/node 启动慢),可以把这个值适当调大。
startup_timeout_ms = 20000
# ==================== UI 与提示 ====================
[tui]
# 是否在 TUI(终端 UI)里启用通知提示。
notifications = true
[tui.model_availability_nux]
"gpt-5.5" = 4
[features]
# Codex 里的 “subagent” 基本就是 Multi-agents(多代理/子线程)功能:主代理会按需 spawn 子代理并行干活,最后汇总结果。
multi_agent = true
# 禁用 Responses WebSocket 传输,只走 HTTPS/HTTP Responses。
responses_websockets = false
responses_websockets_v2 = false
[model_providers.openai-http]
# 自定义 provider 不能覆盖内置 openai,所以用新 ID 复制 OpenAI/Responses 语义并关闭 WebSocket 能力。
name = "OpenAI"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
[notice]
# 这些开关用于隐藏某些“迁移/提示”类消息,减少噪音(仅影响 UI,不影响核心功能)。
hide_gpt5_1_migration_prompt = true
"hide_gpt-5.1-codex-max_migration_prompt" = true
hide_rate_limit_model_nudge = true
[notice.model_migrations]
# 模型迁移映射:
# - 当某些老模型名不可用/被迁移时,用这里的映射做自动替换。
# - 建议只保留你确实用得到的映射,避免未来产生“我没注意但被自动换了”的困惑。
"gpt-5.1-codex-max" = "gpt-5.2-codex"
"gpt-5.2" = "gpt-5.4"
# ==================== 本地模型 Profiles ====================
[profiles.ollama-gemma4]
# WSL 内部的 Codex CLI 通过 localhost 转发调用 Win11 Ollama。
# 该 provider 为 Codex CLI 0.125.0 内置本地 provider,默认访问 http://localhost:11434/v1。
model = "gemma4:31b"
model_provider = "ollama"
model_reasoning_effort = "medium"
[profiles.ollama-gemma4-262k]
# 基于 gemma4:31b 的派生模型,强制 Ollama 运行上下文为模型理论上限 262144。
# 注意:这是理论上限配置,显存/内存压力极高,Codex agent 实用性可能很差。
model = "gemma4-31b-262k"
model_provider = "ollama"
model_reasoning_effort = "medium"
[projects."/home/lenovo/.projects/cat/tradecat"]
trust_level = "trusted"
[projects."/home/lenovo/zip/vibe-coding-cn"]
trust_level = "trusted"
[projects."/mnt/c/Users/13208"]
trust_level = "trusted"
[projects."/home/lenovo"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat/zip/tradecat-20260324"]
trust_level = "trusted"
[projects."/mnt/c/Users/13208/Downloads"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/skill"]
trust_level = "trusted"
[projects."/mnt/d/.projects/研究/tasks+任务包"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat/tradecat-public"]
trust_level = "trusted"
[projects."/mnt/d/.projects/研究/dataset-first"]
trust_level = "trusted"
[projects."/mnt/d/.projects/研究/女娲/raw/cz-skill"]
trust_level = "trusted"
[projects."/home/lenovo/.codex"]
trust_level = "trusted"
[projects."/mnt/d/.projects/研究/币安人生"]
trust_level = "trusted"
[projects."/mnt/d/.projects/XHS-Downloader"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat/fatecat"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat/predictcat"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/cat/catkey"]
trust_level = "trusted"
[projects."/mnt/d/.projects/研究/raw/量化交易/交易猫开发实践"]
trust_level = "trusted"
[projects."/home/lenovo/.projects/vibe-coding-cn"]
trust_level = "trusted"
[projects."/mnt/c/Users/13208/Downloads/cdda-windows-with-graphics-and-sounds-x64-2026-05-02-1743"]
trust_level = "trusted"
# ==================== MCP Servers(示例,默认关闭) ====================
# 说明:
# - 下面这些块默认都注释掉,作为“可复制的模板”。
# - 启用方式:取消注释对应的 `[mcp_servers."name"]` 段,并按需修改 `command/args/cwd`。
# - 维护原则:宁可少开,按需启用;避免“全开导致启动慢/不稳定/难排障”。
# Context7 - 最新官方文档 MCP
# [mcp_servers."context7"]
# command = "npx"
# args = ["-y", "@upstash/context7-mcp@latest"]
# startup_timeout_ms = 20000
# # Completion Notifier - 完成声音提示
# [mcp_servers."completion-notifier"]
# command = "node"
# args = ["/home/lenovo/.codex/mcp-servers/completion-notifier/#index.js"]
# startup_timeout_ms = 20000
# chrome-devtools
# [mcp_servers."chrome-devtools"]
# command = "npx"
# args = ["-y", "chrome-devtools-mcp@latest"]
# startup_timeout_ms = 20000
# [mcp_servers."playwright"]
# command = "npx"
# args = ["-y", "@playwright/mcp@latest"]
# startup_timeout_ms = 20000
# [mcp_servers."puppeteer"]
# command = "npx"
# args = ["-y", "puppeteer-mcp-server"]
# startup_timeout_ms = 20000
# [mcp_servers."n8n"]
# command = "npx"
# args = ["-y", "n8n-mcp@latest"]
# startup_timeout_ms = 20000
# [mcp_servers."maverick"]
# command = "npx"
# args = ["-y", "mcp-remote", "http://localhost:8003/sse/"]
# cwd = "/home/lenovo/maverick-mcp"
# startup_timeout_ms = 20000
# [mcp_servers."happy"]
# command = "happy"
# args = ["codex"]
# startup_timeout_ms = 20000
# Augment - 代码库检索 MCP
# [mcp_servers."auggie-mcp"]
# command = "auggie"
# args = ["-w", "/mnt/c/Users/lenovo", "--mcp"]
# startup_timeout_ms = 200000
+206
View File
@@ -0,0 +1,206 @@
#!/usr/bin/env bash
set -euo pipefail
RAW_BASE_DEFAULT="https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex"
RAW_BASE="${VIBE_CODING_CODEX_RAW_BASE:-$RAW_BASE_DEFAULT}"
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
PROFILE="safe"
DRY_RUN="0"
RESTORE_LATEST="0"
usage() {
cat <<'USAGE'
Install vibe-coding-cn Codex CLI config with backup and rollback.
Usage:
install.sh [--profile safe|power] [--codex-home PATH] [--restore-latest] [--dry-run]
Profiles:
safe Public default. No danger-full-access, no approval_policy=never.
power High-permission local profile. Requires a fully trusted machine/repo.
Environment:
CODEX_HOME Target Codex home. Default: ~/.codex
VIBE_CODING_CODEX_RAW_BASE Source base URL or local directory for assets.
Examples:
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/tukuaiai/vibe-coding-cn/develop/tools/config/.codex/install.sh | bash -s -- --profile power
bash ~/.codex/backups/vibe-coding-cn/LATEST/restore.sh
USAGE
}
log() {
printf '[vibe-coding-cn codex] %s\n' "$*"
}
die() {
printf '[vibe-coding-cn codex] ERROR: %s\n' "$*" >&2
exit 1
}
while [ "$#" -gt 0 ]; do
case "$1" in
--profile)
[ "$#" -ge 2 ] || die "--profile requires safe or power"
PROFILE="$2"
shift 2
;;
--codex-home)
[ "$#" -ge 2 ] || die "--codex-home requires a path"
CODEX_HOME="$2"
shift 2
;;
--restore-latest)
RESTORE_LATEST="1"
shift
;;
--dry-run)
DRY_RUN="1"
shift
;;
-h|--help)
usage
exit 0
;;
*)
die "unknown argument: $1"
;;
esac
done
case "$PROFILE" in
safe)
SOURCE_CONFIG="config.toml"
SOURCE_AGENTS="AGENTS.safe.md"
;;
power)
SOURCE_CONFIG="config.power.toml"
SOURCE_AGENTS="AGENTS.md"
;;
*)
die "unsupported profile: $PROFILE"
;;
esac
CODEX_HOME="${CODEX_HOME/#\~/$HOME}"
BACKUP_ROOT="$CODEX_HOME/backups/vibe-coding-cn"
LATEST_LINK="$BACKUP_ROOT/LATEST"
restore_latest() {
[ -e "$LATEST_LINK/restore.sh" ] || die "missing latest restore script: $LATEST_LINK/restore.sh"
log "restoring latest backup from $LATEST_LINK"
bash "$LATEST_LINK/restore.sh"
}
if [ "$RESTORE_LATEST" = "1" ]; then
restore_latest
exit 0
fi
fetch_asset() {
local name="$1"
local out="$2"
if [ -d "$RAW_BASE" ]; then
cp "$RAW_BASE/$name" "$out"
else
command -v curl >/dev/null 2>&1 || die "curl is required when RAW_BASE is remote"
curl -fsSL "$RAW_BASE/$name" -o "$out"
fi
}
backup_one() {
local name="$1"
local src="$CODEX_HOME/$name"
local dst="$BACKUP_DIR/$name"
if [ -f "$src" ]; then
cp "$src" "$dst"
else
: > "$BACKUP_DIR/.missing-$name"
fi
}
write_restore_script() {
local codex_home_q backup_dir_q
printf -v codex_home_q '%q' "$CODEX_HOME"
printf -v backup_dir_q '%q' "$BACKUP_DIR"
cat > "$BACKUP_DIR/restore.sh" <<RESTORE
#!/usr/bin/env bash
set -euo pipefail
CODEX_HOME=$codex_home_q
BACKUP_DIR=$backup_dir_q
restore_file() {
local name="\$1"
mkdir -p "\$CODEX_HOME"
if [ -f "\$BACKUP_DIR/\$name" ]; then
cp "\$BACKUP_DIR/\$name" "\$CODEX_HOME/\$name"
printf '[vibe-coding-cn codex] restored %s\n' "\$CODEX_HOME/\$name"
elif [ -f "\$BACKUP_DIR/.missing-\$name" ]; then
rm -f "\$CODEX_HOME/\$name"
printf '[vibe-coding-cn codex] removed %s because it did not exist before install\n' "\$CODEX_HOME/\$name"
else
printf '[vibe-coding-cn codex] skip %s: no backup marker\n' "\$name"
fi
}
restore_file config.toml
restore_file AGENTS.md
RESTORE
chmod +x "$BACKUP_DIR/restore.sh"
}
install_one() {
local src="$1"
local name="$2"
install -m 600 "$src" "$CODEX_HOME/$name"
log "installed $CODEX_HOME/$name"
}
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP_DIR="$BACKUP_ROOT/$TIMESTAMP"
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "$TMP_DIR"' EXIT
log "profile=$PROFILE"
log "source=$RAW_BASE"
log "codex_home=$CODEX_HOME"
if [ "$DRY_RUN" = "1" ]; then
log "dry run only; no files will be changed"
exit 0
fi
mkdir -p "$CODEX_HOME" "$BACKUP_DIR"
backup_one config.toml
backup_one AGENTS.md
write_restore_script
cat > "$BACKUP_DIR/MANIFEST.txt" <<MANIFEST
profile=$PROFILE
source=$RAW_BASE
codex_home=$CODEX_HOME
created_at=$TIMESTAMP
restore=$BACKUP_DIR/restore.sh
MANIFEST
rm -rf "$LATEST_LINK"
if ! ln -s "$BACKUP_DIR" "$LATEST_LINK" 2>/dev/null; then
mkdir -p "$LATEST_LINK"
cp "$BACKUP_DIR/restore.sh" "$LATEST_LINK/restore.sh"
printf '%s\n' "$BACKUP_DIR" > "$LATEST_LINK/BACKUP_DIR"
fi
fetch_asset "$SOURCE_CONFIG" "$TMP_DIR/config.toml"
fetch_asset "$SOURCE_AGENTS" "$TMP_DIR/AGENTS.md"
install_one "$TMP_DIR/config.toml" config.toml
install_one "$TMP_DIR/AGENTS.md" AGENTS.md
log "backup saved: $BACKUP_DIR"
log "restore command: bash $BACKUP_DIR/restore.sh"
log "latest restore command: bash $LATEST_LINK/restore.sh"
+2
View File
@@ -7,6 +7,8 @@
- 配置文件必须是可公开审查的模板或基线,不得包含真实密钥。
- 本机专用配置应放在用户本地目录,不直接提交到仓库。
- 修改 Codex 配置时,同步更新 `tools/config/.codex/README.md` 和相关 getting-started 文档。
- 公开默认配置不得包含本机 `projects` 信任路径;高权限配置必须显式标注风险并通过独立 profile 安装。
- 一键安装脚本必须先备份用户现有配置,并提供恢复脚本。
## 验证
+1 -1
View File
@@ -6,4 +6,4 @@
- 配置位置:`tools/config/.codex/`
- 使用说明:`tools/config/.codex/README.md`
- 一键安装:支持安全默认配置、高权限配置、安装前备份和恢复脚本。