Skip to content

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

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions