# Code Mentor - AI 编程导师 一款全面的 OpenClaw 技能,通过互动教学、代码审查、调试指导和动手实践来学习编程。 ## 功能特性 ### 🎓 8 种教学模式 1. **概念学习** - 通过渐进式示例学习编程概念 2. **代码审查与重构** - 获取代码反馈并获得引导式改进 3. **调试侦探** - 使用苏格拉底式方法学习调试(不直接给答案!) 4. **算法练习** - 掌握数据结构和算法 5. **项目指导** - 在架构指导下设计和构建项目 6. **设计模式** - 学习何时以及如何应用设计模式 7. **面试准备** - 练习编程面试和系统设计 8. **语言学习** - 通过从熟悉的语言映射来学习新语言 ### 📚 综合参考资料 - **算法**:15 种以上常见模式(双指针、滑动窗口、DFS/BFS、动态规划等) - **数据结构**:数组、字符串、树、图、堆 - **设计模式**:创建型、结构型、行为型模式及示例 - **语言**:Python 和 JavaScript 快速参考 - **最佳实践**:整洁代码、SOLID 原则、测试策略 ### 🛠️ 实用脚本 - **`analyze_code.py`**:静态代码分析,检测错误、风格、复杂度、安全问题 - **`run_tests.py`**:执行测试并输出格式化结果(pytest、unittest、jest) - **`complexity_analyzer.py`**:使用大 O 表示法分析时间/空间复杂度 ## 安装 ### 环境要求 ```bash # 用于脚本功能(可选) pip install -r requirements.txt ``` 该技能无需脚本也能完美运行——脚本是可选的增强功能! ## 使用方法 ### 快速入门 激活技能后,告诉它: 1. 你的经验水平(初级/中级/高级) 2. 你想学习或做什么 3. 你喜欢的学习方式 **示例**: ``` "我是初学者,教我 Python 基础" "帮我调试这段代码" [粘贴代码] "给我一个中等难度的算法题" "审查我的实现" [上传文件] "我想构建一个 REST API" ``` ### 教学模式 #### 模式 1:概念学习 ``` "教我递归" "解释 JavaScript 中闭包是如何工作的" "什么是动态规划?" ``` #### 模式 2:代码审查 ``` "审查我的代码" [粘贴或上传文件] "如何改进这个函数?" "这是否遵循了最佳实践?" ``` #### 模式 3:调试(苏格拉底式方法) ``` "帮我调试这个错误" "我的函数返回了 None 而不是总和" "这个循环为什么没起作用?" ``` 导师会通过提问引导你,帮助你自行发现错误! #### 模式 4:算法练习 ``` "给我一个简单的算法题" "练习链表" "LeetCode 风格的中等难度题" ``` #### 模式 5:项目指导 ``` "帮我设计一个任务管理 API" "我在搭建一个博客,从哪里开始?" "应该用什么技术栈?" ``` #### 模式 6:设计模式 ``` "教我单例模式" "什么时候应该使用工厂模式?" "给我演示观察者模式的实际应用" ``` #### 模式 7:面试准备 ``` "模拟技术面试" "系统设计:设计 Twitter" "练习数组和字符串" ``` #### 模式 8:语言学习 ``` "我会 Python,教我 JavaScript" "在 Rust 中怎么做 X?" "比较 Python 和 Java" ``` ## 使用脚本 ### 代码分析器 分析代码中的错误、风格违规、复杂度和安全问题。 ```bash # 分析 Python 文件 python scripts/analyze_code.py mycode.py # 输出 JSON 格式 python scripts/analyze_code.py mycode.py --format json # 分析 JavaScript python scripts/analyze_code.py app.js ``` **输出包含**: - 度量指标(行数、注释数、复杂度) - 按严重程度分类的问题(严重、警告、提示) - 具体的改进建议 ### 测试运行器 运行测试并输出格式化结果。 ```bash # 自动检测框架 python scripts/run_tests.py tests/ # 指定框架 python scripts/run_tests.py tests/ --framework pytest # JSON 输出 python scripts/run_tests.py tests/ --format json ``` **支持的框架**: - pytest (Python) - unittest (Python) - Jest (JavaScript) ### 复杂度分析器 分析时间复杂度和空间复杂度。 ```bash # 分析所有函数 python scripts/complexity_analyzer.py algorithm.py # 分析特定函数 python scripts/complexity_analyzer.py algorithm.py --function bubble_sort # JSON 输出 python scripts/complexity_analyzer.py algorithm.py --format json ``` **输出包含**: - 时间复杂度(大 O 表示法) - 空间复杂度 - 递归检测 - 优化建议 ## 目录结构 ``` code-mentor-1.0.0/ ├── SKILL.md # 主要技能定义文件 ├── README.md # 本文件 ├── requirements.txt # Python 依赖 │ ├── references/ # 知识库 │ ├── algorithms/ │ │ └── common-patterns.md # 15 种以上算法模式 │ ├── data-structures/ │ │ ├── arrays-strings.md │ │ └── trees-graphs.md │ ├── design-patterns/ │ │ └── creational-patterns.md │ ├── languages/ │ │ └── python-reference.md │ ├── best-practices/ │ │ └── clean-code.md │ └── user-progress/ │ └── learning_log.md # 自动记录你的学习进度 │ └── scripts/ # 实用脚本 ├── analyze_code.py ├── run_tests.py └── complexity_analyzer.py ``` ## 进度追踪 你的学习进度会在每次会话后自动保存到 `references/user-progress/learning_log.md`。内容包括: - 已学主题和已掌握的概念 - 已解决的算法问题 - 练习过的技能和使用过的模式 - 重要的见解和突破 - 需要进一步复习的领域 你的进度会跨会话持续保留,因此你可以从上次中断的地方继续学习! ## 学习方法 ### 苏格拉底式方法(调试) 导师在调试时**从不直接给出答案**。而是: 1. **观察**:"你期望什么结果?实际发生了什么?" 2. **定位**:"问题可能出在哪里?" 3. **假设**:"你认为它为什么会失败?" 4. **检验**:"你如何验证这一点?" 5. **解决**:"什么能修复它?" 这样可以教会你独立调试! ### 渐进式提示(算法) 练习算法时: 1. **提示**:"想想如何手动解决这个问题" 2. **方向**:"考虑使用哈希表……" 3. **结构**:"这是一般方法……" 4. **骨架**:"这是一个供你填写的模板……" 5. **解答**:完整解决方案及解释(仅在必要时提供) ### 自适应难度 导师会根据你的水平进行调整: - **初级**:清晰的解释、简单的示例、更多的指导 - **中级**:最佳实践、有挑战性的问题、较少的引导 - **高级**:架构设计、性能优化、复杂场景 ## 示例 ### 示例 1:学习概念 ``` 你:"教我 Python 中的列表推导式" 导师:我们来探索列表推导式!它们是创建列表的简洁方式。 这是传统的循环写法: squares = [] for x in range(10): squares.append(x ** 2) 这是使用列表推导式的写法: squares = [x ** 2 for x in range(10)] 你注意到语法上有什么不同吗? [后续进行互动讨论……] ``` ### 示例 2:调试(苏格拉底式) ``` 你:"我的函数返回了 None 而不是总和!" 导师:我们来调查一下。你期望这个函数返回什么? 你:"列表中所有数字的总和" 导师:好的。你能追踪一下第一次迭代吗?sum 变量发生了什么? [引导你发现遗漏的 return 语句] ``` ### 示例 3:代码审查 ``` 你:[提交了包含嵌套循环的代码] 导师:我发现了一个可以优化的地方。这个嵌套循环的时间复杂度是多少? 你:"O(n²)" 导师:没错。对于每个元素,你都在检查其他所有元素。 你能想到一种支持 O(1) 查找的数据结构吗? [引导重构为使用哈希表] ``` ## 高效学习小贴士 1. **定期练习** - 持续学习胜过突击 2. **先自己尝试** - 在寻求提示前先尝试自己解决问题 3. **多提问** - 导师鼓励好奇心 4. **动手做项目** - 在真实代码中应用所学知识 5. **审查你的代码** - 使用代码审查模式来改进 6. **测试你的代码** - 在学习过程中编写测试 ## 支持的语言 **主要关注**:Python、JavaScript、TypeScript **也支持**:Java、C++、Go、Rust、C#、Ruby、PHP、Swift、Kotlin 等更多语言! ## 故障排除 ### 脚本无法运行? 安装依赖: ```bash pip install -r requirements.txt ``` 对于 JavaScript 测试(Jest): ```bash npm install --save-dev jest ``` ### 找不到参考资料? 参考资料按类别组织: - 算法:`references/algorithms/` - 数据结构:`references/data-structures/` - 设计模式:`references/design-patterns/` - 语言:`references/languages/` - 最佳实践:`references/best-practices/` ### 技能不理解你的请求? 尝试更具体一些: - "教我关于 [概念]" - "给我一个关于 [主题] 的 [难度] 问题" - "审查我的 [语言] 代码" - "帮我调试这个 [错误]" ## 贡献 想要添加更多参考资料或改进该技能? 1. 将新算法添加到 `references/algorithms/` 2. 将语言参考资料添加到 `references/languages/` 3. 向 `references/design-patterns/` 贡献设计模式 4. 用新功能增强脚本 ## 许可证 MIT 许可证 - 欢迎使用和修改! ## 致谢 基于 OpenClaw 框架构建,用于创建教育型 AI 技能。 --- **学习愉快!** 🚀 记住:学习编程最好的方式就是动手做。这位导师会在这里引导你、挑战你、帮助你自行发现解决方案。挣扎是学习的一部分——拥抱它吧!