一个文件、几 MB 大小、不用装 Node、不用装 Python,扔进终端就能用。它能自己改文件、跑命令、查资料、整理目录,甚至能在我手机上的 Termux 里跑。
先说说为什么会有这个东西
我是 Linux 的狂热脑残粉,用的东西基本都是基于 Linux 内核的魔改系统,骨子里就是个重度终端用户,也是重度 AI 用户。日常写代码、处理文件、查资料,早就习惯把活儿丢给 AI 干。可市面上的 AI 工具大多又大又重:要装全家桶、要拖几百 MB 的运行时、绑死在 IDE 里,想在 SSH 服务器上、在手机里、在没图形界面的机器上让它干点活——根本没门。
真正让我动手的,是工作里的一个契机:我参与的大项目要给客户交付一个 DEMO——用来验证我接下来要在客户端里实现的 AI 处理底层逻辑。说白了,先证明"让 AI 自己看、自己动手、自己收尾"这套逻辑在真实环境里跑得通、控得住、体验还过得去,客户端才好照着落地。
DEMO 按说意思意思就够了,结果我越写越上头:交互想做好看点、安全想做得稳一点、场景想多覆盖一点……停不下来。最后干脆把它做成了我一直想要的东西:一个真正的"终端里的通用 AI 助手"。不叫"编程助手",因为编程只是应用场景之一——整理下载目录、归档压缩包、读网页写总结、批量改名、翻日志,自然语言一句话,它自己调工具干完。
用 Rust 从零写,花了一周,产物是一个几 MB 的单文件二进制。

短小到什么程度
- 单文件,零依赖:一个二进制,不放 Node、不放 Python、不放 JVM。拷到任何 Linux / macOS / Windows 机器上就能跑。
- 小:release 构建 + LTO + 剥符号,只有 3~4 MB。
- 跨平台到离谱:Linux x64/arm64、Windows、macOS 都有,连 Android 手机(Termux) 都能跑(后面细说)。
纯 Rust 从零纯手搓实现,没抄任何一行。整个工程分 core(引擎)/ tui(界面)/ cli(入口)三层,单向依赖,边界干净,核心逻辑全有测试兜底。
无所不能到什么程度
你把它当成一个"什么都会干的下属",用自然语言下指令就行:
把 ~/Downloads 里的 zip 按日期归档
看看这个目录里有什么,总结一下
把 README 里的安装步骤重写一遍
它会自己决定调用什么工具,一步步干完并汇报。内置的工具箱包括:
- 文件读写、精确编辑(改前自动快照,可回滚)
- 终端命令执行(带超时,可中断)
- 目录列举、glob 通配搜索、正则内容搜索
- 网页抓取转纯文本
- 长期记忆:跨会话记住你的环境和偏好
模型这边,只要是 OpenAI 兼容的端点都能接:本地 ollama / vLLM,云端 DeepSeek、通义千问、Kimi、GLM、OpenRouter…… 改个 base_url 就行。我平时主力是 DeepSeek,偶尔切本地小模型,一条命令的事。

安全:敢让它全自动,也拦得住它乱来
让 AI 自己跑命令、改文件,第一反应是"危不危险"。这块我设计了四档权限,Shift+Tab 随时切换,边框颜色跟着变:
- 询问 ask(默认,绿色):写文件、跑命令前先弹窗问你
- 编辑放行 acceptEdits(天蓝):改文件自动放行,命令仍要问
- 全自动 bypassPermissions(紫色):全自动执行,危险命令仍被拦截
- 超级 yolo(红色):一切放行,危险命令黑名单也跳过——后果自负
危险命令有启发式黑名单:rm -rf /、格式化磁盘、dd 写盘、git push --force 这类默认直接拦,不管哪个档位(除了 yolo)。
还有个杀手锏:每次改文件前自动做 undo 快照,不依赖 git。AI 把文件改坏了?一条 /undo 就回到改之前。
好用到上瘾的交互细节
命令行工具最怕难用,所以我把交互做得很"现代":
工具调用全程透明:AI 每一步在调什么、干得怎么样,卡片上全看得见——正在执行的命令直接显示原文($ 归档脚本.sh),旁边实时跳动已运行秒数和 AI 自己预估的预算;命令卡壳超过预算会自动终止,把死前的进展喂回给 AI,由它判断是加大预算重跑还是换个更轻的路子;执行中卡片下还有一块实时输出区,像 tail -f 一样滚动最新十行,你亲眼看着它一步步把活干完。
状态栏实时体检:当前上下文占模型窗口的百分比(ctx ▓▓▓░░ 34%),70% 变黄、90% 变红提醒你该压缩了;每次回复的 token 实时统计(in / out / 会话总计)。
上下文压缩:聊长了,一条 /compact,旧对话被收敛成摘要,上下文回到低位,继续聊不丢档案(完整历史仍在,随时 --resume 找回)。
@引用文件:输入 @README.md,发送前自动把文件内容注入给 AI,不用先让它去读。@"带空格 的文件" 也行,输入时还有路径补全。
补全菜单:输入 / 弹命令+技能菜单,输入 @ 弹文件补全,↑↓ 选择、Tab 采纳,首候选还会以淡色 ghost 预览在输入框里。
动态动画:等待时流动光条、压缩时收纳动画、流式输出末尾脉动光标……全是终端动画,不加 emoji 也足够炫。
会话历史:每轮对话落盘,/resume 随时恢复;退出时打印本次会话完整统计(时长/消息数/工具调用/token/undo 快照),并提示你下次怎么一键续上。

