Claude Code 自定义斜杠命令实战:用 /codex 串联 DeepSeek 开发与 Codex 交叉评审
本文不是理论堆砌,而是用一个真实可用的案例——在 Claude Code 里自定义/codex命令,把编码任务一键委派给 WSL 里的 OpenAI Codex CLI——完整演示自定义命令的写法、原理与踩坑点。一、为什么要自定义命令Claude Code 是 Anthropic 官方的终端 AI 编程助手,内置了/clear、/review、/permissions等斜杠命令。但实际工作中你总有一些高频、固定的诉求,比如:把任务交给另一个 AI CLI(Codex / DeepSeek)去做固定的代码审查流程每次开会前的项目状态汇报一键初始化新模块的目录结构如果每次都手动复述一堆提示词,又累又容易漏。自定义斜杠命令就是解决这个问题的:把一个 Markdown 文件变成一个命令,输入/命令名即可触发。二、原理:命令就是一个 Markdown 文件Claude Code 的斜杠命令本质是一个 Markdown 文件(经典 commands 格式;并入 Skills 后,入口同样是 Markdown YAML frontmatter),分为两部分:1. Frontmatter(元数据)用---包裹的 YAML,声明命令的描述、参数提示、可用工具等:---description:命令在 / 菜单里的说明文字argument-hint:提示用户该输入什么参数allowed-tools:允许 Claude 使用的工具,如 Bash(*)model:指定该命令使用的模型---2. 正文(给 Claude 的指令)Markdown 正文是注入给 Claude 的提示词,里面有特殊的占位符:占位符作用$ARGUMENTS你输入/命令 内容中的内容整体替换进来$1$2…按空格切分的位置参数:第一个是$1、第二个是$2,支持${3:-默认值}缺省写法$ARGUMENTS[N]0 起算的索引写法,$ARGUMENTS[0]即第一个参数${CLAUDE_SESSION_ID}当前会话 ID!命令注入命令输出,如!git status⚠️ 网上流传的$JSON_ARGS、$PROMPT_FILE等变量未见于官方文档,不要依赖。工作流程:你输入/codex 帮我重构这个模块→ Claude Code 读取codex.md内容,把$ARGUMENTS替换为帮我重构这个模块 → 作为指令注入 Claude → Claude 按指令执行。三、命令放在哪里?位置作用范围.claude/commands/xxx.md(项目目录内)仅当前项目可用,可随仓库提交共享~/.claude/commands/xxx.md(用户主目录)所有项目全局可用版本提示:commands/目录是兼容的旧格式。Claude Code 已把自定义命令并入 Agent Skills 标准,当前推荐写法是.claude/skills/命令名/SKILL.md(项目级)或~/.claude/skills/命令名/SKILL.md(用户级)。frontmatter 与正文写法一致,还支持disable-model-invocation、context: fork等新字段。本文案例基于经典 commands 格式,同样适用于 Skills。个人建议:通用的工具类命令放用户目录(全局),业务相关的放项目目录。四、实战案例:自定义/codex下面是我机器上的真实配置。分工很简单:开发任务全部在宿主机 Claude Code 里完成,/codex只做代码评审、不做代码修改。输入/codex 评审下刚才的修改,Claude 会自动调用 WSL 里的 Codex CLI 以另一个模型视角审查改动,再把结果汇报回来(命令模板本身也支持写码模式,但那是备用能力,不是我的日常用法)。4.1 前提Windows 上安装了 WSL,并在 WSL 里装好 Codex CLI、完成登录鉴权:npminstall-gopenai/codex codex login# 或配置 OpenAI API Keycodex--version# 确认可执行(本文验证环境:codex-cli 0.144.4)4.2 创建文件新建~/.claude/commands/codex.md,内容如下:--- description: Review code changes with OpenAI Codex CLI running in WSL (read-only by default) argument-hint: [your coding task] allowed-tools: Bash(*) --- Execute the following task using **Codex CLI** installed in WSL. ## Instructions 1. No path conversion needed: WSL inherits the current Windows directory as its working dir. 2. Run Codex (choose the right mode): **For review/analysis tasks (read-only, no writes):** bash wsl bash -c codex exec --sandbox read-only --skip-git-repo-check PROMPT **For coding tasks (writes code — reserved, not the default use):** bash wsl bash -c codex exec --sandbox workspace-write --skip-git-repo-check PROMPT 3. Report the Codex output. If it modified files, summarize the changes. ## Task $ARGUMENTS注:示例相对作者的真实配置做了三处微调——read-only 提到首位、去掉 faster 表述、命令去掉嵌套的cd $(wslpath ...)(原因见 4.3 避坑要点)。你的文件保持原样也能用,但建议按示例版本优化。几个关键点逐一拆解:allowed-tools: Bash(*):本次命令调用期间的免确认预授权,不是工具白名单——未列出的工具仍会按会话权限规则请求。Bash(*)把任意 Bash 命令都免确认,风险较高,建议按实际命令精确匹配(用/permissions验证),不要图省事全放开。正文分 “Instructions”(怎么做) “Task”(做什么):$ARGUMENTS放在最后,用户输入的任务会被替换到这里。指令部分写清步骤,Claude 才能稳定执行。--sandbox等参数属于 Codex CLI,不是 Claude Code 功能:--sandbox read-only表示禁止写入、适合分析任务、风险更低(并不保证更快);--skip-git-repo-check用于非 git 目录。两种模式,日常只用一种:模板同时给了workspace-write(写码)和read-only(评审)两种模式,但我的实际用法是评审专用——永远走read-only,Codex 只出意见、不动文件。开发任务留在宿主机 Claude Code(DeepSeek)做。有副作用、仅手动触发的命令建议加disable-model-invocation: true:否则在 Skills 机制下,Claude 可能因看起来相关而自动调用它。加上后只有你输入/codex才会触发。4.3 实际执行链路你输入 /codex 评审下刚才的修改 ↓ Claude Code 读取 codex.md,替换 $ARGUMENTS ↓ Claude 执行 Bash(无需 cd——WSL 自动继承 Windows 当前目录): wsl bash -c codex exec --sandbox read-only --skip-git-repo-check 评审 main.py 的改动 ↓ WSL 中的 Codex CLI 只读审查,输出分级意见 ↓ Claude 把 Codex 意见汇报给你(评审不动任何文件)可以看到,/codex本质上是一个**“中继命令”**:Claude Code 负责接收任务、桥接 Windows 与 WSL、汇报结果,真正干活的是 Codex CLI。Windows WSL 双环境的避坑要点WSL 继承 Windows 当前目录:Claude Code 在D:\projects\my-app启动时,WSL 的pwd直接就是/mnt/d/projects/my-app,不需要cd,也就不需要路径转换。确需切目录时,先在本机算好路径:wsl wslpath D:/xxx得到/mnt/d/xxx再拼进命令,不要在命令里嵌套$(wslpath ...)——Windows 侧 shell 可能吃掉内层引号导致失败(本案例实际踩过)。警惕嵌套引号:wsl bash -c ... PROMPT叠加了单双引号,任务里出现$、反引号、双引号时极易解析出错,提示词内尽量规避特殊字符。更彻底的方案:直接在 WSL 里安装 Claude Code Codex CLI,同环境运行,路径、目录、引号三类问题全部消失。4.4 使用效果# 评审专用(我的日常用法):让 Codex 以另一个模型视角审刚写完的代码/codex 评审下刚才的修改# 只读分析(read-only 禁止写入,风险更低)/codex 分析一下这个项目的模块依赖,输出一份报告# 模板里保留的 workspace-write 写码模式属备用能力,本文不展开——作者惯例:写码留在宿主机,/codex 不改码实录:本文作者环境为 Windows 11 Git Bash WSL codex-cli 0.144.4,输入/codex 评审下后,Codex 以 read-only 模式输出约 8.7 万 tokens 的分级评审,未改动任何文件。4.5 高频场景:写码交给 DeepSeek,评审交给 Codex在我这里,/codex是评审专用,不做代码修改——分工很明确:开发任务全部在宿主机 Claude Code(经网关路由到 DeepSeek)里完成,写完代码后输入:/codex 评审下刚才的修改Codex 以另一个模型、独立进程的身份在 WSL 里把改动过一遍。这不是炫技,而是实打实的第二个工程师:Claude/DeepSeek 写码时有自己的思维惯性,Codex 的审查视角往往能发现前者没注意到的问题——两个模型互审,比单个模型自查靠谱得多。三个实操要点先说清刚才的修改是什么。Codex 不会自己知道哪些文件是新改的,提示词里必须带上文件清单或 diff。在 git 仓库里,可以让 Claude 先跑git diff --stat把改动文件列进提示词;不在 git 仓库(比如本文写作目录),就直接在提示词里点名文件。更省心的做法是在codex.md正文里追加一条评审规则:## Reviewing recent changes (optional) If the task is to review recent changes: 1. First find out what changed: run git diff --stat (in a git repo), or ask the user for the file list 2. Include the file list / diff in the PROMPT so Codex knows what to review 3. Ask for findings ordered by severity (e.g. P0/P1/P2)评审务必用 read-only:--sandbox read-only禁止 Codex 改动文件,只输出意见。评审场景永远不该出现写操作。让 Codex 分级输出。实测中 Codex 会按 P0(不修会翻车)/ P1(影响可信度)/ P2(可优化)输出,直接照着改即可。上文 4.4 的实录就是一次完整的交叉评审:它揪出了三个 P0 硬伤(嵌套代码块、未验证的占位符变量、嵌套引号坑),其中嵌套引号那条我们后来实机复现、确实会挂——这就是交叉评审的价值:你写完以为没问题,Codex 替你踩了一遍坑。五、进阶:一个命令文件 一个模型切换器同目录下的flash.md和pro.md是更简化的玩法——只用 frontmatter 和一行占位符:--- description: Quick, cost-efficient task model: my-flash argument-hint: [your prompt] --- $ARGUMENTS--- description: Deep reasoning task model: my-pro[1m] argument-hint: [your prompt] --- $ARGUMENTS效果:/flash 总结这个仓库会用便宜的快模型快速跑,/pro 设计这个架构会用更强的深度推理模型——用命令把模型选择固化成了肌肉记忆,不用每次手选。⚠️前提说明:示例中的my-flash、my-pro[1m]不是官方模型名,是作者环境通过网关路由到第三方模型后配置的自定义 ID(已脱敏)。model字段只能填当前/model里可见的模型名,普通官方账户请改用claude-sonnet-5等官方 ID,或先配置好自定义网关再照抄。六、实用小贴士描述要写清楚:description会显示在/菜单里,这是你找命令的入口。参数提示别省:argument-hint提示用户输入格式,避免不知道填什么。分步指令优于一句话:告诉 Claude先做什么、再做什么、最后汇报什么,执行稳定性天差地别。allowed-tools慎用*:免确认授权范围太大有风险,建议按实际命令精确匹配,并在/permissions里验证生效情况。生效时机:Skills 新格式支持会话内热加载;经典 commands 格式保存后新开会话,/菜单里即可看到新命令。团队共享:把命令放进项目.claude/commands/,提交到 Git 仓库,队友 clone 后即得。七、总结Claude Code 的自定义命令看似简单——就是一个 Markdown 文件——但它把提示词 工具策略 环境桥接封装成了一个语义化入口:/codex:评审专用中继器——写码留在宿主机 Claude Code(DeepSeek),评审交给 WSL 里的 Codex,两个模型互审、Codex 永不改码/flash、/pro:模型切换器你的命令:任何你能想到的高频工作流你给 AI 的不是一行提示词,而是一个可复用、可分享、可持续演进的能力插件。这就是自定义命令的价值。如果您觉得有用欢迎点赞、转发、评论、关注。

