Skip to content

modadv/probe_agent_models

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

方案: 抓包看 Claude Code 选 Opus 时实际发的 model ID

请在另一个终端按以下三步操作:

1) 启动本地代理(后台)

python3 sniff_cc.py 2>cc-sniff.log &

# 极简 HTTPS 透传抓包: 监听本地 8765, 转发到真实 base_url, 打印每个 /v1/messages 的 model
import http.server, ssl, json, urllib.request, sys, threading
UPSTREAM = "https://your-provider-url"

class H(http.server.BaseHTTPRequestHandler):
def _proxy(self):
    body = self.rfile.read(int(self.headers.get('Content-Length','0') or 0))
    try:
        j = json.loads(body)
        sys.stderr.write(f"\n[CC->] {self.command} {self.path}  model={j.get('model')!r}  msgs={len(j.get('messages',[]))}\n")               sys.stderr.flush()
    except Exception: pass
    req = urllib.request.Request(UPSTREAM + self.path, data=body, method=self.command,
            headers={k:v for k,v in self.headers.items() if k.lower() not in ('host','content-length')})
    try:
        r = urllib.request.urlopen(req, timeout=120)
        self.send_response(r.status)
        for k,v in r.headers.items():
            if k.lower() not in ('transfer-encoding','content-encoding','connection'): self.send_header(k,v)
        self.end_headers(); self.wfile.write(r.read())
    except urllib.error.HTTPError as e:
        self.send_response(e.code); self.end_headers(); self.wfile.write(e.read())
do_GET = do_POST = do_PUT = do_DELETE = _proxy
def log_message(self,*a,**k): pass

http.server.ThreadingHTTPServer(("127.0.0.1",8765), H).serve_forever()

2) 用本地代理启动 Claude Code

ANTHROPIC_BASE_URL=http://127.0.0.1:8765
ANTHROPIC_AUTH_TOKEN="$ANTHROPIC_AUTH_TOKEN"
claude

3) 在 CC 里 /model 选 Opus → 随便发一句话(比如 "ping")

然后回到 /tmp/cc-sniff.log 里 [CC->] 那行的 model=... 是什么(或者直接 cat /tmp/cc-sniff.log),就能告诉你 model 是什么值。

▎ 这个方法 100% 准确,因为是实测 Claude Code 真实出包,不依赖任何猜测或文档。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages