首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
原创软件
发新帖
0
1
[原创]我花一周时间用 Rust 手搓了一个短小精悍却无所不能的 AI 助手
发表于: 2026-9-7 09:49
539
[原创]我花一周时间用 Rust 手搓了一个短小精悍却无所不能的 AI 助手
zngeek
2026-9-7 09:49
539
> 一个文件、几 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 是"你派出去办事的助手"。前者提升你写代码的速度,后者替你省掉那些根本不需要你亲自做的事。 ## 快速上手 ```bash # 1. 拿到二进制后直接跑,首次会自动打开配置向导 ./znaide # 2. 选服务商(内置 ollama / deepseek / dashscope / openrouter / zai 预设) # 它会自动拉取该服务商的可用模型列表让你选 # 3. 开聊 ``` 想脚本化/自动化?无头模式一条命令: ```bash ./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` 一把过。 
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
收藏
・
0
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
KXXTEST
感谢你的积极参与,期待更多精彩内容!
2026-9-8 09:40
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
1
)
zngeek
雪 币:
1840
能力值:
( LV1,RANK:0 )
在线值:
发帖
4
回帖
3
粉丝
4
关注
私信
zngeek
2
楼
gitee也同步开源:
f79K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8W2k6g2)9J5k6h3y4G2L8g2)9J5c8X3u0J5L8%4c8Z5k6i4u0Q4x3X3c8W2M7Y4y4Z5N6h3W2Q4x3V1k6*7L8X3q4A6k6r3f1`.
2026-9-7 23:11
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
zngeek
4
发帖
3
回帖
0
RANK
关注
私信
他的文章
[原创]我花一周时间用 Rust 手搓了一个短小精悍却无所不能的 AI 助手
538
[推荐]试了一个冷门的 LLM 代码审计工具,居然比公司六位数的 SAST 好用
317
[推荐]AI代码审计工具ZnCode实测:误报率能打吗?
504
[原创]SafeExamBrowser答题系统完美破解
6388
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部