最近因为刚出deepseek-v4-flash新模型所以想丢到cc里让flash帮我搞一下grok注册机,发现经常出现cc的分类器不可用的情况。研究了下需要装一下哈雷酱的@cometix/claude-code(再次谢谢哈雷酱 ^-^)
大概效果:

- 先装@cometix/claude-code
GitHub - CometixSpace/claude-code · GitHub
npm install -g @cometix/claude-code
- 丢给ai应用一下哈雷酱更新的auto mode补丁
apply-claude-code-enable-auto-mode.zip (15.3 KB)
补更一下 脚本 旧的 2.1.212+ 点位变了
- 可以结合我的prompt再加入分类器重试和fallback机制,因为我发现opencode go的dsv4flash模型经常出现不可用的情况,可以降级到mimo等其他便宜模型,反正这类基本命令审核应该没问题


粪决如下:
我要为 @cometix/claude-code 的 auto mode 分类器实现「分类器可用性修复」。开始动手前先交互式问用户两个问题:
1. 主分类器模型 ID 是什么?
2. fallback 模型列表是什么?(逗号分隔;如用户没概念,提示只留 1 个便宜的)
然后按下面步骤实施(全自动,不要再问别的问题)。
【1. 环境】
- 安装:npm install --prefix <PREFIX> --ignore-scripts @cometix/[email protected]
(无 make 时 --ignore-scripts 跳过 node-pty 编译,再手动 cd 到包目录跑 node install.cjs)
- cli.js 用了 `using` 语法需 Node≥23。先 node -v,不够就下载独立 Node 24 runtime
- 写 wrapper 启动脚本 <PREFIX>/bin/claude-cometix(symlink 进 PATH),exec env 注入:
CLAUDE_CLASSIFIER_MODEL=<主分类器模型>
CLAUDE_CLASSIFIER_FALLBACK_MODELS=<fallback模型,逗号分隔>
CLAUDE_CLASSIFIER_RETRIES=2
CLAUDE_CLASSIFIER_TIMEOUT_MS=60000
CLAUDE_CLASSIFIER_LOG=/tmp/claude-classifier-log.jsonl
注意:不要放 settings.json 的 env(那里只对 ANTHROPIC_* 白名单生效),必须放
wrapper 的 exec env;minified 里的 Og 是空对象快照,自定义 env 一律直读
process.env.X。wrapper 用 exec env -u 清掉 ANTHROPIC_AUTH_TOKEN 等继承变量,
再设 ANTHROPIC_BASE_URL 指向你自己的网关/key 方案(保持和原 claude 一致)。
【2. 基础补丁(v1 之前必须有)】在 cli.js 的 S$t 分类器派发函数里做:
a. 让分类器模型可配:读 process.env.CLAUDE_CLASSIFIER_MODEL
b. fail-open:分类器不可用时返回放行而不是拒绝(搜 unavailable 分支)
c. 权限策略:拦截命令时改为 behavior:"ask"
【3. 注入 v4 fallback+重试】在分类器 K.unavailable 分支注入以下逻辑:
1. 主模型先重试 rt 次(rt=CLAUDE_CLASSIFIER_RETRIES),每次记
classifier_primary_retry_success/fail(含 model、isFallback:false)
2. 主模型全失败 → fallback 链,每个模型各重试 rt 次,记
classifier_fallback_success/fail(含 model、isFallback:true)
6. 全链失败 → classifier_all_failed(models=[主模型].concat(fallback链))
7. 每请求超时读 CLAUDE_CLASSIFIER_TIMEOUT_MS
8. 所有日志 append 到 CLAUDE_CLASSIFIER_LOG
【注入硬性要求】
- 先备份 cli.js(带版本时间戳)
- 用独立 JS 补丁文件(写 /tmp/patch-*.js 再 node 跑),禁止在 bash/python
大段字符串(反引号转义会弄坏 minified,导致 Unterminated string constant)
- 改完用 acorn 校验语法(ecmaVersion latest + sourceType module),失败就回滚备份
【4. 验证】
- 改 cli.js 必须重启 wrapper 才生效
- print 模式 -p 不触发分类器,只有交互 auto mode 触发
- 用会触发权限判定的命令(如 git commit)验证:不卡死、无弹窗
- 查 /tmp/claude-classifier-log.jsonl,能区分主模型重试成功 vs 哪个 fallback 成功
