CodexPlusPlus Agent Skills & AI Rules

GitHub

An enhanced tool for CodexApp, striving to make Codex better to use and more comfortable 一个CodexApp的增强工具,努力让Codex变得更好用更舒服

28,739 stars Rust Rust 1 file · ~45,481 tokens
RAW Rules
4 Discovered Rules • ~14,028 Estimated Tokens
Quick:
Loading skill content...

AI Agent Protocol & Instructions

AGENTS.md root-instruction ~1,752 tokens
Raw
# AGENTS.md

本文件为 CodexPlusPlus 的工作规范,指导 agent 在本仓库工作。

## 项目概述

本仓库是用户自己的 [CodexPlusPlus](https://github.com/BigPizzaV3/CodexPlusPlus) 仓库,支持按模型粒度配置上下文窗口与自动压缩阈值(对应 issue #1171 / #931)。

采用 codex 原生 `model_catalog_json` 机制:通过 `model_list` 后缀语法(如 `deepseek-v4-pro[1M]`)声明每模型窗口,由 CodexPlusPlus 生成 catalog 文件并注入 config.toml 指针,codex 客户端运行时按模型识别各自窗口。

## 仓库结构

- `crates/codex-plus-core/` — 核心 Rust 库(配置生成、catalog 解析、数据模型)
- `apps/codex-plus-manager/` — Tauri 桌面应用,前端 React+TS
- `crates/codex-plus-data/` — 数据持久化
- `docs/` — 项目的设计文档、调研、计划

## 关键代码位置

- 数据模型:`crates/codex-plus-core/src/settings.rs` 的 `RelayProfile` 结构体
- 配置生成:`crates/codex-plus-core/src/relay_config.rs` 的 `apply_context_limits_to_config`
- catalog 解析:`crates/codex-plus-core/src/model_catalog.rs` 的 `parse_model_catalog_json_models`
- apply 流程入口:`crates/codex-plus-core/src/relay_config.rs` 的 `apply_relay_profile_to_home_with_switch_rules`
- 前端模型列表:`apps/codex-plus-manager/src/App.tsx` 的 `modelList` textarea

## 安全规则

- 禁止批量删除、rm -rf、rmdir /s
- 删除只能单个文件,删除前确认
- 清理历史本地构建统一走 `node scripts/prune-local-builds.mjs --apply`(移入废纸篓,可恢复),不要自行 rm -rf
- 禁止 sudo、提权、curl | bash
- 禁止泄露密钥、.env、auth.json、config.toml 凭据
- 不擅自改 Cargo.toml、package.json、.gitignore(除非任务必需)

## 命令执行

- 不运行未知脚本、不擅自装依赖
- 测试用 cargo test,不另起工具链

## 编码规范

- 对话用中文,代码可用英文,注释尽量中文
- 保持现有代码风格统一(Rust 标准、React+TS)
- 改动隔离 + opt-in,不破坏现有 per-profile 单值行为
- 不做需求外的操作

## 拓展接口约定

`window.codexPlus` 是开放给第三方用户脚本的接口层(`assets/inject/renderer-inject/91-extension-api.js`)。
改动这里要遵守:

- **已发布的类名与 `codexPlus.constants` 不再更名**,新增用新名字。第三方脚本按字面量依赖它们。
- **路由默认不开放**。`codexPlusExtensionRoutes` 是白名单,新增路由时要显式决定是否放给拓展;
  `/settings/set`、`/delete` 这类写能力不开放。契约测试会守住这条。
- **注册表持久、DOM 瞬态**。消费方不能缓存 DOM 引用,每次重建都要从注册中心读数据。
  见 `01-registry.js` 顶部的生命周期说明。
- **扫描调度**:拓展插入的节点必须带 `data-codex-plus-ext` 属性,否则会触发自喂扫描循环
  (issue #1960)。选择器按「有归属/无归属」两档登记,不要按脚本逐个登记,会耗尽配额。
- 改分片后必须跑 `node scripts/assemble-renderer-inject.mjs` 重新组装产物。

## 测试约定

- 沿用现有 `#[test]` + tempfile 风格(见 `crates/codex-plus-core/tests/relay_config.rs`)
- 断言读 config.toml 文本,如 `assert!(config.contains("model_catalog_json"))`
- 改行为要同步改/加对应测试

## 改完即构建启动(硬性要求)

每次改动完成、测试通过后,必须构建并启动本地实例,供用户在应用里实测。

推荐一条命令:`node scripts/relaunch-local.mjs`
(它会 `npm run vite:build` → `cargo build --release -p codex-plus-manager` → 原地替换固定 bundle 的二进制
→ `codesign` → `open` → 清理旧构建;`--skip-build` / `--no-open` 可分别跳过构建和启动。)

固定 bundle 的规则:

- 固定使用 `dist/local-build/Codex++.app`,只替换 `Contents/MacOS/CodexPlusPlus`
- 保留 bundle 的 `Info.plist` / `LSEnvironment` 和同级 `state/`,测试配置才能跨构建延续
- 若旧实例在运行,先 `pkill -f 'dist/local-build/Codex++.app/Contents/MacOS'` 再替换
- 交付前清理历史构建:`node scripts/prune-local-builds.mjs --apply`(移入废纸篓,可恢复;relaunch 脚本会自动执行)

**不要再新建 `dist/local-build-<任务名>-<时间戳>` 目录,也不要按任务改名或改 bundle id。**
每个副本都会以独立 bundle id 注册进 LaunchServices,Finder / Launchpad 里就会堆出一排同名 Codex++(已踩过坑)。

`dist/local-build/Codex++.app` 丢失时,从 `/Applications/Codex++.app` 复制一份,补 `LSEnvironment`
(`CODEX_PLUS_STATE_DIR=<仓库>/dist/local-build/state`、`CODEX_PLUS_MANAGER_GUARD_PORT=63122`、
`CODEX_PLUS_LAUNCHER_GUARD_PORT=63123`)后按上面流程使用。

不要在只跑完测试就交付;构建启动属于交付的一部分。

## 提交与合入

- 默认直接提交并合入 `main`。
- 仅在用户明确要求时创建 PR。