模型 API 地址配置管理

<p>注册使用过的第三方中转站太多了,如何管理成了一个问题。</p> <p>今天调研使用了一下 cc switch,感觉还可以。</p> <p>下载地址:https://github.com/farion1231/cc-switch/tree/main 5万多个 star,应该还算靠谱</p> <h2 id="使用">使用</h2> <p>1/ 添加基本配置,主要是 <strong>API Key</strong> 和<strong>请求地址</strong></p> <p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/image-20260528111137805.png" alt="模型厂商配置页面"></p> <p>2/ 配置一下模型映射 <img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/image-20260528112059135.png" alt="高级选项"></p> <p>3/ 点击一下&quot;启用&quot;按钮就可以正常使用了 <img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/image-20260528112149891.png" alt="image-20260528112149891"></p> <p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/image-20260528112206699.png" alt="image-20260528112206699"></p> <h2 id="效果">效果</h2> <p>cc-switch 是实时热加载配置,即改即用。目前主要使用 anyrouter 的中转站,效果还不错,可以把以前在 <code> ~/.zshrc</code>中手动添加的配置注释掉了。</p> <p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/CleanShot%202026-05-28%20at%2011.25.07@2x.png" alt="使用效果"></p>

2026/5/28
阅读更多

Claude Code 完美接入 Ollama 指南

<p>作为 Anthropic 官方推出的命令行编码助手(coding assistant),Claude Code 本质上是一个通过大模型(LLM)执行复杂任务的工具。通常情况下,它需要连接云端 API。但随着 Ollama 宣布兼容 Anthropic Messages API,我们现在可以轻松地将 Claude Code 与本地模型集成。</p> <p>从工程角度看,使用本地的模型既可以作为断网情况下的一种保障方案,也可以在不改变工作流程的情况下,把本地模型作为一个测试开发环境,极大节省 Token 开销。</p> <h2 id="操作步骤">操作步骤</h2> <p>1.安装 Claude Code 和 Ollama</p> <pre tabindex="0"><code>npm install -g @anthropic-ai/claude-code@latest </code></pre><p>Ollama 可以通过官网https://ollama.com/下载安装包安装。</p> <blockquote> <p>注意:Ollama 版本v0.14.0+,Claude Code版本v2.1.12+,可以通过下面命令验证</p> </blockquote> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>claude --version </span></span><span style="display:flex;"><span>ollama --version </span></span></code></pre></div><p>Ollama 安装后会自动作为后台服务运行。应该可以在 http://localhost:11434 上看到它运行。</p> <p>2.下载大模型</p> <p>可以通过 Ollama 的 WebUI 页面直接下载,如下图。</p> <p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/CleanShot%202026-01-22%20at%2016.42.35@2x.png" alt="下载模型到本地"></p> <p>也可以通过命令行快速拉取适合编码的模型。</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#09f;font-style:italic">#查看本地模型</span> </span></span><span style="display:flex;"><span>ollama list </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#09f;font-style:italic">#下载新模型</span> </span></span><span style="display:flex;"><span>ollama pull qwen2.5-coder:7b </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#09f;font-style:italic">#删除模型</span> </span></span><span style="display:flex;"><span>ollama rm qwen2.5-coder:7b </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#09f;font-style:italic">#查看模型基本参数</span> </span></span><span style="display:flex;"><span>ollama show qwen2.5-coder:7b </span></span></code></pre></div><p>3.配置 Claude Code 连接本地 Ollama</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#366">export</span> <span style="color:#033">ANTHROPIC_AUTH_TOKEN</span><span style="color:#555">=</span>ollama </span></span><span style="display:flex;"><span><span style="color:#366">export</span> <span style="color:#033">ANTHROPIC_BASE_URL</span><span style="color:#555">=</span>http://localhost:11434 </span></span><span style="display:flex;"><span><span style="color:#09f;font-style:italic"># 启动 Claude Code 并指定本地模型</span> </span></span><span style="display:flex;"><span>claude --model qwen2.5-coder:7b </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#09f;font-style:italic"># 如果想使用云端模型,命令类似</span> </span></span><span style="display:flex;"><span>claude --model glm-4.6:cloud </span></span></code></pre></div><p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/CleanShot%202026-01-22%20at%2016.59.52.png" alt="使用本地模型"></p> <blockquote> <p>注意:如果你开启了系统代理,可能会遇到 <code>API Error: Connection error</code>。这是因为流量被转发到了代理服务器而找不到 localhost。请先在终端执行:</p> </blockquote> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#366">unset</span> https_proxy </span></span><span style="display:flex;"><span><span style="color:#366">unset</span> http_proxy </span></span></code></pre></div><p>4.使用Anthropic SDK</p> <p>如果我们想更精准的把控程序的执行流程,可以使用官方的 SDK。</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#069;font-weight:bold">import</span> <span style="color:#0cf;font-weight:bold">anthropic</span> </span></span><span style="display:flex;"><span><span style="color:#069;font-weight:bold">import</span> <span style="color:#0cf;font-weight:bold">httpx</span> </span></span><span style="display:flex;"><span>http_client <span style="color:#555">=</span> httpx<span style="color:#555">.</span>Client( </span></span><span style="display:flex;"><span> proxy<span style="color:#555">=</span><span style="color:#069;font-weight:bold">None</span>, </span></span><span style="display:flex;"><span> trust_env<span style="color:#555">=</span><span style="color:#069;font-weight:bold">False</span>, </span></span><span style="display:flex;"><span>) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>client <span style="color:#555">=</span> anthropic<span style="color:#555">.</span>Anthropic( </span></span><span style="display:flex;"><span> base_url<span style="color:#555">=</span><span style="color:#c30">&#39;http://localhost:11434&#39;</span>, </span></span><span style="display:flex;"><span> api_key<span style="color:#555">=</span><span style="color:#c30">&#39;ollama&#39;</span>, </span></span><span style="display:flex;"><span> http_client<span style="color:#555">=</span>http_client, </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>) </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#069;font-weight:bold">with</span> client<span style="color:#555">.</span>messages<span style="color:#555">.</span>stream( </span></span><span style="display:flex;"><span> model<span style="color:#555">=</span><span style="color:#c30">&#39;qwen2.5-coder:7b&#39;</span>, </span></span><span style="display:flex;"><span> max_tokens<span style="color:#555">=</span><span style="color:#f60">1024</span>, </span></span><span style="display:flex;"><span> messages<span style="color:#555">=</span>[{<span style="color:#c30">&#39;role&#39;</span>: <span style="color:#c30">&#39;user&#39;</span>, <span style="color:#c30">&#39;content&#39;</span>: <span style="color:#c30">&#39;Count from 1 to 10&#39;</span>}] </span></span><span style="display:flex;"><span>) <span style="color:#069;font-weight:bold">as</span> stream: </span></span><span style="display:flex;"><span> <span style="color:#069;font-weight:bold">for</span> text <span style="color:#000;font-weight:bold">in</span> stream<span style="color:#555">.</span>text_stream: </span></span><span style="display:flex;"><span> <span style="color:#366">print</span>(text, end<span style="color:#555">=</span><span style="color:#c30">&#39;&#39;</span>, flush<span style="color:#555">=</span><span style="color:#069;font-weight:bold">True</span>) </span></span></code></pre></div><h2 id="调试秘籍如何与-ai-高效沟通报错">调试秘籍:如何与 AI 高效沟通报错?</h2> <p>这里再说一个调试的技巧:在配置过程中,不要死磕枯燥的错误堆栈信息。一个高效的调试技巧是:<strong>向 AI 描述你的完整环境和所做的工作,而不仅仅是报错代码。</strong></p> <p>此前我按照文档编写代码时,一直遇到 <code>InternalServerError (503)</code> 错误。我直接把错误代码粘贴给 chatgpt ,它尝试了很多方法但始终没有解决。</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Traceback <span style="color:#555">(</span>most recent call last<span style="color:#555">)</span>: </span></span><span style="display:flex;"><span> File <span style="color:#c30">&#34;/Users/shaoyang/Project/stock_demo/day09/anthropic-demo.py&#34;</span>, line 12, in &lt;module&gt; </span></span><span style="display:flex;"><span> <span style="color:#033">message</span> <span style="color:#555">=</span> client.messages.create<span style="color:#555">(</span> </span></span><span style="display:flex;"><span> File <span style="color:#c30">&#34;/Users/shaoyang/Project/stock_demo/.venv/lib/python3.10/site-packages/anthropic/_utils/_utils.py&#34;</span>, line 282, in wrapper </span></span><span style="display:flex;"><span> <span style="color:#069;font-weight:bold">return</span> func<span style="color:#555">(</span>*args, **kwargs<span style="color:#555">)</span> </span></span><span style="display:flex;"><span> File <span style="color:#c30">&#34;/Users/shaoyang/Project/stock_demo/.venv/lib/python3.10/site-packages/anthropic/resources/messages/messages.py&#34;</span>, line 932, in create </span></span><span style="display:flex;"><span> <span style="color:#069;font-weight:bold">return</span> self._post<span style="color:#555">(</span> </span></span><span style="display:flex;"><span> File <span style="color:#c30">&#34;/Users/shaoyang/Project/stock_demo/.venv/lib/python3.10/site-packages/anthropic/_base_client.py&#34;</span>, line 1361, in post </span></span><span style="display:flex;"><span> <span style="color:#069;font-weight:bold">return</span> cast<span style="color:#555">(</span>ResponseT, self.request<span style="color:#555">(</span>cast_to, opts, <span style="color:#033">stream</span><span style="color:#555">=</span>stream, <span style="color:#033">stream_cls</span><span style="color:#555">=</span>stream_cls<span style="color:#555">))</span> </span></span><span style="display:flex;"><span> File <span style="color:#c30">&#34;/Users/shaoyang/Project/stock_demo/.venv/lib/python3.10/site-packages/anthropic/_base_client.py&#34;</span>, line 1134, in request </span></span><span style="display:flex;"><span> raise self._make_status_error_from_response<span style="color:#555">(</span>err.response<span style="color:#555">)</span> from None </span></span><span style="display:flex;"><span>anthropic.InternalServerError: Error code: <span style="color:#f60">503</span> </span></span></code></pre></div><p>于是,我换了一种思路,不是直接粘贴错误代码,而是前置一步,客观地描述了一下当前的环境。</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>import anthropic </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#033">client</span> <span style="color:#555">=</span> anthropic.Anthropic<span style="color:#555">(</span> </span></span><span style="display:flex;"><span> <span style="color:#033">base_url</span><span style="color:#555">=</span><span style="color:#c30">&#39;http://localhost:11434&#39;</span>, </span></span><span style="display:flex;"><span> <span style="color:#033">api_key</span><span style="color:#555">=</span><span style="color:#c30">&#39;ollama&#39;</span>, <span style="color:#09f;font-style:italic"># required but ignored</span> </span></span><span style="display:flex;"><span><span style="color:#555">)</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#033">message</span> <span style="color:#555">=</span> client.messages.create<span style="color:#555">(</span> </span></span><span style="display:flex;"><span> <span style="color:#033">model</span><span style="color:#555">=</span><span style="color:#c30">&#39;qwen3-coder&#39;</span>, </span></span><span style="display:flex;"><span> <span style="color:#033">max_tokens</span><span style="color:#555">=</span>1024, </span></span><span style="display:flex;"><span> <span style="color:#033">messages</span><span style="color:#555">=[</span> </span></span><span style="display:flex;"><span> <span style="color:#555">{</span><span style="color:#c30">&#39;role&#39;</span>: <span style="color:#c30">&#39;user&#39;</span>, <span style="color:#c30">&#39;content&#39;</span>: <span style="color:#c30">&#39;Hello, how are you?&#39;</span><span style="color:#555">}</span> </span></span><span style="display:flex;"><span> <span style="color:#555">]</span> </span></span><span style="display:flex;"><span><span style="color:#555">)</span> </span></span><span style="display:flex;"><span>print<span style="color:#555">(</span>message.content<span style="color:#555">[</span>0<span style="color:#555">]</span>.text<span style="color:#555">)</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>我是用的是mac电脑,本地配置了代理,我应该如何修改上面的代码保证可以运行。 </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>js版本是可以执行的 </span></span><span style="display:flex;"><span>import Anthropic from <span style="color:#c30">&#34;@anthropic-ai/sdk&#34;</span>; </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>const <span style="color:#033">anthropic</span> <span style="color:#555">=</span> new Anthropic<span style="color:#555">({</span> </span></span><span style="display:flex;"><span> baseURL: <span style="color:#c30">&#34;http://localhost:11434&#34;</span>, </span></span><span style="display:flex;"><span> apiKey: <span style="color:#c30">&#34;ollama&#34;</span>, // required but ignored </span></span><span style="display:flex;"><span><span style="color:#555">})</span>; </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>const <span style="color:#033">message</span> <span style="color:#555">=</span> await anthropic.messages.create<span style="color:#555">({</span> </span></span><span style="display:flex;"><span> model: <span style="color:#c30">&#34;minimax-m2:cloud&#34;</span>, </span></span><span style="display:flex;"><span> max_tokens: 1024, </span></span><span style="display:flex;"><span> messages: <span style="color:#555">[</span> </span></span><span style="display:flex;"><span> <span style="color:#555">{</span> role: <span style="color:#c30">&#34;user&#34;</span>, content: <span style="color:#c30">&#34;写一个求和的 python 函数&#34;</span> <span style="color:#555">}</span> </span></span><span style="display:flex;"><span> <span style="color:#555">]</span>, </span></span><span style="display:flex;"><span><span style="color:#555">})</span>; </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>console.log<span style="color:#555">(</span>message.content<span style="color:#555">[</span>1<span style="color:#555">]</span>.text<span style="color:#555">)</span>; </span></span></code></pre></div><p>chatgpt立刻就发现了问题,并给到我正确的执行代码。</p> <p><img src="https://article-1257095016.cos.ap-beijing.myqcloud.com/CleanShot%202026-01-22%20at%2017.15.39@2x.png" alt="ChatGPT 的回复"></p> <p>根据这次调试过程,大模型也帮我总结一个更有效的提问模板:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>1.贴出当前代码。 </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>2.描述环境(如:Mac 系统、本地有代理)。 </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>3.提供一个对比参照(如:JS 版本可以运行,Python 不行)。 </span></span></code></pre></div>

2026/1/22
阅读更多

开篇词

<p>从 2008 年开始接触股票投资,到现在已经接近二十年了。</p> <p>这段时间里,我经历过完整的市场周期:牛市的狂热、熊市的绝望,也经历过从&quot;以为自己懂了&quot;,到&quot;承认自己其实什么都不懂&quot;的反复过程。账户数字起起落落,但真正变化更大的,是我对投资这件事的理解方式。</p> <p>很多年里,我一直有一个模糊的念头:应该把这些经历写下来。不是为了证明自己赚过多少钱,而是想留下些什么——一些关于决策、关于错误、关于长期面对不确定性的记录。</p> <p>直到最近,这个念头才逐渐变得清晰起来。</p> <p>我决定开设这个专栏。它会以投资为核心,但并不只谈&quot;买什么、卖什么&quot;。我更关心的是:</p> <ul> <li> <p>投资背后的概念与逻辑</p> </li> <li> <p>普通人在真实世界中会遇到的情绪、误判与限制</p> </li> <li> <p>如何借助技术,让这些问题变得更可验证一些</p> </li> </ul> <p>在这个专栏里,我会一边讲自己的投资经历,一边引入相关的基础概念;同时,也会尝试使用 Python、数据分析、以及 AI 大模型,对一些直觉判断进行复盘、辅助和检验。</p> <p>这并不是一套&quot;成功方法论&quot;。更多时候,它可能是一份带着不确定性的思考记录:哪些想法在长期中站得住脚,哪些只是事后看起来合理。</p> <p>如果你也经历过市场的起伏,或者正在尝试把理性工具引入投资决策,希望这些文字能对你有所帮助;如果没有,那它至少是我给自己留的一份阶段性注脚。</p> <p>专栏会慢慢写,不追热点,也不保证结论。 唯一确定的,是我会用心。</p>

2026/1/13
阅读更多