三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

rvs 26.8.43 → 26.8.53 更新概览:MCP 落地、审计增强与谬误澄清

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.4308-071b65302新增 go-to-bottom(别名 bottom):清屏后提示符落终端底部(crossterm MoveTo 末行)
26.8.4408-10cd585dcrvs 作为 MCP Server 上线:rmcp 3.x stdio,tools/list 由 all_commands() 内省生成(排除 TUI 类),tools/call 走 Command::run() 透传沙盒/审计,入口rvs --mcp
26.8.4508-109ecc533REPL 退出兼容/exit/quit(主循环 / 多行粘贴 / 管道输入三处统一)
26.8.4608-108806b64REPL 中文句号纠正。/./(fix_zh_dot_slash,仅交互路径,管道不静默改写)
26.8.4708-102e85d47tab 补全支持。/前缀:补全前归一化为./,候选保留用户风格
26.8.4808-10d69b048双击 Esc(终端解析为 Alt+Esc)= Ctrl+C:丢弃当前行、屏幕保留
26.8.4908-14f10d6f0associate-rvs:Windows 注册.rvs文件关联;同日 270de65 许可证改 Mulan PSL v2 OR Unlicense 双许可
26.8.5008-14f3bbe58RunReport 加 args 字段(外部程序填 argv、exec 填 target/command)+ 全局审计--audit-log <path>(非沙盒也记录,entry 含 how_args)
26.8.5108-14653c88d移除 RunReport/SessionInfo 的 Deserialize 死防御(仅保留 Serialize,JSON 单向输出)
26.8.5208-14b17e057POSIX 文本工具温和引导:awk/sed/grep/tr/cut/sort 等照常透传执行,但 hint 提示结构化替代(search-content 等)
26.8.5308-141774b93ReactOS 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_args
  • awk --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 buildrvs --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
← 返回列表