各种尝鲜体验
各种尝鲜体验
相对而言,我比较喜欢尝试新事物。这里记录一些我的尝试体验。
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 比较工具。用来比较单个简单指令还好,当我想要测试一些耗时极长的操作时,这体验简直没法看。
- 首先被 shell 坑了,hyperfine 在 Windows 上一定用
cmd.exe /C启动子进程,导致我 nushell 语法的指令执行失败;而且由于把我;和之后的内容都当成 args 传到我的程序里,导致出现的报错非常恶心,排查半天。。 - 默认每个 case 至少跑 10 轮,实在有点慢。
- Ctrl + C 没法终止 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 再打磨优化了。
- 对于上面的这个问题我提了一个 issue。
- 此外,java 文件的 sem diff,class 变更居然用的 type 而不是实际字段名,有点把我无语到。
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,我按照文档说的进行一个配置:
$env.CARAPACE_BRIDGES = 'zsh,fish,bash,inshellisense'
source $"($nu.cache-dir)/carapace.nu"然后重启 nushell,也没法进行补全。后来和 AI 摸索着发现还需要手动把 carapace 设为 external completer,并且一定要取消掉原先的 tab keybindings:
# 注释掉原先的 keybindings
# $env.config.keybindings ++= [
# {
# name: take_history_hint
# modifier: none
# keycode: tab
# mode: [emacs, vi_normal]
# event: {
# until: [
# { send: historyhintwordcomplete }
# ]
# }
# }
# ];
let carapace_completer = {|spans: list<string>|
carapace $spans.0 nushell ...$spans | from json
}
$env.config.completions.external = {
enable: true
max_results: 100
completer: $carapace_completer
}然后按 tab 才能出现补全候选结果。
但是我其实不喜欢这种下方展示候选,我的补全都希望是 inlay hints,并且希望是最符合的结果上屏,而不是出一堆结果让我自己选。
总之经过了一大堆事以后,我对 carapace 没有任何好感。
ast-outline
一个快速用来 parse 代码文件提取重要内容给 AI 用的工具。
首先提取本身没问题,但是只有一些签名和类型,没有注释。我比较怀疑是否真的可以给 AI 产生价值,很多时候一个函数签名的信息是远小于注释的。(当然注释也会有 example 等垃圾内容,这个价值判断标准不太好界定)
然后 ast-outline install --all --dry-run 只支持那些大公司出品的 AI agent,覆盖面还是太窄了。
最后,release binary 里没有其他系统的 releaes 也要扣一点分。
quien
一个 go 写的、TUI 的域名工具。
下载下来试用一下,随便查了一个内网解析的域名,结果:
quien xxx.xxx卡死在 TUI 首页,无法切换 tab。合着查询线程阻塞了 UI 线程是吧。quien dns xxx.xxx返回空记录,真的是全空的。。还不如我 nsloopup,至少能查到非权威应答。{ "A": null, "AAAA": null, "CNAME": null, ...
立刻卸载。
http client
详见 HTTP Client。
jujutsu
详见 jujutsu。
- 作为一个 git exp user,并且拥有一批 git scripts,jujutsu 对我的开发效率的提升比较有限。
- jujutsu 和我公司工作流的相性非常差。
- 比如我们提交前都要求用工具扫 commit 但是扫不到 jujutsu 的
@;比如我们不用本地创建分支而是在远端创建分支后拉下来开发;比如我们解决 conflicts 也用的另一套工作流。
- 比如我们提交前都要求用工具扫 commit 但是扫不到 jujutsu 的
- 我有一些私有 git hooks,jujutsu 没法执行。
- 要功能没功能,要生态没生态。
- jujutsu 虽然说兼容 git,但是跟 git 混用也会有一些问题。
- 最大的问题是 jj 会一直创建 empty commit,这些 empty commit 会随着你的 git merge 被一起合到 jj 的 worktree 里。虽然在 git 里这些都是不可见的,但是在 jj log 里就是纯纯的精神污染,让人不会再想回到 jj 里了。
opencode
现在 AI 时代 AI 相关的东西 100k star 真是随便拿啊。
朋友一直在推,用了一下。后来模型 agent 能力越来越强,用的频率也越来越高了。
首先请看 opencode 有多难用。高强度用了几个月后这是我对 opencode 的所有怒火。
下面就主要放一些心得吧。
- oepncode 的 permission 规则是最后优先,也就是具体规则放后面,感觉还是挺抽象的。例如:
{ "permission": { "bash": { "git *": "allow", "git push *": "deny" } } } - opencode 要让主 agent 使用特定模型的 subagent,这个需求应该非常常见(处于成本的考量),但是 opencode 的文档显然不够好。我是靠自己摸索才搞出能 work 的配置(我用 GLM 5.1 作为主 agent,用 deepseek v4 flash max thinking 作为子 agent):
{ "$schema": "https://opencode.ai/config.json", "model": "zai-coding-plan/glm-5.2", "agent": { "general": { "mode": "subagent", "model": "deepseek/deepseek-v4-flash", "thinking": { "type": "enabled", "budgetTokens": 65536 } }, "explore": { "mode": "subagent", "model": "deepseek/deepseek-v4-flash", "thinking": { "type": "enabled", "budgetTokens": 65536 } }, "scout": { "mode": "subagent", "model": "deepseek/deepseek-v4-flash", "thinking": { "type": "enabled", "budgetTokens": 65536 } } } }
总的来说,opencode 作为一个 agent,只能算是达到 agent 的基本水平。在使用体验上,还有非常非常多要改进的地方。
然后用 agent 记得一定要找个有缓存的 API 提供方。
UniGetUI
- 为什么这玩意打开要让我下载 scoop-search 和 cargo-update,后者甚至是从源码编译。假设用户一定有 rust 工具链吗?看到源码编译我就要开始捂鼻了。
- 然后安装完 scoop-search 和 cargo-update 以后,重启软件居然没读到,还要我再安装一次?恶性 bug 直接卸载了。
Files
不懂只提供微软商店链接,没有离线安装包/压缩包的软件是什么毛病。被微软收购了?
InputTip
在 b 站看到宣传,感觉这个灵感挺不错的。试用了一下,感觉我不一定需要这个。
- 符号方案下有一些 bug,例如和光标位置有一点偏移、并且在我第二块缩放比例不同的屏幕上表现很差,坐标计算是错的。
- 光标方案倒是简单,但是实在是有点丑,我也懒得自己定义光标样式。
- 目标人群是那种不喜欢看右下角托盘,怕被打断注意力的。作为程序员而不是书记,我觉得偶尔看下右下角没什么负担。
UltraISO
根据此 POST,结果软件本身是 winxp 风格,mds/mdf 挂载挂不上,提取还直接崩溃了,还 tm 卖钱,什么脑残玩意。
用挂载而不是解压的唯一理由就是少一次写入,但是既然这玩意这么难用,还是 7-zip 解压一把梭吧。
