Skip to content

使用 Codex 接入 SkillClaw 时遇到的模型切换、分支 skill 管理问题 #25

Open

Description

@Xavier4385

大佬好,最近用 Codex CLI 接入 SkillClaw,过程中遇到几个让我有点犹豫该怎么用的问题。这些不一定都是 bug,更像是当前设计在 Codex 这种 agent 上的边界没说清楚。下面尽量列得具体一些,方便讨论。

接入后 Codex 的模型切换 UI 失效,只能看到一个 skillclaw-model

平时开发会按任务在不同模型间切(比如简单改动用便宜模型、复杂任务用强模型)。接入 SkillClaw 之后,Codex 的 /model 列表里只剩一个 skillclaw-model 可选。

看下来核心原因在 skillclaw/api_server.py 的 /v1/models 实现,它写死返回单条 served_model_name:

@app.get("/v1/models")
async def list_models(...):
    model_id = owner._served_model
    return JSONResponse(content={
        "object": "list",
        "data": [{"id": model_id, "object": "model", ...}],
    })

这里这样设计是为啥呢?

ChatGPT 订阅登录的 Codex 用户接入好像不太行

这点更多是 OpenAI 那边把 ChatGPT 订阅和 Platform API 拆成了两套体系(端点、鉴权、计费都不同),不是 SkillClaw 的问题。但实际表现是:只用 codex login 走 ChatGPT 订阅、没单独申请 OpenAI Platform API key 的用户,把 SkillClaw 当实时代理是接不通的(OAuth token 不能打 api.openai.com,而 SkillClaw 当前是按"持有上游 API key 后翻译/转发"模式设计的)。还是我使用有问题?

多分支 / 多 worktree 场景下 skill 容易跨分支污染

skills.dir 是单值,PID 文件、config 文件路径也都钉死在 ~/.skillclaw/(skillclaw/runtime_state.py / skillclaw/config_store.py),CLI 也没有 --config 之类的入口。结果是:

  • 把 skills.dir 指到 /.agents/skills 后,多个 worktree 共用同一份物理目录,分支差异会互相污染。
  • 想要"每个 worktree 一个 SkillClaw 实例",目前只能靠重定向 HOME/USERPROFILE 来强行让 ~/.skillclaw/ 也分开,比较绕。
  • 一旦后续开了 evolve_server,跨分支的 session 还会被合并进同一个 skill 池,再拆就更难了。

以上三点更多是想反馈"我作为一个 Codex 用户在真实使用中卡在哪儿"。如果有哪点是我理解偏了或者有更推荐的官方用法,麻烦指出来,谢谢。

本地 Codex 的相关 config.toml
model = "gpt-5.3-codex"
openai_base_url = "http://127.0.0.1:30000/v1"
model_reasoning_effort = "medium"
model_provider = "skillclaw"

[model_providers.skillclaw]
name = "SkillClaw"
base_url = "http://127.0.0.1:30000/v1"
wire_api = "responses"
experimental_bearer_token = "<local-token>"
本地 SkillClaw 的相关 config.yaml
claw_type: codex

llm:
  api_base: http://<local-llm-host>:11434
  api_key: <redacted>
  api_mode: chat
  model_id: qwen3.6
  provider: custom

proxy:
  host: 0.0.0.0
  port: 30000
  served_model_name: skillclaw-model

skills:
  dir: F:\WorkPlace\<project>\.agents\skills
  enabled: true
  retrieval_mode: template
  top_k: 6

Activity

  1. changed the title [-]使用 Codex 接入 SkillClaw 时遇到的模型切换、model_passthrough 和多分支 skill 管理问题[/-] [+]使用 Codex 接入 SkillClaw 时遇到的模型切换、分支 skill 管理问题[/+] on May 7, 2026
  2. Upper9527 commented on Oct 21, 2026

    @Upper9527
    Collaborator

    核对当前主分支后,这三点确实是现有边界:

    1. /v1/models 只暴露一个代理别名,请求被转发到配置的 llm.model_id。单纯在列表中增加模型名不会实现真正的上游模型切换,还需要路由和配置支持。
    2. 当前主分支没有读取/刷新 ChatGPT 订阅 OAuth 凭据的正式实现。feat: add codex_oauth provider for ChatGPT-account authentication #86 是待审 PR,不能作为已经发布的功能。
    3. 配置、PID 和启动锁仍使用用户级 ~/.skillclaw;没有完整的每 worktree 实例隔离。只改 skills.dir 或代理端口不足以隔离进程状态和共享会话池。

    保留此 issue 跟踪模型路由与实例隔离。#35 同时跟踪避免侵入 Codex 原生工作流的诉求;不把 opt-in profile 的改动视为解决了上述三个问题。

  3. Upper9527 commented on Oct 21, 2026

    @Upper9527
    Collaborator

    已合并 #105,解决这里的本地多实例隔离部分:为每个 worktree 设置不同的绝对 SKILLCLAW_HOME,再配置不同代理端口。配置、PID、启动锁、默认日志、记录/缓存、技能目录、dashboard 数据库及 adapter 备份随实例隔离;status / stop 使用同一个 home。新实例默认 claw_type: none,客户端 profile 请手动指向对应端口,避免各实例竞争改写同一个 agent 配置。

    也纠正我前面关于配置路径的表述:主分支此前已经有 SKILLCLAW_CONFIG_FILE,但它只切换配置文件,不隔离运行状态;现在两者可组合使用,配置文件变量仍优先。已有显式 skills.dir 等路径保持不变。共享演化池仍需独立 group/root/凭据,group_id 本身不是权限边界。

    五项回归测试通过,且实际启动两个本地 daemon:独立 PID、两端健康,停止 A 后 B 仍正常,最后都已清理。模型切换/订阅认证未在本 PR 中实现,因此保留 issue。为了继续模型路由,请补充期望的公开模型名 → 上游模型对应关系(不含凭据),以及这些模型是否都在同一个 endpoint/provider;需要区分同端点模型选择和跨 provider 路由,而不能只修改 /v1/models 列表。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions