377 lines
9.5 KiB
Markdown
377 lines
9.5 KiB
Markdown
# 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 技能。
|
||
|
||
---
|
||
|
||
**学习愉快!** 🚀
|
||
|
||
记住:学习编程最好的方式就是动手做。这位导师会在这里引导你、挑战你、帮助你自行发现解决方案。挣扎是学习的一部分——拥抱它吧!
|