相关新闻

3分钟免费解锁WeMod Pro:Wand-Enhancer终极完整指南

3分钟免费解锁WeMod Pro:Wand-Enhancer终极完整指南

3分钟免费解锁WeMod Pro:Wand-Enhancer终极完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否厌倦了每月支付WeMod Pro会员…

2026/10/22 13:01:37 阅读更多 →
Unity网格变形插件Deform避坑指南:从核心原理到性能优化实战

Unity网格变形插件Deform避坑指南:从核心原理到性能优化实战

1. 项目概述:为什么你需要关注Unity变形系统? 如果你正在用Unity开发游戏或者制作3D内容,尤其是涉及到角色表情、布料模拟、环境交互或者任何需要让模型“动起来”而不仅仅是“移过去”的效果,那么你迟早会碰到“变形”这个需求。…

2026/10/22 1:39:15 阅读更多 →
如何选择完美免费字体?Montserrat字体家族的终极解决方案指南

如何选择完美免费字体?Montserrat字体家族的终极解决方案指南

如何选择完美免费字体?Montserrat字体家族的终极解决方案指南 【免费下载链接】Montserrat 项目地址: https://gitcode.com/gh_mirrors/mo/Montserrat 你是否曾经为寻找既美观又免费的字体而烦恼?是否在商业项目中担心字体授权问题?或…

2026/10/22 13:05:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →