【免费下载链接】claude-prismAn offline-first scientific writing workspace powered by Claude. LaTeX Python 100 scientific skills all running locally.项目地址https://gitcode.com/gh_mirrors/cl/claude-prism点击查看免费下载ClaudePrism 是一款离线优先offline-first的科学写作工作区由 Claude 驱动内置 LaTeX 编辑器、Python 环境与 100 科学技能。它的核心亮点之一是用 Rust 编写了一个本地代理local proxy当你想接入 DeepSeek、通义千问等 OpenAI 兼容OpenAI-compatibleAPI 时这个代理会把 Claude Code 说的 Anthropic 协议 实时翻译成 OpenAI 协议全程运行在本机无需任何第三方中转服务。为什么需要本地代理Claude Code 只认 Anthropic 协议Claude Code 是 Anthropic 官方的命令行智能体它只会向ANTHROPIC_BASE_URL指向的地址发送 Anthropic Messages 格式的 HTTP 请求。而绝大多数国产/开源模型服务DeepSeek、Qwen、GLM、Moonshot 等只讲 OpenAIchat/completions这一套。两者协议差异不小关注点Anthropic 格式OpenAI 兼容格式系统提示词独立的system字段role: system消息工具调用tool_use内容块tool_callsfunction结构工具结果tool_result块role: tool消息结束原因stop_reason如end_turnfinish_reason如stop/length流式输出Anthropic SSE 事件OpenAI SSE 分片ClaudePrism 的解决方案很朴素在本机起一个只有127.0.0.1可达的迷你 HTTP 服务让 Claude Code 以为自己在和 Anthropic 说话实际由 Rust 代理负责双向翻译。一键启动本地代理是怎么跑起来的当你在 ClaudePrism 中选择 OpenAI 兼容供应商并发送第一条消息时Rust 后端会调用 start_openai_anthropic_proxy在127.0.0.1:0上绑定监听——端口号交给操作系统随机分配天然避免端口冲突且只监听本机回环地址外网无法访问把代理地址写入 Claude Code 进程的环境变量ANTHROPIC_BASE_URL指向本机代理ANTHROPIC_API_KEY填一个占位值claude-prism-local-proxy真实密钥只在代理与远端模型之间流转见 claude.rs以--model sonnet启动 Claude Code 子进程开始对话。代理本体只用tokioreqwest没有引入 Web 框架它手工解析 HTTP 头部、按路径路由逻辑一目了然。它支持三类请求POST /v1/messages—— 核心对话接口走完整的翻译 → 转发 → 回译流水线GET /—— 健康检查返回{ok: true}POST /v1/messages/count_tokens—— 用一个字符数 ÷ 4 的近似值快速应答让 Claude Code 的上下文估算逻辑正常运转。协议翻译请求与响应的双向转换请求方向由 messages.rs 完成anthropic_to_openai_request()把 Anthropic 请求改写为标准 OpenAI 请求体——system字段提为系统消息tool_use块变成tool_callstool_result块变成role: tool消息模型名替换为你配置的真实模型再补上temperature、top_p、max_tokens等采样参数。响应方向同样关键OpenAI 返回的choices[0].message会被还原成 Anthropic 消息格式finish_reason映射为stop_reasonlength→max_tokenstool_calls→tool_use其余 →end_turntoken 用量也做了字段对齐兼容prompt_tokens/input_tokens等多种命名。工具调用自愈Rust 里最硬核的部分弱一些的小模型经常输出坏的工具调用参数——JSON 外面包了 代码围栏、带尾逗号、单引号字符串、缺逗号甚至输出成 YAML。Claude Code 对这类坏数据会直接报错。ClaudePrism 在 tools.rs 里内置了一个多级修复器依次尝试原样 → 剥掉代码围栏 → 去掉注释和尾逗号 → 单引号转双引号 → 补齐字段间逗号 → 括号配平等多种候选任何一个候选能被解析就采用实在不行再回退 YAML 解析。空的或纯数字的tool_call id也会被规范化成call_uuid保证多轮工具调用不断链。这就是代理里enhancetool转换器的实际效果——小模型的粗糙输出在到达 Claude Code 之前就被悄悄修好了。流式响应SSE 的实时改写Claude Code 依赖流式输出。stream.rs 中的stream_openai_sse_to_anthropic()边读边转把 OpenAI 的 SSE 分片逐块解析、累积工具参数缓冲实时渲染成 Anthropic 的 SSE 事件序列message_start、content_block_delta……流结束时再补上携带 token 用量的收尾事件。上游流意外中断时代理也会主动推送一个errorSSE 事件而不是让 Claude Code 干等超时。供应商专属兼容策略转换器链不同供应商的OpenAI 兼容程度参差不齐ClaudePrism 用一个可组合的转换器链来兜底cleancache递归剥掉 Anthropic 专有的cache_control字段避免远端报未知参数streamoptions流式请求时自动附加stream_options.include_usage让 Claude Code 能拿到 token 统计deepseek把max_tokens钳制到 8192 上限并拦截 OpenAI 风格的image_url图片块DeepSeek 不支持会直接给出清晰报错thinking 预算Anthropic 的thinking.budget_tokens会映射为reasoning.max_tokens对 OpenAI o 系列模型max_tokens自动改写为max_completion_tokens见 providers.rs。这些规则由 Rust 单元测试逐一锁死见 anthropic_proxy.rs 测试高级用户还可以用环境变量CLAUDE_PRISM_PROXY_TRANSFORMERS追加自定义转换器。值得一提的是能绕则绕的设计如果供应商本身就提供原生 Anthropic 端点如 DeepSeek 的/anthropic路径ClaudePrism 会跳过代理直连见 native_anthropic_base_url——能省一层翻译就省一层。写在最后整套本地代理不到 3000 行 Rust 代码没有 Web 框架、没有重型依赖却补齐了协议转换、流式改写、工具调用自愈、供应商兼容四块脏活。这正是 ClaudePrism 的定位把复杂的适配工作藏在本地 Rust 进程里让你只管写论文、做实验模型随便换。 源码地图代理入口 anthropic_proxy.rs · 请求/响应转换 anthropic_proxy/messages.rs · 流式 SSE 改写 anthropic_proxy/stream.rs · 供应商适配 anthropic_proxy/providers.rs · 工具调用修复 anthropic_proxy/tools.rs赞分享【免费下载链接】claude-prismAn offline-first scientific writing workspace powered by Claude. LaTeX Python 100 scientific skills all running locally.项目地址https://gitcode.com/gh_mirrors/cl/claude-prism点击查看免费下载相关推荐如何把 Ollama 接入 Anthropic Messages API 兼容接口供 Claude Code 使用如何把 Ollama 接入 Anthropic Messages API 兼容接口供 Claude Code 使用 Claude Code 是一个 agenti人工智能大模型模型推理服务本地部署PCSX2 模拟器高清画质配置5 分钟从模糊到清晰PCSX2 模拟器高清画质配置5 分钟从模糊到清晰 PCSX2 是一款开源的 PS2 模拟器能把主机经典搬上电脑。画面模糊、纹理错位、帧数上不去多数情况不虚拟化桌面应用图形学如何用 OpenAI 兼容接口把 Ollama 或 vLLM 本地模型接入 CowAgent如何用 OpenAI 兼容接口把 Ollama 或 vLLM 本地模型接入 CowAgent 如果你已经在本地用 Ollama 或 vLLM 部署了模型想让AI Agent人工智能多智能体工具调用Agent 记忆AI 技能交互助手即时通讯自主智能体RAG浏览器控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考