CN-Codex 使用指南

从首次启动到高级功能的全面说明

概述

CN-Codex 是一款基于 Tauri 2 + React 构建的桌面 AI 编程助手。它内置 Agent 引擎,直接通过 HTTP SSE 与 LLM API 通信,无需依赖外部 CLI 进程。

项目初衷:让普通开发者长期用上“廉价又好用”的 AI 编程 IDE。作者日常用商汤 free coding plan 的 DeepSeek v4 Flash 做全流程开发,并用中转渠道的 Grok 4.5 攻坚复杂任务、持续进化 IDE。因此产品原生支持多模型渠道与中转站。

核心能力:

  • 支持 12+ 种 LLM 供应商与自定义中转站(OpenAI、Anthropic、Google、DeepSeek、Grok 中转、火山引擎、通义千问、智谱、Moonshot、硅基流动、百川、Ollama、LM Studio 等)
  • 50+ 内置工具(文件、Shell、浏览器、子代理、记忆、MCP、图像、网页搜索等)
  • 项目级工作区管理,每个项目拥有独立的对话上下文
  • Goal 目标模式,AI 自主多步执行任务
  • 可扩展的插件、技能、Hooks 和机器人系统
  • 手机远程控制:扫码连接手机,实时监控、远程审批、发送消息,支持局域网直连和公网中转
  • SmartBrain 经验知识库:基于 LLM Wiki 模式,AI 自动提取经验、编译知识、BM25 搜索
  • 用户规则和项目规则:Markdown 格式,自动注入系统提示词,AI 可在对话中读写
  • 子代理引擎:复杂任务自动拆分并行执行
  • 操作录制与回放:通过 CDP 协议录制浏览器操作,生成可回放工作流
  • 智能网页搜索:DuckDuckGo + Bing 双引擎,内置防循环策略
  • 本地资源池:多端点管理、活跃端点检测、智能故障转移(适合多中转容灾)
  • 50+ 内置技能,8 大插件

首次启动

1. 启动应用

双击 CN-Codex.exe 启动。首次启动会在同目录创建 codey 运行时文件夹。

CN-Codex 主界面

主界面:左侧项目列表,中间聊天/目标切换,右侧文件树面板,底部模型选择和自动审批开关

2. 观察状态指示灯

左上角 CN-Codex 标题旁有一个小圆点:

  • 绿色 — 引擎就绪,可以发送消息
  • 黄色闪烁 — 正在初始化
  • 红色 — 初始化失败(此时会出现「重试」按钮)

3. 配置第一个供应商

点击侧边栏底部的 设置 按钮 → 进入 模型提供商 标签页 → 点击 添加供应商,从预设列表中选择一个(如 DeepSeek、OpenAI 等),填写 API Key 和 Base URL,保存后点击 启用

供应商设置面板

供应商设置面板:左侧供应商列表,右侧配置表单(名称、API Key、Base URL、传输协议),底部模型列表

添加模型的顺序

在「模型列表」区域填写模型名称后,必须先点击右侧的 绿色 + 按钮 将模型添加到列表,然后再点击底部的 保存 按钮。如果填了模型信息但没有点 +,保存时会提示你先添加。

4. 添加第一个项目

在侧边栏头部点击 文件夹+ 按钮(添加项目),选择你要操作的代码目录。添加后 AI 在该目录下执行 Shell 命令和文件读写。

5. 运行时目录结构

codey/
├── config.toml       # 主配置文件
├── sessions/         # 会话持久化(每个对话一个 .jsonl)
├── skills/           # 技能指令文件(SKILL.md)
├── plugins/          # 插件目录
├── robots/           # 机器人配置
├── memories/         # AI 记忆存储
└── usage.db          # Token 用量统计(SQLite)

界面布局

CN-Codex 主界面分为四个区域:

  • 标题栏(最顶部) — 拖拽移动窗口、二维码、右侧面板开关、窗口控制(最小化 / 最大化 / 关闭)
  • 侧边栏(左侧 256px) — 项目列表、通用对话、会话管理、搜索、设置入口
  • 聊天区域(中间主体) — 消息列表 + 底部输入栏
  • 右侧面板(可选) — 三个标签页:Browser(内嵌浏览器)、Project(文件树)、Terminal(终端)

「项目」与「对话」的区别

这是 CN-Codex 最重要的组织概念。

项目

项目 = 一个本地文件夹。通过侧边栏添加后,CN-Codex 以该目录为工作根路径。每个项目下可以创建多个对话。

项目对话界面

项目对话界面:「项目」标签页选中,聊天/目标模式切换,机器人选择器下拉菜单(无机器人、已创建的机器人、新建机器人)

  • 支持 目标模式(Goal)和 聊天模式(Chat)切换
  • 支持 机器人(Robot)选择
  • 右侧面板可浏览该项目的 文件树
  • AI 执行 Shell 命令时,工作目录为该项目文件夹
  • 移除项目会同时清除该项目下的所有对话

通用对话

不绑定任何项目的独立对话区域,适合泛聊、翻译、写作等不涉及代码工程的场景。

  • 只有 聊天模式,不支持目标模式
  • 不支持机器人选择
  • 右侧文件树不适用
  • 工作目录为应用根目录或用户 Home 目录
