Repository navigation
内置 glob 在 Windows 权限墙下整单作废:exit 2 连同已扫到的结果一起丢弃,模型易把「失败」误读成「不存在」 #9364
Replies: 3 comments
|
勘误:正文说 31 项单测,实际全量是 36 项——最初统计漏了 CLI 套件的 5 项(它们要拉起子进程,在当时的开发沙箱里跑不了;正常环境与 CI 无碍)。修正后 36 项在 Node 20 / 22 / 24 与真实 Windows runner 上全绿。 |
|
先确认结论:属实,而且我实测下来,被丢掉的不是"可能有一点"的残片,是一大批真实结果。 版本基线你写的是 0.2.0-rc.2。当前 npm 上 丢在哪一步(三行,顺序就是因果)
也就是说,那一批已经躺在内存里的路径,是被 你贴的文案也对得上,出自 我在本机实测了一遍(这条最关键)参数就是
所以"部分结果拿不到"这个直觉可以排除:数据是现成的,不需要改 ripgrep 的任何参数,只要改退出码策略。这一点值得先钉死,否则容易被人以"rg 报错就是没输出"为由挡回来。 这不是 glob 独有的:
|
|
感谢复核与实测——尤其「exit 2 且 stdout 非空」这个判据和「grep 同病」的扩展。dsh-find-file(https://github.com/Ronniealgo/dsh-find-file)在工具层实现了同一套语义(不经过 rg、直接 walk,天然绕开退出码问题),complete/skipped 是一等字段,36 项单测覆盖。你要的断言结构如下,可直接当上游契约草案: 1) 面向模型的 JSON 契约 2) 许可规则(与你的判断一致,这是反假阴性的核心)
3) 关键断言摘录(test/walk.test.mjs / test/tool.test.mjs) 4) 与你的判据对齐
这套语义已在 Node 20/22/24 + Windows runner 全绿,欢迎直接取用;上游落地后若签名有出入,插件按上游为准适配。 |
Uh oh!
There was an error while loading. Please reload this page.
环境
glob工具(委托 ripgrep)现象
对含系统 ACL 目录的树(
C:\Program Files最典型:ModifiableWindowsApps、WindowsApps等对普通进程拒绝访问)做搜索时,ripgrep 以 exit 2 结束,glob 工具将整次搜索判为失败,已扫到的全部候选一并丢弃,模型只收到:为什么这是真问题
下游模型把「搜索失败」和「没找到」混为一谈的倾向很强:一次因权限失败的搜索,很容易被顺势总结成「该文件不存在」。我在实际使用中已多次遇到这种假阴性。
复现步骤
C:\Program Files下找*.exeC:\Program Files\AntiCheatExpert\ACE-Service64.exe),但返回的只有上述 Error,部分结果不随附期望行为(建议)
把「部分成功」作为一等结果暴露给模型,例如:
skipped: [{path, code}]与complete: false之类的覆盖标记complete: true且零匹配才等价于「确定不存在」参考实现
我们按上述语义做了一个最小插件(MIT,Ronniealgo/dsh-find-file):跳过权限墙、如实上报 skipped/complete、symlink/junction 不跟随防循环,31 项单测全绿。结果结构可供官方参考。
All reactions