Wsl Shell Reliability

根据执行风险自动选择WSL或PowerShell,提升命令成功率。

已扫描
适合谁
使用AI自动化脚本的开发者、需要跨平台命令执行的运维人员
不适合谁
仅在Linux/macOS环境运行的用户、无需处理Windows本地命令的场景
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @cikichen/wsl-shell-reliability

Skill 说明

命令、参数、文件名以原文为准

WSL Shell 可靠性

使用此技能在 Windows 上最大化终端命令的成功率。

此技能不会强制使用 WSL。它遵循可靠性优先的原则:

  • 选择失败风险更低的 shell,
  • 在降级时保持命令意图不变,
  • 永不静默切换 shell。

触发条件

  • Windows 上的任何终端执行任务。
  • AI 生成的、看起来像 bash/POSIX 风格的命令。
  • 因引号、路径或 shell 不匹配导致的重复失败。

一屏决策表

问题若为“是”若为“否”
是否为原生 Windows 任务/工具?使用 PowerShell/CMD下一个问题
是否需要 POSIX/bash 语义?使用 WSL/bash下一个问题
是否需要优先保证 Linux 环境一致性?优先选择 WSL/bash下一个问题
Windows shell 解析风险是否较高?优先选择 WSL/bash下一个问题
两条路径风险都较低?选择组件更少的 shell

示例:

  • 原生 Windows 工具:wingetregnetsh.exe/.msi、服务/系统操作。
  • POSIX 密集型操作:rm -rfexport./script.shgrep/sed/awk、复杂管道。

规则优先级(冲突解决)

当规则出现冲突时,按以下优先级应用:

  1. 原生 Windows 排除项(必须使用 PowerShell/CMD)。
  2. 决策表中的明确信号(对 POSIX 的依赖、高解析风险)。
  3. 降级策略 + 意图保留
  4. 便利性偏好(工具可用性、步骤数量)。

若仍存在歧义,选择执行失败风险更低的 shell。

原生 Windows 排除项(优先使用 PowerShell/CMD)

  • wingetscoopchoco
  • PowerShell 命令、注册表/服务/系统相关命令
  • .msi/.exe 安装流程
  • 针对 Windows 的 msbuild/.NET 打包链

执行协议

  1. 根据决策表选择 shell。
  2. 为所选 shell 生成对应语法(禁止混合语法)。
  3. 执行命令。
  4. 若失败由 shell 引起,则降级至另一 shell。
  5. 严格保留命令意图;仅转换语法。
  6. 明确说明降级行为。

shell 感知的生成规则

  • WSL/bash:允许使用 POSIX 语法。
  • PowerShell:使用 PowerShell 原生引号和转义方式。
  • CMD:仅在任务/工具要求时使用。

不要在 PowerShell/CMD 中直接运行 bash 语法。

WSL 模板

  • wsl.exe -e bash --noprofile --norc -lc "<command>"
  • wsl.exe -e bash --noprofile --norc -lc "cd /mnt/<drive>/<path> && <command>"

快速转换提示(bash → PowerShell)

  • export FOO=bar$env:FOO = "bar"
  • rm -rf <path>Remove-Item -Recurse -Force <path>
  • cp -r a bCopy-Item a b -Recurse
  • mv a bMove-Item a b
  • cat fileGet-Content file

仅在降级时需要时才使用这些转换。

保护机制

  • 永不静默切换 shell。
  • 切换 shell 时绝不改变命令语义。
  • 不为强制单一 shell 而安装工具。
  • 优先使用所选 shell 中已有的工具链。

降级策略

在以下情况降级到另一 shell:

  • WSL 不可用或不稳定,
  • 当前 shell 无法解析该工具,
  • 任务明显为原生 Windows 类型,
  • 命令因 shell 解析/引号不匹配而失败。

降级时需报告:

  1. 哪个命令失败,
  2. 为何切换了 shell,
  3. 命令意图已完整保留。

已知限制

  • 某些企业环境禁用 WSL 安装或执行。
  • VPN/代理/DNS 策略可能导致某一 shell 中的包管理或网络操作失败。
  • 跨文件系统操作可能存在性能不一致。
  • 安全策略可能阻止 PowerShell 中脚本的执行。

在此类情况下,应显式降级并清晰报告约束条件。

参考资料

详细技术说明与示例:

  • [references/REFERENCE.md](references/REFERENCE.md)
  • [references/SCENARIOS.md](references/SCENARIOS.md)
C
@cikichen

已收录 1 个 Skill

相关推荐