diff --git a/README.md b/README.md index c4b4a19..87111d3 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ 道法术器 从零开始完整入门 Vibe Coding 经验 + Codex 配置一键安装 问题求解 思维模型 哲学与方法论 @@ -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): 复用成熟能力,用胶水代码连接、编排、适配业务流程。 diff --git a/assets/ai-citation/llms-full.txt b/assets/ai-citation/llms-full.txt index 4b945e6..132053c 100644 --- a/assets/ai-citation/llms-full.txt +++ b/assets/ai-citation/llms-full.txt @@ -47,6 +47,7 @@ GEOFlow 的关键启发是:GEO 不是关键词堆砌,而是内容工程链 - docs/getting-started/README.md#learning-map:新手、开发者、团队、Prompt、Skill、质量门禁和 GEO/SEO 的路线选择。 - docs/getting-started/README.md#network-environment:OpenAI、GitHub、文档和依赖源访问配置。 - docs/getting-started/README.md#cli-setup:Codex CLI 默认路线与 OpenCode 备选路线。 +- tools/config/.codex/README.md:Codex 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`。 diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index 523e900..aaad300 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -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)。 diff --git a/llms.txt b/llms.txt index da11381..575984e 100644 --- a/llms.txt +++ b/llms.txt @@ -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 diff --git a/tools/config/.codex/AGENTS.safe.md b/tools/config/.codex/AGENTS.safe.md new file mode 100644 index 0000000..5a2ab08 --- /dev/null +++ b/tools/config/.codex/AGENTS.safe.md @@ -0,0 +1,24 @@ +# Codex 全局安全默认指令 + +你是用户本地 Codex Agent。默认以安全、可验证、可回滚的方式协助用户完成软件工程任务。 + +## 工作原则 + +- 先读当前目录与任务上下文,再修改文件。 +- 优先复用成熟方案、官方能力、稳定工具和项目既有模式。 +- 不硬编码密钥、Token、Cookie、私钥或个人敏感信息。 +- 不执行不可逆或破坏性操作,除非用户明确要求并已经说明风险。 +- 修改前尽量缩小影响范围,修改后给出验证命令和结果。 +- 涉及 Git 时,先查看 `git status --short --branch`,避免混入无关改动。 + +## 质量门禁 + +- 能用测试、lint、类型、schema、脚本或 CI 验证的规则,不只写在提示词里。 +- 不把“看起来对”当成完成;优先给出可复现命令、diff、测试输出和剩余风险。 +- 遇到不确定事实时,明确说明不确定性和查证路径。 + +## 输出风格 + +- 默认使用中文。 +- 简洁直接,先给结论,再给关键证据和下一步。 +- 对人看的文档、注释和说明使用中文;代码符号保持英文且语义清楚。 diff --git a/tools/config/.codex/README.md b/tools/config/.codex/README.md index 6221d54..efc92db 100644 --- a/tools/config/.codex/README.md +++ b/tools/config/.codex/README.md @@ -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` 指定。 diff --git a/tools/config/.codex/config.power.toml b/tools/config/.codex/config.power.toml new file mode 100644 index 0000000..53e6b18 --- /dev/null +++ b/tools/config/.codex/config.power.toml @@ -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" diff --git a/tools/config/.codex/config.toml b/tools/config/.codex/config.toml index f6cc60b..de5c915 100644 --- a/tools/config/.codex/config.toml +++ b/tools/config/.codex/config.toml @@ -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: -# - MCP(Model 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 diff --git a/tools/config/.codex/install.sh b/tools/config/.codex/install.sh new file mode 100755 index 0000000..d27fcda --- /dev/null +++ b/tools/config/.codex/install.sh @@ -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" < "$BACKUP_DIR/MANIFEST.txt" </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" diff --git a/tools/config/AGENTS.md b/tools/config/AGENTS.md index 4c9d0e6..eeb8188 100644 --- a/tools/config/AGENTS.md +++ b/tools/config/AGENTS.md @@ -7,6 +7,8 @@ - 配置文件必须是可公开审查的模板或基线,不得包含真实密钥。 - 本机专用配置应放在用户本地目录,不直接提交到仓库。 - 修改 Codex 配置时,同步更新 `tools/config/.codex/README.md` 和相关 getting-started 文档。 +- 公开默认配置不得包含本机 `projects` 信任路径;高权限配置必须显式标注风险并通过独立 profile 安装。 +- 一键安装脚本必须先备份用户现有配置,并提供恢复脚本。 ## 验证 diff --git a/tools/config/README.md b/tools/config/README.md index b75f06f..418c67f 100644 --- a/tools/config/README.md +++ b/tools/config/README.md @@ -6,4 +6,4 @@ - 配置位置:`tools/config/.codex/` - 使用说明:`tools/config/.codex/README.md` - +- 一键安装:支持安全默认配置、高权限配置、安装前备份和恢复脚本。