Doge Code: A Self-Hostable Fork of Claude Code
GitHub Repo
MIT
May 7, 2026 at 04:44 PM
0 views

Doge Code: A Self-Hostable Fork of Claude Code

@HELPMEEADICEProject Author

Doge Code 的平行世界外传:一份认真修、顺手发癫一点点的工程分支解读

Fork-Claude Code Status Runtime Config License Issues
Preview

这是一份关于 Doge Code 的详细解读,聚焦它如何从 Claude Code 的源码树中“还原、改造、再创新”。这里不是官方历史,也不是原版的简单镜像,而是一个平行世界的外传 OVA:在保留基础逻辑的同时,加入了更贴近“自托管、代理转接、个性化接入”的野心与设计。下面的文字以功能定位、实现原理、运行方式、数据隔离、以及未来走向为主线,带你逐步理解这份 Fork 的脉络与价值。

一、这是什么:从 Claude Code 走向 Doge Code 的演化

  • 核心理念:Doge Code 基于一份还原后的 Claude Code 源码树,在此之上继续修改。它既不是“官方修正集”,也不是原仓库的 pristine 状态镜像,而是一种高强度民间魔改的外传形态。其目标不是完全忠于上游,而是让代码更适合折腾、代理转接和自定义模型接入。
  • 代码树的两层结构:第一层是“还原”的源码树,第二层是在此之上进行的 Fork 改造。你会看到来自恢复过程的 shim、fallback、兼容层,也会看到 Doge Code 自己的主动魔改。这两者叠加,构成了现有的行为与 UI。
  • 直观定位(对比原版 Claude Code 与本作定位):原作是 Claude Code;本作则是 Doge Code,定位为可自托管、可代理、可转接的 Claude Code 变体。它把“保留剧情逻辑自洽”的外传属性与“高度自定义接入”结合起来,力求在保持可运行性的前提下,提供更多接入入口与接口灵活性。

二、当前定位:你能从 Doge Code 拿到什么

  • 自定义 Anthropic 兼容接口地址:通用入口参数可指定不同的 Anthropic 风格端点,方便不同部署环境的对接。
  • OpenAI Chat Completions ↔ Anthropic Messages 的转接能力:正在实现一个中间层,将内部仍以 Anthropic Messages 的请求组织方式,转发至 OpenAI 的 Chat Completions 接口,然后再把远端响应回转成内部可消费的 Messages 流事件。不是简单改一个 Base URL,而是涉及输入输出协议级别的转接。
  • 自定义 API Key 与模型管理:支持自定义 API Key 的输入、保存,并提供模型列表管理,方便在多模型之间切换和测试。
  • 数据入口汇聚到 ~/.doge 路径体系:尽量将自定义接入数据、缓存、配置等集中到专门的目录,避免与原版 Claude Code 的缓存和配置混用造成混乱。
  • CLI/TUI 保留的同时,降低对官方登录流的强绑定:目标是在本地自托管、代理转接、可持续扩展的前提下,尽可能降低对官方登录流程的耦合,提升自定义接入的容错性与可维护性。

三、数据隔离与使用建议:避免混用带来的痛点

  • 默认目录分离:Doge Code 不应与原版 Claude Code 共享配置和缓存目录。默认用户目录被设定为:
  • 配置目录: ~/.doge
  • 全局配置文件: ~/.doge/.claude.json
  • 这样设计的初衷在于:
  • 避免原版 Claude Code 的登录态污染 Doge Code 的代理转接逻辑
  • 防止两边对 endpoint、token、model 的配置互相干扰,导致网络、认证、模型或 UI 展现异常
  • 较早的历史数据问题:如果你以前同时使用过原版 Claude Code,可能会遇到“读到了旧配置”的现象。建议:
  • 原版继续使用它自己的 .claude/ 或 .claude.json
  • Doge Code 使用 ~/.doge 目录
  • 如需手动指定目录,可以通过 CLAUDECONFIGDIR 指向独立的目录,从而确保两者互不干扰
  • 小结:把缓存、认证和配置分锅炖,确保两套系统在同一台机器上并行运行时互不干扰。

