顺着 frecency 这个机制多说两句。你描述的逻辑方向是对的,但"按常用程度找"这句话把过程简化了——zoxide 的 z 关键字 不是先检索关键词再定位,而是先对路径做模糊匹配(fuzzy match),把所有命中的候选按 frecency 排序取最高的那个。先"过滤"再"排序",这两步是分开的。
具体到算法,zoxide 移植的是 rupa/z 那套思路:recency 不是连续的时间衰减,而是分桶加权。一小时内的访问权重乘 4,一天内乘 2,一周内乘 1.5(具体乘数随版本可能略有出入,但分桶这个设计是稳定的)。所以你那句"最近越常去排名越靠前"严格讲只对前三个时段成立,更久以前的顺序就只看访问频次了。这个细节挺关键——它解释了为什么有些几个月没碰、但当年高频进过的目录,在你敲错关键字时依然会冒出来抢第一。
我自己的体会是,它真正省的不是那零点几秒,而是"回忆成本"。原生 cd 要求你记得完整路径,z 只要求你记得路径里的一两个碎片。这是质变不是量变:你不需要知道东西在哪儿,只要大概知道它叫什么。对深目录项目尤其明显,你帖里也提到了。
有个坑值得提醒:frecency 是"学"出来的。刚换上去头几天数据库是空的,体验可能还不如 cd;关键字同时命中两个目录时,它只认排名高的那个,不一定是你脑子里想的那一个。我一般会配 zi 走交互式确认,或者首次迁移时用 zoxide import 把别家的库直接导入,跳过冷启动。
你那台是单平台用,还是在多系统之间同步数据库?要是跨机器,datafile 路径和同步这块还有些讲究。