PowerShell 和 Codex 在打架?可以试试这份提示词
原文来自 LINUX DO 论坛,楼主 knowckx,标题「PowerShell 和 Codex 在打架?可以试试这份提示词」。本文按可操作顺序整理环境准备与提示词约束,并保留关键规则原文,方便直接复制进
AGENTS.md。
PowerShell 和 Codex 在打架?可以试试这份提示词
最近半年不少人在 Windows 上用 Codex 写代码,却反复遇到同一类问题:模型默认写出 grep、sed、cat、&& 或 Bash heredoc,一到 PowerShell 就报错;改一轮、再错一轮,时间都耗在「这不是 Bash」的拉扯上。
楼主的经验很干脆:
- 先把终端环境统一(PowerShell 7 + Windows Terminal +
rg) - 再用提示词把大模型的命令习惯掰过来
环境不统一,提示词再长也稳不住;提示词不约束,环境再对也会被模型默认的 Bash 习惯拖回去。
01|先统一 shell:安装 pwsh 7
如果还在用系统自带的 Windows PowerShell 5.1,建议先换到 PowerShell 7(pwsh)。现代 Windows 开发环境最好统一到 pwsh 7,再谈 Codex、提示词和排错。
用 winget 安装:
winget install --id Microsoft.PowerShell --source winget也可以从 PowerShell 官方安装页面 下载 MSI 手动安装。
安装后验证版本:
pwsh -v# 期望类似:PowerShell 7.x02|装 Windows Terminal,并设默认配置为 pwsh 7
原生 PowerShell 窗口体验一般;更关键的是,Windows Terminal 可以把 pwsh、Git Bash、SSH 等放在同一窗口管理,支持标签页、分屏和统一字体/编码。
一边让 Codex 在某个标签执行命令,一边看日志或跑服务,效率会高很多。
winget install --id Microsoft.WindowsTerminal --source winget也可从 Windows Terminal Releases 手动安装。
装完后把 默认配置文件设为 PowerShell 7。后续所有提示词、命令和排错过程,都建立在同一个 shell 上,避免「有时 5.1、有时 7、有时又是 Bash」的混用。
03|安装 ripgrep(rg)
rg 是代码仓库里搜文本的利器:快、默认尊重 .gitignore,输出也比 PowerShell 原生搜索更适合直接交给 AI 阅读。
注意:rg 不是 Windows 原生命令,需要单独安装。
# wingetwinget install BurntSushi.ripgrep.MSVC
# 或 Scoopscoop install ripgrep也可从 ripgrep Releases 下载 Windows 包。
安装后重新打开 Windows Terminal,否则当前会话可能还没刷新 PATH。确认:
rg --version04|关键:把 Windows / pwsh 约束写进 AGENTS.md
终端统一只是第一步。真正影响体验的,是明确告诉 Codex:
当前项目用的是 PowerShell,不是 Bash。
大模型训练语料里 Linux / Bash 占比很高。你只说「执行一个命令」时,它很容易下意识写出 Bash 写法——命令在 Linux 上没错,放到 pwsh 里就会炸,或者结果不符合预期。
下面是楼主已经用了几个月的约束片段,可直接复制到:
C:/Users/<userName>/.codex/AGENTS.md
(系统版本可按本机修改,例如 Windows 10 / 11 / LTSC。)
## Windows约束当前环境是 Windows 10 / pwsh7- 默认禁止使用 Bash 语法,除非确定此shell处在 Linux 环境- 不要使用 Bash 引号/转义习惯,在 PowerShell 命令里,复杂正则优先用单引号包裹。- 如果正则本身同时包含单引号和双引号,优先拆成多个简单 rg 命令。- 执行多行 Python 禁止使用 Bash heredoc;改用 PowerShell here-string | python -- pwsh 中,语句块表达式(如 `foreach`、`if`)不能直接作为管道输入。 需要先使用 `$()` / `@()` 包裹,或先赋值给变量。 普通命令输出可直接进入管道,无需额外包裹。- PowerShell 使用 `rg` 时,通配目录必须先用 `Get-ChildItem -Filter` 展开为真实路径,禁止直接把含 `*` 的搜索路径传给 `rg`。这套提示词不是为了「限制」Codex,而是减少它在 shell 之间切换时的冲突。引号、管道、正则、多行脚本这几类一旦错了,让 AI 自己猜着改,往往最费时间。
05|为什么这几条值得长期保留
| 约束 | 解决什么问题 |
|---|---|
| 明确 shell = pwsh7 | 从一开始别默认生成 Bash 命令 |
| 引号与转义 | PowerShell 字符串、正则、变量展开规则不同,先定写法少踩一轮转义坑 |
| 禁止 Bash heredoc | Windows 下没有 Bash heredoc;改用 PowerShell here-string 喂多行 Python |
| 语句块不能直接进管道 | foreach / if 等需 $() / @() 或先赋值;否则反复生成同一种错误写法 |
rg 通配先展开路径 | 先用 Get-ChildItem -Filter 得到真实路径,再交给 rg,更符合 Windows 路径行为 |
经验是:提示词不必写很长,但要把最容易出错、而且会反复出错的地方说清楚。规则稳定后,Codex 命令成功率会明显上升,「请改成 PowerShell」的来回也会少很多。
评论区也有共鸣:引号嵌套错多了还会「降智」;长任务里可以让 Codex 定期回顾 AGENTS.md,避免跑偏。
06|最小落地清单
按这个顺序做一遍即可:
- 安装并验证
pwsh7 - 安装 Windows Terminal,默认配置改为 PowerShell 7
- 安装
rg,新开终端验证rg --version - 把「Windows约束」写入
~/.codex/AGENTS.md(路径按用户名调整) - 开一个真实任务试跑:刻意观察是否还出现
grep/&&/heredoc 等 Bash 习惯
若仍偶发 Bash 写法,可在对话里再补一句:「当前 shell 是 pwsh7,禁止 Bash 语法,请按 AGENTS.md 执行。」
总结
Codex 和 PowerShell 打架,核心往往不是 PowerShell「难用」,而是模型在猜你的 shell。
- 环境统一到 pwsh 7 + Windows Terminal + rg
- 用 AGENTS.md 写清禁止 Bash、引号、heredoc、管道与
rg路径规则
把这两层钉死后,Windows 下用 Codex 开发会稳定一截。
来源:LINUX DO · PowerShell 和 Codex 在打架?可以试试这份提示词(knowckx)
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!





