我手搓了一个开源版 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,加入我们的开源共建!

相关推荐
To_OC7 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic8 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy8 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志8 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
黑科技iOS上架9 小时前
AI不能成为碰触法律底线的牟利工具
经验分享·ai编程
invicinble9 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯10 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜11 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司11 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
努力搬砖的咸鱼11 小时前
如何开始使用agent
ai·agent·ai编程