Octo 图文操作手册(含终端截图与配置示例)

Octo logo

目录

  1. 概览:Octo 是什么
  2. 快速上手(安装、启动)——命令与截图
  3. 规则文件(OCTO.md 等)详解与示例
  4. MCP 集成:为什么要接入、如何配置(含 octofriend.json5 示例)
  5. 多模型切换与自动修复实操
  6. 思考 Token(thinking budget)管理:参数与示例
  7. 常见场景操作示例(本地 LLM、连接 Linear MCP)
  8. 故障排查与调试技巧(带终端日志示例)
  9. 未来功能与 TODO 说明(来源于 TODO.md
  10. FAQ 与 HowTo Schema(机器可读的结构化片段)

1. 概览:Octo 是什么

简短一句话:Octo 是一个“多模型友好”的命令行编程助手,擅长在不同大语言模型之间无缝切换,并在需要时使用自动修复模型帮助修补工具调用和代码编辑错误。

它的核心定位可以分为三点:

  • 模型中枢:可以同时接入多家或本地的 LLM,按需切换。
  • 自动修复:借助专门的修复模型(如代码/差异修补模型)来提高工具调用成功率。
  • 可扩展上下文:可通过 MCP(Model Context Protocol)接入结构化外部数据源(例如项目管理工具)。

为什么这有用?当你在写代码、修 bug、或者让模型生成多轮内容时,模型偶发的“格式错误”或“工具调用失败”会浪费大量时间。Octo 作为协作者,目标就是把这些重复工作尽量自动化,让人专注逻辑与设计。


2. 快速上手(安装、启动)——命令与截图

下面直接给出可复制的步骤与示例终端会话。假设你使用 macOS 或 Linux 的 shell,Windows 在 PowerShell 下步骤类似。

2.1 安装(一步到位)

npm install --global octofriend

安装完成后,推荐验证版本:

octofriend --version

常见结果(示例)

$ octofriend --version
octofriend 0.1.0

2.2 启动交互界面

运行:

octofriend

运行后的交互式终端会话示例(这是一个内嵌的 asciinema 展示):

Octo Demo

上图为项目 README 中提供的演示画面。实际启动后,你会看到类似:

🐙 Octo: Ready to help!
Type your question or command:

随后你可以像与助手对话一样输入需求,例如:Write a Python script to parse JSON and print formatted output


3. 规则文件(OCTO.md / CLAUDE.md / AGENTS.md)详解与示例

Octo 会查找并使用规则文件来定制行为。理解这些文件的查找优先级与合并方式非常重要。

3.1 查找优先级

  1. 当前项目目录
  2. 父目录逐级上溯
  3. 用户 Home 目录
  4. ~/.config/octofriend/OCTO.md(全局规则)

若同时存在多个规则文件(例如 OCTO.mdCLAUDE.md),Octo 会使用第一个匹配到的文件作为优先规则,且会合并搜索到的规则文件内容。

3.2 示例 1:最小 OCTO.md

# 项目专属规则
- prefer: Claude
- disable-autofix: false
- allow-local-llm: true

把这份 OCTO.md 放到项目根目录,Octo 在该目录运行时会优先采纳这些指令。

3.3 示例 2:更复杂的规则(演示)

# 企业级规则示例
- prefer: gpt-5
- thinking-budget: medium
- mcp-allow: true
- strict-mode: true

这些字段的语义会被 Octo 解析为行为指令;具体支持的字段以你项目中的规则集为准(文档中列举了常见选项)。


4. MCP 集成:为什么要接入、如何配置(含 octofriend.json5 示例)

MCP(Model Context Protocol)的作用是把外部结构化数据流实时推给模型,减少手动拼接上下文的工作。

4.1 场景举例

  • 从项目管理工具(如 Linear、Jira)拉取 issue 与评论,让模型基于最新任务写变更说明。
  • 把代码仓库的文件树与最近提交摘要实时提供给模型,辅助代码审查。

4.2 配置文件位置

首次运行 Octo 会生成:

~/.config/octofriend/octofriend.json5

4.3 MCP 配置样例(连接 Linear)

mcpServers: {
  linear: {
    command: "npx",
    arguments: [ "-y", "mcp-remote", "https://mcp.linear.app/sse" ],
  },
},

保存后重启 Octo,即可通过内置命令访问 MCP 数据源。

4.4 注意事项

  • MCP 源通常通过 SSE/HTTP 推送或 CLI wrapper 提供数据,确保网络或本地代理配置正确。
  • 为了安全起见,可在 octofriend.json5 中限定某些 MCP 源为只读。

5. 多模型切换与自动修复实操

下面给出一些常见操作和终端示例,便于你在真实工作流中直接使用。

5.1 运行时切换模型

在交互中你可以使用命令切换当前模型,例如:

/switch Claude

/switch gpt-5

这个命令会无缝切换模型并继续在同一上下文中对话。

5.2 自动修复(autofix)流程

当工具调用或代码补丁应用失败时,Octo 会尝试调用预配置的 autofix 模型(例如 diff-applyfix-json)进行修复:

终端示例:

🛠️ Tool call failed: invalid JSON from linter
🐙 Octo: running autofix (fix-json)
✅ Autofix succeeded: applied patch

示例命令行流程

  1. 用户请求:Refactor this function to be async
  2. 模型输出了一个补丁(patch),Octo 运行 git apply 进行应用。
  3. 如果 git apply 报错,Octo 把错误信息提交给 diff-apply 模型尝试修复补丁并重试。

这种“补丁→尝试应用→失败→autofix→重试”的闭环,能大幅降低人工介入频率。


6. 思考 Token(thinking budget)管理:参数与示例

Octo 将“思考预算”抽象为几个档位(low/medium/high),对应不同的 Token 配额。可以在命令行或规则文件中设置。

6.1 通过命令行设置

octofriend --thinking=high

6.2 常见档位(示例说明)

  • low:适用于短对话、快速校验(示例预算 2048 Token)
  • medium:适用于常规模型推理(示例预算 4096 Token)
  • high:适用于长上下文或复杂推理(示例预算 8192 Token)

具体数字与模型实现有关,上面示例来自项目文档的说明格式,按需调整。


7. 常见场景操作示例(本地 LLM、连接 Linear MCP)

7.1 使用本地 LLM 的示例流程

  1. 在本地启动你的 LLM 服务(示例不包含具体 LLM 的启动命令,此步骤假定已有本地服务)。
  2. octofriend.json5 中添加本地 LLM 的调用命令或代理信息(示例):
mcpServers: {
  localLLM: {
    command: "curl",
    arguments: [ "http://127.0.0.1:8000/infer" ],
  },
},
  1. 启动 Octo 并在交互中选择 localLLM 或通过命令 /switch localLLM 使用本地模型。

7.2 通过 MCP 连接 Linear 的演示

  1. octofriend.json5 添加 Linear MCP(参考 4.3)。
  2. 在 Octo 中运行:
/mcp connect linear
/mcp fetch recent-issues
  1. Octo 会把获取到的结构化 issue 数据注入到当前会话上下文,供模型直接引用。

8. 故障排查与调试技巧(带终端日志示例)

下面列出一些常见问题的调查步骤与终端示例,便于快速定位。

8.1 问题:octofriend 启动失败

排查顺序

  1. 检查命令是否在 PATH 中:which octofriendcommand -v octofriend
  2. 检查 Node.js 与 npm 版本(若安装失败可能是权限或兼容问题):node --version npm --version
  3. 查看 ~/.config/octofriend/ 是否存在可读写权限

示例输出

$ octofriend
Error: EACCES: permission denied, access '/usr/local/lib/node_modules/octofriend'
→ 解决:使用 sudo 或修正 npm 全局安装目录的权限

8.2 问题:MCP 无法连接

检查网络与命令是否正确:

$ npx mcp-remote https://mcp.linear.app/sse
Error: connect ECONNREFUSED 127.0.0.1:443

这种错误通常是网络或代理导致,建议用 curlwget 验证目标 URL 可达。

8.3 工具调用失败但自动修复未生效

检查点

  • 查看错误日志的原始信息,是否包含足够的上下文供 autofix 模型修复
  • 查看权限问题(是否允许 Octo 写入仓库)

示例日志

🛠️ apply-patch failed: patch did not apply
Autofix attempted but failed: diff-apply returned error: ambiguous hunk
→ 建议:手动检查补丁差异并调整上下文

9. 未来功能与 TODO(摘自 TODO.md

项目的 TODO 列表给出了一些可预期的改进方向:

  • Git 环境感知:自动读取 .gitignore 并将目录结构带入上下文
  • Gemini API 支持:完善对非完全兼容 OpenAI 接口的适配
  • 类型安全重构:为 History/IR 等内部数据建立更严格的类型链路
  • 菜单系统重构:采用状态栈以便更好地维护 UI 状态
  • API Key 快捷入口:为常见推理网站的 API Key 页面提供直接跳转
  • Anthropic Token 配置:允许以 Token 精确配置“思考预算”

这些任务代表项目面向生产化及企业使用的关键改进方向。


10. FAQ 与 HowTo Schema(机器可读片段)

下面给出可直接嵌入页面的 JSON-LD Schema,用于明确 HowTo 与 FAQ 结构(便于下游系统解析与采纳)。

10.1 HowTo(启动与配置 Octo)

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "安装并启动 Octo",
  "step": [
    {"@type": "HowToStep", "name": "安装", "text": "运行 npm install --global octofriend"},
    {"@type": "HowToStep", "name": "验证", "text": "运行 octofriend --version 确认安装成功"},
    {"@type": "HowToStep", "name": "启动", "text": "运行 octofriend 进入交互界面"}
  ]
}

10.2 FAQ(示例)

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type": "Question","name": "Octo 支持哪些模型?","acceptedAnswer": {"@type": "Answer","text": "支持与 OpenAI 兼容的模型,项目示例包含 GPT-5、Claude、GLM 等"}},
    {"@type": "Question","name": "如何接入 MCP?","acceptedAnswer": {"@type": "Answer","text": "在 ~/.config/octofriend/octofriend.json5 中添加 mcpServers 配置后重启 Octo"}}
  ]
}

附录 A:示例配置与文件清单(可复制)

A.1 最小 OCTO.md(项目根)

# 项目专属规则
- prefer: Claude
- disable-autofix: false
- allow-local-llm: true

A.2 完整示例 ~/.config/octofriend/octofriend.json5

{
  // Octofriend MCP servers
  mcpServers: {
    linear: {
      command: "npx",
      arguments: [ "-y", "mcp-remote", "https://mcp.linear.app/sse" ],
    },
    localLLM: {
      command: "curl",
      arguments: [ "http://127.0.0.1:8000/infer" ],
    },
  },
}

A.3 常用命令速查表

命令 说明
octofriend 启动 Octo 交互界面
octofriend --version 查看版本
/switch <model> 在会话中切换到指定模型
/status 查看当前模型与配置
/mcp connect <name> 连接已配置的 MCP 源