特性 项目对话 通用对话
工作目录 项目文件夹 应用根目录 / 用户 Home
目标模式 支持 不支持
机器人 支持 不支持
文件树 支持(右侧面板) 不适用
典型用途 项目级编程辅助 问答、翻译、写作

聊天模式

默认的对话模式。你发一条消息,AI 回复一条消息,必要时会自动调用工具(读文件、执行命令等)。每次操作需要你手动审批(除非开启了自动审批)。

通用对话聊天模式

通用对话聊天模式:仅「聊天」标签,底部状态栏显示连接状态、模型选择器、自动审批开关

在项目对话的输入栏左上方可以看到 聊天 / 目标 切换按钮,点击 聊天 即为此模式。通用对话下只有聊天模式,没有切换按钮。

目标模式(Goal)

仅在项目对话中可用。设置一个目标后,AI 自主多步执行,不需要你一轮一轮地手动发送消息。

启用方式

  • 在输入栏切换到 目标 标签,然后输入目标内容发送
  • 或直接输入 /goal set 你的目标描述

目标状态

输入栏右侧的徽章显示当前目标状态:

状态含义
activeAI 正在自主执行中
paused已暂停(点停止或用 /goal pause)
blocked遇到需要用户介入的问题
complete目标已完成
budgetLimitedToken 预算用完
usageLimited用量限制触发

Goal 命令

命令说明
/goal/goal show查看当前目标状态和 Token 用量
/goal set 描述设置新目标并开始执行
/goal edit 新描述修改目标内容(不输入描述会自动填入旧目标供编辑)
/goal pause暂停执行
/goal resume恢复执行
/goal clear清除目标并回到聊天模式

Token 预算

可以限制目标执行时的最大 Token 消耗:

/goal set --tokens=50k 重构这个模块的错误处理逻辑

支持 k(千)和 m(百万)后缀。

机器人(Robot)

机器人是由 AI 自动创建的专业角色,每个机器人有自己的名称、描述、技能和工作流配置。选中机器人后发送的消息会自动以目标模式运行。

使用方法

  1. 在项目对话的输入栏上方点击 机器人下拉菜单(显示「无机器人」)
  2. 选择已有机器人,或点击 + 新建机器人
  3. 新建时在输入框中描述你想要的机器人功能,AI 会自动创建
  4. 选中机器人后,后续发送的消息都将由该机器人角色处理

修改机器人

选中一个机器人后,输入 /modify,然后在输入框中描述要修改的内容即可。

管理机器人

设置面板 → 机器人 标签页可以查看所有机器人的详情(技能、工作流步骤),也可以删除不需要的机器人。

标题栏

最顶部的窄条,从左到右依次是:

元素说明
绿色圆点 + CN-Codex 文字品牌标识,同时是 拖拽区域(按住拖动可移动窗口,双击可最大化/还原)
二维码按钮弹出 QR Code 浮窗,手机扫码后可在手机浏览器上同步查看对话
侧边面板按钮切换右侧面板的显示/隐藏(默认是 Project 文件树标签页)
最小化最小化窗口到任务栏
最大化最大化 / 还原窗口
关闭关闭应用(鼠标悬停变红)

聊天区域

空状态

没有消息时显示欢迎信息,包括:

  • 应用标题和描述
  • 当前使用的 模型名称 卡片
  • 配置来源(codey/config.toml 路径)卡片

如果没有选中任何项目,整个区域显示「点击此处添加一个项目开始对话」引导。

消息列表

  • 用户消息和 AI 消息交替显示,支持 Markdown / GFM 渲染代码高亮
  • AI 回复时有 流式输出光标,实时显示生成内容
  • 工具调用显示为 可展开的卡片(命令名、参数、输出内容)
  • 一轮对话结束后显示 运行摘要卡片(耗时、Token 用量、修改的文件列表,可点击在资源管理器中打开)

复制全部按钮

消息列表顶部右侧的复制按钮可以将整个对话内容复制到剪贴板。

输入栏

位于聊天区域底部,是最核心的交互区域。

模式切换(仅项目对话)

左上方有一个 聊天 / 目标 胶囊切换器:

  • 聊天 — 普通一问一答模式
  • 目标 — 设置目标后 AI 自主多步执行

通用对话下固定显示「聊天」标签,无法切换。

机器人选择器(仅项目对话)

模式切换器右侧的下拉按钮,可选择:

  • 无机器人 — 默认状态
  • 已创建的机器人列表(显示名称和描述)
  • + 新建机器人 — 在输入框中描述后发送即可创建

Goal 状态徽章

目标模式下且未选择机器人时,右侧会显示当前目标的状态徽章(进行中 / 已暂停 / 预算受限 等)。

附件预览区

已添加的附件显示在输入框上方,每个附件卡片显示文件名、大小,图片附件有缩略图。悬停时出现删除按钮。

主输入框

操作快捷键
发送消息Enter
换行Shift + Enter
触发斜杠命令输入 / 开头
关闭弹出面板Esc

左侧按钮 — 附件

