目录一、AxonHub 是干什么的二、安装SQLite 单容器方案1. 准备目录2. 写 docker-compose.yml3. 写 config.yml4. 启动一、AxonHub 是干什么的新版 Codex CLI用的是 OpenAI Responses API不是老版的 Chat Completions。但国内厂商——DeepSeek、Kimi、GLM、火山引擎——目前基本只提供 Chat Completions 接口。直接填这些 endpoint 进 Codex它会报格式不兼容的错误。AxonHub 的核心价值就在这里它把国内模型的 Completions API 自动转换成 Responses API 格式。Codex 以为自己连的是 OpenAI实际上 AxonHub 在背后把请求拆给 DeepSeek 或 Kimi再把返回结果包成 Responses 的格式塞回去。你一行代码不用改就能让 Codex 跑在国内模型上。除此之外它还能做渠道路由多个 Key 自动切换、故障检测某个厂商挂了自动切到另一个、用量统计看每个模型烧了多少钱。项目地址https://github.com/looplj/axonhub Go语言开发的单容器就能跑。二、安装SQLite 单容器方案官方默认 docker compose 带了 PostgreSQL个人用太重。这里用 SQLite 方案只有一个容器内存 50~100MBWSL 里跑起来毫无压力。1. 准备目录mkdir -p ~/axonhub cd ~/axonhub2. 写 docker-compose.ymlservices: axonhub: image: looplj/axonhub:latest container_name: axonhub environment: AXONHUB_DB_DIALECT: sqlite3 AXONHUB_DB_DSN: file:/data/axonhub.db?cacheshared_fk1_pragmajournal_mode(WAL) ports: - 8090:8090 volumes: - ./data:/data - ./config.yml:/app/config.yml:ro restart: unless-stopped healthcheck: test: [CMD, wget, --no-verbose, --tries1, --spider, http://localhost:8090/health] interval: 30s timeout: 10s retries: 3 start_period: 40s3. 写 config.ymlserver: host: 0.0.0.0 port: 8090 name: AxonHub request_timeout: 30s llm_request_timeout: 600s debug: false cors: enabled: true allowed_origins: - http://localhost:3000 - http://localhost:5173 - http://localhost:8090 allowed_methods: [GET, POST, DELETE, PATCH, PUT, OPTIONS, HEAD] allowed_headers: [Content-Type, Authorization, X-API-Key, AH-Thread-Id, AH-Trace-Id] allow_credentials: true db: dialect: sqlite3 dsn: file:/data/axonhub.db?cacheshared_fk1_pragmajournal_mode(WAL) max_open_conns: 10 max_idle_conns: 5 cache: mode: memory memory: expiration: 5s cleanup_interval: 10m log: level: info encoding: console output: stdio4. 启动mkdir -p data chmod 777 data docker compose up -d等 healthcheck 通过访问 http://localhost:8090 第一次会跳初始化向导设管理员账号密码。按提示设置之后登录即可。登录之后能看到仪表盘就说明已经安装好了写一篇我们继续介绍如何配置。下图是我运行起来后的界面下一篇引入地址