[{"content":" 📺 完整播放列表（YouTube）\n一切从一个请求开始 # \u0026ldquo;Eric，能不能教我用 AI 写代码？\u0026rdquo;\n过去几个月，这句话我听了不下 20 次。\n找我的人有：\n产品经理：想自己做个原型，不再求开发排期 运营同事：想自动化报表，不想天天复制粘贴 设计师朋友：想做个个人网站，不想花几千块外包 完全零基础的朋友：听说 AI 能写代码，想试试 他们都有一个共同点：不会写代码，但想通过AI解决自己的问题。\n课程只是针对小白，编程大佬请绕道!!!\n小白最想要什么？ # 和他们聊完，我总结出三个核心需求：\n排名 需求 原话 #1 快速上手 \u0026ldquo;我不想学半年，能不能这周末就搞定？\u0026rdquo; #2 解决实际问题 \u0026ldquo;我不想学语法，就想做个自动化脚本\u0026rdquo; #3 别踩坑 \u0026ldquo;听说配置很麻烦，我怕搞不定\u0026rdquo; 翻译一下：\n时间少：没空系统学习，要的是立即可用 目标明确：不是为了成为程序员，而是解决手头问题 害怕复杂：技术术语、配置报错，都是劝退点 小白会走什么坑？ # 我观察了几个朋友试用 AI 编程工具的过程，发现了几个必踩的坑：\n坑 #1：工具选择困难症 # 一上来就被一堆名词砸晕：\n\u0026ldquo;Claude、GPT、Cursor、Copilot、Claude Code……我该用哪个？\u0026rdquo;\n结果：选了不适合新手的工具，第一步就卡住。\n坑 #2：配置地狱 # 以为装个软件就行，结果：\n\u0026ldquo;终端是什么？环境变量怎么配？API Key 在哪买？国内能用吗？\u0026rdquo;\n结果：在配置上耗了 3 小时，一行代码没写。\n坑 #3：不会提问 # 好不容易能用了，结果：\n\u0026ldquo;帮我写个网站\u0026rdquo; → AI 输出一堆代码 → 不知道怎么用 → 放弃\n结果：不会把需求拆解成 AI 能理解的小任务。\n坑 #4：上下文混乱 # 用了几天，发现：\n\u0026ldquo;为什么 AI 忘了我之前说的？为什么又要重新解释一遍？\u0026rdquo;\n结果：不知道如何管理 AI 的\u0026quot;记忆\u0026quot;，重复劳动。\n课程表：从小白到实战 # 本课程共 9 节课，每节 5-10 分钟，周末就能学完。\n📘 第一阶段：快速上手（3 节课） # 课时 标题 你会学到 01 5 分钟开通你的 AI 助手 如何开通 Coding Plan，安装 Claude Code 02 一键切换让 AI 更聪明 如何选择合适的模型（GLM / Minimax / Kimi） 03 在 VS Code 里用 AI 写代码 告别终端恐惧，用图形界面操作 AI 阶段目标：让 AI 助手跑起来，不再被工具劝退。\n📗 第二阶段：掌握核心技能（4 节课） # 课时 标题 你会学到 04 Skill 是什么：AI 的技能包 什么是 Skill，为什么需要它 05 怎么用 Skill 一键调用 如何用现成的 Skill 提效 06 Skill 的作用范围 什么时候该用 Skill，什么时候不该用 07 把重复工作变成 Skill 如何创建自己的 Skill，自动化重复劳动 阶段目标：掌握 Skill 这个杀手锏，让 AI 学会你的工作流。\n📙 第三阶段：进阶技巧（2 节课） # 课时 标题 你会学到 08 新功能就是新文件夹 如何组织项目，让 AI 理解你的代码结构 09 上下文：AI 的记忆 如何管理 AI 的记忆，避免重复解释 阶段目标：掌握高级技巧，让 AI 成为真正的\u0026quot;长期助手\u0026quot;。\n学完你能做什么？ # 🎯 你会获得的能力 # 能力 实际应用 用自然语言写代码 \u0026ldquo;帮我写个爬虫抓取这个网站的数据\u0026rdquo; → AI 自动生成 自动化重复工作 每天手动整理报表 → 一键 Skill 自动完成 快速搭建原型 有产品想法 → 周末就能做出 Demo 读懂代码逻辑 别人写的代码 → 让 AI 解释给你听 修复 Bug 报错了 → 把错误信息给 AI → 它帮你修 🚫 你不会成为什么 # 不会成为专业程序员：这需要系统学习 + 多年实践 不会独立开发复杂系统：这是进阶内容 不会通过技术面试：那需要算法 + 计算机基础 但你已经超过了 90% 的人 —— 你能用 AI 解决自己的问题。\n","date":"2026-03","externalUrl":null,"permalink":"/posts/00-why-this-course/","section":"文章","summary":"从一个「能不能教我用 AI 写代码」的请求说起，这门课要解决什么问题。","title":"Claude Code 基础课-00-开场白：为什么我做了这个课程","type":"posts"},{"content":" 开场白 # \u0026ldquo;不会写代码，也能让 AI 帮你干活。今天 5 分钟，带你开通自己的 AI 助手。\u0026rdquo;\n第一部分：开通 Coding Plan（1分钟） # 痛点 # Claude Code 官方套餐需要海外支付，大部分人买不了。\n国内替代方案 # 套餐 说明 智谱 Coding Plan 点击链接 Minimax Coding Plan 点击链接 Kimi Coding Plan 点击链接 阿里云白炼 Coding Plan 点击链接 提示：根据自己需求选择，本课程不做具体购买演示。\n第二部分：安装 Claude Code（2分钟） # 支持平台 # macOS（M 系列 / Intel） Windows 安装方式 # 推荐：一键脚本安装（M 系列 Mac / Windows）\nmacOS, Linux, WSL:\ncurl -fsSL https://claude.ai/install.sh | bash Windows PowerShell:\nirm https://claude.ai/install.ps1 | iex Windows CMD:\ncurl -fsSL https://claude.ai/install.cmd -o install.cmd \u0026amp;\u0026amp; install.cmd \u0026amp;\u0026amp; del install.cmd Intel芯片 Mac： Homebrew 安装\nbrew install claude-code 如果没有安装brew 需要先安装\n/bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; 第三部分：验证安装（30秒） # 打开终端，输入：\nmeseven_journey$ claude --version 2.1.68 (Claude Code) 看到版本号，表示安装成功\n","date":"2026-03","externalUrl":null,"permalink":"/posts/01-setup-ai-assistant/","section":"文章","summary":"不会写代码也能开工：5 分钟开通属于自己的 AI 助手。","title":"Claude Code 基础课-01-5 分钟开通你的 AI 助手","type":"posts"},{"content":" 开场白 # \u0026ldquo;买了 Coding Plan，但不知道怎么切换模型？今天教你两种方法，轻松切换智谱、阿里、MiniMax。\u0026rdquo;\n第一部分：为什么要切换模型？ # 不同场景，不同选择 # 场景 推荐模型 原因 日常编码 GLM-5 / MiniMax-m2.5 性价比高 复杂推理 Claude Opus 能力最强 简单任务 GLM-4.5-Air 速度快、成本低 选对模型 = 省钱 + 效率高\n第二部分：方法一 - CC-Switch（推荐小白） # 什么是 CC-Switch？ # 一个桌面工具，点击就能切换不同模型提供商。\n安装 # macOS\nbrew tap farion1231/ccswitch brew install --cask cc-switch # 更新版本 brew upgrade --cask cc-switch Windows\n下载 CC-Switch-v{version}-Windows.msi 点击这里 双击安装 使用步骤 # 添加 Provider\n点击\u0026quot;添加 Provider.\u0026quot; 选择预设 GLM 点击这里 MiniMax点击这里 Kimi 点击这里 aliyun百炼 点击这里 输入 API Key 切换模型\n主界面选择 Provider → 点击\u0026quot;启用\u0026quot; 或系统托盘直接点击切换 生效\n重启终端或 Claude Code 优点：有界面、易操作、支持 MCP/Skills 管理\n\u0026ldquo;两种方法都学会了。下一节课，教你把 Claude Code 装进 VS Code，写代码更顺手。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/02-switch-models/","section":"文章","summary":"买了 Coding Plan 不知道怎么切模型？两种方法一键切换智谱、阿里、MiniMax。","title":"Claude Code 基础课-02-一键切换：让 AI 更聪明","type":"posts"},{"content":" 开场白 # \u0026ldquo;终端敲命令太累？今天教你把 Claude Code 装进 VS Code，拖拖拽拽就能用 AI 写代码。\u0026rdquo;\n第一部分：为什么用 VS Code？ # 三个理由 # 理由 说明 成熟稳定 全球最流行的代码编辑器 可视化操作 不用记命令，点点按钮就行 小白友好 界面直观，学习成本低 用 VS Code = 告别终端恐惧\n第二部分：安装插件 # 步骤 # 下载、安装、打开 VS Code点击这里\n打开扩展商店\nMac: Cmd + Shift + X Windows: Ctrl + Shift + X 搜索并安装\n输入 \u0026ldquo;Claude Code\u0026rdquo; 找到 Anthropic 发布的插件 点击 Install 验证安装\n右上角出现 Spark 图标 ✨ = 安装成功 第三部分：创建项目并打开（1分钟） # 创建项目文件夹（图形化操作） # Mac\n打开 Finder（访达） 进入 Documents（文稿） 右键 → 新建文件夹 → 命名为 my-first-project Windows\n打开资源管理器 进入 Documents（文档） 右键 → 新建 → 文件夹 → 命名为 my-first-project 用 VS Code 打开 # VS Code 菜单：File → Open Folder 选择刚才创建的 my-first-project 点击 Open 第四部分：开始和 AI 聊天 # 打开 Claude 面板 # 点击右上角的 Spark 图标 ✨\n如何引用文件 # 在聊天框输入 @ 会弹出文件列表，选择要引用的文件。\n@main.py 帮我优化这个文件的代码 实战：用自然语言完成功能 # 在聊天框输入：\n帮我创建一个简单的网页，包含一个按钮，点击后弹出\u0026#34;你好，AI！\u0026#34; 重命名照片：\n当前目录有很多猫咪的照片，帮我统一命名格式为：猫咪_1、猫咪_2、猫咪_3...这样的名称 将照片组合成为猫咪相册：\n@index.html 修改为手机使用的网页， 把所有的猫咪相片组合成为一个相册，需要让人感觉到温馨、可爱。 增加微信朋友圈功能：\n相册再增加一个分享微信朋友圈功能 Claude 会：\n生成代码 显示改动预览 点击 Accept 应用改动 第五部分：常用操作 # 操作 说明 @文件名 引用文件 Accept 接受改动 Reject 拒绝改动 Diff 视图 对比改动前后 结尾 # \u0026ldquo;VS Code 里用 AI，就是这么简单。下一节课，教你什么是 Skill，让 AI 学会更多技能。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/03-vs-code/","section":"文章","summary":"终端敲命令太累：把 Claude Code 装进 VS Code，拖拖拽拽用 AI 写代码。","title":"Claude Code 基础课-03-在 VS Code 里用 AI 写代码","type":"posts"},{"content":" 开场白 # \u0026ldquo;想象一下，你学会了做饭、骑车、滑冰。这些技能变成你的一部分，需要的时候随时能用。Skill，就是让 AI 也学会这些技能。\u0026rdquo;\n第一部分：Skill 是什么？ # 类比：人和技能 # 人学会的技能 AI 学会的 Skill 做饭 写周报 骑车 生成 PPT 大纲 滑冰 处理 Excel 表格 没有 Skill 之前 # 每次都要重新教 AI：\n\u0026ldquo;帮我写周报，格式是\u0026hellip;内容包括\u0026hellip;要注意\u0026hellip;\u0026rdquo;\n有了 Skill 之后 # AI 已经\u0026quot;学会\u0026quot;了，直接说：\n\u0026ldquo;帮我写周报\u0026rdquo;\nAI 自动调用\u0026quot;写周报\u0026quot;技能，按你教过的标准完成。\nSkill = AI 内化的能力，一次教会，反复使用\n第二部分：Skill 市场 = App Store # 类比 # 手机 App Store Skill 市场 下载 App 安装 Skill App 解决问题 Skill 解决问题 主流 Skill 市场 # https://skills.sh/\nhttps://skillsmp.com/zh\nCC switch添加 skills GitHub 仓库\n市场 路径 github地址 官方anthropics anthropics/skills https://github.com/anthropics/skills vercel vercel-labs/skills https://github.com/vercel-labs/skills baoyu skills(好用的个人skill) JimLiu/baoyu-skills https://github.com/JimLiu/baoyu-skills 我的开源skills MESevenJourney/eric-awesome-skills https://github.com/MESevenJourney/eric-awesome-skills OpenClaw龙虾专用skills\n市场 说明 地址 ClawHub OpenClaw 官方商店，23,967+ 技能 https://clawhub.ai/skills 重要的skill:\n名称 说明 skill-creator anthropics官方提供，创建自己的skill find-skill 找到自己需要的skills Skill 分类 # 分类 能做什么 适合谁 开发工具 GitHub 集成、代码审查、测试自动化 程序员 办公效率 周报生成、Excel 处理、邮件自动化 运营/HR/财务 文档处理 PDF 提取、Word 编辑、Markdown 转换 所有人 数据分析 图表生成、数据清洗、报表汇总 分析师 设计创作 PPT 大纲、海报设计、文案生成 运营/市场 就像 App Store 有分类，Skill 市场也有分类，按需下载\n第三部分：为什么需要 Skill？ # 三个好处 # 好处 说明 不用重复教 一次安装，永久记住 标准统一 每次输出都按规矩来 可分享 打包发给同事，团队共用 对比 # 没有 Skill 有 Skill 每次重新描述需求 一句话调用 输出质量不稳定 标准化输出 经验无法积累 技能持续迭代 结尾 # \u0026ldquo;Skill 市场 = AI 的 App Store。去逛逛，找到适合你的技能。下一节课，调用这些技能。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/04-what-is-skill/","section":"文章","summary":"像人学会做饭骑车一样，让 AI 也随时调用学会的技能。","title":"Claude Code 基础课-04-Skill 是什么？AI 的技能包","type":"posts"},{"content":"推荐两个常用skills\nskill名称 用途 备注 docx 官网提供word文档编辑工具 karpathy-curated-rss-brief 基于RSS订阅源, 生成最新的AI资讯简报 博主开源技能skills. MESevenJourney/eric-awesome-skills 第一部分：一键调用 # 直接说话， 自动匹配 # @对应文件 帮我转成 word文档 AI 会自动调用\u0026quot;word生成Skill\u0026quot; \u0026ndash;docx\n就像你会做饭，饿了自然去厨房。AI 会 Skill，遇到相关任务自动调用。\n第二部分：常用技巧 # 技巧 1：明确指定 Skill # 如果 AI 没自动识别，可以明确说：\n/find-skills 查询小红书相关的skills 技巧 2：查看已安装的 Skill # 在聊天中输入：\n/context 会列出所有可用的 Skill。\n","date":"2026-03","externalUrl":null,"permalink":"/posts/05-use-skill/","section":"文章","summary":"两个常用 Skill 推荐，一句话一键调用。","title":"Claude Code 基础课-05-怎么用 Skill？一键调用","type":"posts"},{"content":" 一句话总结 # 个人技能 = 你在哪都能用的技能 项目技能 = 只在这个项目能用的技能\n怎么安装的技能，重新打开一个项目就找不到了呢？\n两种技能，两个位置 # 个人技能（全局） # 放在哪？ ~/.claude/skills/\n什么意思？\n这是你的\u0026quot;私人工具箱\u0026quot; 不管你在哪个项目里，这些技能都能用 只属于你，不会影响别人 适合放什么？\n写周报、整理笔记、翻译英文 生成 PPT 大纲、处理 Excel 你个人习惯的工作方式 项目技能（局部） # 放在哪？ 项目文件夹/.claude/skills/\n什么意思？\n这是\u0026quot;项目专属工具箱\u0026quot; 只有在这个项目里才能用 换个项目就找不到了 适合放什么？\n这个项目的代码规范 公司的业务术语、API 文档 团队统一的工作流程 一张表说清楚 # 个人技能 项目技能 位置 ~/.claude/skills/ 项目/.claude/skills/ 谁能用 只有你 团队所有人（如果提交到 git） 在哪能用 所有项目 只有当前项目 放什么 通用技能、个人习惯 项目规范、团队约定 同名技能怎么办？ # 规则：个人技能优先\n举个例子：\n项目里有个技能叫 写周报 你自己也有个技能叫 写周报 你调用时，用的是你自己的版本 有什么用？\n你可以用自己的方式，覆盖项目的默认方式 不用改项目代码，自己偷偷用更好的版本 怎么选？ # 问自己两个问题：\n这个技能，我换个项目还想用吗？\n想 → 放个人技能库 这个技能，需要和同事保持一致吗？\n需要 → 放项目技能库 下一课 # 学会选技能库，下一步就是：创建你自己的 Skill，把重复的工作变成 AI 的能力。\n","date":"2026-03","externalUrl":null,"permalink":"/posts/06-skill-scope/","section":"文章","summary":"个人技能 = 在哪都能用；项目技能 = 只在这个项目生效。","title":"Claude Code 基础课-06-Skill 的作用范围","type":"posts"},{"content":" 开场白 # \u0026ldquo;每次跟 AI 说同样的话，累不累？今天教你一招：把重复需求存起来，下次一句话调用。\u0026rdquo;\n第一部分：从一个痛点开始 # 你有没有这样的经历：\n每次想让 AI 翻译成英文，都要说一遍\u0026quot;请翻译成英文，要自然一点，不要太生硬\u0026hellip;\u0026quot;\n如果有个\u0026quot;翻译按钮\u0026quot;，点一下就搞定，多好？\nSkill 就是这个按钮。\n第二部分：认识 SKILL.md # 每个 Skill 只需要一个文件：SKILL.md\n它由两部分组成：\n--- name: translate-to-english description: 把中文翻译成地道的英文。当用户说\u0026#34;翻译\u0026#34;、\u0026#34;翻译成英文\u0026#34;时调用。 --- ## 指令 1. 将用户输入的中文翻译成英文 2. 使用自然、地道的表达方式 3. 直接输出翻译结果，不需要解释 部分 作用 一句话理解 name 技能名称 这个技能叫什么 description 触发条件 AI 什么时候用它 指令 执行逻辑 AI 具体怎么做 关键认知：\ndescription 决定 什么时候调用 指令 决定 输出什么风格 第三部分：用 skill-creator 自动创建 # Claude Code 内置了一个技能：skill-creator，专门帮你创建 Skill。\n目标 # 做一个「中译英」技能，你说\u0026quot;翻译\u0026quot;它就自动翻译成英文。\nStep 1：召唤 skill-creator # 在 VS Code 里输入：\n/skill-creator Step 2：描述你想要的技能 # 创建一个翻译技能： - 名称：translate-to-english - 功能：把中文翻译成地道的英文 - 触发词：翻译、翻译成英文、translate - 风格：自然地道，不要生硬直译，直接输出结果 Step 3：确认创建 # skill-creator 会生成 SKILL.md 内容，确认后自动创建。\nStep 4：让技能在本地项目生效 # 让技能在本地项目生效 Step 5：让技能在本地项目生效 # 翻译：我很喜欢这个学习AI, 我终于学会了自己创建技能\u0026#34; 结尾 # \u0026ldquo;学会创建 Skill，你就拥有了让 AI 记住你习惯的能力。下一节课，讲讲如何用目录管理多个项目。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/07-repeated-work-to-skill/","section":"文章","summary":"每次跟 AI 说同样的话很累：把重复需求存起来，下次一句话调用。","title":"Claude Code 基础课-07-把重复工作变成 Skill","type":"posts"},{"content":" 开场白 # \u0026ldquo;做菜有厨房，修车有车库。用 Claude Code 开发，也要给每个功能一个\u0026rsquo;家\u0026rsquo;。\u0026rdquo;\n第一部分：为什么每个功能要新建文件夹？ # 类比 # 场景 类比 做饭 在厨房 修车 在车库 开发功能 A 在 feature-a 文件夹 开发功能 B 在 feature-b 文件夹 不分文件夹的问题 # 问题 后果 所有文件堆在一起 AI 分不清哪些文件属于哪个功能 上下文混乱 AI 可能改错文件 难以维护 以后找不到代码在哪 第二部分：实际案例 # 猫咪相册: my-first-project 使用skill转换文档: my-second-project AI 会：\n知道在哪个文件夹操作 不会影响其他功能 保持项目整洁 结尾 # \u0026ldquo;好习惯：新功能 = 新文件夹。下一节课，讲讲 AI 的记忆——上下文管理。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/08-new-feature-new-folder/","section":"文章","summary":"做菜有厨房修车有车库：给每个功能一个「家」。","title":"Claude Code 基础课-08-新功能就是新文件夹","type":"posts"},{"content":" 开场白 # \u0026ldquo;你有没有遇到过这种尴尬——聊了半天，AI 突然忘了你前面说过的话？这不是 AI 偷懒，是它的\u0026rsquo;记忆\u0026rsquo;用完了。今天聊聊上下文，以及怎么让 AI 记住真正重要的东西。\u0026rdquo;\n第一部分：什么是上下文？（What） # 一个比喻 # 想象你和朋友坐在一张咖啡桌旁聊天：\n场景 对应 AI 你们说的所有话 上下文（Context） 桌子的大小 上下文窗口（Context Window） 桌上放不下了，撤掉最早的杯子 AI \u0026ldquo;忘记\u0026quot;前面的内容 你拿笔记本记下关键信息 CLAUDE.md(md是一种便签语言文档) 上下文 = AI 当前能\u0026quot;看到\u0026quot;的全部内容 # 包括你发的消息、AI 的回复、引用的文件、系统提示词。\n上下文窗口有多大？ # 主流模型大约 128K-200K tokens，约 10-15 万字。听起来很大，但代码比普通文字更\u0026quot;吃\u0026quot;上下文——一个 500 行的代码文件可能就要 3000-5000 tokens。\n第二部分：为什么要保护上下文？（Why） # 原因一：记忆会丢失 # 上下文满了之后，AI 自动丢弃最早的内容。聊了 50 轮，第 1 轮说的技术栈信息早就被挤掉了。\n原因二：浪费钱 # API 按 token 收费。冗余的粘贴、冗长的对话，都是在白花钱。精简对话可以省下 10 倍 token。\n原因三：回答质量下降 # 上下文里噪音越多，AI 注意力越分散。塞满无关内容时，AI 容易跑题、遗漏要点。\n一句话总结：保护上下文 = 防遗忘 + 省钱 + 提质量。\n第三部分：如何保护上下文？（How） # 方法一：用 CLAUDE.md 存放长期记忆 # 执行项目初始化命名, 会在项目根目录创建 CLAUDE.md，AI 每次启动都会自动读取：\n/init 比如:\n# 项目说明 ## 技术栈 - 前端：React + TypeScript - 后端：Node.js ## 代码规范 - 变量命名：camelCase - 不要修改 config/ 目录 不用每次重复说\u0026quot;我用的是 React\u0026rdquo;，写一次就够了。\n方法二：让 AI 自己读文件，不要粘贴 # # 不要这样 \u0026#34;这是我的 config.js：（粘贴 200 行代码）\u0026#34; # 应该这样 \u0026#34;读一下 src/config.js，帮我检查数据库配置\u0026#34; 文件内容按需加载，不污染对话历史。\n方法三：精简提问 # 不好的做法 好的做法 粘贴 500 行代码让 AI \u0026ldquo;看看\u0026rdquo; 告诉 AI 文件路径，让它自己读 复制整篇报错日志 只贴关键错误行 \u0026ldquo;帮我优化一下这个项目\u0026rdquo; \u0026ldquo;优化 utils/format.js 的日期格式化函数\u0026rdquo; 方法四：用 /compact 压缩对话 # 对话超过 20 轮，或感觉 AI 开始遗忘时：\n/compact AI 会总结当前对话，释放上下文空间。\n方法五：新任务开新对话 # 修 bug A、修 bug B、开发猫咪相册——每个任务单独开对话。新对话 = 全新上下文，没有旧信息的干扰。\n结尾 # \u0026ldquo;总结一下：\nWhat — 上下文是 AI 的\u0026rsquo;工作记忆\u0026rsquo;，有大小限制，满了会丢弃最早的内容。\nWhy — 保护上下文 = 防 AI 失忆 + 省 token 费用 + 提升回答质量。\nHow — 五个方法：写 CLAUDE.md、让 AI 自己读文件、精简提问、用 /compact 压缩、新任务开新对话。\n恭喜你，完成了全部课程！记住：AI 很强，但你怎么用它，决定了它有多强。\u0026rdquo;\n","date":"2026-03","externalUrl":null,"permalink":"/posts/09-context-memory/","section":"文章","summary":"聊了半天 AI 突然忘事？聊聊上下文，以及怎么让 AI 记住真正重要的东西。","title":"Claude Code 基础课-09-上下文：AI 的记忆","type":"posts"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/","section":"","summary":"","title":"","type":"page"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/en/tags/ai-tools/","section":"Tags","summary":"","title":"AI Tools","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/ai-%E5%B7%A5%E5%85%B7/","section":"Tags","summary":"","title":"AI 工具","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/claude-code/","section":"Tags","summary":"","title":"Claude Code","type":"tags"},{"content":" 背景：为什么做这个项目 # 个人技术工具箱——一个为 Claude Code 设计的 Skills 合集，收录各种提升效率的实用小工具。日常用 AI 干活时，总有那么些反复出现的多步流程：每次都要重新描述、逐步指挥。把它们沉淀成一个个独立、对话即可触发的 Skill，一句话就能让 AI 自动跑完全程。\n意义在哪里 # 🧩 标准化：Skills 遵循开放的 SKILL.md 标准，不止 Claude Code 可用——Codex CLI、Gemini CLI、OpenClaw 都兼容，写一次处处能用 🗣 对话即工作流：每个 Skill 自包含，输入触发词就执行完整流程，复杂多步任务一句话搞定 📦 一键安装：支持 ClawHub、npx、Claude Code 插件市场三种安装方式 🔓 MIT 开源：自由使用、修改、分发 当前技能：Karpathy 精选 RSS 中文日报 # 从 Karpathy 精选的 93 个 RSS 源抓取最近文章，生成高质量的中文日报。在 Claude Code 对话里输入触发词 RSS 日报，AI 自动执行：抓取订阅源 → 筛选文章 → 读取全文 → 生成中文日报并保存到本地。灵感来自 Karpathy 的 RSS 列表与 Cory Doctorow 谈 RSS。\n日报效果 # 安装 # # 方式一：ClawHub（推荐） npm install -g clawhub clawhub install karpathy-curated-rss-brief # 方式二：skills.sh npx skills add https://github.com/MESevenJourney/eric-awesome-skills.git --skill karpathy-curated-rss-brief 或在 Claude Code 里 /plugin marketplace add MESevenJourney/eric-awesome-skills 从插件市场安装。部分 Skills 需要 uv（Python 依赖自动管理，无需手动 pip install）。\n开源地址：MESevenJourney/eric-awesome-skills（中英双语 README）\n","date":"2026-08","externalUrl":null,"permalink":"/projects/eric-awesome-skills/","section":"项目","summary":"个人技术工具箱：基于开放 SKILL.md 标准的 Claude Code 技能集，兼容 Codex CLI、Gemini CLI、OpenClaw。","title":"Eric Awesome Skills","type":"projects"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/llm/","section":"Tags","summary":"","title":"LLM","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/en/tags/local-deployment/","section":"Tags","summary":"","title":"Local Deployment","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/mac/","section":"Tags","summary":"","title":"Mac","type":"tags"},{"content":" 背景：为什么做这个项目 # 这个仓库是演讲 《Mac 电脑上如何本地部署一个 LLM 模型》 的完整配套文档：即使不看视频，照着文档一步步操作，也能在自己的 Mac 上完成部署。很多朋友手里有一台 Apple Silicon 的 Mac，想用 AI 编程，却被三个问题挡住——API 订阅贵、模型选型晕、不知道本地模型怎么\u0026quot;真正干活\u0026quot;。这个项目就是把这条路打通，并用一个看得见的结果收尾：让本地模型画出一只骑自行车的小黄鸭 🦆🚲。\n意义在哪里 # 🔒 隐私是第一理由：数据从不离开你的电脑——私有代码、商业文档、客户数据、个人对话，不上云、不用于训练、不泄露。涉及商业机密/合规/隐私的场景，本地推理是首选 💰 成本可控：一次部署，模型跑在本地统一内存里，不按 token 计费 🛠 让本地模型真正干活：不止是网页聊天，而是接入 Claude Code 等 Harness，进入真实的编程工作流 🧭 降低心智门槛：从\u0026quot;本地部署到底在部署什么\u0026quot;的心智模型，到硬件评估、模型选型、术语速查，一篇文档讲透 三步上手（Apple Silicon，统一内存 ≥16GB） # 安装 oMLX：brew install omlx 启动并选模型：omlx start，在菜单栏选择模型（如 Qwen3.6-35B MLX 3bit） 接入 Claude Code：omlx launch claude → 让它\u0026quot;画一只骑自行车的小黄鸭\u0026quot; 技术栈：Apple MLX 框架 + oMLX 运行时 + Claude Code。仓库里还有配套幻灯片和「小黄鸭画廊」（每个模型的实际画作对比）。\n视频讲解 # 开源地址：MESevenJourney/mac-llm-deploy（中英双语 README）\n","date":"2026-08","externalUrl":null,"permalink":"/projects/mac-llm-deploy/","section":"项目","summary":"在 Mac 上一键本地部署 LLM，并接入 Claude Code 实战——隐私是第一理由，不只是省钱。","title":"Mac LLM Deploy","type":"projects"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/en/tags/open-source/","section":"Tags","summary":"","title":"Open Source","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2/","section":"Tags","summary":"","title":"本地部署","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/tags/%E5%BC%80%E6%BA%90/","section":"Tags","summary":"","title":"开源","type":"tags"},{"content":"","date":"2026-08","externalUrl":null,"permalink":"/projects/","section":"项目","summary":"","title":"项目","type":"projects"},{"content":"","date":"2026-03","externalUrl":null,"permalink":"/series/claude-code-%E5%9F%BA%E7%A1%80%E8%AF%BE/","section":"Series","summary":"","title":"Claude Code 基础课","type":"series"},{"content":"","date":"2026-03","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","date":"2026-03","externalUrl":null,"permalink":"/tags/%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/","section":"Tags","summary":"","title":"入门教程","type":"tags"},{"content":"","date":"2026-03","externalUrl":null,"permalink":"/posts/","section":"文章","summary":"","title":"文章","type":"posts"},{"content":" 1、Typora - 最好用Markdown工具 # 优点：\nMarkdown格式实时渲染，所见即所得，想要的语法立即呈现，不会打断你的写作思路。并且 源代码格式，可以对不满意的排版微调。\n语法自动填充，写完一般给出另一半，生产力更上一层楼。\n**导出方便。**配合 Pandoc 你可以将文件轻松地导出为 PDF、HTML、Word、移动端长图，以及许多学术相关的文件格式。\n根据标题自动生成大纲，以及文件列表等等。\n==简洁、所见即所得==\n缺点：\n云同步方案不原生支持，或者说不成熟 Typora 完全使用详解\n2、Aldente Pro - 电池管理，重要 # 保护电池寿命，防止电池循环放电次数过多。使用软件之后，可以一直给电源充电\n防止电池循环放电次数过多\n电池过热保护\n3、HapiGo - 全文搜索工具 # 相当于 Alfred 高级版\n全文搜索： 文件、目录、浏览器书签和历史记录、应用等等 文件预览 Airdrop / 打开所在目录 / 分享 / 删除 等文件操作 浏览器搜索：类似Alfred的快捷网站导航, eg: 【go Hapigo使用】、【bd deepSeek】 小工具支持： AI工具搜索 / OCR / 翻译 / 截图工具 / Base64 / UUID生成等 4、Hidden bar - 统一管理bar栏目 # 收缩和展示置顶的图标，统一管理，拯救强迫症患者\n按住command, 使用鼠标拖动，将需要隐藏的icon拖入竖线左侧\n5、Snipaste- 必备截屏软件 # fn + F1 开启截屏 便于复制颜色, RGB / Hex 之间切换， 前端Web开发者的利器 截图并输入文字/打马赛克等 钉住截图(Pin-To-Screen) 很好用 6、Rectangle - 屏幕分屏工具 # 分屏同时查看多个内容，可以实现简单和高效的分屏\n使用场景：\n场景一：作为Web Dev: 屏幕左边 Vs code(快捷键：Ctl + Option + \u0026lt; )， 右边 Figma(快捷键：Ctl + Option + \u0026gt; ) 场景二：需要快速填表: 屏幕左边文档word/Excel(快捷键：Ctl + Option + \u0026lt; ) ， 右边浏览器(快捷键：Ctl + Option + \u0026gt; )。 场景三：将某个窗口，快读聚焦在屏幕中央(快捷键：Ctl + Option + m )。 场景三：四个页面合理分屏展示(快捷键：Ctl + Option + u/j/i/k )。分别对应左上 、左下、右上、右下 常用的快捷键：\nCtl + Option + 上/下/左/右 方向键，即对应上/下/左/右 一半的屏幕 Ctl + Option + m 让某个窗口居于屏幕中央 Ctl + Option + u/j/i/k ，即对应上/下/左/右屏幕，四个角落 7、AppCleaner - 彻底卸载应用 # 需要移除某个app，可以彻底删除相关文件和缓存，解决垃圾文件问题。\n8、FlyKey - 展示快捷键 # 快捷键拯救者，鼠标定位到当前应用，双击control, 展示app所有支持快捷键\n9、OBS - 最强录屏工具 # 录屏 / 直播 ","date":"2025-03","externalUrl":null,"permalink":"/posts/mac_office_software/","section":"文章","summary":"Mac 上好用的效率软件清单：Typora、Aldente、HapiGo、Snipaste、Rectangle 等。","title":"Mac 办公软件推荐","type":"posts"},{"content":"","date":"2025-03","externalUrl":null,"permalink":"/tags/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/","section":"Tags","summary":"","title":"软件推荐","type":"tags"},{"content":"","date":"2025-01","externalUrl":null,"permalink":"/tags/videolingo/","section":"Tags","summary":"","title":"VideoLingo","type":"tags"},{"content":" 它是什么？能干什么？ # VideoLingo 是一站式视频翻译本地化配音工具，能够一键生成 Netflix 级别的高质量字幕，告别生硬机翻，告别多行字幕，还能加上高质量的克隆配音，让全世界的知识能够跨越语言的障碍共享。\n它的特点和功能(官网描述) # 🎥 使用 yt-dlp 从 Youtube 链接下载视频 🎙️ 使用 WhisperX 进行单词级和低幻觉字幕识别 📝 使用 NLP 和 AI 进行字幕分割 📚 自定义 + AI 生成术语库，保证翻译连贯性 🔄 三步直译、反思、意译，实现影视级翻译质量 ✅ 按照 Netflix 标准检查单行长度，绝无双行字幕 🗣️ 支持 GPT-SoVITS、Azure、OpenAI 等多种配音方案 🚀 整合包一键启动，在 streamlit 中一键出片 📝 详细记录每步操作日志，支持随时中断和恢复进度 输入语言支持：🇺🇸 英语 🤩 | 🇷🇺 俄语 😊 | 🇫🇷 法语 🤩 | 🇩🇪 德语 🤩 | 🇮🇹 意大利语 🤩 | 🇪🇸 西班牙语 🤩 | 🇯🇵 日语 😐 | 🇨🇳 中文* 😊 个人观点 # 亲测：视频字幕提取和配音非常精准\n懒得折腾的话，可直接使用付费SaaS套餐，省时间，费用也很低，还有免费翻译 15 分钟视频\n上手快，操作简单VideoLingo操作文档\n🤩可支持完全的本地化Locally部署，使用本地LLM模型，费用直接降至0🤩\n🤩使用本地化Locally 配音软件GPT-SoVITS🤩\n如何配置本地运行 # 本地安装\ngit Clone the repository\ngit clone https://github.com/Huanshere/VideoLingo.git cd VideoLingo ​\tInstall dependencies(requires python=3.10)\nconda create -n videolingo python=3.10.0 -y conda activate videolingo python install.py ​\tStart the application\nstreamlit run st.py 之后会默认打开一个页面：http://localhost:8501/ or http://localhost:8502/\n选择完全本地化体验，使用 qwen2.5-coder:32b (linux或者window) 或 lmstudio-community/Qwen2.5-Coder-32B-Instruct-MLX-4bit (MacOS) 作为大模型，Edge TTS 作为配音，无需任何 API key（此时需要在 VideoLingo/config.yaml 中将 max_workers 设为 1，summary_length 调低至 2000）。 # * Summary length, set low to 2k if using local LLM summary_length: 2000 # *Number of LLM multi-threaded accesses, set to 1 if using local LLM max_workers: 1 使用LM studio加载下载好的模型 lmstudio-community/Qwen2.5-Coder-32B-Instruct-MLX-4bit\n但处理过程涉及多步思维链和复杂的json格式，不建议使用小于 30B 的模型。\n下载安装LM studio请参考这里\n页面配置：\nLLM Configuration\nBASE_URL: http://localhost:1234\nMODEL: qwen2.5-coder:32b\nAPI_KEY: 本地模型随意，如使用openAI，填写具体的key\nSubtitles\n简体中文(源) =\u0026gt; English(目标)\nDubbing\nedge_tts\n开始步骤：必需先提取字幕Translate and Generate Subtitles，再进行配音Dubbing，两者有依赖关系。 如何配置GPT-SoVITS(最强语音克隆) # 点击这里\n参考链接 # VideoLingo项目地址\n开源配音软件-GPT-SoVITS\nGPT-SoVITS-V2升级指南\n","date":"2025-01","externalUrl":null,"permalink":"/posts/generating_subtitles_and_dubbing_for_a_video/","section":"文章","summary":"VideoLingo：开源免费的视频字幕提取与配音工具，一键生成高质量字幕和克隆配音。","title":"Videolingo: 开源免费的视频字幕提取和配音软件","type":"posts"},{"content":"","date":"2025-01","externalUrl":null,"permalink":"/tags/%E9%85%8D%E9%9F%B3/","section":"Tags","summary":"","title":"配音","type":"tags"},{"content":"","date":"2025-01","externalUrl":null,"permalink":"/tags/%E5%AD%97%E5%B9%95/","section":"Tags","summary":"","title":"字幕","type":"tags"},{"content":"","date":"2024-12","externalUrl":null,"permalink":"/tags/mlx/","section":"Tags","summary":"","title":"MLX","type":"tags"},{"content":" MLX参数调优 # Fine-tuning a large model with LoRA requires a machine with a decent amount of memory. Here are some tips to reduce memory use should you need to do so:\nTry quantization (QLoRA). You can use QLoRA by generating a quantized model with convert.py and the -q flag. See the Setup section for more details.\n# mlx_lm.convert --help usage: mlx_lm.convert [-h] [--hf-path HF_PATH] [--mlx-path MLX_PATH] [-q] [--q-group-size Q_GROUP_SIZE] [--q-bits Q_BITS] [--dtype {float16,bfloat16,float32}] [--upload-repo UPLOAD_REPO] [-d] Convert Hugging Face model to MLX format options: -h, --help show this help message and exit --hf-path HF_PATH Path to the Hugging Face model. --mlx-path MLX_PATH Path to save the MLX model. -q, --quantize Generate a quantized model. --q-group-size Q_GROUP_SIZE Group size for quantization. --q-bits Q_BITS Bits per weight for quantization. --dtype {float16,bfloat16,float32} Type to save the non-quantized parameters. --upload-repo UPLOAD_REPO The Hugging Face repo to upload the model to. -d, --dequantize Dequantize a quantized model. mlx_lm.convert 等同于 lora下的convert.py\nTry using a smaller batch size with --batch-size. The default is 4 so setting this to 2 or 1 will reduce memory consumption. This may slow things down a little, but will also reduce the memory use.\nReduce the number of layers to fine-tune with --lora-layers. The default is 16, so you can try 8 or 4. This reduces the amount of memory needed for back propagation. It may also reduce the quality of the fine-tuned model if you are fine-tuning with a lot of data.\nLonger examples require more memory. If it makes sense for your data, one thing you can do is break your examples into smaller sequences when making the {train, valid, test}.jsonl files.\nGradient checkpointing lets you trade-off memory use (less) for computation (more) by recomputing instead of storing intermediate values needed by the backward pass. You can use gradient checkpointing by passing the --grad-checkpoint flag. Gradient checkpointing will be more helpful for larger batch sizes or sequence lengths with smaller or quantized models.\n梯度检查点（Gradient Checkpointing）：这是一种优化策略，允许你通过牺牲更多的计算时间来换取较少的内存使用。在训练深度神经网络时，每个前向传递（forward pass）都会生成许多中间激活值，这些值会被用在反向传播（backward pass）中计算梯度。通常，这些中间值会被存储在内存中，以便在反向传播时使用。 内存和计算的权衡：使用梯度检查点，你可以选择不存储所有的中间激活值，而是在反向传播时重新计算这些值。这意味着你需要更多的计算资源（因为要重复计算），但可以显著减少所需的内存。特别是在GPU内存有限的情况下，这个策略非常有用。 使用方法：要启用梯度检查点，你可以在训练命令中加入\u0026ndash;grad-checkpoint标志。这个标志会告知训练框架采用这种策略。 适用场景： 较大的批量大小（Batch Sizes）：当你处理较大的批量数据时，内存需求会增加。梯度检查点可以在这里发挥作用，减少内存使用。 较长的序列长度（Sequence Lengths）：处理长序列数据（如长文本或时间序列）时，中间激活值的数量会显著增加，梯度检查点可以缓解这种情况下的内存压力。 较小的或量化的模型：尽管模型本身较小或经过量化，处理大量数据时仍可能面临内存限制。梯度检查点在这里仍然有用，因为它能帮助管理内存使用。 总之，梯度检查点是一种有效的技术，特别适用于内存受限的情况或当你想在计算时间允许的条件下，尽可能减少内存使用。它通过重新计算而不是存储中间值来实现这一目标。\nFor example, for a machine with 32 GB the following should run reasonably fast:\npython lora.py \\ --model mistralai/Mistral-7B-v0.1 \\ --train \\ --batch-size 1 \\ --lora-layers 4 \\ --data wikisql 上个视频的MLX微调命令：\nmlx_lm.lora --train --model Qwen/Qwen2.5-0.5B-Instruct --batch-size 1 --num-layers 4 --iters 1000 --data my-data-chat community # MLX community # A community org for model weights compatible with mlx-examples powered by MLX.\nThese are pre-converted weights and ready to be used in the example scripts.\nlmstudio-community # Models quantized and uploaded by the LM Studio community, for the LM Studio community. Discord: https://discord.gg/aPQfnNkxGC\n性能对比 # 视频字幕提取对比 # VideoLingo\nMLX量化版: lmstudio-community/Qwen2.5-Coder-32B-Instruct-MLX-4bit # 第一次：8:24\n第二次：8:40\nCompatibility: Apple Silicon Macs Model creator: Qwen Original model: Qwen2.5-Coder-32B-Instruct MLX quantizations: provided by bartowski from mlx-examples 非MLX的量化版模型: qwen2.5-coder:32b # 第一次：9:10\n第二次：8:56\nollama show qwen2.5-coder:32b Model architecture qwen2 parameters 32.8B context length 32768 embedding length 5120 quantization Q4_K_M System You are Qwen, created by Alibaba Cloud. You are a helpful assistant. License Apache License Version 2.0, January 2004 Which GGUF is right for me? (Opinionated)\nQ4_K_M: 4.83 Bits\n针对不同类型的量化版本，遵循特定的命名约定：“q”+ 用于存储权重的位数（精度）+ 特定变体\ntoken生成性能评估 # MLX量化版: mlx-community/Llama-3.2-3B-Instruct-4bit # # pip install -r mlx # sh mlx_evaluation.sh mlx_evaluation.sh\n#!/bin/bash mlx_lm.generate --model mlx-community/Llama-3.2-3B-Instruct-4bit --max-kv-size 33000 --max-tokens 1000 --temp 0.0 --top-p 0.9 --seed 1000 --prompt -\u0026lt;./portugal.txt;say done ==0.20.0== pip install --upgrade mlx==0.20.0\nPrompt: 32160 tokens, 592.339 tokens-per-sec\nGeneration: 1000 tokens, 39.023 tokens-per-sec\nPeak memory: 9.179 GB\nPrompt: 32160 tokens, 588.907 tokens-per-sec\nGeneration: 1000 tokens, 39.181 tokens-per-sec\nPeak memory: 9.179 GB\n==0.21.1== pip install --upgrade mlx==0.21.1\nPrompt: 32160 tokens, 590.838 tokens-per-sec\nGeneration: 1000 tokens, 36.030 tokens-per-sec\nPeak memory: 8.405 GB\nPrompt: 32160 tokens, 613.386 tokens-per-sec\nGeneration: 1000 tokens, 36.393 tokens-per-sec\nPeak memory: 8.405 GB\n非MLX的GGUF版本Llama-3.2-3B-Instruct-Q4_K_M.gguf # llama. cpp安装\nportugal.txt\nq4_K_M on Llama.cpp with flash attention non_mlx_evaluation_gguf_flash_attention.sh\n#!/bin/bash llama-cli -m /Users/{username}/.cache/lm-studio/models/lmstudio-community/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf -c 33000 -n 1000 --temp 0.0 --top_p 0.9 --seed 1000 -fa -f ./portugal.txt;say done llama_perf_sampler_print: sampling time = 79.32 ms / 33125 runs ( 0.00 ms per token, 417633.26 tokens per second) llama_perf_context_print: load time = 13690.74 ms llama_perf_context_print: prompt eval time = 58325.58 ms / 32125 tokens ( 1.82 ms per token, 550.79 tokens per second) llama_perf_context_print: eval time = 36068.92 ms / 999 runs ( 36.11 ms per token, 27.70 tokens per second) llama_perf_context_print: total time = 94615.82 ms / 33124 tokens ggml_metal_free: deallocating q4_K_M on Llama.cpp without flash attention non_mlx_evaluation_gguf.sh\n#!/bin/bash llama-cli -m /Users/{username}/.cache/lm-studio/models/lmstudio-community/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf -c 33000 -n 1000 --temp 0.0 --top_p 0.9 --seed 1000 -f ./portugal.txt;say done llama_perf_sampler_print: sampling time = 80.14 ms / 33125 runs ( 0.00 ms per token, 413318.53 tokens per second) llama_perf_context_print: load time = 2369.94 ms llama_perf_context_print: prompt eval time = 82601.02 ms / 32125 tokens ( 2.57 ms per token, 388.92 tokens per second) llama_perf_context_print: eval time = 72978.77 ms / 999 runs ( 73.05 ms per token, 13.69 tokens per second) llama_perf_context_print: total time = 155812.62 ms / 33124 tokens ggml_metal_free: deallocating Flash Attention 是一种优化技术，专门用于提高注意力机制的计算效率。它通过减少内存访问次数和加速矩阵乘法来提升速度，特别是在大批量和长序列的情况下。\nReference # mlx_lm_0201_finally_has_the_comparable_speed_as\n","date":"2024-12","externalUrl":null,"permalink":"/posts/mlx_community/","section":"文章","summary":"MLX 生态与相关资源整理。","title":"MLX的生态","type":"posts"},{"content":"","date":"2024-12","externalUrl":null,"permalink":"/tags/lm-studio/","section":"Tags","summary":"","title":"LM Studio","type":"tags"},{"content":" MLX Intro # MLX is a NumPy-like array framework designed for efficient and flexible machine learning on Apple silicon, brought to you by Apple machine learning research.\nThe Python API closely follows NumPy with a few exceptions. MLX also has a fully featured C++ API which closely follows the Python API.\nThe main differences between MLX and NumPy are:\nComposable function transformations: MLX has composable function transformations for automatic differentiation, automatic vectorization, and computation graph optimization. Lazy computation: Computations in MLX are lazy. Arrays are only materialized when needed. Multi-device: Operations can run on any of the supported devices (CPU, GPU, …) The design of MLX is inspired by frameworks like PyTorch, Jax, and ArrayFire. ==A notable difference from these frameworks and MLX is the unified memory model. Arrays in MLX live in shared memory. Operations on MLX arrays can be performed on any of the supported device types without performing data copies.== Currently supported device types are the CPU and GPU.\n非常适用于个人进行微调小模型、学习\nMLX关键优势： # 数组位于共享内存 跨设备操作无需数据传输 显著降低数据移动开销 MLX内存模型更高效 对比NVIDIA GPU框架： # PyTorch需要手动.to(device) 数据传输是性能瓶颈 Finetuning # 前提：\n1、安装Miniconda\n2、注册huggingface账号并在终端已经登录huggingface\nstep 1、set up env 环境准备 # 创建虚拟环境 # 创建虚拟环境 conda create --name finetuning python=3.11 -y #\t激活环境 conda activate finetuning # 终止环境 conda deactivate # 下载项目mlx-examples，使用 mkdir mlx cd mlx git clone https://github.com/ml-explore/mlx-examples.git cd mlx-examples/lora pip install -r requirements.txt pip install mlx-lm LoRA (Low-Rank Adaptation) # LoRA（低秩适应）是一种高效的参数微调技术，主要解决以下问题：\n减少微调时的计算和存储开销 保持预训练模型的整体性能 只训练少量可学习参数 核心原理 # 传统微调会更新模型的所有参数，而LoRA只在原始预训练权重上附加小型可训练矩阵。\n数学表示：\n原始权重矩阵：W 可学习的低秩矩阵：A和B 更新后的权重：W + BA LoRA vs QLoRA # LoRA：低秩矩阵微调 QLoRA：在LoRA基础上加入量化技术，进一步降低内存消耗 To install from PyPI you must meet the following requirements:\nBuild and Install\nUsing an M series chip (Apple silicon) Using a native Python \u0026gt;= 3.9 macOS \u0026gt;= 13.5 我的系统环境：\nApple M3 Max、36 GB、14.6.1\nstep 2、download model 模型下载模型 # pip install hf_transfer huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct # 查看下载的镜像 ls -la /Users/${username}/.cache/huggingface/hub 国内镜像加速\nexport HF_ENDPOINT=https://hf-mirror.com\nQwen2.5-Intro\nIn the past three months since Qwen2\u0026rsquo;s release, numerous developers have built new models on the Qwen2 language models, providing us with valuable feedback. During this period, we have focused on creating smarter and more knowledgeable language models. Today, we are excited to introduce the latest addition to the Qwen family: Qwen2.5.\nDense, easy-to-use, decoder-only language models, available in 0.5B, 1.5B, 3B, 7B, 14B, 32B, and 72B sizes, and base and instruct variants. Pretrained on our latest large-scale dataset, encompassing up to 18T tokens. Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. Context length support up to 128K tokens and can generate up to 8K tokens. Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. step 3、data preparation 数据准备 # mlx数据要求 The LoRA command expects you to provide a dataset with --data. The MLX Examples GitHub repo has an example of the WikiSQL data in the correct format. For fine-tuning (--train), the data loader expects a train.jsonl and a valid.jsonl to be in the data directory. For evaluation (--test), the data loader expects a test.jsonl in the data directory. Currently, *.jsonl files support three data formats: chat, completions, and text. Here are three examples of these formats: mlx支持的三个格式数据 chat:\n{ \u0026#34;messages\u0026#34;: [ { \u0026#34;role\u0026#34;: \u0026#34;system\u0026#34;, \u0026#34;content\u0026#34;: \u0026#34;You are a helpful assistant.\u0026#34; }, { \u0026#34;role\u0026#34;: \u0026#34;user\u0026#34;, \u0026#34;content\u0026#34;: \u0026#34;Hello.\u0026#34; }, { \u0026#34;role\u0026#34;: \u0026#34;assistant\u0026#34;, \u0026#34;content\u0026#34;: \u0026#34;How can I assistant you today.\u0026#34; } ] } completions:\n{ \u0026#34;prompt\u0026#34;: \u0026#34;What is the capital of France?\u0026#34;, \u0026#34;completion\u0026#34;: \u0026#34;Paris.\u0026#34; } text:\n{ \u0026#34;text\u0026#34;: \u0026#34;This is an example for the model.\u0026#34; } 下载sql数据集：b-mc2/sql-create-context # 安装依赖性 pip install datasets touch load_data.py vim load_data.py load_data.py 使用 chat类型的数据\nfrom datasets import load_dataset folder=\u0026#34;my-data-chat/\u0026#34; system_message = \u0026#34;\u0026#34;\u0026#34;You are an text to SQL query translator. Users will ask you questions in English and you will generate a SQL query based on the provided SCHEMA. SCHEMA: {schema}\u0026#34;\u0026#34;\u0026#34; def create_conversation(sample): return { \u0026#34;messages\u0026#34;: [ {\u0026#34;role\u0026#34;: \u0026#34;system\u0026#34;, \u0026#34;content\u0026#34;: system_message.format(schema=sample[\u0026#34;context\u0026#34;])}, {\u0026#34;role\u0026#34;: \u0026#34;user\u0026#34;, \u0026#34;content\u0026#34;: sample[\u0026#34;question\u0026#34;]}, {\u0026#34;role\u0026#34;: \u0026#34;assistant\u0026#34;, \u0026#34;content\u0026#34;: sample[\u0026#34;answer\u0026#34;]} ] } dataset = load_dataset(\u0026#34;b-mc2/sql-create-context\u0026#34;, split=\u0026#34;train\u0026#34;) dataset = dataset.shuffle().select(range(150)) dataset = dataset.map(create_conversation, remove_columns=dataset.features,batched=False) dataset = dataset.train_test_split(test_size=50/150) dataset_test_valid = dataset[\u0026#39;test\u0026#39;].train_test_split(0.5) print(dataset[\u0026#34;train\u0026#34;][45][\u0026#34;messages\u0026#34;]) dataset[\u0026#34;train\u0026#34;].to_json(folder + \u0026#34;train.jsonl\u0026#34;, orient=\u0026#34;records\u0026#34;) dataset_test_valid[\u0026#34;train\u0026#34;].to_json(folder + \u0026#34;test.jsonl\u0026#34;, orient=\u0026#34;records\u0026#34;) dataset_test_valid[\u0026#34;test\u0026#34;].to_json(folder + \u0026#34;valid.jsonl\u0026#34;, orient=\u0026#34;records\u0026#34;) step 4、training 训练 # 验证未训练的模型生成结果 LM Studio prompt\nYou are an text to SQL query translator. Users will ask you questions in English and you will generate a SQL query based on the provided SCHEMA. SCHEMA: CREATE TABLE table_13505192_3 (series_number INTEGER, season_number VARCHAR) User:What is the series number for season episode 24? Assistant: training mlx_lm.lora --help mlx_lm.lora --train --model Qwen/Qwen2.5-0.5B-Instruct --batch-size 1 --num-layers 4 --iters 1000 --data my-data-chat step 5、fuse \u0026amp; evaluation 模型合并和评估 # evaluation 评估微调后的模型 # mlx_lm.lora --model Qwen/Qwen2.5-0.5B-Instruct --data my-data-chat --adapter-path adapters --test Loading pretrained model Fetching 7 files: 100%|████████████████████████████████████████████████████████████████| 7/7 [00:00\u0026lt;00:00, 18712.64it/s] Loading datasets Testing Test loss 0.651, Test ppl 1.917. Test loss:\n损失值越低越好，表示模型预测与实际结果的偏差程度\n0.651 是一个相对较低的损失值，说明模型在测试集上表现不错\n困惑度（Test ppl/Perplexity）:\n困惑度是衡量语言模型性能的重要指标 越接近1越好，1.917 是一个非常好的困惑度 解释：模型对测试数据的预测相当准确 fuse 融合模型 mlx_lm.fuse --help mlx_lm.fuse \\ --model Qwen/Qwen2.5-0.5B-Instruct \\ --adapter-path adapters \\ --save-path Qwen2.5-0.5B-Instruct-v1-new mlx_lm.generate --model Qwen2.5-0.5B-Instruct-v1-new \\ --prompt \u0026#34;You are an text to SQL query translator. Users will ask you questions in English and you will generate a SQL query based on the provided SCHEMA.\\nSCHEMA:\\nCREATE TABLE table_13505192_3 (series_number INTEGER, season_number VARCHAR)\\nUser:What is the series number for season episode 24?\\nAssistant:\u0026#34; mlx_lm.generate --model Qwen/Qwen2.5-0.5B-Instruct \\ --prompt \u0026#34;You are an text to SQL query translator. Users will ask you questions in English and you will generate a SQL query based on the provided SCHEMA.\\nSCHEMA:\\nCREATE TABLE table_13505192_3 (series_number INTEGER, season_number VARCHAR)\\nUser:What is the series number for season episode 24?\\nAssistant:\u0026#34; LM Studio加载模型 # 下载地址lmstudio\nYou are an text to SQL query translator. Users will ask you questions in English and you will generate a SQL query based on the provided SCHEMA. SCHEMA: CREATE TABLE table_13505192_3 (series_number INTEGER, season_number VARCHAR) User:What is the series number for season episode 24? Assistant: Reference # Fine-Tuning with LoRA or QLoRA\nfine-tuning-on-a-mac-with-mlx/\nFine-tuning LLMs with Apple MLX locally\nlmstudio\nQwen2.5\n","date":"2024-12","externalUrl":null,"permalink":"/posts/finetuning_with_mlx_and_using_lm_studio/","section":"文章","summary":"在 MacOS 上用 MLX 对 LLM 做本地微调，并用 LM Studio 加载使用。","title":"本地微调: 使用MLX在MacOS上进行微调","type":"posts"},{"content":"","date":"2024-12","externalUrl":null,"permalink":"/tags/%E5%BE%AE%E8%B0%83/","section":"Tags","summary":"","title":"微调","type":"tags"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" 关于我 # 米柒说，多年程序员，先后在喜马拉雅、途虎养车、美味不用等做研发。现在专注 AI 技术方向，在媒体平台持续分享学习心得与技术内容——目标是把自己做成 AI 超级个体。\n这里写什么 # AI 干货与实战教程 —— 本地微调、开源模型、Agent 工作流等动手记录 实用工具 —— AI 应用与效率软件的深度测评 开源项目拆解 —— 读源码、讲架构、看门道 创业案例与技术趋势 —— 对行业机会的观察与思考 找到我 # Twitter/X：@meseven_journey YouTube：@miqishuo B站：米柒说 GitHub：@MESevenJourney Email：miqishuo@outlook.com ","externalUrl":null,"permalink":"/about/","section":"","summary":"","title":"关于","type":"page"}]