写了个小工具:按终端隔离 Claude Code / Codex 的配置,不用全局切环境变量

发布于

背景是迫于有好几套 provider ——公司网关一套、自己买的订阅、中转站有几套。

之前一直靠 ANTHROPIC_* 这些环境变量配置,或者 cc switch 之类工具来切换,但都是全局切换,所有终端跟着一起变,没法同时两边各自跑,用了公司的网关就没法再同时跑自己的。

因此,我写了个小工具来满足这个需求,叫 [hats](https://github.com/Colafornia/hats) (戴不同的施工帽干活)。

每套配置存成一个 "hat",`hats work` 就只在这次启动的进程里套上这套环境,其他终端完全不受影响。启动前会先把继承来的 ANTHROPIC_*、OPENAI_* 相关变量清掉,避免串配置。使用方法如下:

```bash
hats add work claude # 按提示配一套环境
hats work # 这个终端用 work 的配置跑 claude
```

我也添加了 `--isolated` 选项,用来把配置目录(settings、MCP、history)一起隔离,适用于想彻底分开的场景。

因为平时用 herdr 比较多,为了方便,加了一个展示 agent 列表与其对应 hat 的小功能。

![alt](https://i.imgur.com/Auj1GWc.png)

GitHub: [https://github.com/Colafornia/hats](https://github.com/Colafornia/hats)

目前的功能主打满足自己日常使用,感觉琢磨琢磨,应该还可以加一些好用的小功能。README 里有演示 GIF,有需要的可以试试,问题欢迎提 issue。

---

原文链接:[点击查看](https://www.v2ex.com/t/1228982)

评论(12)

这痛点真实存在啊,我之前经常把自己的号和公司的号搞混。

· 0 个赞

回复

是啊,公司如果有审计的话,这种配置是绝对不能搞混的。

· 0 个赞

我也早就想做一个这玩意了。现在用 ccswitch 切换中转站时,所有终端的会话都被强制切走,体验挺呆的。

· 0 个赞

回复

确实,我还以为只有我有这种多账号同时跑的需求呢。现在接下来的方向是研究怎么在界面上更直观地显示出当前用的是哪个 provider。

· 0 个赞

这思路可以啊。我目前的做法是在 bash 里写了几个 alias,比如 ccpro 和 ccdeepseek 来手动切。

· 0 个赞

回复

一开始我也这么搞的,但后来换了几个中转站之后觉得太麻烦,就想着干脆做一层薄点的工具来简化一下。

· 0 个赞

楼主可以看看我最近在用的:hubs.e-studio.ai/ 。提前把 skills、rules 等配置定义成一套 suite,然后在 Claude、Cursor 等客户端里一键切换,体验很舒服。

· 0 个赞

回复

看了下老哥的工具,咱们解决的其实是两个不同层面的问题,理论上可以搭配起来一起用。

· 0 个赞

mark,我现在用的是 ccsc,在 GitHub 上开源的。

· 0 个赞

回复

更正一下,打错了,是 ccsc。

· 0 个赞

我之前用的是 direnv,针对不同的 Codex 账号配置不同的 CODEX_HOME 变量,用着也还行。

· 0 个赞

确实经常遇到这个痛点,我之前就是老把自己的 API Key 和公司的搞混,很需要这种工具。

· 0 个赞