ocode
终端原生的 AI 编程助手,基于 Ollama 本地模型,19 个专业工具覆盖代码编辑/重构/测试/架构分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
终端原生的 AI 编程助手,基于 Ollama 本地模型,19 个专业工具覆盖代码编辑/重构/测试/架构分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
深夜两点,你正盯着一个陌生的遗留代码库抓耳挠腮。函数调用链横跨十几个文件,变量命名毫无规律,注释更是奢望。这时你打开终端,输入一句自然语言:「把这个模块重构成可测试的」,然后 AI 开始自动分析代码结构、制定重构计划、执行修改——整个过程就在你熟悉的命令行里完成。这就是 OCode 想做的事。
OCode(发音 "oh-code")是一款终端原生的 AI 编程助手,基于 Ollama 本地大模型运行。它不像 GitHub Copilot 那样需要订阅云服务,也不像 Cursor 那样需要图形界面——它直接运行在你的 shell 里,随时待命。
大多数 AI 编程工具都基于浏览器或桌面客户端。云端 Copilot 把代码发给微软服务器,Claude Code 需要图形界面,Devin 更是完全基于 Web。这意味着:你的代码要离开本地,网络要保持畅通,而且你的代码在别人的服务器上处理。对于处理敏感企业内部代码的开发者来说,这是个不小的心理障碍。
OCode 的思路完全不同——它是纯本地的。所有 AI 推理都通过 Ollama 在本地运行,你的代码从不离开机器。Ollama 支持 llama3、qwen、mistral 等数十种开源模型,你可以自由选择切换,不被单一供应商绑定。这种「数据不出本机」的架构,让它在处理私有代码库时天然具有合规优势。
OCode 内置了 19 个专业工具,分为几大类:
文件与代码操作:读取、编辑、搜索、glob 模式匹配文件、diff 比较差异,甚至可以用 wc 统计代码行数。这些工具让 AI 真正能「动手」修改代码,而不只是给出建议。
系统与网络操作:ping 检测网络连通性、ps 查看进程、env 管理环境变量、bash 执行任意 shell 命令。这意味着 AI 不仅能改代码,还能帮你排查服务器问题、运行测试套件。
开发辅助:git_tools 处理 Git 工作流,architect 分析项目架构并生成文档,agent 将复杂任务委托给专门的子 Agent。
数据处理:json_yaml 支持 JSONPath 查询,可以在终端里直接解析配置文件、验证数据格式。
MCP 集成:通过 Model Context Protocol 接入第三方插件生态,可以扩展更多工具。
这些工具通过 Ollama 的函数调用(function calling)机制统一调度,AI 根据用户指令自主决定调用哪些工具、调用顺序如何。
项目代码组织在 ocode_python/ 目录下,按职责分为:
core/:核心引擎,处理对话循环和 Agent 逻辑tools/:19 个工具的具体实现ui/:基于 textual 框架的 TUI 界面mcp/:MCP 协议服务端实现prompts/:提示词模板config/:配置管理utils/:通用工具函数特别值得一提的是 mcp/ 模块。它把 OCode 打包成一个 MCP 服务器(默认端口 8000),其他支持 MCP 的 AI 客户端(如 Claude Desktop)可以直接连接到它,获得 OCode 的工具能力。这是一个聪明的设计——OCode 既是 AI 工具的使用者,也是工具的提供者。
安装非常简洁,一条命令搞定:
curl -fsSL https://raw.githubusercontent.com/haasonsaas/ocode/main/scripts/install.sh | bash
前提是你已经装了 Ollama,并下载了模型(ollama pull llama3:8b)。docker-compose 方式是更省心的选择,一条 docker-compose up --build 就启动完整环境,包括 Ollama 服务本身。
但上手有一定门槛:你需要理解 Ollama 的工作原理,知道怎么选模型、调参数。对于习惯了「点开就用」的 Copilot 用户来说,这多了几步折腾。
OCode 是一个定位清晰的产品——做「最小阻力」的本地 AI 编程助手。它把 Ollama 的强大模型能力引入终端,让开发者无需离开命令行就能获得 AI 辅助。对于重视数据隐私、偏好终端工作流、或在无图形界面的服务器上工作的开发者,这是一个值得尝试的工具。虽然目前仍处于 Alpha 阶段,License 声明存在混乱,但其模块化架构和 MCP 集成展示了不错的扩展潜力。随着 Ollama 生态的成熟,这类工具的价值会进一步凸显。