我手搓了一个开源版 Claude Code (mini-cc)

大家好!最近 Claude Code 大火,但作为一个硬核开发者,怎么能只停留在"用"的层面?

于是我肝了几个通宵,深入剖析了 Claude Code 的底层架构,并用 TypeScript 纯手工复刻了一个开源版本 ------ mini-cc

今天,我就来为大家演示一下 mini-cc 已经实现的几个杀手级核心功能。

看完这篇,你不仅能学会如何使用它,更能看懂目前最顶级的 AI 编程助手的底层设计模式。


核心功能演示指南

💡 演示准备 : 确保你已经在 mini-cc/typescript 目录下执行了 pnpm installpnpm run build。 为了方便演示工具链,你可以通过 npx ts-node src/cli.ts (如果有完整入口) 或执行各个单元测试文件来模拟大模型交互。

🛡️ 1. BashTool:不仅能跑命令,还能防 AI"作恶"

普通的 AI 助手给你一个 exec 就不管了,但 mini-ccBashTool 实现了极强的安全与防爆机制。

演示提示词:

"请帮我执行一个休眠命令:sleep 15。"

预期效果: 你会在终端看到 [BashTool 安全拦截] 拦截到阻塞主线程的 sleep 调用 的黄色警告。 这是因为 mini-cc 在源码中通过正则表达式(detectBlockedSleepPattern)精准识别了长时的"孤狼" sleep 命令。大模型有时会为了等编译完成而傻傻地 sleep,这会导致我们的主进程被无意义阻塞。拦截后,引擎会提示 AI 改用后台监控或其他工具。


🧠 2. 大道至简的记忆管理器 (MemoryManager)

很多 AI Agent 喜欢挂一个沉重的向量数据库(Vector DB),但在 mini-cc 中,我们采用了 Claude Code 同款的纯文件系统两步走法则

演示提示词:

"请使用 BashTool (或 FileWriteTool 配合 npx ts-node) 编写并执行一个测试脚本:循环调用 src/memdir/MemoryManager.ts 中的 createMemoryManager().saveMemory 12次,记录"Bug1"到"Bug12"的详情。我要测试它的防爆截断机制。"

预期效果: 你会看到在项目的 .ai_memory/MEMORY.md 文件中,当记录超过 10 行时,触发了记忆防爆机制 。 程序会打印 [记忆防爆] 索引超长... 触发强制截断。 它会自动丢弃最老的记忆,并在文件末尾贴上大字报警告 > WARNING: MEMORY.md is 11 lines...。这种设计确保了注入给大模型的上下文永远精简且不超 Token!

🥷 3. AgentTool:影分身之术与安全沙盒

当你在重构代码,遇到一个可能破坏环境的子任务时,你可以让 mini-cc 派生一个子代理(Sub-Agent)去探路。

演示提示词(逻辑演示):

"我需要去测试一个不稳定的脚本,请派生一个名叫 BugFixer 的子代理,开启 worktree 隔离模式去执行。"

预期效果: 通过 isolation: "worktree" 参数,你会看到终端自动执行了 git worktree add -b agent-sandbox-xxx /tmp/mini-cc-worktree-xxx。 子代理会在这个完全平行、物理隔离的沙箱目录中执行任务,主分支毫发无损!任务完成后,还会自动清理 git worktree remove


🔌 4. 终极扩展:MCP 插件系统与透明代理

这是本次开源复刻最硬核的部分。mini-cc 完全支持官方的 Model Context Protocol (MCP)

我们在 examples/mcp-servers/ 目录下准备了一个极简的 weather.js MCP 插件。

如何演示:

  1. 确保你的 .mini-cc/settings.json(如果没有可以手动建一个)中配置了:
json 复制代码
{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["绝对路径/examples/mcp-servers/weather.js"]
    }
  }
}
  1. 运行 npx ts-node tests/mcp/test_mcp.ts

预期效果: 你会看到引擎通过 stdio 跨进程启动了 Node.js 插件,并利用透明代理(createMcpTool)将远端工具封装成了 mcp__weather__get_weather。大模型就像调用本地内置函数一样丝滑地获取到了"北京"的天气信息,实现了跨语言、跨进程的零耦合扩展!


为什么你要关注 mini-cc?

在重构 mini-cc 的过程中,我们做了一个非常重要的架构决策:全面抛弃了 Class 类组件,采用了纯函数式(Closure/Factory)架构!

看看我们的源码(如 createAppStateStore, createHookSystem),你会发现:

  1. 消灭了烦人的 this:再也不用担心回调函数里的上下文丢失。
  2. 真正的私有化:闭包让内部状态(如 memory index)对外部绝对不可见,安全性拉满。
  3. 极简的代码体积:完美的 Tree-shaking 支持。

如果你也对 AI 编程助手的底层原理感兴趣,欢迎来翻阅 mini-cc 的源码。

每一行都加了详尽的中文注释,绝对是学习 Agent 架构的教科书级项目!

mini-cc.raingpt.top/

github.com/you-want/mi...

未完,继续迭代中....

欢迎点赞、Star、Fork,加入我们的开源共建!

相关推荐
qq4356947012 小时前
JavaWeb03
前端·css·html
Alice-YUE2 小时前
ai对话平台流式响应输出怎么实现?
前端·笔记·ai·语言模型
一个public的class2 小时前
前后端 + Nginx + Gateway + K8s 全链路架构图解
前端·后端·nginx·kubernetes·gateway
胡志辉的博客2 小时前
网络七层到底怎么落到一次前端请求上:从浏览器到网卡,再到远端服务器
服务器·前端·网络
小比特_蓝光2 小时前
从环境变量到进程地址空间:Linux系统学习笔记
前端·chrome
亿元程序员2 小时前
海外这个新游好玩?手把手带你实战一个!
前端
M ? A2 小时前
Vue slot 插槽转 React:VuReact 怎么处理?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
a1117762 小时前
演唱会3D选座网页(HTML 开源)
前端·3d·html