📚 本章详细分析 MiniClaw 使用的技术栈和依赖。
┌─────────────────────────────────────────────────────────────────────┐
│ MCP SDK 分析 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 包名:@modelcontextprotocol/sdk │
│ 版本:^1.0.0 │
│ 来源:Anthropic 官方 │
│ │
│ 核心组件: │
│ ├── Server // MCP 服务器类 │
│ ├── StdioServerTransport // 标准输入输出传输层 │
│ ├── ListResourcesRequestSchema │
│ ├── ReadResourceRequestSchema │
│ ├── ListToolsRequestSchema │
│ ├── CallToolRequestSchema │
│ ├── ListPromptsRequestSchema │
│ └── GetPromptRequestSchema │
│ │
│ 使用场景:实现 MCP 协议,与 Claude Code 等客户端通信 │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ node-cron 分析 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 包名:node-cron │
│ 版本:^3.0.0 │
│ 功能:基于 cron 表达式的任务调度 │
│ │
│ MiniClaw 使用场景: │
│ • 心跳检测调度(每 30 分钟) │
│ • 日志检查 │
│ • 蒸馏评估 │
│ │
│ 使用示例: │
│ import cron from 'node-cron'; │
│ cron.schedule('*/30 * * * *', async () => { │
│ await executeHeartbeat(); │
│ }); │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ zod 分析 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 包名:zod │
│ 版本:^3.22.0 │
│ 功能:TypeScript 优先的 schema 声明和验证库 │
│ │
│ MiniClaw 使用场景: │
│ • 工具参数验证 │
│ • 类型安全 │
│ • 错误提示 │
│ │
│ 使用示例: │
│ import { z } from 'zod'; │
│ const UpdateSchema = z.object({ │
│ file: z.enum(['AGENTS.md', 'SOUL.md', 'USER.md']), │
│ content: z.string().max(50000), │
│ }); │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 文件系统 API 使用 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 使用的 API: │
│ • fs.readFile() - 读取文件 │
│ • fs.writeFile() - 写入文件 │
│ • fs.appendFile() - 追加内容 │
│ • fs.readdir() - 读取目录 │
│ • fs.stat() - 获取文件信息 │
│ • fs.mkdir() - 创建目录 │
│ • fs.access() - 检查文件是否存在 │
│ │
│ 使用方式: │
│ import { promises as fs } from 'fs'; │
│ const content = await fs.readFile('file.md', 'utf-8'); │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 路径处理 API 使用 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 使用的 API: │
│ • path.join() - 拼接路径 │
│ • path.resolve() - 解析绝对路径 │
│ • path.dirname() - 获取目录名 │
│ • path.basename() - 获取文件名 │
│ • path.extname() - 获取扩展名 │
│ • path.sep - 路径分隔符 │
│ │
│ 使用方式: │
│ import path from 'path'; │
│ import os from 'os'; │
│ const homeDir = os.homedir(); │
│ const miniclawDir = path.join(homeDir, '.miniclaw'); │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 技术选型理由 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ TypeScript │
│ ✅ 类型安全,减少运行时错误 │
│ ✅ 更好的 IDE 支持 │
│ ✅ 代码可读性和可维护性 │
│ │
│ ES Module │
│ ✅ 现代 JavaScript 标准 │
│ ✅ 更好的 tree-shaking │
│ ✅ 与 Node.js 原生支持一致 │
│ │
│ MCP SDK │
│ ✅ 官方支持,稳定可靠 │
│ ✅ 标准化协议,兼容性好 │
│ ✅ 活跃的社区 │
│ │
│ 零运行时依赖(除 MCP SDK) │
│ ✅ 减少依赖风险 │
│ ✅ 更快的安装速度 │
│ ✅ 更小的包体积 │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 第十三章 核心要点 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 📦 核心依赖 │
│ • @modelcontextprotocol/sdk │
│ • node-cron │
│ • zod │
│ │
│ 🔧 Node.js API │
│ • fs (文件系统) │
│ • path (路径处理) │
│ • os (操作系统) │
│ • crypto (加密) │
│ │
│ 🎯 技术选型 │
│ • TypeScript - 类型安全 │
│ • ES Module - 现代标准 │
│ • 零依赖 - 轻量级 │
│ │
│ 💡 设计原则 │
│ • 最小依赖 │
│ • 原生 API 优先 │
│ • 性能优先 │
│ │
└─────────────────────────────────────────────────────────────────────┘
本文档是《MiniClaw 深度解析》系列的第十三章,下一章将详细介绍代码质量分析。
还没有人回复