为什么 AI 在 win 平台天天都在肘击 powershell?🫪

shadowyue 2026-09-01 17:22 1

powershell 如此难用吗,大模型都绷不住🫪

最新回复 (76)
  • tomyark123 09-01 17:22
    1
    加 skills 没有改善吗
  • ruanimal 09-01 17:24
    2
    脑瘫的 "\" 路径符号,导致模型的 shell 命令很容易出问题,比如遇到转义。。
  • yafoo 09-01 17:53
    3
    每次执行命令都是错几次才成功
  • shadowyue 楼主 09-01 17:56
    4
    我已经绷不住装了 wsl
  • Duolingo 09-01 18:03
    5
    在本站别人那抄来的适用于 codex 的 AGENTS.md ,自己略微改了一下,其它 agent 改改也能用:

    ```
    ## 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`。
    ```
  • timnotom 09-01 18:09
    6
    pi agent 默认用的是 git bash ,感觉问题不大? 体验就还行
  • lisxour 09-01 18:12
    7
    @shadowyue 你装了 wsl 之后,命令调用可能宿主 wsl 两个环境混着调用,包括前端一些库是需要编译成本地代码的,很容易命令报错,你楼下的可以用,写了提示词好很多了
  • zxjxzj9 09-01 18:12
    8
    @timnotom 想要个补全卡的要死. 和 zsh 相比各种功能少的可怜,最后还是装了 wsl...
  • mmdsun 09-01 18:16
    9
    codex 会这样吧 Claude Code 除非你设置了 CLAUDE_CODE_USE_POWERSHELL_TOOL 才会用系统原生命令。
  • zed1018 09-01 18:18
    10
    其实我发现不光是 pwsh ,zsh 也经常肘击,时不时就出现转义导致的拼接出现问题。
  • NewYear 09-01 18:40
    11
    @ruanimal #2

    你说的是路径里的\符号吗?

    事实上从 win95 就完全兼容用/代替\了。

    这导致了什么问题吗 0 0 、
  • yippees 09-01 18:44
    12
    被 ai psw cmd 转义折腾得,,现在直接让它写个 py / js 运行了.
  • yiyiwa 09-01 18:54
    13
    windows 下,还有比 pwsh 更加好的吗?这个才是原生啊。
  • tianhehechu 09-01 19:01
    14
    因为早年互联网的教程、github 的 README ,都有一种奇怪的习惯:

    假装个人用户占比最大的 Windows 从未存在,

    然后在讲解操作命令的时候,只给出 Linux 命令;

    在演示图形操作的时候,录制 Mac 操作操作视频、贴 Mac 操作截图 或者使用 HTML 渲染一个 Mac 窗口作为装饰。

    后来训练 AI ,从网络上爬取教程。AI 自然就更熟悉 Linux / Mac 命令。

    Mac 搭了 Linux 的便车。
  • netlous 09-01 19:06
    15
    @tianhehechu 好几个倒反天罡的点,都不知道该如何评论了
  • CuteGirl 09-01 19:21
    16
    各种反人类设计 都不想吐槽
  • cellsyx 09-01 19:27
    17
    用的人少,训练数据少,AI 容易出错
    恶性循环了
  • crocoii 09-01 19:39
    18
    不如当初继续发展 dos ,现在的 powershell 命令简直没法看。
  • ashuai 09-01 19:46
    19
    @tianhehechu 有没有一种可能,win 用户 99.9999%不用 cli
  • coolcoffee 09-01 19:53
    20
    @tianhehechu 大家都偏向用 Linux 作为生产环境,自然是以对齐生产环境的语法为准。

    Windows server 和 SQL server 的授权费用现在仍然不是小公司能玩得起的,
  • liudon 09-01 20:04
    21
    前段时间折腾了一个 windows 应用,实在是太难了。。。
  • qiubo 09-01 21:22
    22
    因为这个原因换了 mac
  • Retas 09-01 21:36
    23
    是的,WSL 才是归宿
  • CatCode 09-01 22:23
    24
    作为一个 Win/Linux 双修用户,我的猪脑子都能兼容 Windows Powershell/Powershell 7/Bash ,不知道为啥 AI 还玩不转
  • lujiaosama 09-01 22:28
    25
    凑活用吧。安装 PowerShell7 和 RG 。 然后全局 AGENTS.MD 里加入以下内容

    ```
    ## Windows 与命令执行

    - Windows 环境使用当前 PowerShell 7 ;不得调用 `powershell.exe`(当前机器会降级到 Windows PowerShell 5.1 )。除非任务明确要求,不嵌套调用 `pwsh.exe`、`cmd.exe`、Git Bash 、WSL 或其他 shell 。
    - 确需启动独立 PowerShell 7 进程时,使用 `pwsh.exe -NoLogo -NoProfile`,避免加载用户 profile 注入额外命令与配置。
    - 直接使用 PowerShell 语法;避免 Unix 命令及 `cat`、`find`、`where` 等含义不明确的别名或同名程序。
    - PowerShell 字符串和正则在无需变量展开时使用单引号;需要展开时使用双引号,相邻字符有歧义时写 `${name}`。双引号字符串内使用反引号而非反斜杠转义。
    - 多行文本使用 PowerShell here-string ,不使用 Bash heredoc (`<<EOF`)。
    - 将 `foreach`、`if` 等语句块的输出接入管道时,使用 `& { ... } | ...` 包裹,不直接在 `}` 后接 `|`。
    - 命令失败时先检查命令、路径、引号及退出码,不随意切换 shell 。

    ## 检索

    - 文本检索优先使用 `rg`,文件枚举优先使用 `rg --files`,按文件名查找使用 `rg --files | rg`。
    - 不把含 `*` 的路径直接作为 `rg` 的 PATH 参数;文件类型筛选使用 `-g`,目录通配先用 `Get-ChildItem -Directory -Path` 展开为 `FullName` 后再传给 `rg`。
    - `rg` 不可用时,使用 PowerShell 的 `Get-ChildItem` 和 `Select-String`;如需安装工具,先征求用户同意。
    - `rg` 退出码 `1` 表示没有匹配结果,不视为执行错误。
    ```
  • sanxidiot 09-01 22:46
    26
    因为 windows 之前的理念就是一切 ALL IN GUI ,cli 这种东西在微软的理念里面本来就该被 gui 给替代。但是问题是微软大公司病,内部斗争非常严重,导致 gui 没做起来,cli 还只有基本功能。结果到了 AI 时代,agent 需要 cli 而不是 gui ,这直接暴露了微软最大的弊病。事实上,要不是 powershell 勉强在公司内斗中保留下来,否则现在微软在 AI 时代会更加尴尬。
  • PrinceofInj 09-01 22:48
    27
    @CuteGirl PowerShell 可不反人类,比 bash 那些反人类的命令记忆方便多了。PowerShell 反的是 AI ,AI 看多了 bash 的那些莫名奇妙的缩写后不认识 PowerShell 的人类可读命令了。
  • tianhehechu 09-02 01:15
    28
    @netlous 你反驳不了事实,所以哑口无言而已
  • LokiSharp 09-02 01:39
    29
    历史遗留原因 pwsh 有很多个版本,AI 的语料会被交叉污染
  • CivAx 09-02 01:42
    30
    @tianhehechu #28 说得好,希望你能为全世界商业公司最依赖的 CRI 写一份 Powershell compatible layer
  • mxT52CRuqR6o5 09-02 02:18
    31
    我觉得和反不反人类关系不大,跟后训练关系很大,很难想象大模型厂商会用 windows 环境去后训练
  • appleshan 09-02 06:30
    32
    @Duolingo 我已经绷不住了,这是禁止使用不锈钢刀,优先使用生锈的砍柴刀🤓
  • CuteGirl 09-02 06:45
    33
    @PrinceofInj 如果 PowerShell 的那些命令和 bash 比都不算反人类 那我真的无话可说
  • maolon 09-02 06:49
    34
    openai 买了一堆 mac 用来专项训练模型的 computer use 和 terminal use ,但是你从来没听说 openai 买了哪家的 windows 机器来专项训练这个
  • xiangran0028 09-02 06:51
    35
    年初放弃 win 了,改用 mac 开发嵌入式之后爽的一批
  • Msxx 09-02 07:33
    36
    一部分原因是默认安装 powershell5 导致的,powershell7 问题就能明显减少,但又不是默认版本,导致 AI 为了兼容性也经常使用 5 的写法,不过 ChatGPT5.6 在这方面有明显改善了,之前 ChatGPT5.5 经常出问题。
  • PrinceofInj 09-02 07:59
    37
    @CuteGirl 考你一下 get-netadapter 这个 cmdlet 是做什么的?不要查,直接猜。另外 ss 是干什么的?也不要查,直接猜。
  • privater 09-02 08:08
    38
    历史渊源吧,ai 研究是从大学实验室出来的,而大学里面 CS 基本 linux + Mac 占了绝对的主流。
    哪怕是 10 多年前还在深度学习时各种 python ,jupyter 的东西都是主流的演示和教程环境了,如今的 AI 不过是延续了这个习惯,Windows 是真的小众。

    反倒是国内,因为当初盗版 Windows 的流行,让 Win 成了绝对的办公主流平台,反而逆向影响到了大学和研究部门的倾向和采购。举个例子,海外的任何网站和服务都不需要安装 IE 插件,而 10 多年前各种学校还是银行 IE 插件都是主流,你即便是用 Mac 或者 linux 都寸步难行,挂个虚拟机跑 IE 都是刚需。

    时间再往前,大家也发现 MS 这公司别看 20 年前是巨人,在如今的世界认知范围里面都是二流存在,其中就包括他家各种内斗和抢夺资源导致自己的技术很难服人,所以即便是 powershell 也没法成为事实上的主流,而本部还有 wsl 这类东西挖墙脚。简单来说就是技不如人,理不服众,你还有去追随这种非主流就是自己负担概念转换成本了。
  • junyee 09-02 08:18
    39
    我自学了一堆语言和脚本.唯独这个 powershell 学不进去.
    可能是碰巧没去学 C#.
    而且 powershell 版本太多,换个环境就不一定能完整 执行,当然这其中有版本和精简原因,而不像 linux 所有 shell 都支持 ash.

    批处理入门快,但是上限低,坑也同样多. 如没有统一的转义符. '/' 用在了路径符, '^' 在某些情况也会出问题(这个符号在正则时又被常用到),有的命令需要使用双符号来转义 . 交互式和批处理又不一样. 没有 stdout 输出捕获符导致只能用 for ,这又带来更多天坑.
    然后 win32 历史原因,代码页,换行符又会带来一堆异想不到的问题.
  • zuosiruan 09-02 08:44
    40
    powersbell7+,我用的倒是非常流畅。
  • ko20 09-02 09:04
    41
    老实说因为这个原因换了 Linux
  • fredweili 09-02 09:10
    42
    美国开发者都是 mac ,win ? who care?
  • DoomSlayer 09-02 09:17
    43
    @zxjxzj9 试试 oh my posh
  • zealotxxxx 09-02 09:19
    44
    你没发现因为 ai 的缘故,跟 ai 相关的应用几乎都是 mac + win 么。而且大多数还都是 mac 先上。
  • skinny 09-02 09:28
    45
    管道结果是一个坑,你不能确定返回值是一个对象还是一个数组,除非你强制转换成数组。
    部分命令因为历史原因有坑,为了保证兼容性坑也保留了,比如删除命令的递归搜索删除,它的命令参数和直觉非常不符,必需搭配递归查询再通过管道删除。
    写脚本时按推荐风格是应该使用完整拼写的,但是它又提供很多缩写别名,很多人图省事就全是缩写,AI 都学了忘,所以写得差
  • Rorysky 09-02 09:29
    46
    我记得去年 ai coding 能力还不是那么好的时,让 kimi 写了一个 powershell 脚本,整整写了一天,大概用了 50% 月额度,主要坑就是 中文编码 和版本支持啥的问题。当然我是在 mac 上让它写的
  • vioulo 09-02 09:35
    47
    之前用 codex 会给代码里面加其他编码的字符,经常是改下代码,代码里面的中文注释就乱码了,我还每次让它修。我后面就直接用 linux 解决了
  • coconne 09-02 09:39
    48
    装 fastctx ,然后让 ai 帮你写个 powershell7 的规范(有部分 win 系统命令还是需要 powershell )
  • coconne 09-02 09:40
    49
    不过 fastctx 只支持 codex/cli ,忘记说了
  • cloudzhou 09-02 09:40
    50
    @tianhehechu 事实个鬼啊,别说 PowerShell ,之前的 window cmd 我就没见几个人用过
    你这就叫倒置因果,不是什么坏习惯,而是 windows 的命令行,从来不是占主流
    unix/linux 世界本来留下丰富的文档,而 ai 天然本文友好,这些知识库手到擒来

    朋友们,https://man7.org/linux/man-pages/man1/man.1.html 庞大的 man 文档世界
    每一条命令,每一个 libc 关键原语,都在这里详细的说明者,可以说从计算机体系诞生延续到现在,数代人的积累
  • tf2 09-02 09:44
    51
    powershell 算勉强能用。。

    cmd 那一坨你写都头痛。。
  • richiewu 09-02 10:13
    52
    @PrinceofInj AI 又不需要见文生义,要的是一致性的训练数据,要的是输出也是标准输出流方便解析
  • tianhehechu 09-02 10:26
    53
    @cloudzhou 看清我的原文了吗,命令好、图像操作演示,甚至官方文档示例,都拿 Mac 举例。
  • cloudzhou 09-02 10:29
    54
    @tianhehechu 你有没有想过,如果开发者本身不是使用 Mac ,或者类 Unix 系统,列举的命令之类的,还真没有太多人,本来 Windows 开发的,然后还专门给你转成 Max/Unix 命令

    “然后在讲解操作命令的时候,只给出 Linux 命令;”
    我反驳的,就是你这一点,如果自己开发用 Windows ,大概率就会带上 Windows 的开发文档,包括命令
  • nosay 09-02 10:32
    55
    @tianhehechu #14 对对对,别人做个演示,还得特意买个 Mac 是吧?今日笑点被你承包了
  • Hansah 09-02 10:39
    56
    我是用 win11+PS7 ,没遇到你们说的问题啊
  • ShadowPower 09-02 10:51
    57
    倒不是 powershell 难用
    只是大模型训练数据里全是 bash
    我用 fish ,出问题的概率都比 bash 大
  • xiangyuecn 09-02 10:54
    58
    为什么不直接内置一个 python node java 还能固定环境版本 还能跨平台,随便用个都行啊,几十 G 都可以占用 还差这几十 M 吗🙂

    本身很多东西就得装 python 直接内置一个多好
  • lanfeng579 09-02 11:03
    59
    @richiewu 所以楼主说的是反 AI ,但是不反人类
  • Zenon 09-02 11:05
    60
    @tianhehechu #14 正经人谁用 Windows CLI 啊
  • marcong95 09-02 11:14
    61
    Win 10 + PS 5.1 体感还好,遇到的主要还是 GBK 编码导致的问题
  • v2exgo 09-02 11:32
    62
    @tianhehechu #14 有没有一种可能,奇怪是你,而不是互联网上所有的教材
  • v2exgo 09-02 11:37
    63
    2026 年了,就别用 Windows 进行开发了。
  • Ryanzlab 09-02 11:44
    64
    为什么不装 powershell7 和 WSL2,你基本上不会遇到大战 powershell 的情况。。。
  • kaf 09-02 11:55
    65
    用 git 命令行不就好了
  • SomeBottle 09-02 12:14
    66
    确实应该还是后训练中 powershell 的相关数据少了的缘故,对模型来说其 shell 母语更多是 Unix 系的,这也就会导致写 powershell 命令时出现转义出错、不知道其对变量名大小写敏感等问题,严重的时候会造成毁灭性的数据误删
    (一个 Codex 的真实案例就是 Agent 在一个脚本中用 $home 表示临时目录(因为临时目录名字里含有 home ),随后删除这个临时目录,$home 在此等同于只读的 $HOME ,powershell 不允许赋值,但不会阻止后续删除的执行,因此造成了严重的数据损失)。

    Windows 上开发的话尽量还是用 Git Bash 或者 WSL 吧。
  • duolanengda 09-02 13:35
    67
    我其实没搞懂,明明加几句 prompt 就能让 agent 使用 pwsh 能少出现不少问题,为什么 codex 和 claude 偏偏不这么做吗,是不是 openAI 和 Anthropic 的人自己也几乎不用 Windows
  • jaylengao 09-02 13:40
    68
    已经全部切到 Wsl 了,WezTerm+Herdr ,体感良好。
  • rb6221 09-02 13:48
    69
    很多人都在说什么开发者都用 Linux/mac 云云,有没有想过,当 coding 需求增长见底的时候,你的用户人群已经开始有越来越多的办公领域小白,那你还不用 win 平台语料去加强训练,怪我是吧?那就别怪我用钱投票了
  • visitantzj 09-02 13:49
    70
    说反了,cmd/vbs 也好各种 shell 也好才是真反人类,长时间不用就记得一团浆糊;一直觉得 Powershell 这个命令体系设计得太天才了,以前没 AI 的时候经常靠命令行提示就能折腾个八九不离十,没错,就是纯靠猜能给你整出来。Bash 顺手纯粹是用得多习惯了,非说好那才叫斯德哥尔摩。
  • Geon97 09-02 14:08
    71
    难用微软偏要设计出来反人类的东西,我直接就 git bash
  • seenthewind 09-02 14:09
    72
    不建议在 windows 上用 agent ,我在 mac 和 Linux ( ubuntu )上都部署过不同的 agent 。

    同样的事情,在 windows 上消耗 token 的速度是最快的,甚至很快就都达到 token 上限。(我用的频率不高,之前不怎么达到)

    我只能理解是国外大多的 agent 都不是在 windows 原生设计的,所以对 win 的支持差到离谱。
  • sagnitude 09-02 14:17
    73
    deepseek harness 会自动用 pwsh 用的挺好的,没怎么见报错
  • cj941030 09-02 14:18
    74
    终于有人发这个贴了。再加上有些客户端,包括 codex 之前有版本有 bug ,错误的跑到 wsl 执行命令,本机环境乱的跟坨 x 一样,到处报错
  • unused 09-02 14:37
    75
    CLI 在 *nix 是一等公民,在 Windows 上是二等
  • netlous 09-02 14:50
    76
    @tianhehechu 如果有人说人类是靠着头发排开空气产生浮力来走路,我根本无力争辩
* 帖子来源V2EX
返回