rvs 26.8.43 → 26.8.53 更新概览:MCP 落地、审计增强与谬误澄清
🚨 重要提醒
rvs(rust-verb-shell)是一套面向「人类 + 对话式 AI + 代码 Agent」三类使用者的 Verb-Noun 结构化命令外壳,用 Rust 编写。本文概括 26.8.43 → 26.8.53 共 10 个版本的更新:2026-08-07 至 08-14 一周内 20+ 次提交,命令数从 41 增至 42,另有 MCP 协议层、全局审计层、i18n 文本层多处非命令改动。
适用读者:
- 从 26.8.42 及更早版本升级的老用户;
- 想把 rvs 接入 Agent 工作流(MCP / 审计)的开发者;
- 以及第一次听说「rvs 不是 POSIX shell」的新手。
升级核对:rvs --json -c 'show-version'查看 BuildTime / GitCommit;源码 mtime 晚于 BuildTime 说明跑的是旧二进制,需cargo build重编。
二、谬误溯源
1. 「rvs 是 POSIX shell」——错
rvs 是 Agent 接口:;不分隔命令、$var不展开、2>&1直接拒绝。要 POSIX 能力请包一层bash -c "..."(bash 本身是最可靠的 POSIX 解释器,rvs 不做第二个)。本系列 26.8.2x 已由用户拍板「不兼容 POSIX,保持 Verb-Noun」。
2. 「MCP 还是占位」——错
26.8.35 的 crates/rvs-mcp 确实是占位 crate,但 26.8.44 已基于官方 modelcontextprotocol/rust-sdk 的 rmcp 3.x 落地为可用 stdio server,对外接口版本冻结为 mcp-v1(独立于 CalVer,遵守 12 个月弃用窗口)。
3. 「JSON 输出必须保留反序列化兼容」——错
26.8.51 查证:全仓from_str::<RunReport>零命中,rvs 从不把 JSON 读回结构体(单向输出:构造 → 序列化给 AI/脚本),#[serde(default)]与 Deserialize derive 是死防御,已移除。
三、源码验证(26.8.43 → 26.8.53 版本清单)
| 版本 | 日期 | commit | 要点 |
|---|---|---|---|
| 26.8.43 | 08-07 | 1b65302 | 新增 go-to-bottom(别名 bottom):清屏后提示符落终端底部(crossterm MoveTo 末行) |
| 26.8.44 | 08-10 | cd585dc | rvs 作为 MCP Server 上线:rmcp 3.x stdio,tools/list 由 all_commands() 内省生成(排除 TUI 类),tools/call 走 Command::run() 透传沙盒/审计,入口rvs --mcp |
| 26.8.45 | 08-10 | 9ecc533 | REPL 退出兼容/exit/quit(主循环 / 多行粘贴 / 管道输入三处统一) |
| 26.8.46 | 08-10 | 8806b64 | REPL 中文句号纠正。/→./(fix_zh_dot_slash,仅交互路径,管道不静默改写) |
| 26.8.47 | 08-10 | 2e85d47 | tab 补全支持。/前缀:补全前归一化为./,候选保留用户风格 |
| 26.8.48 | 08-10 | d69b048 | 双击 Esc(终端解析为 Alt+Esc)= Ctrl+C:丢弃当前行、屏幕保留 |
| 26.8.49 | 08-14 | f10d6f0 | associate-rvs:Windows 注册.rvs文件关联;同日 270de65 许可证改 Mulan PSL v2 OR Unlicense 双许可 |
| 26.8.50 | 08-14 | f3bbe58 | RunReport 加 args 字段(外部程序填 argv、exec 填 target/command)+ 全局审计--audit-log <path>(非沙盒也记录,entry 含 how_args) |
| 26.8.51 | 08-14 | 653c88d | 移除 RunReport/SessionInfo 的 Deserialize 死防御(仅保留 Serialize,JSON 单向输出) |
| 26.8.52 | 08-14 | b17e057 | POSIX 文本工具温和引导:awk/sed/grep/tr/cut/sort 等照常透传执行,但 hint 提示结构化替代(search-content 等) |
| 26.8.53 | 08-14 | 1774b93 | ReactOS i686 适配工具链(.cargo/config.toml mingw-w64 链接 + scripts/reactos-shim/ shim.dll / patch_iat.py / serial_sh.c)+ llms.txt 文档索引;支持政策:生产 macOS/GNU-Linux/Win10-11,ReactOS 研究级 |
四、实测数据
cargo test --workspace全绿(26.8.44 起 rvs-mcp 新增 4 单测 + 1 doctest;26.8.51 schema_snapshot 5/5)rvs --mcpstdio 冒烟:initialize → tools/list(含 list-items/read-file,无 TUI 类)→ tools/call show-version 返回rvs v26.8.44正常rvs --json -c 'exec git status'输出含args字段;rvs --audit-log /tmp/a.jsonl -c 'exec git status'非沙盒也落审计且含how_argsawk --version透传执行 exit 0,hint 提示 search-content 替代- 版本号:Cargo.toml 与 locales/{en,zh-CN}.json 的 app.version 同步为 v26.8.53
五、落地结论
rvs 26.8.43→26.8.53 的核心方向:① 接 Agent(26.8.44 MCP Server)② 交互顺手(26.8.45-48 退出/句号/补全/清行)③ 审计可落地(26.8.50 args + --audit-log)④ 去死代码(26.8.51)⑤ 引导不阻塞(26.8.52 POSIX hint)⑥ 扩展兼容(26.8.53 ReactOS i686 研究级支持)。
升级路径:cargo build→rvs --json -c 'show-version'确认 BuildTime 为最新 → 正常使用。
AI/脚本消费方注意:--json输出现在含args字段(外部程序参数、exec 的 target/command),需要拦截凭据的调用方解析该 key 自建策略——rvs 明确不做内置凭据字符串检测(防君子不防小人)。
六、三类读者速查
人类开发者
- 升级后验证:
rvs --json -c 'show-version';看版本号rvs -c 'show-version',应为 v26.8.53 - 新命令试玩:
bottom(清屏落底)、associate-rvs(仅 Windows)、REPL 里/exit/quit、双击 Esc - 中文输入法误打
。/script.sh不用删,直接回车自动纠正;。/te<Tab>也能补全
对话式 AI
- 一句话问法:「rvs 26.8.43 到 26.8.53 改了哪些?」回答要点:MCP Server(rmcp 3.x,
rvs --mcp)、REPL 人性化(/exit、。/ 纠正、Esc 清行)、RunReport.args + --audit-log、Deserialize 死防御移除、POSIX 工具 hint、ReactOS i686 研究支持 - 重要提醒:rvs 非 POSIX——远程复合命令用
ssh <target> --command "bash -c '...'",别用;&&2>&1
代码 Agent
- MCP 接入:
rvs --mcp(stdio,tools/list 内省,接口 mcp-v1,12 个月弃用窗口) - 审计:
rvs --audit-log /tmp/audit.jsonl -c '<cmd>'非沙盒也记录(含 how_args) - 结构化文本检索:
search-content --pattern <pat> --path <dir>(别名 sc/grep),别用 POSIX grep - 升级核对:对比
show-version的 BuildTime 与源码 mtime,源码新则先cargo build
