mumucc
v0.4.2
Published
Open-source AI coding assistant CLI with multi-model support (Anthropic, OpenAI/GPT, DeepSeek, GLM, Ollama, etc.), MCP integration, agent swarms, and out-of-the-box developer experience.
Maintainers
Readme
Open Claude Code — 开源 Claude Code CLI
本项目是基于 Claude Code CLI 源码二次开发的开源项目,新增了三方模型支持、企业级代理配置等功能。
项目起源
本项目基于 Claude Code CLI 源码进行开源开发,新增了三方模型支持、企业级代理配置等企业级功能。
- 语言: TypeScript
- 运行时: Bun
- 终端 UI: React + Ink (React for CLI)
- 规模: ~2,000 个文件,516,000+ 行代码
新增功能 ✨
三方 Anthropic 兼容模型支持
在保留原有 Anthropic 登录/认证的基础上,新增了对第三方 Anthropic 兼容 API 供应商的完整支持。
核心能力:
| 功能 | 说明 |
|------|------|
| 多供应商配置 | 在 settings 中配置多个三方厂商的 endpoint 和模型 |
| /login 交互式登录 | 支持选择 Anthropic 或三方供应商,交互式输入 API key |
| /model 模型切换 | 支持在所有平台模型间自由切换,包括三方模型 |
| Agent 多模型调度 | AgentTool 子 Agent 可指定任意平台的模型 |
| 动态模型发现 | Agent 工具描述动态列出所有可用三方模型 |
| Allowlist 兼容 | 现有 Anthropic allowlist 不会阻断三方模型 |
模型标识格式: providerId:modelId(例如 minimax:MiniMax-M2.7)
内置供应商预设:
| 供应商 | Endpoint | 模型 |
|--------|----------|------|
| MiniMaxCodingPlan | https://api.minimaxi.com/anthropic | MiniMax-M2.7, MiniMax-M2.7-highspeed |
| GLMCodingPlan | https://open.bigmodel.cn/api/anthropic | glm-5-turbo, glm-5.1 |
| KIMICodingPlan | https://api.kimi.com/coding | kimi-for-coding |
| ALiyunCodingPlan | https://coding.dashscope.aliyuncs.com/apps/anthropic | qwen3.5-plus, glm-5 |
API Key 解析优先级:
apiKeyEnv环境变量apiKey中env:VAR_NAME引用- 通用环境变量
PROVIDER_<ID>_API_KEY apiKey字面值
/login 升级
原有的 /login 命令从单一 Anthropic OAuth 流程升级为多供应商交互式登录:
/login
→ 选择供应商列表
├─ Anthropic (Official) → 原有 OAuth 浏览器流程
├─ MiniMaxCodingPlan → 输入 API key → 保存到 settings
├─ GLMCodingPlan → 输入 API key → 保存到 settings
├─ KIMICodingPlan → 输入 API key → 保存到 settings
└─ ALiyunCodingPlan → 输入 API key → 保存到 settingsAgent 多模型调度
主 Agent 可以在 AgentTool 调用中通过 model 参数自由指定任意已配置平台的模型:
{
"name": "Agent",
"input": {
"prompt": "帮我搜索这个 bug",
"model": "minimax:MiniMax-M2.7",
"description": "Search for bug"
}
}模型解析优先级链:
| 优先级 | 来源 | 说明 |
|--------|------|------|
| 1(最高) | CLAUDE_CODE_SUBAGENT_MODEL 环境变量 | 全局强制覆盖 |
| 2 | AgentTool model 参数 | 主 Agent 在 tool_use 中指定 |
| 3 | Agent 定义文件 model frontmatter | ~/.claude/agents/ 中声明 |
| 4(最低) | 继承父级模型 | 默认行为 |
目录结构
src/
├── main.tsx # 入口(Commander.js CLI 解析器)
├── commands.ts # 命令注册
├── tools.ts # 工具注册
├── Tool.ts # 工具类型定义
├── QueryEngine.ts # LLM 查询引擎(核心 Anthropic API 调用者)
├── context.ts # 系统/用户上下文收集
├── cost-tracker.ts # Token 成本追踪
│
├── commands/ # 斜杠命令实现(~50 个)
├── tools/ # Agent 工具实现(~40 个)
├── components/ # Ink UI 组件(~140 个)
├── hooks/ # React 钩子
├── services/ # 外部服务集成
├── screens/ # 全屏 UI(Doctor、REPL、Resume)
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
│
├── bridge/ # IDE 集成桥接(VS Code、JetBrains)
├── coordinator/ # 多 Agent 协调器
├── plugins/ # 插件系统
├── skills/ # 技能系统
├── keybindings/ # 快捷键配置
├── vim/ # Vim 模式
├── voice/ # 语音输入
├── remote/ # 远程会话
├── server/ # 服务器模式
├── memdir/ # 记忆目录(持久化记忆)
├── tasks/ # 任务管理
├── state/ # 状态管理
├── migrations/ # 配置迁移
├── schemas/ # 配置 Schema(Zod)
├── entrypoints/ # 初始化逻辑
├── ink/ # Ink 渲染器封装
├── buddy/ # 伴侣精灵(彩蛋)
├── native-ts/ # 原生 TypeScript 工具
├── outputStyles/ # 输出样式
├── query/ # 查询管线
└── upstreamproxy/ # 代理配置核心架构
1. 工具系统 (src/tools/)
Claude Code 可调用的每个工具都实现为自包含模块,包含输入 schema、权限模型和执行逻辑。
| 工具 | 说明 |
|------|------|
| BashTool | Shell 命令执行 |
| FileReadTool | 文件读取(图片、PDF、Notebook) |
| FileWriteTool | 文件创建/覆盖 |
| FileEditTool | 文件局部修改(字符串替换) |
| GlobTool | 文件模式匹配搜索 |
| GrepTool | 基于 ripgrep 的内容搜索 |
| WebFetchTool | 获取 URL 内容 |
| WebSearchTool | 网页搜索 |
| AgentTool | 子 Agent 生成 |
| SkillTool | 技能执行 |
| MCPTool | MCP 服务器工具调用 |
| LSPTool | 语言服务器协议集成 |
| NotebookEditTool | Jupyter Notebook 编辑 |
| TaskCreateTool / TaskUpdateTool | 任务创建与管理 |
| SendMessageTool | Agent 间消息传递 |
| TeamCreateTool / TeamDeleteTool | 团队 Agent 管理 |
| EnterPlanModeTool / ExitPlanModeTool | 计划模式切换 |
| EnterWorktreeTool / ExitWorktreeTool | Git worktree 隔离 |
| ToolSearchTool | 延迟工具发现 |
| CronCreateTool | 定时触发器创建 |
| RemoteTriggerTool | 远程触发器 |
| SleepTool | 主动模式等待 |
| SyntheticOutputTool | 结构化输出生成 |
2. 命令系统 (src/commands/)
用户通过 / 前缀调用的斜杠命令。
| 命令 | 说明 |
|------|------|
| /commit | 创建 git 提交 |
| /review | 代码审查 |
| /compact | 上下文压缩 |
| /mcp | MCP 服务器管理 |
| /config | 设置管理 |
| /doctor | 环境诊断 |
| /login / /logout | 认证(已升级支持三方供应商) |
| /model / /models | 模型切换(已升级支持三方模型) |
| /memory | 持久化记忆管理 |
| /skills | 技能管理 |
| /tasks | 任务管理 |
| /vim | Vim 模式切换 |
| /diff | 查看变更 |
| /cost | 查看使用成本 |
| /theme | 更换主题 |
| /context | 上下文可视化 |
| /pr_comments | 查看 PR 评论 |
| /resume | 恢复历史会话 |
| /share | 分享会话 |
| /desktop | 桌面应用交接 |
| /mobile | 移动应用交接 |
3. 服务层 (src/services/)
| 服务 | 说明 |
|------|------|
| api/ | Anthropic API 客户端、文件 API、启动引导 |
| mcp/ | Model Context Protocol 服务器连接与管理 |
| oauth/ | OAuth 2.0 认证流程 |
| lsp/ | 语言服务器协议管理 |
| analytics/ | 基于 GrowthBook 的特性开关和分析 |
| plugins/ | 插件加载器 |
| compact/ | 会话上下文压缩 |
| policyLimits/ | 组织策略限制 |
| remoteManagedSettings/ | 远程托管设置 |
| extractMemories/ | 自动记忆提取 |
| tokenEstimation.ts | Token 计数估算 |
| teamMemorySync/ | 团队记忆同步 |
4. 桥接系统 (src/bridge/)
连接 IDE 扩展(VS Code、JetBrains)与 Claude Code CLI 的双向通信层。
bridgeMain.ts— 桥接主循环bridgeMessaging.ts— 消息协议bridgePermissionCallbacks.ts— 权限回调replBridge.ts— REPL 会话桥接jwtUtils.ts— 基于 JWT 的认证sessionRunner.ts— 会话执行管理
5. 权限系统 (src/hooks/toolPermission/)
在每次工具调用时检查权限。根据配置的权限模式(default、plan、bypassPermissions、auto 等)提示用户批准/拒绝或自动解析。
6. 特性开关
通过 Bun 的 bun:bundle 实现构建时死代码消除:
import { feature } from 'bun:bundle'
// 未激活的代码在构建时完全剥离
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: null主要开关:PROACTIVE、KAIROS、BRIDGE_MODE、DAEMON、VOICE_MODE、AGENT_TRIGGERS、MONITOR_TOOL
重要文件说明
QueryEngine.ts(~46K 行)
LLM API 调用的核心引擎。处理流式响应、工具调用循环、思考模式、重试逻辑和 Token 计数。
Tool.ts(~29K 行)
定义所有工具的基础类型和接口——输入 schema、权限模型和进度状态类型。
commands.ts(~25K 行)
管理所有斜杠命令的注册和执行。使用条件导入按环境加载不同命令集。
main.tsx
基于 Commander.js 的 CLI 解析器 + React/Ink 渲染器初始化。启动时并行化 MDM 设置、钥匙串预取和 GrowthBook 初始化以加快启动速度。
技术栈
| 类别 | 技术 | |------|------| | 运行时 | Bun | | 语言 | TypeScript(严格模式) | | 终端 UI | React + Ink | | CLI 解析 | Commander.js(extra-typings) | | Schema 验证 | Zod v4 | | 代码搜索 | ripgrep(通过 GrepTool) | | 协议 | MCP SDK、LSP | | API | Anthropic SDK | | 遥测 | OpenTelemetry + gRPC | | 特性开关 | GrowthBook | | 认证 | OAuth 2.0、JWT、macOS Keychain |
设计模式
并行预取
启动时间通过并行预取 MDM 设置、钥匙串读取和 API 预连接优化——在重量级模块求值开始前执行。
// main.tsx — 作为副作用在其他 import 之前触发
startMdmRawRead()
startKeychainPrefetch()惰性加载
重量级模块(OpenTelemetry ~400KB、gRPC ~700KB)通过动态 import() 延迟到实际需要时才加载。
Agent 集群
子 Agent 通过 AgentTool 生成,coordinator/ 处理多 Agent 编排。TeamCreateTool 支持团队级并行工作。
技能系统
可复用工作流定义在 skills/ 中,通过 SkillTool 执行。用户可添加自定义技能。
插件架构
内置和第三方插件通过 plugins/ 子系统加载。
主要新增功能
| 文件 | 类型 | 说明 |
|------|------|------|
| src/utils/model/thirdPartyProviders.ts | 新增 | 三方供应商核心:注册、查找、客户端创建、内置预设 |
| src/commands/login/ThirdPartyLogin.tsx | 新增 | 三方供应商交互式登录组件 |
| src/commands/login/login.tsx | 修改 | 新增 LoginRouter 供应商选择 |
| src/services/api/client.ts | 修改 | 新增 getAnthropicClientForModel() 路由 |
| src/services/api/claude.ts | 修改 | 流式/非流式查询支持三方客户端 |
| src/utils/model/model.ts | 修改 | 模型解析、显示名、API 标准化 |
| src/utils/model/agent.ts | 修改 | Agent 模型解析、选项列表 |
| src/utils/model/modelOptions.ts | 修改 | 模型选择器注入三方模型 |
| src/utils/model/modelAllowlist.ts | 修改 | Allowlist 三方模型兼容 |
| src/utils/settings/types.ts | 修改 | Settings schema 新增 providers 字段 |
| src/commands/model/index.ts | 修改 | 新增 /models 别名 |
| src/commands/model/model.tsx | 修改 | 模型验证跳过三方模型 |
| src/tools/AgentTool/AgentTool.tsx | 修改 | model 参数扩展为 string,动态描述 |
许可证
本项目采用 MIT 许可证开源。