回形针按钮,点击打开文件选择器。支持图片(image/*)和文档(.pdf, .md, .txt, .docx, .doc, .csv, .json, .yaml, .yml, .toml, .xml, .html)。也支持从右侧文件树 拖拽文件 到输入框。

右侧按钮 — 发送 / 停止

  • 绿色圆形箭头 — 发送消息(输入为空或禁用时变灰)
  • 红色圆形方块 — 流式输出中或目标运行中时显示,点击可中断

底部状态栏

输入框下方的小字区域,从左到右:

元素说明
连接状态绿点 + 「就绪」 或 黄色闪烁 + 「初始化中」
模型选择器点击弹出模型列表,可在已配置的模型间切换。如果没有配置模型,点击会打开设置面板
自动审批开关点击切换。开启后除「用户输入请求」外,所有审批自动通过
当前工作目录显示项目文件夹名称(仅选中项目时显示)

右侧面板

通过标题栏的侧边面板按钮切换显示/隐藏。面板顶部有三个标签页可切换:

Browser(浏览器)

内嵌 WebView 浏览器,由 AI 的 browser_run 工具控制。当 AI 需要访问网页(如打开 URL、点击元素、截图等)时,页面会在此面板中实时渲染。顶部显示当前 URL 和状态信息。

Project(文件树)

  • 展示当前项目目录的文件结构
  • 顶部有 刷新在资源管理器中打开 两个按钮
  • 点击目录展开/折叠
  • 点击文件可 预览(Markdown 渲染 / 代码高亮)
  • 右键菜单:加入对话(作为附件)/ 在资源管理器中打开
  • 可以 拖拽文件到输入框,自动读取内容作为附件

Terminal(终端)

内置真实的交互式终端面板,基于 xterm.js 实现。可以直接在 CN-Codex 内操作系统命令行,无需切换到外部终端窗口。

主要功能

  • 多标签页 — 支持同时打开多个终端会话,每个标签页独立运行一个 Shell 进程
  • 自动定位 — 如果当前选中了项目,新建终端的工作目录自动设为该项目文件夹
  • 系统原生 Shell — Windows 下为 PowerShell / CMD,Linux / macOS 下为默认 Shell
  • 实时输出 — 通过 PTY(伪终端)技术,支持完整的终端交互,包括颜色高亮、光标移动、快捷键等
  • 自适应大小 — 面板大小变化时自动调整终端行列数

操作说明

操作说明
新建终端点击标签栏右侧的 + 按钮,创建新的终端标签页
切换终端点击不同的标签页在多个终端会话间切换
关闭终端点击标签页上的 × 按钮,关闭该终端会话
输入命令直接在终端中键入命令并回车执行
终端 vs AI 执行命令

此终端面板是供你手动操作的系统终端,与 AI 自动执行的 Shell 工具相互独立。你可以在终端中手动运行编译、测试、Git 等命令,同时 AI 在聊天区域中并行工作。

审批弹窗

当 AI 需要执行敏感操作(执行命令、修改文件、请求权限等)或向你提问时,会弹出审批弹窗。

审批类型

  • 命令执行审批 — 显示要执行的命令内容
  • 文件修改审批 — 显示要修改的文件和补丁内容
  • 权限请求 — 请求额外操作权限
  • 用户输入 — AI 向你提问,可能有多选/文本输入选项

操作

  • 批准 — 允许 AI 执行该操作
  • 拒绝 — 拒绝该操作

多条审批请求会排队,依次处理。

提示:自动审批

输入栏底部的「自动审批」开关打开后,除 request_user_input(AI 提问需要你回答的场景)外,其他审批都会自动通过。

SmartBrain — AI 经验知识库

SmartBrain 是 CN-Codex 内置的知识管理系统,基于 LLM Wiki 模式(由 Andrej Karpathy 提出)。核心理念:让 AI 提前将原始资料"编译"为结构化知识,而非查询时临时检索。

三层架构

层级说明
Raw 层只读的原始会话记录和上传文档,不可修改
Wiki 层AI 维护的结构化 Markdown 文件,采用 OKF(Open Knowledge Format)格式,包含实体、概念和交叉引用
Schema 层定义 AI 的工作规则和质量标准,指导分类、索引和更新行为

经验系统

  • 自动提取 — 每次对话结束后,AI 自动从会话中提取关键经验、失败教训和最佳实践
  • 合并摘要 — 多次经验自动合并为精炼摘要,注入后续新会话的系统提示
  • 越用越聪明 — AI 不再反复犯同样的错误,历史经验持续积累

知识库

  • 上传文档自动分块、组织到 codey/memories/knowledge/
  • 支持格式:PDF、Word、PPT、Excel、Markdown、文本等
  • 内置 BM25 全文检索引擎,跨经验和知识库统一搜索,无需外部向量数据库

AI 记忆工具

AI 在对话中可通过以下工具主动管理知识:

memory_list列出所有记忆条目
memory_read读取指定记忆内容
memory_search搜索相关记忆
memory_write写入新记忆
memory_update更新已有记忆
memory_forget删除指定记忆
smartbrain_search跨经验和知识库的统一 BM25 搜索
LLM Wiki vs RAG

传统 RAG 在每次查询时临时检索原始文档。LLM Wiki 则提前将文档"编译"为结构化知识 — 500 字精炼摘要优于 5000 字原文。如果知识库足够精炼,可以全量加载到上下文窗口中,完全不需要复杂的向量检索。

用户规则 / 项目规则

通过 Markdown 格式的规则文件精准控制 AI 行为,规则会自动注入系统提示词。

用户规则(全局)

  • 存储位置:codey/user-rules.md
  • 设置方式:设置 → 规则 标签页,直接在文本编辑器中编写
  • 作用范围:所有会话中生效
  • 示例:偏好语言、代码风格、常用框架等

项目规则(每项目独立)

  • 存储位置:项目根目录下的 .rule.md 文件
  • 设置方式:右侧文件树 → 右键项目文件夹 → 编辑项目规则
  • 作用范围:仅在该项目的对话中生效
  • AI 工具:AI 可通过 edit_project_rules 工具在对话中直接读写项目规则
规则优先级

用户规则和项目规则同时存在时,两者都会注入系统提示词。项目规则可以覆盖或补充用户规则中的通用约定。每种规则内容截断上限为 4000 字符。

子代理引擎

当 AI 面对复杂任务时,可以将其拆分为多个独立子代理并行执行。每个子代理有自己的系统提示、模型配置和工作目录。

工作流程

  1. AI 通过 spawn_agent 工具启动子代理,指定任务描述和工作目录
  2. 子代理独立执行,拥有完整的工具调用能力
  3. 主代理通过 wait_agent 等待结果,或用 send_input 发送补充指令
  4. 子代理完成后,结果汇总到主对话流继续推进

子代理工具

spawn_agent启动新的子代理
wait_agent等待子代理完成并获取结果
send_input向运行中的子代理发送消息
resume_agent恢复暂停的子代理
list_agents列出所有子代理及状态
close_agent关闭子代理

特性

  • 并行执行 — 多个子代理可同时运行
  • 超时控制 — 可配置子代理超时时间
  • Hook 集成on-subagent-stop 事件钩子在子代理完成时触发

操作录制与回放

CN-Codex 支持通过外部浏览器的 CDP(Chrome DevTools Protocol)协议录制用户操作,并生成可回放的工作流。

工作原理

  1. CN-Codex 自动检测本地安装的 Chrome(优先)或 Edge 浏览器
  2. 以远程调试模式启动浏览器(--remote-debugging-port
  3. 通过 CDP WebSocket 连接建立双向通信
  4. 注入录制脚本,使用 Runtime.addBinding 实时推送事件到 Rust 后端

使用方法

  1. 在聊天界面顶部找到 录制按钮(红色圆点图标)
  2. 点击 开始录制,系统会自动启动外部浏览器
  3. 在浏览器中正常操作(点击、输入、导航等),所有操作会被实时捕获
  4. 完成后点击 停止录制,系统显示录制的操作数量
  5. 录制结果自动保存为工作流 JSON 文件,可在后续对话中引用和回放

录制的事件类型

事件类型说明
click鼠标点击(记录坐标和目标元素选择器)
input文本输入(记录目标元素和输入值)
navigation页面导航(记录目标 URL)
scroll页面滚动(记录滚动位置)
浏览器优先级

系统会优先检测 Chrome 的安装路径(包括系统级和用户级安装),如果未找到 Chrome 则使用 Edge。录制功能需要浏览器支持 CDP 远程调试协议。

本地资源池

本地资源池允许为同一供应商配置多个 API 端点,系统自动选择活跃端点,实现智能故障转移。

使用场景

  • 同一供应商有多个 API 密钥或端点需要轮换
  • 部分端点不稳定(频繁 502、超时),需要自动切换到可用端点
  • 需要在不同端点之间做负载均衡

配置方式

在设置面板 → 模型提供商 中,选择供应商类型为 本地资源池(local-pool)

  • 添加多个端点,每个端点包含 Base URL 和 API Key
  • 为每个端点标记 活跃非活跃 状态
  • 系统自动使用当前标记为活跃的端点进行 API 调用

端点选择逻辑

  1. 检查供应商是否为 local-pool 类型
  2. 从该供应商的端点列表中筛选当前 活跃端点
  3. 使用活跃端点的 Base URL 和 API Key 发起请求
  4. 如果请求失败,可在设置中手动切换到其他端点
运势功能

每日运势查询功能会自动使用本地资源池中活跃的端点来调用 LLM。如果没有配置本地资源池,则使用默认的供应商配置。

配置文件

主配置文件位于 codey/config.toml,包含以下核心字段:

codey/config.toml 完整示例
# 当前模型 ID
model = "l-deepseek-v4-flash"

# 供应商标识(对应 [model_providers.xxx] 中的 key)
model_provider = "openai"

# 推理强度:low / medium / high / xhigh
model_reasoning_effort = "medium"

# 单次最大输出 token 数
max_output_tokens = 65535

# 审批策略:on-request / on-failure / untrusted / never
approval_policy = "on-request"

# 联网搜索:live / cached / disabled
web_search = "live"

# 额外系统指令(可选)
# instructions = "回复使用中文"

# 上下文压缩阈值(可选)
# model_auto_compact_token_limit = 115000

# 移动端中转服务器(可选)
# relay_server_url = "http://your-server.com:8080"

# ─── 供应商配置 ───

[model_providers.openai]
base_url = "https://api.openai.com/v1"
experimental_bearer_token = "sk-..."
wire_api = "chat"           # chat / responses / anthropic / google
requires_openai_auth = true

[model_providers.deepseek]
base_url = "https://api.deepseek.com"
experimental_bearer_token = "sk-..."
wire_api = "chat"
requires_openai_auth = false

[model_providers.zhipu]
base_url = "https://open.bigmodel.cn/api/paas/v4"
experimental_bearer_token = "your-key.here"
wire_api = "chat"
requires_openai_auth = false

# ─── MCP 服务配置 ───

[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path"]

# ─── Hooks 配置 ───

[hooks]
推荐做法

供应商配置推荐通过设置面板的 GUI 操作,而非手动编辑 TOML。GUI 会自动处理字段格式和验证。

供应商配置

CN-Codex 内置 12+ 种供应商预设模板:

分类供应商传输协议 (wire_api)
全球服务OpenAIchat 或 responses
Anthropicanthropic
Google Geminigoogle
国内服务DeepSeekchat
火山引擎 Arkchat
通义千问chat
智谱 AIchat
Moonshotchat
硅基流动 / 百川chat
本地运行Ollamachat
LM Studiochat
中转 / 自定义OpenAI 兼容网关 / 聚合站 / free planchat(常见)

传输协议说明

  • chat — 标准 OpenAI Chat Completions 格式,适用于大多数 OpenAI 兼容供应商
  • responses — OpenAI Responses API 格式
  • anthropic — Anthropic Claude 原生 API 格式
  • google — Google Gemini 原生 API 格式

供应商面板操作流程

  1. 设置 → 模型提供商 → 点击 添加供应商
  2. 从预设列表选择类型(同一类型可创建多个实例)
  3. 填写 名称API KeyBase URL默认模型 ID
  4. 选择 传输协议(大多数国内供应商选 chat)
  5. 可选:设置 推理强度联网搜索最大输出 Token
  6. 点击 保存
  7. 点击实例右上角的 启用 按钮将其设为默认供应商

模型列表

每个供应商可以配置多个模型。在供应商面板底部的「模型列表」区域添加模型 ID 和显示名称。如果模型支持图片分析,勾选 支持图片/视觉。添加后可在输入栏底部的模型选择器中快速切换。

中转站 / free plan 配置(推荐)

CN-Codex 特别适合接中转站和 free plan。官方源、商汤 free coding plan、中转 Grok 可同时存在,随时切换。

  1. 设置 → 模型提供商 → 添加供应商
  2. 选择 OpenAI 兼容自定义(也可复制 DeepSeek 预设后改 Base URL)
  3. 填写:
    • 名称:如 商汤 DeepSeek / 中转 Grok
    • Base URL:中转站或 free plan 提供的 API 地址
    • API Key:对应渠道 Key
    • Wire API:通常选 chat
  4. 在模型列表添加模型 ID,例如 deepseek-v4-flashgrok-4.5
  5. 保存后启用该供应商;输入栏底部可随时切换模型
# 示例:商汤 free plan / 中转站(OpenAI 兼容)
[model_providers.sensetime-deepseek]
name = "商汤 DeepSeek"
base_url = "https://your-free-plan-or-relay.example/v1"
wire_api = "chat"
# api_key 建议在设置面板填写,不必明文写入仓库

[model_providers.relay-grok]
name = "中转 Grok 4.5"
base_url = "https://your-relay.example/v1"
wire_api = "chat"

推荐组合:日常开发用 DeepSeek v4 Flash(官方或商汤 free plan);复杂推理 / 架构设计切中转 Grok 4.5;需要高可用时,给同一模型配置本地资源池多端点做容灾。

审批策略

策略说明
on-request每次操作都需审批(推荐,最安全)
on-failure仅失败时需审批
untrusted仅不可信操作需审批
never始终自动执行,不弹审批
安全提示

never 策略会自动执行所有命令和文件修改,仅在可信且受控的环境中使用。

除了配置文件中的全局策略,输入栏底部的 自动审批开关 也可以临时覆盖审批行为。

MCP 服务配置

MCP(Model Context Protocol)允许连接外部工具服务器来扩展 AI 能力。

在 config.toml 中配置

# stdio 类型
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path"]

# HTTP 类型
[mcp_servers.my-api]
url = "http://localhost:8080/mcp"

# 可选字段
# type = "stdio"
# cwd = "/working/dir"
# env = { FOO = "bar" }
# headers = { Authorization = "Bearer xxx" }
# disabled = false

通过设置面板导入

设置 → 工作区 / MCP → 点击 导入 JSON,粘贴 MCP 配置 JSON 即可批量添加。格式为:

{ "server-name": { "command": "...", "args": ["..."] } }

设置 — 通用

  • 语言 — 中文 / English 切换
  • 主题 — 深色 / 浅色 / 跟随系统
  • Web 服务(手机同步) — 开关控制,开启后在局域网起 HTTP + WebSocket 服务,手机扫码访问
  • 中转服务器 — 配置公网 relay 地址后,手机无需与 PC 在同一局域网。留空使用直连模式

设置 — 模型提供商

左右分栏布局:左侧是供应商实例列表,右侧是选中实例的配置表单。详见上方供应商配置章节。

设置 — 用量追踪

显示 Token 使用统计,支持按 7 天 / 30 天 / 全部 时间范围筛选。包括:

  • 总计输入/输出 Token 数
  • 每日用量趋势
  • 按模型分组的用量统计

设置 — 工作区 / MCP

查看当前运行时路径和已配置的 MCP 服务列表。显示的路径包括:配置文件路径、配置目录、技能目录、插件目录、工作目录。

MCP 服务支持删除和导入操作。

设置 — 插件管理

管理 codey/plugins/ 下的插件。每个插件包含 .codex-plugin/plugin.json 元数据文件。

  • 启用/禁用 — 切换插件的激活状态
  • 卸载 — 从磁盘移除插件目录
  • 导入 Codex — 从本地 Codex CLI 的插件缓存(~/.codex/plugins/cache)一键导入插件

设置 — Skills

查看 codey/skills/ 下的所有技能。每个技能是一个包含 SKILL.md 的文件夹。技能按分类展示:

  • 代码审查
  • GitHub / CI
  • 浏览器 / 测试
  • 项目工具
  • 诊断 / 运维
  • 文档 / 招标
  • 多媒体 / 设计

点击技能可预览其内容。

设置 — 机器人管理

展示所有 AI 创建的机器人列表。每个机器人卡片显示:名称、描述、技能数量、工作流步骤数。点击可展开查看详细的技能列表和工作流配置。支持删除操作。

设置 — SmartBrain

管理 SmartBrain 经验知识库系统:

  • 开关 — 启用/禁用 SmartBrain 功能
  • 经验面板 — 浏览、展开、删除 AI 自动提取的经验条目
  • 知识库面板 — 上传文档到知识库、浏览已有文档、删除、迁移到 OKF 格式、重建搜索索引
  • 搜索 — 在经验和知识库中进行 BM25 全文搜索

设置 — 规则

编辑全局用户规则文件(codey/user-rules.md)。支持 Markdown 格式的自由文本编辑器。

项目规则不在此处管理,而是通过右侧文件树的右键菜单 → 编辑项目规则 来操作。

设置 — Hooks

查看已配置的自动化钩子。Hooks 在特定事件触发时自动执行命令:

Hook 类型触发时机
onAgentStartAgent 开始一个 turn 时执行
onUserPromptSubmit用户提交消息时触发
onAgentEndAgent 完成一个 turn 时执行
onFileChangeAgent 修改文件时执行
onCommandExecAgent 执行命令前触发
onPostToolUse工具执行完成后触发
onSubagentStop子代理关闭时触发

Hooks 可在 codey/config.toml[hooks] 部分或 hooks.json 中配置。

斜杠命令

在输入框中输入 / 会弹出命令面板,支持模糊搜索。

命令说明
/plan让 AI 创建实现计划
/goal切换到目标模式(详见目标模式章节)
/model打开设置面板
/clear清空当前对话的 UI 消息
/compact压缩对话上下文(当上下文过长时手动触发)
/help显示帮助信息
/modify修改当前选中的机器人配置(仅在选中机器人时出现)

附件功能

支持的文件类型

  • 图片 — 所有 image/* 类型(需要模型支持视觉能力)
  • 文档 — PDF、Word(.docx/.doc)、Excel(.xlsx/.xls)、PowerPoint(.pptx/.ppt)
  • 文本 — Markdown、纯文本、CSV、JSON、YAML、TOML、XML、HTML

添加方式

  1. 点击输入框左侧的 回形针按钮,通过系统文件选择器添加
  2. 从右侧 文件树拖拽 到输入框区域
  3. 从系统文件管理器直接 拖放文件 到输入框区域
视觉模型提示

发送图片附件时,如果当前模型不支持视觉能力,会弹出警告提示。需要在供应商设置中为模型勾选「支持图片/视觉」,或切换到支持视觉的模型。

移动端

CN-Codex 内置 Web 服务,可以通过手机浏览器实时同步 PC 端的对话、查看 AI 回复、甚至直接从手机发送消息让 PC 上的 AI 执行任务。支持两种连接模式:局域网直连和公网中转。

局域网模式(手机和 PC 在同一 WiFi)

第一步:在 PC 端开启 Web 服务

  1. 点击侧边栏底部的 设置 按钮,进入 通用 标签页
  2. 找到「Web 服务(手机同步)」区域
  3. 点击 开关 打开 Web 服务
  4. 开启成功后,下方会显示局域网 URL(如 http://192.168.1.100:19527
默认端口

Web 服务默认使用端口 19527。如果该端口被占用,系统会自动分配可用端口。请确保防火墙允许该端口的入站连接。

第二步:手机扫码连接

  1. 在 PC 端点击标题栏右上角的 二维码按钮(QR 图标)
  2. 弹出窗口中会显示一个二维码和对应的 URL 地址
  3. 用手机的 相机 或任意 扫码 App(微信扫一扫、浏览器扫码等)扫描该二维码
  4. 手机浏览器会自动打开 CN-Codex 移动端页面
前提条件

二维码按钮不会自动启动 Web 服务。如果未开启 Web 服务就点击二维码按钮,会提示「Web 服务未启动 — 请前往 设置 → 通用 开启 Web 服务」。必须先在设置中开启 Web 服务。

第三步:使用手机端

手机端页面功能包括:

  • 顶部状态栏 — 显示「已连接」(绿色圆点)或「断开」状态,以及返回按钮
  • 对话列表 — 显示 PC 端的最近 20 个对话,当前活跃的对话有高亮标记,如果 PC 端正在某个对话中,手机端会自动跳转到该对话
  • 聊天界面 — 用户消息以气泡形式显示,AI 回复支持 Markdown 渲染和代码高亮,流式输出时有打字动画效果
  • 工具调用卡片 — 当 AI 调用工具时,手机端显示工具名称卡片(如 shell、read_file 等)
  • 发送消息 — 底部输入框可以直接发送消息,消息会传到 PC 端的 AI 引擎执行
实时同步

手机端通过 WebSocket 保持实时连接。PC 端 AI 正在执行的任务、流式输出的回复内容,都会即时推送到手机。连接断开时会每 3 秒自动重连。

公网模式(中转服务器远程控制)

如果你的手机和 PC 不在同一局域网(例如在外面用手机远程控制家里的 PC),需要部署一台中转服务器(Relay Server)。

工作原理

中转服务器的通信架构如下:

手机浏览器  ←→  中转服务器(公网)  ←→  PC 端 CN-Codex
                  ↑                        ↑
            访问 /m/{房间ID}       WebSocket 连接到 /pc/{房间ID}
            HTTP 请求代理到 PC      广播 Agent 事件给手机
  • PC 端启动 Web 服务时,与中转服务器建立 WebSocket 长连接,注册一个唯一的「房间 ID」
  • 手机访问中转服务器的 /m/{房间ID} 页面,加载移动端 SPA
  • 手机发送的 HTTP 请求由中转服务器代理转发给 PC 端处理
  • PC 端的 AI 执行结果通过中转服务器广播给手机的 WebSocket 连接
  • 断开时自动重连(PC 端 5 秒重试,手机端 3 秒重试)

中转服务器部署

CN-Codex 项目自带 relay-server 程序,部署到任意一台有公网 IP 的 Linux 服务器即可实现远程控制。

服务器要求

  • 一台有公网 IP 的 Linux 服务器(阿里云、腾讯云、AWS 等均可)
  • 开放 8080 端口(默认端口,可修改)
  • 最低配置:1 核 1GB 内存足够(中转服务器只做消息转发,不运行 AI)

方案一:Windows 交叉编译 + 上传(推荐)

在你的 Windows 开发机上编译出 Linux 可执行文件,然后上传到服务器部署。

第一步:构建移动端前端

在 cn-codex 项目根目录执行
cd mobile-web
pnpm install
pnpm build

构建完成后,项目根目录会生成 mobile-dist/ 文件夹,包含移动端 SPA 的静态文件。

第二步:交叉编译 Relay Server

进入 relay-server/ 目录,运行 publish.bat

cd relay-server
publish.bat

此脚本会:

  1. 使用 cargo-zigbuildcross 交叉编译出 Linux x86_64 的可执行文件
  2. 将编译产物、mobile-dist/、部署脚本打包到 relay-server/publish/ 目录
安装交叉编译工具

如果没有安装 cargo-zigbuild,先执行:
winget install zig.zig
cargo install cargo-zigbuild

第三步:上传到服务器

scp -r relay-server/publish/* root@你的服务器IP:/tmp/cn-codex-relay/

第四步:在服务器上执行部署

ssh root@你的服务器IP
cd /tmp/cn-codex-relay
chmod +x deploy.sh
./deploy.sh

deploy.sh 会自动完成以下步骤:

  1. 复制可执行文件到 /opt/cn-codex-relay/
  2. 复制 mobile-dist/ 静态文件
  3. 安装 systemd 服务单元
  4. 启动服务并设置开机自启

方案二:直接在服务器上编译

如果你的服务器本身有 Rust 开发环境,可以直接在服务器上编译。

第一步:上传源代码

# 上传 relay-server 目录和 mobile-web 目录到服务器
scp -r relay-server mobile-web root@你的服务器IP:/tmp/cn-codex-src/

第二步:构建移动端前端

# 需要服务器有 Node.js 和 pnpm
cd /tmp/cn-codex-src/mobile-web
pnpm install && pnpm build
# 将 mobile-dist 放到 relay-server 目录下
cp -r ../mobile-dist /tmp/cn-codex-src/relay-server/mobile-dist

第三步:一键编译+部署

cd /tmp/cn-codex-src/relay-server
chmod +x deploy/setup.sh
sudo ./deploy/setup.sh

setup.sh 是全自动脚本,会自动安装 Rust(如需)、编译 release 版本、安装到 /opt/cn-codex-relay/、配置 systemd 服务、开放防火墙端口。

验证部署

# 查看服务状态
systemctl status cn-codex-relay

# 查看实时日志
journalctl -u cn-codex-relay -f

# 在浏览器中访问测试
curl http://你的服务器IP:8080/health
云服务器安全组

如果使用阿里云、腾讯云等云服务器,除了系统防火墙,还需要在 云控制台的安全组 中添加入站规则,放行 TCP 端口 8080。否则外网无法访问。

服务管理命令

操作命令
查看状态systemctl status cn-codex-relay
重启服务systemctl restart cn-codex-relay
停止服务systemctl stop cn-codex-relay
查看日志journalctl -u cn-codex-relay -f
开机自启systemctl enable cn-codex-relay(部署脚本已自动设置)

在 PC 端配置中转服务器

服务器部署完成后,需要在 PC 端的 CN-Codex 中配置中转地址:

  1. 打开 CN-Codex → 设置通用
  2. 找到「中转服务器(公网访问)」区域
  3. 填入服务器地址,格式为 http://你的服务器IP:8080
  4. 点击 保存
  5. 如果 Web 服务已开启,需要 关闭后重新开启 Web 服务才能生效
  6. 重新开启后,二维码将指向中转服务器地址(如 http://你的服务器IP:8080/m/xxxxxxxxxxxx
清空中转地址 = 回到局域网模式

如果将「中转服务器」地址清空并保存,重新开启 Web 服务后会恢复局域网直连模式,二维码指向本机局域网 IP。

手机远程使用流程

配置完成后,使用流程与局域网模式完全一致:

  1. 确保 PC 端 Web 服务已开启(且配置了中转服务器地址)
  2. 点击标题栏的 二维码按钮
  3. 手机扫描二维码(此时 URL 指向公网中转服务器)
  4. 手机浏览器打开移动端页面,即可远程查看和操作 PC 上的 AI 对话

此时手机无需与 PC 在同一网络。你可以在外出时用手机监控 AI 执行情况,或直接从手机发送新指令让 PC 上的 AI 处理。

通过配置文件设置中转地址

除了在设置面板 GUI 中配置,也可以直接编辑 codey/config.toml

# 中转服务器地址(不需要尾部斜杠)
relay_server_url = "http://你的服务器IP:8080"

保存后重启 Web 服务即可生效。

内置工具一览

AI 在对话中会根据需要自动调用这些工具(50+)。以下按类别列出常用工具。

文件与目录

read_file读取文件内容
write_file创建或覆盖文件
list_directory列出目录内容
apply_patch应用多文件补丁(增/改/删)
code_review审查当前变更与风险点
update_plan更新多步骤任务计划

命令执行

shell / shell_command执行一次性 Shell 命令
exec_command启动持久交互式会话
write_stdin向持久会话发送输入
close_exec_session关闭持久会话

浏览器与录制

browser_run运行浏览器自动化(goto / click / fill / screenshot / eval 等操作)
recording_control外部浏览器录制控制(launch / show_toggle / read_trace / list_traces)
web_search智能网页搜索(DuckDuckGo + Bing 双引擎,内置防循环)
web_fetch抓取指定 URL 的网页内容,转为可读文本

子代理

spawn_agent启动子代理并行处理任务
wait_agent等待子代理完成
send_input向子代理发送消息
resume_agent恢复子代理
list_agents列出所有子代理
close_agent关闭子代理

记忆与知识

memory_list / read / search / write / update / forget跨对话持久化存储键值对
smartbrain_search跨经验和知识库的统一 BM25 全文搜索
smartbrain_sql_query查询已配置的业务数据库
edit_project_rules读取或写入项目规则文件(.rule.md)
robot_save创建或更新机器人(角色 + 技能 + 工作流节点)

MCP

mcp_list_servers列出 MCP 服务器
mcp_list_tools / mcp_list_resources / mcp_list_prompts列出工具、资源、提示词
mcp_call_tool调用 MCP 工具
mcp_read_resource读取 MCP 资源
mcp_get_prompt获取 MCP 提示词

其他

tool_search搜索可用工具
apps_list / plugin_manageApp 连接器与插件管理
view_image查看图像文件
ocr_image本地 OCR 识别图片文字
image_generateAI 生成图像
echarts_report生成可渲染 ECharts 图表配置
request_user_input向用户提问
request_permissions请求额外权限

常见问题

Q: 如何切换语言?

设置 → 通用 → 语言,支持中文和英文。

Q: 如何切换深色/浅色主题?

设置 → 通用 → 主题,可选深色、浅色或跟随系统。

Q: 对话数据存在哪里?

codey/sessions/ 目录,每个对话一个 .jsonl 文件。

Q: Token 用量怎么查看?

设置 → 用量追踪,可按 7 天 / 30 天 / 全部查看。数据存在 codey/usage.db SQLite 文件中。

Q: 初始化失败怎么办?

检查供应商配置是否正确(API Key、Base URL)。状态灯变红时,侧边栏会出现「重试」按钮,聊天区域会出现「打开设置」按钮。

Q: 图片附件发送后提示不支持?

需要当前模型支持视觉能力。在供应商设置中为对应模型勾选「支持图片/视觉」,或切换到其他支持视觉的模型。

Q: 项目与通用对话有什么区别?

项目绑定本地文件夹,支持目标模式和机器人,AI 在该目录下工作。通用对话不绑定目录,仅支持普通聊天。详见项目与对话章节。

Q: 自动审批和配置文件中的 approval_policy 有什么关系?

approval_policy 是全局策略,控制哪些操作需要审批。输入栏底部的「自动审批」开关是一个临时覆盖——开启后除了 AI 主动提问(request_user_input)的场景,其他审批都自动通过。

Q: 如何让 AI 使用 /plan 和 /compact?

在输入框中输入 /plan 后选择命令,AI 会制定实现计划。输入 /compact 会触发上下文压缩,当对话过长导致模型上下文窗口接近满时使用。

Q: 支持哪些操作系统?

目前主要支持 Windows 10 及以上版本。

Q: 可以接中转站吗?比如 Grok 4.5 / 聚合站?

可以。设置 → 模型提供商 → 添加 OpenAI 兼容或自定义供应商,填写中转 Base URL、API Key,再添加对应模型 ID(如 grok-4.5)。官方源、free plan、中转站可同时保存,随时切换。

Q: 推荐怎么配才省钱又好用?

日常开发优先用 DeepSeek v4 Flash(官方或商汤 free coding plan);复杂推理 / 架构设计可切到中转 Grok 4.5;需要高可用时,给同一模型配置本地资源池多端点做容灾。

获取帮助