不用 Claude Code,不花一分钱!教你用 Python + Ollama 写一个本地 AI CLI Agent

AI 的使用方式一直在变化,最开始大家习惯在网页里和 ChatGPT 对话;后来有了 Function Calling,AI 不再只是"聊天",而是能够真正调用工具完成任务;再到现在,越来越多开发者开始把 AI 放进 Terminal,让它直接帮自己操作电脑、执行命令、分析结果。

于是,CLI Agent(命令行 AI 助手)开始流行起来。

如果你用过 Claude Code、Codex CLI 或者 Gemini CLI,大概都会有一种感觉:

与其说是在聊天,不如说是在和一个真正会干活的开发搭档协作。

今天我们就自己动手,用 Python + Ollama 做一个完全运行在本地的 CLI Agent。

整个过程不需要任何 OpenAI API,也不用联网调用模型,只要电脑能运行 Ollama 就可以。

图片1.png

为什么 CLI Agent 会越来越受欢迎?

对于开发者来说,Terminal 一直都是工作时间最长的软件之一。

查看日志、Git 操作、Docker 管理、服务器维护、Python 开发等等,几乎每天都会输入大量命令。

传统方式是:

我 -> 查文档 -> 想命令 -> 输入命令

而 CLI Agent 更像这样:

我:"帮我看看磁盘快满了吗?" AI:理解需求 → 自动生成命令 → 执行命令 → 分析结果 → 给出结论

它并没有取代 Terminal,而是让 Terminal 多了一个"会思考的助手"。

本地部署最大的优势是什么?

目前 CLI Agent 大概可以分成三类。

第一种:云端模型

例如 Claude Code,模型运行在云端,本地 CLI 负责调用工具,优点是模型能力强。;缺点也很明显,它需要联网和API成本,在企业环境可能存在数据安全顾虑。

第二种:开源 Agent 框架

例如 Hermes 等项目,框架开源,可以自由替换模型。

既可以连接远程 API,也可以连接本地模型。

第三种:完全本地运行

今天介绍的方法属于这一类。

整个流程都是:

Python→ Ollama→ 本地 Qwen→Shell Command

所有数据都留在自己的电脑上,不需要上传任何内容,对于一些涉及源码、日志或者服务器配置的场景,这种方式会更加安心。

如果后续准备把这类 Agent 部署到自己的测试环境或者云服务器,也可以提前准备好运行环境。我之前在折腾一些 AI Demo 时,就直接放在 Hostease 的 Linux 云服务器上跑,一方面方便远程 SSH,另一方面需要测试不同发行版时也比较省事,不用来回切换本机环境。平时开发还是推荐本地调试,真正需要长期运行再迁移到服务器即可。

第一步:安装 Ollama

先安装 Ollama,安装完成之后,下载一个支持 Tool Calling 的模型,这里推荐 Qwen 系列。

例如:

ollama pull qwen2.5

Python 中只需要指定模型名称即可:

import ollama llm = "qwen2.5"

第二步:让 AI 学会执行命令

光有模型还不够,如果模型不能调用电脑上的工具,它依然只是一个聊天机器人,因此需要给它准备一个 Tool。

Python 最方便的方式就是 subprocess。

例如:

import subprocess def execute_shell_command(command): ...

模型真正调用的是 Tool。

而 Tool 再去执行:

ls pwd df -h top git status

等系统命令,随后把执行结果返回给模型。整个过程其实就是:

用户 → LLM → Tool → Shell → 返回结果 → LLM 总结

这也是目前主流 AI Agent 的工作模式。

第三步:告诉模型什么时候使用 Tool

仅仅有 Python 函数还不够。

模型并不知道什么时候应该调用它,所以还需要给 Ollama 提供 Tool Schema。

Schema 的作用可以理解成给模型一份工具说明书,里面会描述:

工具叫什么

能做什么

接收哪些参数

参数类型是什么

当用户说:帮我看看磁盘剩多少空间。

模型就会判断:

我应该调用 execute_shell_command。

然后自动生成:

df -h

整个过程完全由模型决定。

第四步:维护聊天上下文

CLI Agent 和普通脚本最大的区别就是:

它不是一次性执行,而是一直运行。

通常都会维护一个 messages 列表:

System → User → Assistant → User → Assistant

这样模型才能记住之前发生过什么。

例如:

用户: 进入我的 Downloads。 AI: (cd Downloads)

接着:

用户: 看看里面最大的文件。

模型就知道这里的"里面"指的是刚刚进入的目录。

第五步:处理 Tool Calling

真正的 Agent 都会经历一个循环。

用户提问 → 模型思考 → 是否调用 Tool? → 执行 Tool → 拿到结果 → 再次交给模型 → 输出最终答案

注意,这里通常不是一次调用模型。

而是:

第一次:

AI: 我要执行 df -h

Python:

执行命令

第二次:

AI: 根据结果来看, 磁盘剩余还有 138GB。

所以真正完成一次问答,中间其实经历了两轮推理。

实际体验怎么样?

搭好之后,可以直接在 Terminal 对话。

例如:

我的 CPU 占用高吗?

模型可能执行:

top

然后总结:当前 CPU 使用率约 XX%,其中占用最高的是 XXX。

再比如:

还有多少磁盘空间?

模型执行:

df -h

最后直接告诉你哪个磁盘快满了。

整个体验和 Claude Code 已经有几分相似,区别只是所有推理都发生在自己的电脑上。

使用时需要注意什么?

虽然 CLI Agent 很方便,但也意味着它拥有执行系统命令的能力。

因此最好增加一些限制,例如:

建立命令白名单

删除命令前进行二次确认

禁止执行 sudo

限制联网命令

设置超时时间

例如:

帮我清理 Downloads

这类需求就比较危险,如果模型理解错误,可能真的会删除大量文件。

因此在真正投入使用前,一定要做好安全控制,而不是让模型无限制执行任何 Shell 命令。

写在最后

CLI Agent 的本质,其实并不复杂。

可以把它理解成三个部分:

大模型+Tool Calling+系统工具

有了这套框架之后,Shell 只是其中一种工具。

你还可以继续扩展更多能力,比如:

Python 代码执行

Git 自动操作

Excel 数据处理

数据库查询

Docker 管理

浏览器自动化

MCP Server 接入

一步一步搭建下去,它最终会越来越接近 Claude Code、Codex CLI 这类成熟产品。

对于想深入学习 AI Agent 的开发者来说,从一个本地 CLI Agent 开始,是一个投入成本低、实践价值很高的练手项目。

如果后续还准备让 Agent 长期运行、远程访问或者部署一些实验环境,本地调试完成之后再迁移到云服务器会更加方便。把本地验证过的 Agent 放到服务器持续运行,而不会影响日常开发机器。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容