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

3 天前
 shadowyue

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

10117 次点击
所在节点    程序员
93 条回复
liudon
3 天前
前段时间折腾了一个 windows 应用,实在是太难了。。。
qiubo
3 天前
因为这个原因换了 mac
Retas
3 天前
是的,WSL 才是归宿
CatCode
3 天前
作为一个 Win/Linux 双修用户,我的猪脑子都能兼容 Windows Powershell/Powershell 7/Bash ,不知道为啥 AI 还玩不转
lujiaosama
3 天前
凑活用吧。安装 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
3 天前
因为 windows 之前的理念就是一切 ALL IN GUI ,cli 这种东西在微软的理念里面本来就该被 gui 给替代。但是问题是微软大公司病,内部斗争非常严重,导致 gui 没做起来,cli 还只有基本功能。结果到了 AI 时代,agent 需要 cli 而不是 gui ,这直接暴露了微软最大的弊病。事实上,要不是 powershell 勉强在公司内斗中保留下来,否则现在微软在 AI 时代会更加尴尬。
PrinceofInj
3 天前
@CuteGirl PowerShell 可不反人类,比 bash 那些反人类的命令记忆方便多了。PowerShell 反的是 AI ,AI 看多了 bash 的那些莫名奇妙的缩写后不认识 PowerShell 的人类可读命令了。
tianhehechu
2 天前
@netlous 你反驳不了事实,所以哑口无言而已
LokiSharp
2 天前
历史遗留原因 pwsh 有很多个版本,AI 的语料会被交叉污染
CivAx
2 天前
@tianhehechu #28 说得好,希望你能为全世界商业公司最依赖的 CRI 写一份 Powershell compatible layer
mxT52CRuqR6o5
2 天前
我觉得和反不反人类关系不大,跟后训练关系很大,很难想象大模型厂商会用 windows 环境去后训练
appleshan
2 天前
@Duolingo 我已经绷不住了,这是禁止使用不锈钢刀,优先使用生锈的砍柴刀🤓
CuteGirl
2 天前
@PrinceofInj 如果 PowerShell 的那些命令和 bash 比都不算反人类 那我真的无话可说
maolon
2 天前
openai 买了一堆 mac 用来专项训练模型的 computer use 和 terminal use ,但是你从来没听说 openai 买了哪家的 windows 机器来专项训练这个
xiangran0028
2 天前
年初放弃 win 了,改用 mac 开发嵌入式之后爽的一批
Msxx
2 天前
一部分原因是默认安装 powershell5 导致的,powershell7 问题就能明显减少,但又不是默认版本,导致 AI 为了兼容性也经常使用 5 的写法,不过 ChatGPT5.6 在这方面有明显改善了,之前 ChatGPT5.5 经常出问题。
PrinceofInj
2 天前
@CuteGirl 考你一下 get-netadapter 这个 cmdlet 是做什么的?不要查,直接猜。另外 ss 是干什么的?也不要查,直接猜。
privater
2 天前
历史渊源吧,ai 研究是从大学实验室出来的,而大学里面 CS 基本 linux + Mac 占了绝对的主流。
哪怕是 10 多年前还在深度学习时各种 python ,jupyter 的东西都是主流的演示和教程环境了,如今的 AI 不过是延续了这个习惯,Windows 是真的小众。

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

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

批处理入门快,但是上限低,坑也同样多. 如没有统一的转义符. '/' 用在了路径符, '^' 在某些情况也会出问题(这个符号在正则时又被常用到),有的命令需要使用双符号来转义 . 交互式和批处理又不一样. 没有 stdout 输出捕获符导致只能用 for ,这又带来更多天坑.
然后 win32 历史原因,代码页,换行符又会带来一堆异想不到的问题.
zuosiruan
2 天前
powersbell7+,我用的倒是非常流畅。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1238722

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX