敲下rm -rf node_modules,终端里冒出一句:“一次干净的清扫……但有些重要的东西也跟着模块一起消失了,不是吗?”这不是彩蛋,是一个住在 shell 里的幽灵。
作者把它叫做 Haunted Terminal。默认每 4 条命令,它就会低声说一句关于你刚跑过什么、有没有失败的怪话。整套东西大约80 行:一个挂在PROMPT_COMMAND上的 Bash 钩子 haunt.sh,加一个只用标准库的 Python 脚本 whisper.py,后者调用 Ollama 的/api/generate接口。没有依赖,没有 API key,不用注册账号。
为什么非要本地跑模型,作者给了几条很实在的理由:
- shell 历史是私密的。命令里带着主机名、路径、手滑粘进去的 token。一个要读这些内容的幽灵,不能是云端 API。在这里,提示词从不离开127.0.0.1
- 断网也能用。没有网络、没有服务中断、没有速率限制。Ollama 挂了幽灵就闭嘴,提示符永远不会被卡住,因为调用跑在后台子 shell 里。
- 换模型只改一个环境变量HAUNT_MODEL,这让作者能实打实地对比两个尺寸,而不是信规格表。
- 每条命令零成本。一个每隔几次敲键就触发的钩子,按 token 计费是荒唐的。
对比是在同一台机器上测的:同样的提示词、5 条命令、16 核、无 GPU、14 GB 内存,预热指模型已加载。结论有两条。
12B 写的句子略好,但 4B 才是合适的默认值。幽灵在后台跑,可一句在命令执行9 秒后才出现的低语,会让人觉得脱节;2 秒则像是它一直在盯着你。
冷启动能让幽灵彻底沉默。作者第一次跑 12B 就超时了:加载约8 GB权重超过了20 秒的请求超时,而“绝不解释自己”的错误处理把这件事藏了起来。先加载好的情况下,同样的调用只要5.5 秒。用更大的模型,就得让它常驻(OLLAMA_KEEP_ALIVE),或者调高超时。
4B 的产出大概是这样:git push --force之后,它说“过去抗拒你强力的改写,永远在数字回声里留下污渍”;sudo apt update之后,它说“系统低语着更新,但另有些东西正被悄悄安装”。
想试的话,三步:拉gemma3:4b,克隆仓库,把 haunt.sh 写进 ~/.bashrc。可调的环境变量有HAUNT_ODDS、HAUNT_MODEL、HAUNT_HOST。
局限也摆在明面上:小模型有时会反复念叨“回声”和“看不见的东西”;只支持 Bash,zsh 需要改用 precmd;上面那些延迟是单机纯 CPU 的数字。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.