百种弊病,皆从懒生

Hacking Claude Code in Realtime

2026.02.15

做了个新玩具 linko, 本质上是个透明 mitm proxy, 但给他加上了可视化 ai agent 和 llm api 之间对话的能力.

限制:

  • 目前只支持 MacOS (透明代理的实现用了MacOS 上的pfctl, linux 的支持很简单, 有空可以加下)
  • 支持的 llm api 只有 anthropic 的接口格式, 任意兼容的第三方接口应该都可以(测试过minimax 和 deepseek)

原理上和 charles 之类的工具的主要区别在"透明", 不需要客户端指定http_proxy(有些工具不支持), 通过防火墙强行劫持https流量, 来做流量解密.

安装

brew tap monsterxx03/tap
brew install linko

或者直接去 releases 下 binary.

怎么玩

生成 CA 证书

linko gen-ca

会在 ~/.config/linko/certs/ 下生成 ca.crtca.key.

信任证书

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.config/linko/certs/ca.crt

启动 MITM proxy

sudo linko mitm

proxy 默认在 9890 端口. 需要 sudo 是因为要用 pfctl 把系统流量重定向过来.

默认会对系统中所有发往 443 端口的https 流量做MITM, 可以用 --whitelist 参数限定只对特定host 做MITM.

e.g.:

sudo linko mitm --whitelist api.minimaxi.com,*.deepseek.com

验证:

curl -v https://api.minimaxi.com

如果看到证书是 “Linko MITM CA” 签的, 说明已经正常工作了.

打开管理界面

浏览器访问 http://localhost:9810.

MITM tab 是通用的 MITM 流量解析监控页, 这边和llm api没什么关系, 任意https 流量都可以从这边看 request, response.

mitm

配合 Claude Code 用

Claude Code 用的库默认不识别自签名证书, 要手动关掉:

NODE_TLS_REJECT_UNAUTHORIZED=0 claude

然后你就可以在管理界面(LLM tab)看到 Claude Code 发的请求和收的响应了.

默认的系统提示词:

cc-system

默认发送的tools:

cc-tools

tools 定义:

cc-tool-def

触发工具调用时:

cc-tool-use

细看 ClaudeCode 的交互还挺有趣的, 比如怎么告诉llm 目前有哪些skill, plan mode 执行后发生了什么, 触发subagent 执行后 system prompt 的变化.

有空可以写一下, 一边用Claudecode 写代码, 一边把它和llm 之前的交互流程重现出来的过程很有趣, terminal 里那个转圈动画后隐藏了不少.

其他agent 工具

理论上本机直连 anthropic 格式接口的工具都能使用.

测试了opencode, openclaw, 都能正常解析结果, openclaw 也需要用NODE_TLS_REJECT_UNAUTHORIZED 禁用证书检查, 具体看README.

没有买 anthropic 官方订阅, 实际只测试了 Minimax CN(api.minimaxi.com) 和 Deepseek (api.deepseek.com).

如果只是关注 agent 和 LLm 之间的交互行为, 用哪家的接口其实都一样.

PS: cursor 不支持, 即使用自定义model 和api key, llm 调用也不是直连的, 会从 cursor server 端走一圈, cursor 和 server 的交互走的connect rpc + protobuf, 如果能逆向出pb文件, 理论上也是能解析的.

关于开发

ClaudeCode + MiniMax2.1 写了大概 90% 的代码, 2.5 刚出, 还没试过复杂任务, 目前没感觉出和2.1有什么区别. 剩下的代码有的是 TraeCN, 有的用ClaudeCode + deepseek3.2, deepseek 的思维链实在是太长了, 过于啰嗦, 效果不如MiniMax2.1, api 还用不了新模型, 不知道怎么样.

开发过程中的几个难点(目前还都是人工解决的, debug 靠人, 代码 ai 来):

  • 用pfctl 做透明流量重定向时如何避免死循环(MacOS的pf版本太低, 很多新语法不支持, LLM 口胡浪费了我好多 token…)
  • MiniMax 的 SSE 响应做了br 压缩, 如何在 mitm 中处理流式压缩的SSE response body.

前端是 ts + react, ts 语法是一行没学过, 生成的前端代码一行没看, 过程中主要出问题的地方是浅拷贝导致的前端组件没触发重新渲染, 来回了很多次, 但还是坚持不去学ts和react让AI搞定了.

comments powered by Disqus