四、OpenAI 兼容接口说明:桥接式的输入输出流转

  • 中间转接层的核心设计:内部逻辑仍按 Anthropic Messages 的请求组织方式运行。当你开启 OpenAI API 格式时,转接层会把 Messages 请求改写成 OpenAI Chat Completions 的格式;远端返回的 Chat Completions 流,同样会被回转为内部可消费的 Messages 风格流事件。
  • 这不是简单的域名替换:它涉及对输入输出流的协议级别改写,确保在 OpenAI 与 Anthropic 之间的接口差异被透明地处理,保持内部逻辑的一致性。
  • 当前状态与使用提示:
  • API 格式选择界面与配置持久化已加入
  • OpenAI 兼容转接模块正在迭代中
  • 作为开发中的功能,可能出现流式事件不完整、消息映射异常或工具兼容性不足等问题
  • 对稳定性要求高的用户,建议优先使用 Anthropic 兼容接口模式;若需测试 OpenAI 格式,请将其视为实验性质

五、与原始还原仓库的关系:两层历史的并存

  • 这并非上游官方源码仓库的镜像,也非 pristine 状态的 Claude Code。它包含两层历史: 1) 第一层:还原后的源码树 2) 第二层:在此源码树基础上的 Fork 改造
  • 因此你会看到两类改动并存:
  • 来自恢复过程的 shim、fallback、兼容层
  • 来自 Doge Code 的主动魔改
  • 这两类改动都是真实存在的,不应把当前代码误判成“官方上游源码镜像”,也不应忽视它们在实现逻辑上的叠加效应。

六、运行方式与快速上手:环境、安装与启动

  • 环境要求:
  • Bun 1.3.5 或更高版本
  • Node.js 24 或更高版本
  • 安装依赖与启动的基本流程:
  • bun install
  • bun run dev 启动恢复后的 CLI/TUI
  • bun run version 输出当前版本信息
  • 快速安装(推荐直接源码使用):
  • 方式一:在源码目录内直接注册
    • 在仓库根目录执行:bun install;bun link
    • 全局包名是 @doge-code/cli,命令名为 doge
    • 启动:doge
  • 方式二:在其他项目中通过 link 引用
    • bun link @doge-code/cli
    • 或在 package.json 中使用 "dependencies": { "@doge-code/cli": "link:@doge-code/cli" }

七、Git 直接源码级更新的工作流

  • 与传统已发布包升级不同,这个 Fork 更适合“源码级更新”的日常维护:
  • 更新流程通常为:
    • git pull
    • bun install
    • bun link
  • 如果你本地就是长期用源码目录运行 Doge Code,这就是“源码级更新”的标准姿势。
  • 一个推荐的工作流示例:
  • 初次安装:git clone <仓库地址>,进入目录,bun install,bun link, doge
  • 后续更新:git pull,bun install,bun link, doge
  • 这样的流程让你始终保持对最新改动的直接掌控,避免因版本发布带来的不可控变动。

八、命令与入口:狗子狗子之间的入口与友好助手

  • Doge Code 的 CLI 入口现已明确为 doge,而非 Claude 或其他名称。全局入口包名为 @doge-code/cli,版本查询命令为 bun run version。
  • Buddy 宠物系统:为了在交互中增添乐趣,这个 Fork 内置了一个名为 Buddy 的企鹅宠物,会在输入框旁边显示,并在对话中给出吐槽或打气。常用命令包括:
  • 启用/唤出 Buddy: /buddy
  • 摸摸 Buddy(触发爱心动画): /buddy pet
  • 临时关闭 Buddy(静音、不再显示冒泡): /buddy mute
  • 重新打开 Buddy: /buddy unmute
  • 查看命令帮助: /buddy help
  • 说明要点:
  • 该 Buddy 默认随安装启用,入口友好,增加了互动性
  • /buddy mute 只是关闭显示与冒泡,不会删除宠物数据
  • /buddy unmute 会恢复显示
  • 如果你在聊天中直接提到 Buddy,它有时会在气泡中做出回应,作为一类轻松的彩蛋特性

九、免责声明与文案风格:保持清晰与节奏

  • 本仓库是 Claude Code 的 Fork:Doge Code
  • 它包含恢复期代码与后续 Fork 改动,不代表官方立场
  • 如果某些行为看起来“很像官方,但又不完全像”,通常是恢复版与魔改版叠加的结果
  • 某些文案带有 ACG 彩蛋味道属于设计风格的一部分,不代表类型系统错误或不可修正的缺陷

十、为什么会有这个仓库:历史与现实的折中

  • 由于 source map 还原并不能召唤完整的原仓库,往往存在缺口:类型专用文件、构建产物、中间文件、私有包包装层、原生绑定、动态导入资源等不完整
  • 因此这份仓库的目标是:
  • 先恢复到可运行
  • 再恢复到可维护
  • 最后在可跑的基础上继续按需求进行 Fork,形成一个可自托管、可代理、可转接的变体
  • 简言之:先让它活,再让它能打,最后让它成为属于“狗子”的版本

十一、常见使用场景与注意事项

  • 场景一:你想在本地搭建一个可定制的模型接入环境,方便代理转接其他端点,且希望在一个社区化的分支中探索新接口。
  • 场景二:你需要一个与 Anthropic 风格兼容的中间层,同时对接 OpenAI Chat Completions,进行实验性比对和对接测试。
  • 场景三:你偏好通过源码进行持续迭代、亲自维护模型列表与 API Key 的灵活配置,并愿意承担因非官方分支带来的潜在不稳定性。
  • 注意事项:
  • 该项目不是官方上游的正式版本,风险自担,适合技术研究与学习
  • 若需要稳定的生产环境,请优先考虑官方或稳定的分发版本
  • 任何对接 OpenAI 的尝试都属于实验性质,注意对齐输入输出格式、请求速率、以及流式数据的处理时序问题

十二、结语:一个“先活起来,再让它打起来”的工程分支

Doge Code 以其平行世界的姿态,承载了多样的技术尝试与设计权衡。它把原始 Claude Code 的脉络作为底座,在此基础上引入了更灵活的自托管、代理转接和模型自定义能力。通过 separación 的数据目录、对接接口的扩展思路,以及一个带点趣味与互动性的 Buddy 宠物系统,试图让这份代码不仅仅是一个技术作品,也成为一个可维护、可扩展、可玩味的工程分支。

如果你愿意参与其中,欢迎在仓库中体验“快速上手—源码更新—自定义接入”的全流程。用 Bun + Node 的组合来跑起来,用 Git 的日常更新来保持新鲜,用 OpenAI 与 Anthropic 的桥接层来探究协议差异,用 ~/.doge 的清晰目录结构来避免混乱。愿这份外传在你手中,像一只被调教的狗,既忠诚又有灵活的瞬间,带你在自托管的路上 Encontrar 自由与可控性。

Enjoying this project?

Discover more amazing open-source projects on TechLogHub. We curate the best developer tools and projects.

Project
doge-code
Created
May 7
Last Updated
November 14, 2026 at 04:18 PM

Maintain Doge Code: A Self-Hostable Fork of Claude Code? Add the badge to your README

Show that the project is featured on TechLogHub and send readers to this write-up.

Featured on TechLogHub
[![Featured on TechLogHub](https://techloghub.com/badge-neutral.svg)](https://techloghub.com/open-source/doge-code?utm_source=techloghub_badge&utm_medium=referral&utm_campaign=readme)

Find more projects like this

One email a week: new and trending developer tools, fresh comparisons, and what shipped. Unsubscribe in one click.