资讯详情

如何把 Codex 接入 Odysseus:插件安装与 marketplace.json 配置

📅 2026/9/9 20:06:41 | 华诺云谱 👁 阅读
如何把 Codex 接入 Odysseus:插件安装与 marketplace.json 配置
如何把 Codex 接入 Odysseus插件安装与 marketplace.json 配置【免费下载链接】odysseusSelf-hosted AI workspace.项目地址: https://gitcode.com/gh_mirrors/ody/odysseus如果你的 Codex 终端会话需要读写 Odysseus 里的数据——待办、邮件、日历、记忆、文档或监控 Cookbook 的模型启动任务——需要先在 Odysseus 的 Settings 里创建一个 Codex Agent token再把插件包下载到本地并注册进 Codex 的marketplace.json。完成这条链路后Codex 终端里的辅助脚本通过带 scope 限制的/api/codex/*HTTP 接口访问数据权限边界由你在 Odysseus 界面上勾选的 scope 决定。适用前提Odysseus 实例已在运行、浏览器里已登录管理账户、Codex 所在机器上有codexCLI 和python3。准备条件一个可访问的 Odysseus 实例记下它的访问地址形如http://127.0.0.1:7000。浏览器中能进入 Odysseus 的 Settings Integrations 页面。Codex 终端所在机器已安装codexCLI并可用curl和python3设置脚本用到python3 -m zipfile解压。在 Odysseus 中创建 Codex Agent token打开 Odysseus 的Settings Integrations点Add Integration选择Codex Agent。给这个 agent 起一个名字例如Codex Agent — laptop用于和别的 agent 区分点Create token。token 生成后会显示一次界面明确提示 Copy this token, it wont be shown again需要立即复制保存。在Configure access区域勾选允许该 agent 使用的工具然后点Save。注意新建的 agent 默认只有chat权限界面上的勾选只是预览点 Save 之后 scope 才真正写入。可选的 scope 及其用途来自 设置页前端实现Scope用途todos:read/todos:write读待办 / 创建、更新、删除、勾选待办documents:read/documents:write读文档 / 创建草稿文档需要文档 API 已启用email:read/email:draft/email:send读邮件 / 创建邮件草稿 / 直接发送邮件需要邮件 API 已启用calendar:read/calendar:write读日历 / 创建日历事件memory:read/memory:write读记忆 / 写记忆cookbook:read列出 Cookbook 任务并 tail 其 tmux 输出cookbook:launch启动/停止 Cookbook serve 任务会 SSH 到已配置的服务器执行命令受与 UI 相同的命令白名单约束email:send、cookbook:launch属于高权限项按需开启。复制生成的一键设置命令token 生成后同一界面下方会出现Quickstart面板里面是随 token 生成的一整段终端命令simply paste directly in your terminal其中已经填入了你的实例地址和 token。点击Copy复制整段命令即可。这段命令的内容与 integrations/codex/README.md 中的 User Flow 一致其结构如下示例中的 URL 和 token 在 UI 生成的版本里会被替换为真实值export ODYSSEUS_URLhttp://your-odysseus-host:7000 export ODYSSEUS_API_TOKENody_generated_token mkdir -p ~/plugins curl -fsSL -H Authorization: Bearer $ODYSSEUS_API_TOKEN $ODYSSEUS_URL/api/codex/plugin.zip -o /tmp/odysseus-codex-plugin.zip python3 -m zipfile -e /tmp/odysseus-codex-plugin.zip ~/plugins python3 - PY import json from pathlib import Path p Path.home() / .agents / plugins / marketplace.json p.parent.mkdir(parentsTrue, exist_okTrue) if p.exists(): data json.loads(p.read_text()) else: data {name: personal, interface: {displayName: Personal}, plugins: []} data.setdefault(name, personal) data.setdefault(interface, {}).setdefault(displayName, Personal) plugins data.setdefault(plugins, []) entry { name: odysseus, source: {source: local, path: ./plugins/odysseus}, policy: {installation: AVAILABLE, authentication: ON_INSTALL}, category: Productivity, } data[plugins] [item for item in plugins if item.get(name) ! odysseus] [entry] p.write_text(json.dumps(data, indent2) \n) PY codex plugin add odysseuspersonal逐行说明这段命令做了什么export两行导出插件运行时依赖的两个环境变量ODYSSEUS_URL是你的实例地址ODYSSEUS_API_TOKEN是刚生成的 token。SKILL.md 明确说明这两个值缺失时不要猜测凭据而是回到 Odysseus Settings 创建 Codex Agent token 并把两者暴露给终端会话。curl从/api/codex/plugin.zip下载插件包该端点要求认证见 routes/codex_routes.py保存为/tmp/odysseus-codex-plugin.zip。python3 -m zipfile -e把插件包解压到~/plugins得到~/plugins/odysseus/目录内含 SKILL.md 与辅助脚本 scripts/odysseus_api.py。heredoc Python 块创建并写入~/.agents/plugins/marketplace.json。它把本插件注册为本地 marketplacepersonal下的一条 plugin 记录source指向相对路径./plugins/odysseus写入前会过滤掉已存在的name为odysseus的条目再追加因此重复执行不会产生重复记录。codex plugin add odysseuspersonal把personalmarketplace 下的odysseus插件加入 Codex。这段命令会向 home 目录写入~/plugins/和~/.agents/plugins/marketplace.json并在/tmp留下压缩文件如果~/.agents/plugins/marketplace.json里已注册过其他插件脚本会保留它们只更新odysseus这一条。验证插件接入是否成功按 README 的 Verify 步骤在同一个终端会话ODYSSEUS_URL和ODYSSEUS_API_TOKEN仍然有效中执行python3 ~/plugins/odysseus/scripts/odysseus_api.py capabilities该命令请求GET /api/codex/capabilities返回 JSON 中包含token_scopes当前 token 实际持有的 scope 列表、tools各工具面的 read/write 布尔值与可用 action 列表以及safety字段。对照它与你刚才在 Settings 里勾选的 scope 是否一致即可确认接入链路通了。如果输出到 stderr 的是missing ODYSSEUS_URL, ODYSSEUS_API_TOKEN; create a Codex Agent token in Odysseus Settings说明当前终端没有这两个环境变量回到 Quickstart 重新执行 export 部分。辅助脚本本身也只做一件事所有请求只允许发往/api/codex/前缀下的路径访问其他路径会被直接拒绝refusing non-/api/codex path。scope 生效后可以再用具体工具面做一次数据层面的抽查例如python3 ~/plugins/odysseus/scripts/odysseus_api.py todos list使用边界与常见问题接入完成后SKILL.md 和 README.md 给出几条硬性约束排障时先对照403 是有意设置不要绕过。服务端对缺少 scope 的请求返回403并提示缺失的 scope如 API token missing required scope: email:read。正确处理方式是回到 Codex Agent 设置里打开对应工具开关而不是改走别的路径。只走/api/codex/*。Codex 访问用户数据必须走这套 scoped HTTP 接口SSH、Docker、直接 Python import、数据库查询、MCP 内部模块都会绕过 Odysseus Settings 的权限控制文档明确要求不要使用。能力面以 capabilities 为准。例如/api/codex/capabilities没有显示email.read: true时不要尝试读邮件而是先在 Codex Agent 设置里启用 Email read。邮件发送需要显式指令。email:sendscope 之外文档还要求用户明确表达要发送后才可调用 send。提醒类需求应建带due_date的 TODO后端解析自然语言时间如tomorrow 5pm而不是建一个名为 Reminder 的日历事件——日历事件不会触发通知。收回访问在 Settings Integrations 中打开该 Codex Agent 条目点Revoke有确认提示即删除对应 tokenDELETE /api/tokens/{id}。撤销后使用该 token 的集成会立即失去访问权限如果不再需要本地插件可另行清理~/plugins/odysseus/和marketplace.json中的对应条目。【免费下载链接】odysseusSelf-hosted AI workspace.项目地址: https://gitcode.com/gh_mirrors/ody/odysseus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。