它会演戏:给 AI 装个人格
命令行工具也能有人味儿。它自带四种人格:毒舌损友(嘴上损你两句、手上活照干)、耐心老师(把原理掰开揉碎讲给你听)、热血极客(聊到方案就上头)、极简冷淡风(惜字如金只给结论)——一条 /persona 毒舌损友 就切过去了,/persona 无 关掉变回默认助手。
人格是全局生效的:切完影响之后所有对话,写进配置重启也带着;底部状态栏常驻显示"现在是谁在说话",免得聊着聊着忘了对面是谁。安全底线不受人格影响——它可以毒舌,但该拦的危险命令照样拦,该走的权限确认一步不少。
更妙的是,人格在它那儿就是一份 Markdown:内置人格以文件躺在 ~/.znaide/personas/,你随手改两句措辞(比如让毒舌损友少损两句),重启就生效;写个新 <名字>.md 放进去,就是你自己的人格;想找回原样,删掉那个文件就自动恢复。会写字,就会调教 AI 的性格。
可以像搭积木一样扩展
Skills(技能):一个技能 = 一份说明文档 + 可选入口脚本。模型能根据你的话自动判断启用哪个技能,你也可以手动 /技能名 触发。比如写个"归档下载目录"的技能,以后一句话就触发整套流程。
而且三个示例技能已经内置:归档下载目录、系统垃圾清理、生成周报——拿到就能说人话直接触发("把下载目录整理一下"),不用自己动手装。想照着写一个自己的,打开 ~/.znaide/builtin-skills/ 就有现成模板,会写 Markdown 就会扩展。
MCP:想接外部工具?写个 mcp.json,任何 MCP server 的工具直接并进来。

最好玩的是:它能跑在我的手机上
我把 Linux 静态版拷进手机 Termux 试了试,发现 Android 的 DNS 机制不认 musl 静态解析器——域名解析失败,AI 直接"哑火"。
折腾一番后用 NDK 交叉编译了个 bionic 动态版,手机 Termux 里直接跑,连云端 DeepSeek 正常工作。躺在沙发上用手机终端跟让AI给我干活,体验还挺奇特的。

那它和 Copilot、Cursor 那些比呢?
先说结论:不是一类东西,也不是要取代谁——它们解决"写代码"这一个问题,znaide 解决"让 AI 替我干活"这一类问题。真要摆在一起比,差距和各自的倔强都在下面这张表里:
|
Copilot / Cursor 这类 |
znaide |
| 定位 |
编程辅助,绑定 IDE |
通用助手,任何终端里都能用 |
| 形态 |
插件 / 大客户端,要装全家桶 |
一个 3~4 MB 的二进制 |
| 环境要求 |
Node / Electron / 订阅账号 |
零依赖、零运行时,拷过去就能跑 |
| 模型 |
基本绑定他家模型 |
任意 OpenAI 兼容端点:云端 DeepSeek/通义/Kimi 随便切,本地 ollama 也行 |
| 数据 |
代码和对话基本都过云端 |
会话历史、长期记忆全在本地文件里;用本地模型时数据完全不出机器 |
| 能力边界 |
补全/改代码、少量命令 |
文件、命令、网页、记忆全自主,编程只是场景之一 |
| 可控性 |
给不给权限基本是"全局开关" |
四档权限 + 危险命令黑名单 + 每次写文件自动 undo 快照,改坏了能滚回去 |
| 可扩展 |
插件生态(但受限于他家框架) |
技能 = 一份 Markdown 说明书,会写文档就会做扩展;还能接任意 MCP server |
| 离线 |
基本没戏 |
本地模型 + 本地工具,断网照常干活 |
| 最倔的地方 |
在你熟悉的编辑器里无缝 |
在你看不见图形界面的地方——SSH 服务器、Docker、手机 Termux——它反而是唯一选项 |
如果你大部分时间在 IDE 里写代码,Copilot 依然顺手,没必要换。但当你遇到这些场景,会发现终端里的这个"小东西"才是刚需:
- SSH 到一台服务器排查问题,没有 IDE,只有 shell——它在这里干活;
- 想跑一个不经过任何云端的模型,又不想为隐私妥协——本地 ollama + 它;
- 给不懂代码的家里人/同事用——打开终端说人话,它自己动手;
- 手机上临时要处理点东西——Termux 里它也能跑。
说白了:Copilot 们是"坐在你旁边的结对程序员",znaide 是"你派出去办事的助手"。前者提升你写代码的速度,后者替你省掉那些根本不需要你亲自做的事。
快速上手
./znaide
想脚本化/自动化?无头模式一条命令:
./znaide -p "把 ~/Downloads 里的 zip 按日期归档" --permission bypassPermissions
./znaide -p "你好" --provider deepseek
【图 9:首次运行的配置向导——选服务商 → 自动拉模型列表 → 填 Key → 真实请求验证通过才解锁】
一周是怎么塞下这么多东西的
Rust 的 workspace 分成三块,单向依赖,边界干净:
- core:纯引擎,agent 循环、LLM 客户端、工具、权限、会话、记忆——零终端依赖,逻辑可单测
- tui:ratatui 渲染的交互界面
- cli:入口,交互 / 无头 / 参数解析
单测 + 本地 mock 端到端测试,核心逻辑都有覆盖,所以一周里反复重构也没翻车。
结尾
它现在是我每天离不开的工具:桌面上干活、服务器上排查、手机里应急,同一个二进制、同一套配置。
这东西我写着玩的,但越写越觉得"短小精悍却无所不能"才是工具该有的样子——不绑架你的环境,不占你的资源,想在哪用在哪用。
如果你想试试:不用找我要,二进制发布在 GitHub Releases(github.com/twowb/znaide/releases),按平台挑一个下载就能跑——Linux / macOS / Windows / Android 全都有;装好之后更新它自己会来,--update 一条命令,平时启动它也会静默检查,发现新版本提醒你一声。想自己折腾源码也简单,cargo build --release 一把过。
