大佬好,最近用 Codex CLI 接入 SkillClaw,过程中遇到几个让我有点犹豫该怎么用的问题。这些不一定都是 bug,更像是当前设计在 Codex 这种 agent 上的边界没说清楚。下面尽量列得具体一些,方便讨论。 ## 接入后 Codex 的模型切换 UI 失效,只能看到一个 skillclaw-model 平时开发会按任务在不同模型间切(比如简单改动用便宜模型、复杂任务用强模型)。接入 SkillClaw 之后,Codex 的 /model 列表里只剩一个 skillclaw-model 可选。 看下来核心原因在 skillclaw/api_server.py 的 /v1/models 实现,它写死返回单条 served_model_name: ```python @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 指到 <repo>/.agents/skills 后,多个 worktree 共用同一份物理目录,分支差异会互相污染。 - 想要"每个 worktree 一个 SkillClaw 实例",目前只能靠重定向 HOME/USERPROFILE 来强行让 ~/.skillclaw/ 也分开,比较绕。 - 一旦后续开了 evolve_server,跨分支的 session 还会被合并进同一个 skill 池,再拆就更难了。 以上三点更多是想反馈"我作为一个 Codex 用户在真实使用中卡在哪儿"。如果有哪点是我理解偏了或者有更推荐的官方用法,麻烦指出来,谢谢。 <details> <summary>本地 Codex 的相关 config.toml</summary> ```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>" ``` </details> <details> <summary>本地 SkillClaw 的相关 config.yaml</summary> ```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 ``` </details>
Activity
[-]使用 Codex 接入 SkillClaw 时遇到的模型切换、model_passthrough 和多分支 skill 管理问题[/-][+]使用 Codex 接入 SkillClaw 时遇到的模型切换、分支 skill 管理问题[/+]Upper9527 commentedon Oct 21, 2026
核对当前主分支后,这三点确实是现有边界:
/v1/models只暴露一个代理别名,请求被转发到配置的llm.model_id。单纯在列表中增加模型名不会实现真正的上游模型切换,还需要路由和配置支持。~/.skillclaw;没有完整的每 worktree 实例隔离。只改skills.dir或代理端口不足以隔离进程状态和共享会话池。保留此 issue 跟踪模型路由与实例隔离。#35 同时跟踪避免侵入 Codex 原生工作流的诉求;不把 opt-in profile 的改动视为解决了上述三个问题。
Upper9527 commentedon Oct 21, 2026
已合并 #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列表。