rvs(rust-verb-shell)v26.7.12 更新:借鉴 ripgrep、自身可观测、修了 mkdir
项目地址开源仓库rust-verb-shell:基于 Rust 的 PowerShell 风格 Shell 项目 - AtomGitMulanPSL-2.0 许可证。本文讲的是从 v26.7.0 到 v26.7.12 这一路迭代更新了什么。所有命令以最新 dev 分支为准。一、先说设计哲学的两处修正1. 从 PowerShell 的New-Item思路里跳出来最初 rvs 抄了 PowerShell 的New-Item用一个命令、一个--type参数同时创建文件和目录。听起来很统一实际很坑new-item --path foo # 默认 --type file创建文件 foo new-item --path bar --type dir # 创建目录 bar问题在于mkdir这个别名也指向new-item而new-item默认--type file。于是mkdir demo实际创建了一个名为demo的文件不是目录。这是个会让人骂街的静默错误。新版把new-item拆开语义各自明确命令别名说明new-directorymkdir只创建目录--parents默认 true控制递归new-filetouch/ni只创建文件--value提供初始内容new-directory --path demo # 创建目录 demo mkdir demo # 别名等价 new-file --path test.rs # 创建空文件 touch test.rs --value fn main(){} # 创建带初始内容的文件这个拆分还为未来留了位置new-softlink、new-hardlink都可以按同样模式加进来不需要在--type上继续叠条件。2. 用户可见文本里的Verb-Noun全部改成verb-noun旧版 banner 里写的是「commands use Verb-Noun style」跟 rvs 自己「全小写 kebab-case」的设计原则自相矛盾——既然命令名是get-child-item这种全小写形式那提示语里就不该出现 PascalCase 的Verb-Noun。新版统一成小写rvs — rust-verb-shell (v26.7.12) no sandbox (full FS access). use --sandbox DIR to restrict. commands use verb-noun style (get-child-item, set-location, ...). aliases: ls / cd / pwd / cat / mkdir / rm / echo / clear; exit to quit.这是个小事但它涉及一个判断文档里举的例子要和工具实际接受的输入完全一致否则 AI 和人类都会被带偏。二、借鉴 ripgrepsearch-content重写rvs 早期的search-content别名sc/grep是最小可用版自写collect_files递归遍历硬编码跳过.git/target/node_modules单线程搜。这版能跑但有两个问题噪音目录硬编码换个项目就失效不读.gitignore搜一次能把target/debug/里几百 MB 的编译产物全扫一遍新版直接换成 ripgrep 同款的ignorecrate 做目录遍历再上rayon多文件并行。ripgrep 的四重默认过滤全都到位尊重.gitignore/.ignore/.git/info/exclude/ 全局 gitignore默认跳过隐藏文件.开头默认跳过二进制文件启发式 NUL 字节检测不跟随符号链接渐进关闭过滤rg-u/-uu/-uuuripgrep 用户熟悉-u叠加-u关 ignore-uu再加 hidden-uuu等同grep -r。rvs 参数解析层不支持-u叠加所以用显式 switch 对应rg 写法rvs 写法语义rg patsc --pattern pat默认四重过滤rg -u patsc --pattern pat --no-ignore关.gitignorerg -uu patsc --pattern pat --no-ignore --hidden再加隐藏文件rg -uuu patsc --pattern pat --no-ignore --hidden --binary再加二进制-u是--no-ignore的短别名方便记忆。三、上下文行与多文件并行上下文行--context N/--before N/--after NAgent 搜到一个匹配通常要看上下文才能判断“这是不是我要找的”。新版加了上下文行输出 Table 里多Before和After字段ListStrsc --pattern pub struct --path crates --include *.rs --context 1--context N同时给前后 N 行--before N/--after N单独控制。多文件并行rayon的par_iter让多个文件并行搜索。--max-results用AtomicUsize跨线程计数超过上限就提前停。单文件搜索不并行避免小文件场景的线程开销。四、get-versionrvs 自身可观测性这个命令的背景是一次排错源码和 locale 都改了但 wezterm 新开的标签页还是显示旧 banner。绕了好几条命令才定位到——旧二进制没重编而 rvs 自己没有任何机制让 Agent 一眼看清“现在跑的是哪个二进制”。新版加了get-version别名ver/version通过编译时build.rs注入的信息回答这个问题rvs --json -c get-version输出简化{ Version: 26.7.12, BuildTime: 2026-07-25T14:56:08Z, GitCommit: 11e70c4, GitDirty: dirty, BuildHost: macos aarch64, Profile: debug }排错决策树因此变得很短跑get-version看BuildTime对比源码 mtime源码新于 BuildTime → 跑的是旧二进制需要cargo buildGitDirty字段额外告诉你当前二进制是从一个有未提交改动的工作区编出来的Agent 据此能判断“这个二进制能不能信任”。五、get-child-item --llm尊重 .gitignore喂对话式 LLM一个常见场景你在 wezterm 里想问 ChatGPT/Claude/元宝“这个项目大概是个啥”最自然的做法是把当前目录的文件列表 copy 进对话框。但ls的输出又长又乱——表格边框、target/、node_modules/、隐藏文件全混在一起贴进去几百行LLM 还要从噪音里捞信号。新版加了--llm模式get-child-item --llm别名ls --llm专门解决这个rvs -c get-child-item --llm --path crates/rvs-commands输出[F] Cargo.toml [F] build.rs [D] src/ [F] src/lib.rs[D]是目录、[F]是文件路径相对每行一个条目无表格边框。底层用ignore::WalkBuilder默认尊重.gitignore跳过target//node_modules/等噪音目录。工作流变成ls --llm→ 全选复制 → 粘到对话框。LLM 拿到的是干净的项目结构视图。六、wezterm-rvs.sh编译期间的双语进度提示这是 wezterm 用户的体验改进。旧版的启动包装脚本只在“二进制不存在”时编译于是出现了上面提到的 silent stale 问题——源码改了但新开的标签页还是跑旧二进制。新版策略每次启动跑cargo build --dry-run检测是否需要重编需要时先打印双语进度提示到 stdoutwezterm 直接可见避免黑屏假死rvs: source changed, rebuilding binary before launch… rvs检测到代码更改正在编译以获取最新二进制…编译完成后打印“启动中”编译失败打印[ERR] stderr 并退出cargo build --dry-run本身很快0.5s无变更时直接跳过有变更时先提示再编译让人类和 Agent 都知道发生了什么。-u是--no-ignore的短别名方便记忆。七、面向三类读者的速查人类开发者wezterm / 终端你要做什么rvs 命令别名列目录get-child-itemls列目录喂 LLM 用get-child-item --llmls --llm创建目录new-directory --path demomkdir demo创建文件new-file --path test.rstouch test.rs搜代码ripgrep 风格search-content --pattern foosc --pattern foo/grep foo搜代码带上下文sc --pattern foo --context 3—关 ignore 搜sc --pattern foo --no-ignoresc -u foo看 rvs 自身版本get-versionver/version切到 bashenter-shell bash—对话式 AIChatGPT / 腾讯元宝 / 豆包等当用户描述一个文件操作意图时对话 AI 应该生成 rvs 全小写 verb-noun 命令不要生成 PowerShell 的 PascalCaseGet-ChildItem也不要生成 POSIXls——后者只是别名rvs native 形式才是get-child-item。命令模板v26.7.12# 列目录 get-child-item [path] [-recurse] 列目录并尊重 .gitignore喂给对话式 LLM 用 get-child-item --llm [path] 读文件 get-content path 创建目录 / 文件注意new-item 已拆分 new-directory --path name new-file --path name 搜代码ripgrep 风格 search-content --pattern pat [--path dir] [--regex] [--include *.rs] [--no-ignore] [--hidden] [--binary] [--context N] [--before N] [--after N] 看 rvs 自身版本排错第一动作 get-version如果用户传入的指令是 POSIX 风格的管道如ls | grep foo提示用enter-shell bash切换到 bash 后再执行或用 rvs native 的get-child-item | where-object ...。代码 AgentVSCode Copilot / Trae IDE / AtomCode 等Agent 调用 rvs 时应走--json模式输出是合法 JSON无需额外解析# 单个命令 rvs --json -c get-child-item --llm 管道喂多行 echo -e get-location\nget-version | rvs --jsonrvs 行为异常时的第一动作来自 AGENTS.md 附录 C跑rvs --json -c get-version看BuildTime/GitCommit/Profile对比源码 mtime源码新于 BuildTime → 跑的是旧二进制需要cargo buildBuildTime ≥ 源码 mtime → 二进制是最新的问题在别处字符串检索grep 替代品Agent 在 rvs 里想搜代码时不要enter-shell bash跳出去用 grep。用 rvs 原生search-content别名sc/grep。沙盒内可用--json输出 Table{Path, Line, Content, Before?, After?}Agent 直接消费。八、一句话总结rvs v26.7.12 借鉴 ripgrep 的搜索ignorerayon-u渐进 --context 自身可观测get-version注入 BuildTime/GitCommit/BuildHost/Profile--llm输出尊重.gitignore喂对话式 LLM new-item拆成new-directory/new-file修 mkdir 创建文件的 bug。项目在 rust-verb-shell:基于 Rust 的 PowerShell 风格 Shell 项目 - AtomGit版本号 CalVerYY.M.P当前v26.7.12。

相关新闻

GPU 维保市场爆发:芯片级修复如何让算力“起死回生“

GPU 维保市场爆发:芯片级修复如何让算力“起死回生“

核心事件随着 AI 训练集群规模爆发式增长,GPU 算力卡的维修与维保需求正成为一个快速崛起的新兴市场。一张 H100 GPU 卡售价超过 3 万美元,当这些"天价"硬件出现故障时,"直接换新"的经济账让越来越多企业转向芯片级维修这…

2026/7/26 1:11:41阅读更多 →
扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析

扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析

更多请点击: https://kaifayun.com 第一章:扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析 权限配置的三大致命误区 扣子平台对文件类机器人强制要求细粒度权限校验。常见错误包括&…

2026/7/26 1:09:41阅读更多 →
104、Arduino Nano 33 BLE Sense的语音识别案例

104、Arduino Nano 33 BLE Sense的语音识别案例

104、Arduino Nano 33 BLE Sense的语音识别案例 从一次深夜调试说起 凌晨两点,我盯着串口监视器里不断跳出的“Unknown”字样,差点把这块Nano 33 BLE Sense扔出窗外。麦克风焊盘被我反复按压了十几遍,焊锡都快磨亮了,结果还是识别不出“yes”和“no”这两个最简单的词。后…

