各种尝鲜体验

相对而言,我比较喜欢尝试新事物。这里记录一些我的尝试体验。

agent 工具相关评价已迁移至 agnet 横评。

lazygit

由于我重新入坑了 neovim,为了使用与 vscode 类似的查看 diff 的功能,因此有一个 git 状态 TUI 查看器还是比较有必要的。生态里基本都是用的 lazygit:lazyvim 本身默认就绑定了 lazygit 的键位,因此我尝试使用 lazygit。但是用起来感觉真的非常不顺手。

但是 gitui 更是一坨原始大便,所以也是捏着鼻子也得用。

flyline

一个 bash 的提示 + 补全库。由于 bash 在这块确实很差(而且我用过 ble.sh,那个慢得一批),所以还是有一点尝试欲望的。

首先看到 Release 里没有 windows build,已经感觉不太对劲了。拉下来 install 一发,这个项目没有 bin target,问了下 AI 才知道这玩意是编译成 .so bash 插件。build 一发,报了一堆错,然后发现这个项目本身就没法在 windows 下 compile。

行吧,我尝试去 Release 里拉下 x86_64 linux 的 musl 构建呢?拉下来 enable -f,报错 bash: enable: dynamic loading not available。所以这 bash 插件的加载本来就没多少人用,这些 bash 的默认 build 都关闭了这个功能,结果这玩意还依赖这个?

直接抛弃。

hyperfine

命令行的 benchmark 比较工具。用来比较单个简单指令还好,当我想要测试一些耗时极长的操作时,这体验简直没法看。

sem

尝试了 weave 后,我发现 Ataraxy-Labs universe 还有个 Ataraxy-Labs/sem,也就是基于 tree-sitter 的语义检测。

于是我也尝试了下 sem。

怎么说呢,sem 还是处在非常早期的阶段,问题比我想的要多。例如最简单的 sem diff,效果是这样的:

│  ⊕ method     NeedsOrderServiceImpl::g… [added]
│  ∆ method     NeedsOrderServiceImpl::b… [modified]
│  ∆ method     NeedsOrderServiceImpl::r… [modified]

显然这个长度根本不对劲,最关键的信息被省略了。(我的终端总宽度是这个片段的 3 倍多。)只能等 sem 再打磨优化了。

weave

一个基于 tree-sitter 代码理解的 git merge 辅助工具。

emmmm,虽然这个 claude 的大菊花排在 contributor 的靠前位置,比较渗人。但我还是想试试。

首先安装,scoop 没有,我用 bpm-rs 安装还给我测出两个 bug。

修好以后安装,我看 README 里写了可以 weave setup --local,但是执行并没有这个指令。然后发现这个 --local 是 15 hours ago 刚添加的。。。一般协作场景都不允许把 .gitattributes 上传到远端吧。不过还好有 core.attributesfile,我直接加到 global gitattributes 里就完事了。

第一次 merge 的时候报错 weave-driver 找不到,然后我才发现安装这东东需要在 release 里下载两个 binary,一个是 weave-cli,一个是 weave-driver。

不过合并的实测效果还是比我想的好一些的,最终 conflict 的文件数量确实更少了几个。不过 weave 解决的也都是些简单问题,难题都留给人类了说是。

carapace

这玩意大概一年多前就想试了,但是文档说的简直不是人话。

首先,Github 上 README 基本没有,就一句 Read, Try and Build. 然后如果你点进去 Read,就能看到这辈子见过的最抽象的文档(截取一部分目录展示😅):

1. In A Nutshell
2. Porcelain Shop
3. Hulk BASH!
4. Pandoras Box
5. Overly Attached Argument
6. Lights, Camera, Action!
7. Group Therapy
8. Spec-tacular Citizen
9. Running Man
10. Greenwashing
11. Wiretap
12. Sandcastle

实际上对于 user 应该看的是 carapace-bin 的文档。但是即使是这份文档也是一坨大便,你安装并配置后也是不知道如何使用。比如我使用 nushell,我按照文档说的进行一个配置:

nushell
$env.CARAPACE_BRIDGES = 'zsh,fish,bash,inshellisense'
source $"($nu.cache-dir)/carapace.nu"

然后重启 nushell,也没法进行补全。后来和 AI 摸索着发现还需要手动把 carapace 设为 external completer,并且一定要取消掉原先的 tab keybindings:

然后按 tab 才能出现补全候选结果。

但是我其实不喜欢这种下方展示候选,我的补全都希望是 inlay hints,并且希望是最符合的结果上屏,而不是出一堆结果让我自己选。

总之经过了一大堆事以后,我对 carapace 没有任何好感。

ast-outline

一个快速用来 parse 代码文件提取重要内容给 AI 用的工具。

首先提取本身没问题,但是只有一些签名和类型,没有注释。我比较怀疑是否真的可以给 AI 产生价值,很多时候一个函数签名的信息是远小于注释的。(当然注释也会有 example 等垃圾内容,这个价值判断标准不太好界定)

然后 ast-outline install --all --dry-run 只支持那些大公司出品的 AI agent,覆盖面还是太窄了。

最后,release binary 里没有其他系统的 releaes 也要扣一点分。

quien

一个 go 写的、TUI 的域名工具。

下载下来试用一下,随便查了一个内网解析的域名,结果:

立刻卸载。

http client

详见 HTTP Client。

jujutsu

详见 jujutsu。

UniGetUI

Files

不懂只提供微软商店链接,没有离线安装包/压缩包的软件是什么毛病。被微软收购了?

InputTip

在 b 站看到宣传,感觉这个灵感挺不错的。试用了一下,感觉我不一定需要这个。

  1. 符号方案下有一些 bug,例如和光标位置有一点偏移、并且在我第二块缩放比例不同的屏幕上表现很差,坐标计算是错的。
  2. 光标方案倒是简单,但是实在是有点丑,我也懒得自己定义光标样式。
  3. 目标人群是那种不喜欢看右下角托盘,怕被打断注意力的。作为程序员而不是书记,我觉得偶尔看下右下角没什么负担。

UltraISO

根据此 POST,结果软件本身是 winxp 风格,mds/mdf 挂载挂不上,提取还直接崩溃了,还 tm 卖钱,什么脑残玩意。

用挂载而不是解压的唯一理由就是少一次写入,但是既然这玩意这么难用,还是 7-zip 解压一把梭吧。