项目简介

'codex-container' 是一个为 OpenAI Codex CLI 设计的 Docker 容器辅助项目,旨在提供一个可复现的环境来运行 Codex Agent。其核心功能是作为 Model Context Protocol (MCP) 服务器的托管平台,允许 LLM 客户端通过标准化的 JSON-RPC 协议调用各种外部功能和访问上下文信息。该项目内置了多种 MCP 服务器,涵盖文件操作、Google 服务、网络爬取、时间工具、语音转录、便签管理、产品搜索等多个领域,使得 Agent 能够响应事件并执行复杂的自动化任务。

主要功能点

  • MCP 服务器托管与管理: 自动发现并注册位于 'MCP/' 目录下的 Python MCP 服务器,为 LLM 客户端提供丰富的工具集。
  • 事件驱动的 Agent 模式: 支持监控文件系统变化,并自动触发 Codex Agent 执行预设任务,实现自动化响应。例如,当新文件出现时,Agent 可以自动进行转录或分析。
  • Prompt 模板: 使用 'MONITOR.md' 等自定义 Prompt 模板,支持变量替换,方便定制 LLM 交互模式。
  • 会话管理: 支持列出和恢复之前的 Codex 会话,提高 Agent 交互的连续性。
  • 多种工具集成: 内置的 MCP 服务器提供了以下类别的功能:
    • 文件系统操作: 读写文件、查看文件/目录信息、复制、移动、删除、文件对比、备份与恢复、文本替换、文件搜索与目录树展示。
    • Google 服务: 集成 Google Drive (文件管理) 和 Gmail (邮件收发),以及 Google Calendar (日程管理)。
    • 网络数据: 提供网页内容抓取 (Gnosis Crawl) 和 Google 搜索 (SerpAPI)。
    • 时间工具: 查询当前时间、时区转换、列出可用时区。
    • 语音转录: 上传 WAV 文件至转录服务,检查转录状态并下载结果。
    • 桌面便签: 管理和搜索桌面便签 (需本地便签应用支持)。
    • 产品搜索: 带有学习和记忆能力的产品关键字和模糊搜索。
    • VHF 监控控制: 控制 VHF 监听器的频道、频率和录音功能。
    • 人类交互: 提供向人类操作员发送消息的工具。
    • 报告系统: 向虚拟主管提交任务报告。
    • 天气查询: 提供 Open-Meteo 天气预报、海洋条件和历史天气数据。
  • Docker 容器化: 提供可复现的 Docker 环境,简化部署和依赖管理。
  • HTTP 网关: 可将 Codex 暴露为轻量级聊天补全服务,方便集成。

安装步骤

  1. 安装 Docker: 确保您的系统已安装 Docker Desktop 或 Docker Engine 并可正常运行。在 Windows 上使用 WSL 时,需启用 Docker Desktop 的 WSL 集成并将用户添加到 'docker' 组。
  2. 克隆仓库: 在终端中执行以下命令,克隆项目仓库:
    git clone https://github.com/DeepBlueDynamics/codex-container.git
    cd codex-container
  3. 运行安装脚本: 执行安装脚本以构建 Docker 镜像、更新 Codex CLI 并自动注册所有 MCP 服务器。
    • Linux/macOS/WSL (Bash):
      ./scripts/codex_container.sh --install
    • Windows (PowerShell):
      ./scripts/codex_container.ps1 -Install
    安装过程会自动将 MCP 目录中的 Python 脚本复制到 Codex 主目录下的 'mcp/' 文件夹中,并在 '.codex/config.toml' 文件中注册这些 MCP 服务器,使其可供 Codex CLI 调用。

服务器配置

'codex-container' 项目的安装脚本会自动为您配置其内部的 'Codex CLI' 客户端,使其能够识别和调用内置的 MCP 服务器。对于大部分用户而言,无需手动配置这些 MCP 服务器。

如果您正在构建一个自定义的 MCP 客户端,并希望连接到 'codex-container' 内部运行的某个 MCP 服务器,您需要了解这些服务器在 Docker 容器内的启动方式。例如,对于名为 'gnosis-files-basic' 的 MCP 服务器,在 'codex-container' Docker 环境内部,其启动和通信的逻辑如下:

  • 服务器名称: 'gnosis-files-basic'
  • 通信协议: 'stdio' (通过标准输入输出进行 JSON-RPC 通信)
  • 启动命令: 'python3' (具体路径为 '/opt/mcp-venv/bin/python3')
  • 命令参数: '-u', '/opt/codex-home/mcp/gnosis-files-basic.py'
  • 说明: 'codex-container' 在 Docker 容器内部维护一个 Python 虚拟环境 ('/opt/mcp-venv'),并将 MCP 脚本存放在 '/opt/codex-home/mcp/' 路径下。自定义 MCP 客户端如果希望直接与容器内的 MCP 服务器通信,需要模拟这种启动命令并建立 'stdio' 连接。

基本使用方法

  1. 运行交互式 CLI: 启动 Codex CLI 并输入指令。
    • Linux/macOS/WSL:
      ./scripts/codex_container.sh -- "summarize the repo"
    • Windows (PowerShell):
      ./scripts/codex_container.ps1 -- "summarize the repo"
  2. 监控模式 (事件驱动): 启用文件系统监控,让 Agent 自动响应文件变化。
    • 首先,在您希望监控的目录中创建一个名为 'MONITOR.md' 的文件,作为 Agent 的 Prompt 模板。
    • 然后,运行以下命令启动监控:
      • Linux/macOS/WSL:
        ./scripts/codex_container.sh --monitor --watch-path . --monitor-prompt MONITOR.md
  3. 运行 HTTP 网关: 将 Codex 暴露为本地 HTTP 服务,方便通过 API 调用。
    • Linux/macOS/WSL:
      ./scripts/codex_container.sh --serve --gateway-port 4000
    • Windows (PowerShell):
      ./scripts/codex_container.ps1 -Serve -GatewayPort 4000
    这将启动一个 HTTP 服务器,监听 'http://localhost:4000/completion' 路径的 POST 请求,将消息转发给 Codex Agent 并返回结果。

信息

分类

AI与计算