Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/1cyberlangke1_claudify-deepseek.json
T

1 line
5.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "1cyberlangke1/claudify-deepseek", "files": {"README.md": {"4cfe1aa4fe7a68911a53b2457961acdd48dfca48": {"t": 1785768260.6058526, "n": 3576, "h": "e182547afe09a884", "c": "# claudify-deepseek\n\n![claudify-deepseek logo](./logo.png)\n\nDeepSeek 风格 API → Claude (Anthropic) 风格 API 的代理,将只提供 OpenAI 兼容 `/chat/completions` 接口的 DeepSeek 提供商转换为标准的 Claude Messages API。\n\n## 问题\n\n某些 DeepSeek 兼容提供商 (比如 OpenCode)只提供 OpenAI 格式的 API(`POST /chat/completions`),而 Claude Code 等工具只认 Anthropic 格式(`POST /v1/messages`)。直接代理会触发:\n\n```\nError 400: The reasoning_content in the thinking mode must be passed back to the API\n```\n\n本项目解决了格式转换和 `reasoning_content` 回传问题。\n\n## 使用\n\n```bash\ngit clone <this-repo>\ncd claudify-deepseek\nnpm install\ncp .env.example .env\nnpm start\n```\n\nWindows 用户也可以用静默脚本(无终端窗口):\n\n- `start.bat` — 后台启动(自动检测是否已在运行)\n- `stop.bat` — 停止代理\n\n然后配置 Claude Code:\n\n```bash\nexport ANTHROPIC_BASE_URL=http://localhost:3000\nexport ANTHROPIC_API_KEY=<你的 upstream API key>\n```\n\nmodel 名直接透传,Claude Code 发什么 upstream 就收什么。如果你的上游是 DeepSeek 系,可以指定:\n\n```bash\n# Claude Code 发这个模型名,代理原样转发给 upstream\nexport ANTHROPIC_MODEL=deepseek-v4-flash-free\n```\n\n`ANTHROPIC_API_KEY` 会通过 `Authorization: Bearer` 头自动透传给 upstream,无需额外配置。\n\n## 配置\n\n| 变量 | 默认值 | 说明 |\n| --- | --- | --- |\n| `UPSTREAM_BASE_URL` | `https://opencode.ai/zen/v1` | 上游 DeepSeek 提供商地址 |\n| `PORT` | `4000` | 监听端口 |\n| `LOG_LEVEL` | `info` | 日志级别:`debug`, `info`, `warn`, `error` |\n| `LOG_DIR` | `logs` | 日志文件目录 |\n| `LOG_FILE_MAX_SIZE` | `10485760` | 单日志上限(bytes) |\n| `LOG_FILE_MAX_FILES` | `5` | 保留轮转文件数 |\n| `LOG_FILE_ENABLED` | `true` | 是否写文件日志 |\n| `EXA_API_KEY` | — | Exa 搜索 API key(可选,免费 tier 无需 key) |\n| `WEB_SEARCH_ENABLED` | `true` | 联网搜索开关 |\n| `VISION_ENABLED` | `false` | VLM 识图开关 |\n| `VISION_API_KEY` | — | VLM API key |\n| `VISION_BASE_URL` | — | VLM 端点 |\n| `VISION_MODEL` | — | VLM 模型名 |\n| `VISION_PROMPT_FILE` | `src/VISION_PROMPT.md` | 提示词文件路径(相对/绝对) |\n| `VISION_TIMEOUT_MS` | `60000` | VLM 请求超时(毫秒) |\n| `VISION_CACHE_TTL` | `604800` | 图片描述缓存过期时间(秒,默认 7 天) |\n| `VISION_CACHE_MEM_MAX` | `200` | 热缓存最大条目数 |\n| `VISION_CACHE_DIR` | `./data/vision-cache` | 磁盘缓存目录 |\n| `CACHE_MONITOR` | `false` | 缓存暴跌监控(记录 body diff 到文件) |\n\nAPI key 从下游请求的 `x-api-key` 或 `Authorization: Bearer` 头自动透传;model 直接从下游请求体透传。\n\n## Web 搜索\n\n支持 Claude Code 内置的 `web_search_20250305` 工具,使用 **Exa** 搜索提供实时搜索结果。\n\n- 无需额外配置,免费 tier 即开即用\n- 设置 `EXA_API_KEY` 可解除免费 rate limit\n- 搜索在代理侧执行,上游 DeepSeek 无需支持搜索\n\n## 图片识别\n\n支持 Claude Code 中 Read 工具返回的图片——拦截最后一个 `tool_result` 中的 `image` 块,通过 VLM API 生成文字描述替换后转发给上游。\n\n- 默认关闭(`VISION_ENABLED=false`)\n- 设置 `VISION_ENABLED=true` + 填写 VLM 配置即可启用\n- VLM 可选:[商汤 SenseNova](https://platform.sensenova.cn/)(限时免费)、NVIDIA NIM、Groq、Google Gemini 等任意 OpenAI 兼容 API\n- 图片在代理侧描述后以 `[Image] <描述>` 文本形式发给上游,上游无需支持多模态\n- 超时控制:`VISION_TIMEOUT_MS` 环境变量(默认 15000ms)\n\n## 缓存说明\n\nDeepSeek 的前缀缓存对 `messages[]` 中出现的 `role: \"system\"` 敏感。Claude Code 插件(如 caveman)可能通过 Hook 注入 `{\"role\":\"system\"}` 消息,打断缓存桶对齐,导致缓存率从 99%+ 降至 \\~25%。\n\n代理会自动将 `messages[]` 中首个之后的 `role: \"system\"` 转为 `role: \"user\"`,避免缓存断裂。\n\n## 转换说明\n\n行为对齐 [DeepSeek 官方 Anthropic 兼容表](https://api-docs.deepseek.com/guides/anthropic_api):\n\n- `thinking` block → `reasoning_content`(双向转换)\n- `output_config.effort` / `reasoning_effort` → `low/medium/high` 映射为 `high`,`xhigh` 映射为 `max`\n- `tool_use` / `tool_result` ↔ function calls\n- `web_search_20250305`(Anthropic 内置工具)→ 代理侧搜索,不转发上游\n- 标 \"Ignored\" 的字段静默丢弃(如 `thinking.budget_tokens`)\n- 标 \"Not Supported\" 的字段(图片/文档等)返回 400\n\n## 协议\n\nMIT © 2026 1cyberlangke1\n\n## 参考与致谢\n\n本项目的图片识别实现参考了以下开源项目:\n\n- [RainSunMe/cc-vision-hook](https://github.com/RainSunMe/cc-vision-hook) — Claude Code Hook 视觉工具包,提供了递归图片提取和 VLM 描述的实现思路\n- [ErlichLiu/deepseek-vision](https://github.com/ErlichLiu/deepseek-vision) — DeepSeek 多模态代理,提供了 VLM 中间件的架构参考\n\n---\n\n更新于 2026-07-21"}}}}