【学习请教贴】【漫谈】做了一个 skill 来解决 Codex 会被 PowerShell 插手,这对吗?

akk 2026-07-03 03:40 1

省流:想知道我这样操作 AI 的思路合适吗?是否有什么更好的实践之类

我的身份是学生,未来准备走 Agent 开发方向,目前还没上手,只把 Codex 当作许愿壶

请随意点评些什么,一切我都会认真去了解

对于在自己喜欢的方向接触到新奇的观点,我会很欣喜

(当然不是因为很懒,所以说了很久的 Hello Agents 都没去看沉迷于自己制作小垃圾)

(所以也算是借此走出第一步吧)

感谢





起因是看到吐槽 Codex 总被 PowerShell 绊一脚的帖子

发现设置 AGENTS.md 配合 PowerShell 7 可以有效解决

收集了一堆“约束”(我该这么称呼它吗?)

想整合一下,发现越做越长,交给 PRO 总结改进后更是扩展到上千行


所以:诶这不是很适合 skill 吗?如果要教 GPT 怎么正确使用 PowerShell 的话

就有了这个想法





写之前参考了一些帖子,GPT 却说 Codex 我有自己的节奏听我的就好


其实我对这些的了解聊胜于无,仅仅知道 skill 可以渐进式加载(要用什么就看什么)教模型怎么做

在和 GPT 叽里咕噜深入交流之后写下了以下 skill



点击展开 AGENTS.md
# 全局 Codex 规则

* 默认使用简体中文回复,除非用户明确要求英文。
* Codex 执行命令时优先使用 PowerShell 7;不要默认使用 `cmd.exe`、Windows PowerShell 5.1、Git Bash 或 WSL。
* 如果当前 agent shell 已经是 PowerShell 7,直接执行命令,不要无脑嵌套启动 `pwsh.exe`。
* 如果需要显式调用 PowerShell 7,使用 `C:\Program Files\PowerShell\7\pwsh.exe`。
* 命令应尽量非交互执行,避免 REPL、watch、TUI、`Pause`、`Read-Host`、需要人工输入的命令。
* 不要在 PowerShell 中混用 Bash 风格转义;尤其不要用 Bash 风格的 `\"` 转义双引号。
* 新增或修改文件统一使用 UTF-8 无 BOM。
* 处理中文文件时,不要因为终端乱码就把源码中文替换成 `?`、拼音或 Unicode 转义。
* 不绕过 Codex sandbox、approval、workspace 或 network 限制。
* 不擅自执行破坏性操作,例如批量删除、系统级修改、`git reset --hard`、`git clean -fdx`。
* 不打印、保存或提交 secrets、tokens、API keys、cookies、私钥。

## PowerShell Skill 自动使用规则

当任务涉及以下任一情况时,必须自动使用 `windows-powershell-guard` skill,不需要用户显式提醒:

* 构造、执行、修改或解释 Windows / PowerShell 命令;
* 使用 `pwsh.exe`、`rg`、`git`、`ssh`、`npm`、`pnpm`、`python`、`curl` 等 CLI;
* 命令包含复杂引号、`$变量`、正则、JSON、YAML、TOML、中文路径、空格路径;
* 通过 PowerShell 管道、here-string 或 stdin 向 SSH / Linux shell 发送命令或脚本;
* 读取、写入或修改包含中文的文件;
* 生成、修改或执行 `.ps1` 脚本;
* 判断外部命令退出码;
* 捕获日志或处理大输出;
* 删除、覆盖、移动文件;
* 通过 CLI 执行 Git 高风险操作,例如 `reset --hard`、`clean -fdx`、`push --force`、删除分支;
* 通过 CLI 联网安装依赖或访问外部资源,例如 `npm install`、`pnpm install`、`pip install`、`git fetch`、`curl`、`Invoke-WebRequest`。

如果只是简单只读命令,可以按全局简化规则直接执行。

如果不确定是否简单,优先使用 `windows-powershell-guard` skill。




点击展开 SKILL.md
---
name: windows-powershell-guard
description: 自动用于 Windows 原生 PowerShell 7 命令执行、pwsh.exe、shell 命令、rg 正则搜索、git/npm/pnpm/python/curl/ssh CLI 使用、UTF-8 中文文件 IO、空格或特殊字符路径、引号、$variable 展开、临时 .ps1 脚本、外部命令退出码、日志、破坏性文件操作、依赖安装,或任何需要 Codex 构造、运行、调试、解释 Windows PowerShell 命令的任务。不要用于不涉及命令构造或文件操作的纯概念回答。
---

# Windows PowerShell 防护

## 目标

使用该 skill 提升 Windows 原生环境与 PowerShell 7 命令执行的可靠性,并明确安全边界。覆盖 PowerShell 引号与变量展开、UTF-8 与中文文件、`rg` 搜索、临时 `.ps1` 脚本、外部命令退出码、`.cmd` / `.bat` / Node 工具链 shim、日志与大输出,以及删除、覆盖、移动、Git、联网、依赖安装和系统级操作等高风险场景。

## 第一步:先分类任务

执行任何命令前,先判断任务属于哪一类:

A. 简单只读命令
- 如果当前 agent shell 已经是 PowerShell 7,直接执行。
- 不要无脑嵌套启动 `pwsh.exe`。
- 示例:`Get-Location`、`git --no-pager status --short`、简单 `rg` 文本搜索。

B. 包含引号 / regex / JSON / 中文 / 变量 / 特殊路径的命令
- 用变量承载复杂值。
- 避免 Bash 风格转义。
- 文件路径优先使用 `-LiteralPath`。
- 当 PowerShell here-string 或多行文本通过 `ssh` stdin 发送给 Linux `sh` / `bash` 时,把 CRLF 与远端 shell 引号视为命令边界问题。
- 必要时读取 `references/quoting.md`、`references/rg.md` 或 `references/encoding.md`。

C. 多步骤命令 / 循环 / 日志 / 文件编辑 / 退出码处理
- 优先写临时 UTF-8 无 BOM `.ps1`。
- 脚本开头使用标准严格模板。
- 当命令涉及 PowerShell 管道、`foreach` / `if` / `switch` / `try` 等控制流语句接管道、对象收集或格式化输出时,读取 `references/pipeline.md`。
- 必要时读取 `references/temporary-ps1.md`、`references/exit-codes.md` 或 `references/logging.md`。

D. 通过 CLI 执行破坏性 / 联网 / 依赖 / 系统级 / Git 高风险操作
- 先说明影响范围和风险。
- 不绕过 Codex sandbox、approval、workspace 或 network 限制。
- 必要时读取 `references/destructive-ops.md` 和 `references/native-windows-cli.md`。

## 核心执行规则

- Codex 执行命令时优先使用 PowerShell 7。
- 如果当前 agent shell 已经是 PowerShell 7,直接执行命令;不要无脑嵌套启动 `pwsh.exe`。
- 如果必须显式调用 PowerShell 7,使用 `C:\Program Files\PowerShell\7\pwsh.exe`。
- 显式调用 PowerShell 时使用 `-NoLogo -NoProfile -NonInteractive`。
- 不要默认使用 `cmd.exe`、Windows PowerShell 5.1、Git Bash 或 WSL。
- 命令应尽量非交互执行;避免 REPL、watch、TUI、`Pause`、`Read-Host` 和需要人工输入的命令。
- 不要在 PowerShell 中混用 Bash 风格转义,尤其不要用 Bash 风格的 `\"` 转义双引号。
- 复杂值优先放入变量,不要硬拼长命令字符串。
- 路径优先放入变量,并优先使用 `-LiteralPath`。
- 新增或修改文件统一使用 UTF-8 无 BOM。
- 读取或写入文本文件时显式使用 UTF-8。
- 处理中文文件时,不要因为终端显示乱码就把源码中文替换成 `?`、拼音或 Unicode 转义。
- `rg` pattern 包含 `|`、`(`、`)` 或 `\` 时,使用单引号或变量承载 pattern。
- 外部命令退出码必须按命令语义判断;不要把 `rg` exit code `1` 当成执行错误。
- 不绕过 Codex sandbox、approval、workspace 或 network 限制。
- 不打印、保存或提交 secrets、tokens、API keys、cookies、私钥。
- 不在缺少明确用户意图和必要审批时执行批量删除、系统级修改、`git reset --hard`、`git clean -fdx`、`git push --force` 或删除分支。

## Reference 路由

- PowerShell 引号、`$variable`、嵌套 `-Command`:读取 `references/quoting.md`。
- UTF-8、中文文件、乱码、BOM、PowerShell stdin 到 Linux shell 的换行问题:读取 `references/encoding.md`。
- `rg` 搜索、复杂 regex、exit codes `0` / `1` / `2`:读取 `references/rg.md`。
- PowerShell 管道、控制流语句、对象流、`foreach` / `ForEach-Object` 差异:读取 `references/pipeline.md`。
- 多步骤脚本、临时 `.ps1`、严格脚本模板:读取 `references/temporary-ps1.md`。
- 外部命令返回码、`$LASTEXITCODE`、`$PSNativeCommandUseErrorActionPreference`:读取 `references/exit-codes.md`。
- `npm` / `pnpm` / `yarn` `.cmd` shim、`cmd` / `bat` 参数传递、Windows 原生命令:读取 `references/native-windows-cli.md`。
- 日志捕获、大输出、stderr/stdout、`Tee-Object`:读取 `references/logging.md`。
- 删除、覆盖、移动、Git 高风险操作、依赖安装:读取 `references/destructive-ops.md`。

## 输出行为

- 对简单安全命令,保持解释简短。
- 对高风险、破坏性、联网或系统级操作,执行前说明风险和影响范围。
- 命令失败时,区分 PowerShell 语法、引号 / 转义、编码、路径、外部命令退出码、Codex sandbox / network / workspace 权限限制和依赖缺失。
- 完成后简要说明执行了什么、改了什么、验证了什么。
- 不输出冗长无关教程。



各位佬对此,怎么看呢?

最新回复 (0)
    没有回复
* 帖子来源Linux.do
返回