2026/7/26 1:09:41阅读更多 →
自然语言转SQL与智能BI可视化实践

自然语言转SQL与智能BI可视化实践

1. 项目背景与核心价值最近在做一个特别有意思的项目——通过自然语言直接生成SQL查询并可视化展示结果。这个需求来源于我们团队内部的数据分析场景:每次产品经理想看某个维度的数据,都要找工程师写SQL,效率太低。于是我们决定开发一个智能B…

2026/7/26 2:15:50阅读更多 →
智能法务助手:NLP与规则引擎驱动的合同审查系统

智能法务助手:NLP与规则引擎驱动的合同审查系统

1. 项目背景与核心价值去年处理某跨境合作协议时,团队因疏忽赔偿条款中的连带责任描述,导致后期产生数百万额外支出。这件事让我意识到:传统人工合同审查存在响应延迟、标准不一、疲劳漏检三大痛点。我们开发的智能法务助手,通过N…

2026/7/26 2:15:50阅读更多 →
C++引用与指针深度解析:使用场景、内存模型与工程实践指南

C++引用与指针深度解析:使用场景、内存模型与工程实践指南

1. 项目概述:为什么C程序员必须厘清引用与指针?在C的日常开发中,引用和指针是绕不开的两个核心概念。很多初学者,甚至一些有一定经验的开发者,常常对它们的使用场景感到困惑:什么时候该用引用?什…

2026/7/26 2:15:50阅读更多 →
TWL6030 PMIC充电管理:从寄存器配置到软件状态机的嵌入式实战

TWL6030 PMIC充电管理:从寄存器配置到软件状态机的嵌入式实战

1. 项目概述与核心价值在嵌入式系统,尤其是便携式设备的设计中,电源管理单元(PMIC)的电池充电管理功能是决定产品续航、安全性和用户体验的基石。TWL6030作为一款高度集成的电源管理芯片,其内置的充电控制器功能强大&a…

2026/7/26 2:15:50阅读更多 →
大模型无监督强化学习:DSCO框架与知识引导探索

大模型无监督强化学习:DSCO框架与知识引导探索

1. 前沿背景与研究动机去年在NeurIPS会场咖啡区,我和几位同行争论到深夜:当大模型遇到强化学习,无监督范式到底能突破哪些边界?这个讨论直接促成了我们团队针对ICLR 2026的这项研究。当前大模型在监督学习领域已经展现出惊人能力&…

2026/7/26 2:15:50阅读更多 →
2026全球AI产业格局与关键技术趋势分析

2026全球AI产业格局与关键技术趋势分析

1. 全球AI产业格局现状扫描2026年初的AI领域呈现出前所未有的激烈竞争态势。从波士顿到班加罗尔,从东京到特拉维夫,全球科技力量正在人工智能赛道上展开全方位角逐。根据最新行业白皮书数据显示,全球AI产业规模已突破1.8万亿美元,…

2026/7/26 2:13:50阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →