Octop 自托管 AI 助手 API 文档实战指南:5 步从开启 /api/docs 到调通第一个接口

Octop 自托管 AI 助手 API 文档实战指南:5 步从开启 /api/docs 到调通第一个接口

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

Octop 是一个多用户、多智能体协作的自托管 AI 助手,全部后端能力挂在/api前缀下,官方自带/api/docs交互文档与在线调试页。本文从打开文档页讲起,覆盖 JWT 令牌获取与续期、分组导航、首次接口调通和错误码解读,读完你能独立跑通第一条 API 请求链路。

01 | 把文档页打开:默认关闭、两种开启方式与验证动作

/api/docs与/api/openapi.json出厂状态是关闭的,访问直接 404——生产环境少暴露一层能力面,这个取舍很合理。想打开它,只有两个开关,环境变量优先级高于配置文件:

开启方式写法生效条件
配置文件~/.octop/config.json中加"enable_api_docs": true重启服务
环境变量OCTOP_ENABLE_API_DOCS=1重启服务,优先覆盖配置
{ "enable_api_docs": true }

字段定义在 src/octop/config.py 的OctopConfig中,/api/docs路由本身注册在 src/octop/api/app.py,页面由 Scalar 渲染。

验证动作:重启后浏览器打开http://127.0.0.1:8088/api/docs(Octop 默认监听127.0.0.1:8088),看到左侧接口分组导航即算成功。

💡 小贴士:开启状态未走完首次安装向导时,/api/docs本身能打开,但调任何业务接口都会拿到 503 和{"setup_required": true}——先完成向导再调试。

02 | 拿到钥匙:令牌获取与续期三步走

  1. 登录换令牌:POST /api/auth/login提交username与password,响应里取access_token字段(启用强验证码时还要带上captcha_token)。
  2. 请求头携带:后续请求统一加Authorization: Bearer <access_token>;src/octop/api/middleware/jwt_auth.py 会对除白名单外的所有/api/*路由做拦截。
  3. 过期与自动续期:令牌 TTL 默认 86400 秒,由access_token_ttl_seconds控制。当剩余有效期不足三分之一时,认证响应会顺带一个X-Octop-Access-Token响应头,里面是新令牌——拿到就替换本地旧值,实现"一次登录长期在线"的滑动续期。
curl -s -X POST http://127.0.0.1:8088/api/auth/login \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "你的密码"}'

以下端点免令牌,直接裸调:

  • /api/docs、/api/openapi.json、/api/health
  • /api/auth/login、/api/auth/captcha、SSO 系列/api/auth/oidc/*、/api/auth/oauth/*
  • 邀请码:/api/auth/invite/validate、/api/auth/invite/redeem;OAuth 回调/api/connectors/oauth/callback;内部网关/api/internal/mcp/*
  • 首次安装向导/api/setup/*

注意安装锁:首个管理员创建之前,src/octop/api/middleware/setup_lockdown.py 会对所有非公开/api接口一律回 503setup_required,等于强制你先走安装向导。

03 | 看懂左侧地图:40 多个标签的分组逻辑

文档页左侧 40 多个业务标签,不是拍脑袋起的,而是OPENAPI_TAGS配置逐条生成,定义在 src/octop/api/openapi_meta.py——分组有疑问直接翻这份源码对照。高频标签的能力边界:

标签管什么边界提醒
setup首次安装向导:建管理员、配模型只有初始安装阶段用得上
auth登录登出、当前用户资料与偏好免令牌入口也在这
agents智能体增删改查、启动/停止运行时运行时操作仅属主或管理员
providersLLM 供应商与模型选择、连通性测试删除前确认无智能体引用
cron挂在智能体上的定时 Promptowner only,跨属主查不到
browser远程浏览器会话、实时流、录放依赖宿主机浏览器环境

点标签 → 右侧看接口卡片 → 按卡片上的 Bearer 标识决定是否带令牌,导航就这三步。

04 | 登录到调通:一条请求链路完整走一遍

目的接口权限
探活GET /api/health公开
登录POST /api/auth/login公开
当前用户GET /api/auth/me用户
智能体列表GET /api/agents用户
启动智能体POST /api/agents/{id}/start属主
建定时任务POST /api/agents/{id}/cron属主

权限分四级递进:public → user → owner → admin。owner 指资源属主或管理员,例如 cron 接口即使管理员去看别人的任务也拿不到数据。文档页右侧接口卡片上的BearerAuth标识可以直接看出该接口属于哪一级。

在线调试演示两个高频动作。第一步,文档页找到POST /api/auth/login,填入username、password点发送,从响应 JSON 取出access_token;第二步,在请求设置里配置全局头:

Authorization: Bearer 刚才复制的令牌

再调GET /api/auth/me,返回{id, username, role, ...}即代表鉴权链路完全跑通。

实时对话不走 HTTP:连WS /api/agents/{agent_id}/chat/ws?token=<jwt>(JWT 放查询参数),发送{"type":"user_turn", ...}帧,服务端流式回 JSON 分片,直到done或error帧。

05 | 错误码怎么读:统一信封 + 5 个高频码

所有非 2xx 的 JSON 响应都是同一副信封,message会按Accept-Language本地化:

{ "error": { "code": "AGENT_NOT_FOUND", "message": "...", "details": {} } }

code与 src/octop/infra/errors.py 的ErrorCode枚举一一对应。新手最常撞上的五个:

codeHTTP处理建议
AUTH_FAILED/TOKEN_EXPIRED401重新走登录换新令牌
LOGIN_LOCKED429等login_lockout_seconds解锁,或请管理员调/api/users/{id}/unlock-login
SETUP_REQUIRED409初始管理员还没建,先完成安装向导
FORBIDDEN403令牌有效但角色不够,升 admin 或换属主账号
AGENT_NOT_FOUND404智能体不存在,或不属于当前用户

06 | 踩坑与生产建议:5 个高频问答

Q:公网开着文档页会泄密吗?文档页只暴露接口结构,不含任何业务数据;但它等于把系统能力边界摊开给扫描器。公网生产建议保持关闭,确实需要时让反向代理给/api/docs单独加一层基础认证。

Q:文档页打不开,怎么定位?先看返回码:404 说明enable_api_docs没开(改完记得重启);200 打开但业务接口全 503,是安装向导没走完。

Q:想把文档能力搬进 Postman 或 YApi?GET /api/openapi.json拉完整规范,导入即可离线维护集合。

Q:批量脚本总是令牌过期?在请求层加一行逻辑:每次响应检查X-Octop-Access-Token,存在就替换本地令牌——续期是服务端顺带完成的,别自己算时间。

Q:文档页和 Swagger 能共存吗?不用纠结。Octop 只保留 Scalar 这一套,/api/docs就是唯一入口。

这套"开页 → 拿令牌 → 看分组 → 调通首个接口 → 读懂错误 → 生产避坑"的闭环走完,Octop 的 HTTP API 就真正成了你的工具箱。想进一步挖接口细节,直接翻官方 docs/api.md 与 docs/configuration.md。

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ABS建模核心:滑移率物理本质与制动器动态建模

ABS建模核心:滑移率物理本质与制动器动态建模

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 1:26:01 阅读更多 →
盘点8款出圈国产AI芯片:从云端训练到端侧语音怎么选

盘点8款出圈国产AI芯片:从云端训练到端侧语音怎么选

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 1:26:01 阅读更多 →
深入parakeet-redux架构:从24层TDT编码器到解码器的设计细节

深入parakeet-redux架构:从24层TDT编码器到解码器的设计细节

人工智能语音模型量化模型压缩 【免费下载链接】parakeet-redux 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/moondream/parakeet-redux 点击查看 免费下载 &#x1f99c; parakeet-redux 是一个 1.58 bit 三值量化的自动语音识别&#xff08;ASR&#xff09;模型…

2026/10/21 1:25:00 阅读更多 →

最新新闻

Django数据可视化实践:超市销售系统全流程开发与热词分析

Django数据可视化实践:超市销售系统全流程开发与热词分析

毕业设计做到一半才意识到"选对题"比“写代码”重要得多——这是我在带几个应届生做完整套毕设流程后最深的体会。今天这篇想好好拆解一个很有代表性的题目&#xff1a;基于PythonDjango的超市销售系统&#xff0c;以及其中数据可视化模块的具体实现。这个选题好在哪…

2026/10/21 2:01:38 阅读更多 →
iPhone 模拟器实测:Madeira 在 iOS 跑 x86-64 Windows 游戏拆解

iPhone 模拟器实测:Madeira 在 iOS 跑 x86-64 Windows 游戏拆解

iPhone 模拟器实测&#xff1a;Madeira 在 iOS 跑 x86-64 Windows 游戏拆解 【免费下载链接】Madeira Run x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT 项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira App Store 里搜不到它&#xff0…

2026/10/21 2:01:38 阅读更多 →
PLC实战经验清单:从硬件接线到程序调试的90条避坑指南

PLC实战经验清单:从硬件接线到程序调试的90条避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:01:38 阅读更多 →
零成本用GitHub Pages部署HTML5游戏

零成本用GitHub Pages部署HTML5游戏

零成本用GitHub Pages部署HTML5游戏 【免费下载链接】github-pages Create a site or blog from your GitHub repositories with GitHub Pages. 项目地址: https://gitcode.com/GitHub_Trending/gi/github-pages 想让玩家在线试玩你的游戏&#xff0c;是不是得先租台服务…

2026/10/21 2:01:38 阅读更多 →
Cx-Programmer中ST语言编程实战:从梯形图到结构化文本

Cx-Programmer中ST语言编程实战:从梯形图到结构化文本

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:01:38 阅读更多 →
自动驾驶黄埔军校:4500人培养体系与行业技术扩散

自动驾驶黄埔军校:4500人培养体系与行业技术扩散

在自动驾驶这行混久了&#xff0c;你会发现一个很有意思的现象&#xff1a;圈子里提到“黄埔军校”四个字&#xff0c;大家不用解释就知道说的是哪家。前阵子跟几个老朋友闲聊&#xff0c;有人随口说了句“现在从那儿出来的&#xff0c;加起来得有4500人了”&#xff0c;在场的…

2026/10/21 2:00:38 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →