Repository navigation
-
原生全平台可取消输出管线 (
BindOutput):- 重构核心输出桥接体系,消除因终端、管道或控制台阻塞导致的超时失效或后台协程泄漏;
- Linux:独立重新打开
/proc/self/fd描述符并绑定 Go 运行时 deadline,严格保护原始借用描述符所有权; - macOS:通过
F_GETPATH识别并以非阻塞模式重开终端设备;已有非阻塞管道通过F_DUPFD_CLOEXEC加 deadline;普通阻塞匿名管道安全平滑降级; - Windows 控制台:引入基于 Job Object 的命令作用域管道中继进程,通过
CancelIoEx与CancelSynchronousIo原生实现 Windows 控制台输出的即时中断与无泄漏回收; - Windows 管道:基于 OVERLAPPED 结构与取消重试机制支持同步/异步管道取消,抑制 IOCP 冲突;
- PTY 文件重定向:
xops exec -x交互式命令支持输出重定向至普通文件(如>output.log 2>error.log),严格保证在写入前检查上下文状态,写完后干净恢复原终端。
-
命令解释器组合限制解禁与动态脚本覆盖:
- 彻底打通
xops exec的显式解释器参数(--interpreter、--launch-dialect、--login-shell),现已支持与本地脚本(--shell)、Unix 提权(--sudo)、实时流式显示(--stream)及分主机日志保存(--out-dir)自由组合; - 支持在命令行动态覆盖脚本的解释器设定(覆盖优先级:CLI 显式参数 > Shebang 解析 > 节点持久化配置);
- 脚本与提权全流程支持
bash、sh、zsh与fish四类解释器;非法解释器(如 CMD/PowerShell 脚本或 server 脚本)在调度前安全拦截; - 脚本输入上限支持至 16 MiB(
ssh.MaxCommandInputBytes),支持流式管道与取消。
- 彻底打通
-
OpenSSH 风格全链路多级诊断体系:
xops ssh、xops scp与xops sftp统一引入 OpenSSH 风格的分级诊断日志(写入stderr,与远程命令stdout严格隔离);- 支持
-v(DEBUG1)、-vv(DEBUG2)、-vvv(DEBUG3) 与-q/--quiet,严格遵循 OpenSSH 参数覆盖顺序(例如-qv隐藏进度条但保留诊断,-vq关闭 SSH 诊断但保留传输/初始化诊断); - 连接与握手诊断:清晰展示连接建立、算法协商(AEAD 隐式 MAC 标注为
MAC: <implicit>)、密钥验证及认证成功链(publickey、password、none); - 提权交互诊断:显示 Sudo/Su 模式协商、密码提示词匹配规则(支持识别无尾随空格的 PAM 提示或自定义正则),敏感凭据与载荷自动脱敏;
- SFTP / SCP 传输层元数据追踪:详细展示 SFTP 扩展协商、文件打开/读取/写入/关闭的数据包级交互。
-
SFTP 交互 Shell、文件传输与自动补全增强:
- 词法分词与引号转义:交互与批处理 SFTP 引入全新的分词解析器,完整支持单引号
'...'、双引号"..."(含\"、\\转义)及反斜杠转义(\),含空格的目录与文件名可直接用引号传递; - 存储空间预检 (StatVFS):文件上传前主动调用
StatVFS探测远端磁盘可用存储空间,空间不足时在传输前提前拦截报错,防止半途写入损坏; - 文件级进度跟踪:引入
FileTransferProgress,支持单个大文件传输的平滑进度汇报与上下文取消中断保护; - 跨平台 Shell 补全修复:修复 SFTP 命令行自动补全在 Windows/Unix 间关于路径尾随反斜杠与平台分隔符的处理。
- 词法分词与引号转义:交互与批处理 SFTP 引入全新的分词解析器,完整支持单引号
-
SCP 覆盖语义精确化:
- 重构 SCP 覆盖逻辑,明确区分
--no-clobber(跳过已有目标)与--force(强制覆盖即使大小和 mtime 相同),精准判定本地与远程目标存在性,杜绝误覆盖或意外跳过。
- 重构 SCP 覆盖逻辑,明确区分
-
工程治理、架构规范与 Agent Skill 规范:
- Agent Skill 规范同步:更新
skills/xops-agent/及公开中英文指南,全面对齐解释器组合、引号分词、Windows 控制台支持和录入探针参数; - 架构治理与开发指引:建立
AGENTS.md及docs/development/governance/架构边界地图与跨平台验证门禁; - Windows 安装增强:完善 Windows 平台的安装脚本与安装指引。
- Agent Skill 规范同步:更新
-
依赖升级:
charm.land/bubbletea/v2:2.0.10→2.1.0github.com/charmbracelet/x/ansi:0.11.8→0.11.9golang.org/x/crypto:0.57.0→0.58.0golang.org/x/sys:0.48.0→0.49.0golang.org/x/term:0.46.0→0.47.0golang.org/x/text:0.42.0→0.43.0golang.org/x/sync:0.23.0→0.24.0github.com/ebitengine/purego:0.11.1→0.11.2github.com/godbus/dbus/v5:5.2.2→5.2.4
- SFTP 输入分词解析升级:
SFTP 现已将'、"和\视为分词语法字符。若以往脚本中向 SFTP 输入包含字面反斜杠或引号的特殊文件名,请确保使用了正确的转义。 - 诊断日志流向:
所有-v/-vv/-vvv诊断信息统一写入stderr;与远程命令原本的标准输出彻底解耦。若通过脚本捕获远程输出,请仅读取stdout。 - PTY 与流式/目录日志互斥:
PTY 终端命令(-x)明确禁止与--stream或--out-dir混用,若需重定向交互命令请直接使用标准 shell 重定向符(>file 2>err)。
完整差异:v0.14.0...v0.15.0
What's Changed
Full Changelog: v0.14.0...v0.15.0