[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fktzpo3wAGzja_knvgycQPX38rfwafWC3wHoEUAlzlq8":3},{"topic":4,"contents":11},{"id":5,"title":6,"slug":7,"summary":8,"createdAt":9,"updatedAt":10},"b0d804ba-dc72-4a0b-b2c7-5edb715d2d04","氛围编程","vibe-coding","使用自然语言与AI协作进行编程","2026-07-17T05:37:04.882Z","2026-07-24T04:53:10.633Z",[12,51,82,108,133,156],{"id":13,"type":14,"title":15,"slug":16,"summary":17,"body":18,"coverUrl":19,"productScreenshots":20,"productLinks":21,"authorName":22,"authorUrl":23,"authorSubject":24,"category":25,"tags":30,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":46,"sortOrder":47,"publishedAt":48,"updatedAt":49,"createdAt":50},"b53e8d96-5ee6-448e-b249-5573d6adf6d4","article","氛围编程入门","vibe-coding-intro","以网页制作为例，介绍氛围编程涉及到的核心概念，帮助新手入门","这是一篇写给完全零基础新手的指南，内容包括：\n\n1. 什么是网页背后的“积木块”（HTML、CSS、JS 到底在干什么）\n2. 什么是 Vibe Coding\n3. 如何用 Vibe Coding 亲手做出你的第一个网页\n\n## 第一步：认识网页的三个“演员”\n\n一个网页，无论它看上去多复杂，都只是三种东西在合作演戏：\n\n- HTML —— 这是网页的“骨头和肉”\n\n它负责把内容放在网页上。比如：标题文字、按钮、图片、输入框。你可以把它想象成盖房子的结构：先有墙，才有地方挂画。\n\n- CSS —— 这是网页的“衣服和化妆”\n\n它负责让骨头和肉变得好看。颜色、大小、间距、位置，全归它管。还是那个房子：墙是 HTML，但墙刷成粉色还是蓝色，沙发摆左边还是右边，就是 CSS 说了算。\n\n- JavaScript (简称 JS) —— 这是网页的“大脑和动作”\n\n它负责让网页动起来。你点击按钮弹出“你好”，或者网页自动刷新天气，都是 JS 在干活。房子里的电灯开关：你按下开关（动作），灯亮了（结果）——这个“动”就是 JS。\n\n- 举个例子\n\n你在网页上看到一个红色的“购买”按钮。\u003Cbr>\n“按钮”两个字本身 = HTML\u003Cbr>\n红色、圆角、大尺寸 = CSS\u003Cbr>\n点击按钮后弹出“已加入购物车” = JavaScript\n\n这三个演员，平时就住在一个叫 文件 的“剧本”里。最常见的剧本，就是后缀是 .html 的普通文件。\n\n## 第二步：HTML文件是什么？怎么打开它？\n\n你不需要安装任何特殊的软件。一个 .html 文件其实就是一本用“网页语言”写好的剧本，一本只有电脑能看懂的剧本。\n\n- 怎么创建一个 .html 文件？\n\n在电脑上新建一个文本文档（Windows 的记事本，或 Mac 的文本编辑都可以），然后把它的名字从新建文本文档.txt 改成 我的网页.html。系统可能会问“改变后缀名可能导致文件不可用”，点是就行。现在，这个文件就变成了一个网页剧本。\n\n- 怎么打开看效果？\n\n直接双击这个 .html 文件，它就会自动用你正在用的浏览器（比如 Chrome、Edge）打开。浏览器就是“演员”，它负责把剧本演出来给你看。\n\n## 第三步：什么是 Vibe Coding？\n\n传统的写网页，是你自己一行一行去写 HTML、CSS、JS 的剧本。你得记住很多“咒语”，漏一个符号整个页面就白屏了。\n\nVibe Coding（氛围编程） 换了一种完全不同的思路：\n\n你不需要写代码，你只需要用日常说话的方式，告诉一个 AI（比如 ChatGPT、Claude、DeepSeek 等），你想要什么。然后 AI 直接把完整的 .html 文件剧本写好给你。\n你的工作变成了：说想法 → 看效果 → 再提修改意见，就像和一个懂技术的美工朋友聊天。\n\n“Vibe”这个词很贴切，你靠的是感觉和描述：“我要那种深夜小酒馆风格的页面，带一个暗色背景，中间有一句会慢慢浮现的欢迎语”，而不是去想代码。\n\n这就好比你盖房子，以前得自己当木工、泥瓦匠；现在你成了设计师+房主，只管说：“我要一扇落地窗，采光要特别好”，AI 泥瓦匠去帮你实现。\n\n## 第四步：开始你的第一个 Vibe Coding 项目（全程 5 分钟）\n\n下面跟着做，什么都不用懂。\n\n1. 打开你喜欢的任何一个 AI 对话工具\n\nChatGPT、Claude、Kimi、DeepSeek……哪个顺手用哪个。\n\n2. 用最直白的话告诉它你的想法\n\n复制下面这段话，或者自己改一改，发给 AI：\n\n```\n请帮我写一个完整的网页，要求：\n\n· 背景是柔和的深蓝色，像夜空\n· 网页正中间用白色大字写着“欢迎来到我的小站”\n· 字的下面有一个粉色的按钮，写着“点我一下”\n· 点击按钮后，按钮会变成绿色，并且文字变成“你成功啦！”\n· 把所有的 HTML、CSS、JS 都写在一个 .html 文件里，代码要完整，能直接保存运行\n· 最后告诉我这个文件怎么保存和使用\n```\n\n3. AI 会给出一大段代码\n\n它通常会给你一个代码块，类似这样（你不用看懂）：\n\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>...\u003C\u002Fhead>\n\u003Cbody>...\u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\n直接全选，然后按 Ctrl+C（Mac 按 Cmd+C）复制，或点击下载按钮保存到电脑中。\n\n4. 把它保存成网页文件（若无法直接下载）\n\n- 在桌面上新建一个文本文档（记事本\u002F文本编辑）。\n- 把复制的代码粘贴进去。\n- 点“文件” → “另存为”。\n- 在文件名那里输入：my-first-page.html。重点：一定要把保存类型选为“所有文件”，编码选 UTF-8，然后保存。\n- 文件图标会变成浏览器的样子。\n\n5. 双击打开，见证奇迹\n\n浏览器打开，你会看到一个深蓝色星空的页面，正中间有你写的字和按钮。点击按钮，颜色变了，文字也变了。\n你刚刚做出了一个带交互功能的网页。\n\n## 第五步：用“Vibe”继续改，越玩越熟\n\n这才是 Vibe Coding 最有趣的地方。页面做出来了，但你可能觉得：“按钮不够圆”“字太小了”“背景要是能有点点星光就更好了”。\n\n你完全不用自己碰代码。继续跟 AI 聊天就行：\n\n“按钮再大一点，圆角一些，鼠标放上去要变小手”\n“给背景加上一些缓慢移动的星星”\n“再添一个能输入名字的框，点击按钮后下面显示‘xxx，你好’”\n\n每一次提要求，AI 都会再给你一版完整的代码。你只需：\n全选复制 → 粘贴进原来的 .html 文件覆盖全部旧内容 → 保存 → 刷新浏览器\n\n修改、看效果，再修改、再看。这就形成了一个纯粹的 “描述-观看” 循环，完全不需要学编程语法。\n\n## 你已经学会了\n\n总结一下，你要记住的其实就是这三层关系：\n\n- 网页 = HTML（内容）+ CSS（美化）+ JS（动作）\n- 做网页的老方法 = 自己学每一种语言，一行行敲\n- Vibe Coding 新方法 = 把你想要的样子说给 AI → AI 写好一个 .html 文件 → 你双击看戏\n\n从今天开始，你已经不是网页的局外人了。去试着做一张给朋友的生日卡片、一张自己的作品展示页、一个小倒计时器……不会的，就问 AI。\n\n你只负责想象，剩下的，都交给 Vibe。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-17\u002F538e5262-96da-46df-8e42-8f5156fe675e.jpg",[],[],"龙家轩","https:\u002F\u002Fweatheraintbad.com","f39339b1-aaa6-4e86-b0c2-a6e6a21113b5",{"id":26,"name":27,"slug":28,"description":29},"d6750616-07d9-4350-8485-1834c77be3d2","指南","guide","指导建议，仅供参考",[31,35,39],{"id":32,"name":33,"slug":34},"0848beb4-db26-4fb8-b391-f852a11be192","AI编程","ai-coding",{"id":36,"name":37,"slug":38},"4ab4d31d-2daf-4bd3-9d99-c7210c4943bf","网页制作","web-making",{"id":40,"name":41,"slug":42},"144abe77-0dc6-4f66-a176-20bddb1c0bfa","编程","coding",null,"published",false,53,0,"2026-07-17T00:00:00.000Z","2026-07-18T14:04:32.156Z","2026-07-17T05:12:58.995Z",{"id":52,"type":14,"title":53,"slug":54,"summary":55,"body":56,"coverUrl":57,"productScreenshots":58,"productLinks":59,"authorName":60,"authorUrl":61,"authorSubject":24,"category":62,"tags":63,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":78,"sortOrder":47,"publishedAt":79,"updatedAt":80,"createdAt":81},"d55f78f9-5755-434f-9f6f-462a0ff764c7","氛围编程避坑","vibe-coding-reminds","AI能写代码，但不能替你负责","VibeCoding指通过自然语言描述需求，让AI生成、修改和调试代码。它能快速把想法变成原型，但“能运行”不等于“能上线”。AI生成的代码仍可能存在逻辑错误、安全漏洞、依赖风险和维护问题。\n\n## 1. 需求模糊，AI只能自行猜测\n\n只说“帮我做一个用户系统”，AI并不知道角色、权限、数据结构和部署环境。前期假设错误，会不断影响后续代码。\n\n建议：先明确用户、功能、页面、数据表、权限、技术栈和不做的内容，再开始开发。\n\n## 2. 一次生成整个项目\n\n一次生成大量文件看似高效，实际很难定位问题，也容易出现技术栈混乱和重复代码。\n\n建议：按最小闭环开发：先启动项目，再完成一个页面、一张数据表、一个完整功能，每一步测试并提交Git。\n\n## 3. 页面正常，不代表功能真实有效\n\n按钮可能只修改前端显示，没有写入数据库；权限可能只隐藏页面，没有限制后端接口。\n\n建议：检查刷新后数据是否保留、不同账号能否越权、接口能否被绕过，以及异常输入和网络失败时的表现。\n\n## 4. 反复把报错扔给AI\n\nAI可能修复当前错误，却引入新的问题，甚至通过关闭检查、写死数据来绕过根因。\n\n建议：要求AI先解释错误原因，再提出最小修改方案，并说明影响范围。警惕“暂时禁用”“直接跳过验证”等做法。\n\n## 5. 随意安装第三方依赖\n\nAI可能推荐过时、不兼容甚至不存在的软件包，也可能增加供应链安全风险。\n\n建议：安装前确认用途、维护状态、许可证、漏洞和准确版本，能用框架原生能力解决时尽量不加依赖。\n\n## 6. 泄露密钥和数据库密码\n\n不要把API密钥、数据库连接字符串和管理员令牌写入代码、提交到Git或放在前端。\n\n建议：使用环境变量和云平台Secrets，区分开发与生产环境；一旦泄露，立即撤销并重新生成。\n\n## 7. 有登录页面，不代表系统安全\n\n真正的权限控制必须放在服务端。常见问题包括普通用户调用管理员接口、读取他人数据、数据库完全公开等。\n\n建议：重点检查身份认证、服务端权限、数据库行级权限、输入校验、文件上传、接口限流和敏感日志。\n\n## 8. 不写测试\n\nAI修改一个功能时，可能破坏另一个功能。没有测试，就很难发现回归问题。\n\n建议：至少执行类型检查、构建检查、接口测试和关键流程测试，并覆盖空值、重复提交、网络失败等异常情况。\n\n## 9. 不使用Git\n\nAI可能一次修改大量文件。没有版本记录，很难恢复稳定版本。\n\n建议：小步提交，大改动使用分支，修改前后检查差异，不要让AI覆盖未提交的人工代码。\n\n## 10. 本地能跑就直接上线\n\n生产环境的运行版本、环境变量、数据库和网络配置往往与本地不同。\n\n建议：上线前完成生产构建、备份、HTTPS、错误监控、日志、限流、依赖扫描和回滚方案。\n\n## 11. 代码越来越乱，仍继续加功能\n\nVibeCoding项目后期常出现重复代码、超大文件、命名混乱和临时补丁堆积。\n\n建议：定期暂停开发，拆分模块、删除废弃代码、统一结构、更新文档并补齐测试。\n\n## 12. 完全依赖AI，不理解系统\n\n不必记住所有语法，但至少要理解前端、后端、数据库、接口、权限、环境变量、部署和日志。\n\n开发者必须知道数据存在哪里、谁可以访问、请求如何流转，以及出现问题后如何恢复。\n\n## 更稳妥的VibeCoding流程\n\n明确需求 → 设计数据和架构 → 搭建最小项目 → 分模块实现 → 检查代码差异 → 自动测试 → 安全审计 → 小范围发布 → 持续监控。\n\nAI适合提高执行效率，但开发者仍需负责需求判断、功能验收和风险控制。\n\n## 结语\n\nVibeCoding适合原型、个人工具和低风险MVP，但不应跳过需求、测试、安全和版本管理。\n\n可以让AI写代码，但不能让AI替你验收代码。\n\n## 引用来源\n\n1. GitHub Docs：AI生成代码的人工审查与测试建议。  \n2. Anthropic Docs：密钥管理、权限控制与项目指令实践。  \n3. OpenAI Codex：代码差异审查、沙箱执行与Pull Request工作流。  \n4. OWASP Top 10：Web应用常见安全风险。  \n5. OWASP Software Supply Chain Security：第三方依赖与供应链安全。  \n6. SLSA：依赖混淆、来源验证与版本固定。  \n7. 《Vibe Coding in Practice》：VibeCoding效率与技术债研究。  \n8. 《Is Vibe Coding Safe?》：AI代理生成代码的安全性研究。  \n9. 《Understanding the (In)Security of Vibe-Coded Applications》：真实VibeCoding项目中的常见漏洞。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-17\u002F867d174b-fbb8-4a1c-8bbf-f12a2881e763.jpg",[],[],"GPT-5.6 Sol","https:\u002F\u002Fopenai.com\u002Fzh-Hans-CN\u002Findex\u002Fgpt-5-6\u002F",{"id":26,"name":27,"slug":28,"description":29},[64,65,66,70,74],{"id":32,"name":33,"slug":34},{"id":40,"name":41,"slug":42},{"id":67,"name":68,"slug":69},"88d2bc27-0e0f-468a-b907-2991cb97b87b","人工智能","ai",{"id":71,"name":72,"slug":73},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev",{"id":75,"name":76,"slug":77},"d2513b48-43d7-49ba-adac-6d09366f751f","内容由AI生成","gen-by-ai",54,"2026-07-01T00:00:00.000Z","2026-07-18T14:04:29.803Z","2026-07-17T15:47:16.293Z",{"id":83,"type":14,"title":84,"slug":85,"summary":86,"body":87,"coverUrl":88,"productScreenshots":89,"productLinks":90,"authorName":22,"authorUrl":23,"authorSubject":24,"category":91,"tags":92,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":104,"sortOrder":47,"publishedAt":105,"updatedAt":106,"createdAt":107},"356aa99a-b365-43ef-96ae-f7e5117ec256","《我的世界》游戏模组开发指南：用AI构建你的第一个模组","mc-ai-coding","在整理在《我的世界》Java版本模组开发过程中的心得体会，系统性地介绍模组开发全流程","# 一、模组加载器\n《我的世界》模组加载器可分为两大类：\n- Fabric-轻量化，加载快\n- Forge\u002FNeoForge-高度集成，功能丰富\n\n从玩家数量来说，Forge和NeoForge的玩家数量大于Fabric，理论上来说更受欢迎（也可能是因为大部分整合包都选择使用Forge或NeoForge作为模组加载器）。\n## 1.1 Fabric加载器\n### 1.1.1 简介\nFabric加载器作为目前《我的世界》（版本>1.14）的主流加载器之一，模组库数量庞大，玩家数量稳定。部分复杂功能可能需要依赖外部模组。\n### 1.1.2 环境配置\nFabric加载器在配置环境时需要搭配正确版本的Gradle、Fabric Version、Fabric API 和 Fabric Loom。例如：对于Minecraft JE 1.20.1 Fabric版本，一般使用\n- Gradle 8.7\n- Fabric Version 0.18.3\n- Fabric API xxx\n- Fabric Loom 1.6-SNAPSHOT\n> 以上环境配置部分可详细参考[Fabric Wiki](https:\u002F\u002Fwiki.fabricmc.net\u002Fzh_cn:tutorial:setup)\n### 1.1.3 创建项目\n创建新项目时，推荐使用[Fabric官方模组模版生成器](https:\u002F\u002Ffabricmc.net\u002Fdevelop\u002Ftemplate\u002F)，按照需要设置模组信息：\n- Mod Name-模组显示的名称，不影响代码\n- Mod ID-模组标识符，嵌入代码中\n- Package Name-项目内部路径名，一般为“开发者.模组名”，也可以直接使用模组名（开发者可以作为项目“水印”\n> 推荐在Advanced Options中关闭Mojang Mappings\n## 1.2 Forge\u002FNeoForge加载器\n### 1.2.1 简介\nForge和NeoForge加载器作为目前市面上玩家数量最多的加载器，内置多种编程方法工具，在不依赖外部模组的情况下可以实现多种功能。\n### 1.2.2 环境配置\n一般情况下，1.20及以下版本使用Forge加载器，1.21及以上版本使用NeoForge加载器。其在配置时也有一定区别。在1.20\u002F1.21版本，使用Gradle 9.0和对应的Forge\u002FNeoForge版本。在官方网站可以下载完整的模版文件，一般不需要再过多调整。\n### 1.2.3 创建项目\n创建新项目时，推荐使用[Forge官方模组模版生成器](https:\u002F\u002Ffiles.minecraftforge.net\u002Fnet\u002Fminecraftforge\u002Fforge\u002F)\u002F[NeoForge官方模组模版生成器](https:\u002F\u002Fneoforged.net\u002F)。\n# 二、编程环境\n## 2.1 编辑器选择\n一般情况下，推荐使用[IntelliJ IDEA](https:\u002F\u002Fwww.jetbrains.com\u002Fzh-cn\u002Fidea\u002Fdownload\u002F?section=windows)，并安装[MinecraftDev插件](https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F8327)（也可直接在编辑器设置中的插件市场下载并安装）。\n## 2.2 AI编程配置\n### 2.2.1 TRAE\n初次尝试推荐使用TRAE，在编辑器自带的插件市场即可下载安装，简单注册账号后即可使用。\n### 2.2.2 Claude Code\n对于有复杂需求或大型项目编程的项目，推荐使用Claude Code，同样可在插件市场找到。对于国内环境，推荐使用[火山引擎](https:\u002F\u002Fwww.volcengine.com\u002F)，具体配置操作详见[火山引擎官方指南](https:\u002F\u002Fwww.volcengine.com\u002Fdocs\u002F82379\u002F1928262?lang=zh)。\n## 2.3 环境配置操作\n我们可以粗略地将src文件夹内的文件当作项目文件，将src以外的部分当作环境文件。每当环境文件内容发生变化，都需要刷新Gradle，可点击代码栏右上角的刷新图标快速刷新，此时右下角会出现进度提示，若配置失败，将报错信息交给AI分析。\n# 三、模组项目结构介绍\n## 3.1 Fabric通用结构\n```\n{mod_name}\u002F\n├── build.gradle              # Gradle 构建脚本（依赖声明、任务配置）\n├── gradle.properties         # 版本属性与元数据\n├── settings.gradle           # Gradle 项目设置\n├── gradle\u002F\n│   └── wrapper\u002F              # Gradle Wrapper 配置\n├── src\u002F\n│   ├── main\u002F\n│   │   ├── java\u002F             # Java 源码根目录\n│   │   │   └── com\u002Fexample\u002Fmodid\u002F\n│   │   │       ├── {ModClass}.java          # 主初始化类\n│   │   │       ├── {ModClass}Client.java    # 客户端初始化类（可选）\n│   │   │       ├── item\u002F                    # 物品相关类\n│   │   │       ├── block\u002F                   # 方块相关类\n│   │   │       └── mixin\u002F                   # Mixin 类目录\n│   │   │           └── ExampleMixin.java\n│   │   └── resources\u002F\n│   │       ├── fabric.mod.json              # 模组元数据（必需）\n│   │       ├── {modid}.mixins.json          # Mixin 配置（如使用）\n│   │       └── assets\u002F{modid}\u002F\n│   │           ├── lang\u002F\n│   │           │   ├── en_us.json           # 英文本地化\n│   │           │   └── zh_cn.json           # 中文本地化\n│   │           ├── models\u002F\n│   │           │   ├── item\u002F                # 物品模型定义\n│   │           │   └── block\u002F               # 方块模型定义\n│   │           ├── textures\u002F\n│   │           │   ├── item\u002F                # 物品纹理\n│   │           │   └── block\u002F               # 方块纹理\n│   │           └── blockstates\u002F             # 方块状态定义\n│   └── client\u002Fjava\u002F          # 客户端专用源码（分离架构时）\n├── run\u002F                      # 开发环境运行目录（自动生成）\n└── build\u002F                    # 构建输出目录（自动生成）\n```\n## 3.2 Forge\u002FNeoForge通用结构\n```\n{mod_name}\u002F\n├── build.gradle                    # Gradle 构建脚本\n├── gradle.properties               # 版本属性配置\n├── settings.gradle                 # Gradle 项目设置\n├── gradle\u002F\n│   └── wrapper\u002F                    # Gradle Wrapper 配置\n├── src\u002F\n│   ├── main\u002F\n│   │   ├── java\u002F                   # Java 源码根目录\n│   │   │   └── com\u002Fexample\u002Fmodid\u002F\n│   │   │       ├── {ModClass}.java              # 主入口类（@Mod 注解）\n│   │   │       ├── client\u002F                      # 客户端专用代码\n│   │   │       ├── common\u002F                      # 通用代码（物品、方块等）\n│   │   │       │   ├── item\u002F\n│   │   │       │   ├── block\u002F\n│   │   │       │   └── blockentity\u002F\n│   │   │       └── datagen\u002F                     # 数据生成器（可选）\n│   │   └── resources\u002F\n│   │       ├── META-INF\u002F\n│   │       │   ├── mods.toml                    # Forge 元数据（1.13+）\n│   │       │   ├── neoforge.mods.toml           # NeoForge 元数据（1.20.1+）\n│   │       │   └── accesstransformer.cfg        # 访问转换器配置（可选）\n│   │       ├── pack.mcmeta                      # 资源包元数据\n│   │       ├── assets\u002F\n│   │       │   └── {modid}\u002F\n│   │       │       ├── blockstates\u002F             # 方块状态定义\n│   │       │       ├── lang\u002F                    # 本地化文件\n│   │       │       │   ├── en_us.json\n│   │       │       │   └── zh_cn.json\n│   │       │       ├── models\u002F\n│   │       │       │   ├── block\u002F               # 方块模型\n│   │       │       │   └── item\u002F                # 物品模型\n│   │       │       ├── textures\u002F\n│   │       │       │   ├── block\u002F               # 方块纹理\n│   │       │       │   └── item\u002F                # 物品纹理\n│   │       │       ├── sounds.json              # 音效定义\n│   │       │       └── shaders\u002F                 # 着色器（可选）\n│   │       └── data\u002F\n│   │           └── {modid}\u002F\n│   │               ├── recipes\u002F                 # 配方 JSON\n│   │               ├── loot_tables\u002F             # 战利品表\n│   │               │   └── blocks\u002F\n│   │               ├── tags\u002F                    # 数据标签\n│   │               ├── advancements\u002F            # 进度定义\n│   │               └── structures\u002F              # 结构模板（可选）\n│   ├── client\u002Fjava\u002F                # 客户端专用源码（分离架构）\n│   ├── test\u002Fjava\u002F                  # 测试代码\n│   └── generated\u002F                  # 数据生成输出目录\n├── run\u002F                            # 开发环境运行目录（自动生成）\n└── build\u002F                          # 构建输出目录（自动生成）\n```\n# 四、Vibe Coading\n使用模组模版模组生成器生成模版文件后，在代码编辑器打开模组项目文件夹。\n在侧边栏展开AI编程插件，信任项目，用自然语言描述需求，例如：“帮我构建一个我的世界模组，游戏版本为Java 1.21.1，使用Fabric加载器（详细信息见gradle.properties），我需要xxx。”\n# 五、测试与调试\n在生成所需代码后，在终端控制台输入指令进行测试：\n- 清理缓存\n```\n.\u002Fgradlew clean\n```\n- 构建模组文件\n```\n.\u002Fgradlew build\n```\n- 运行测试客户端\n```\n.\u002Fgradlew runclient\n```\n- 以上指令可组合使用，如：\n```\n.\u002Fgradlew clean build runclient\n```\n> 在控制台中可使用上下方向键切换历史输入指令，无需重复输入\n# 六、模组导出\n在运行.\u002F gradlew build指令后，项目文件中的build\u002Flib文件夹中会出现对应名称的.jar模组文件，即为最终的客户端模组文件。\n# 七、模组上传与分发\n## 7.1 平台选择\n目前主流的模组分发平台有MC百科、Modrinth和Curseforge三大平台，国内分发首选MC百科，Modrinth在国内外的接受程度都较高，Curerforge则主打国外受众。\n## 7.2 分发原则\n在Modrinth和Curseforge上传的模组可被整合为链接内置于整合包中，在玩家下载并导入启动器时从平台下载被链接的模组。\n如果允许整合包制作者随意使用模组，在模组简介务必表明分发原则（即在打包时确保整合包中使用链接而不是内置模组本体）。否则整合包的下载量将不会被计算到模组中。...","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-16\u002Fca4f2822-9ed5-49d8-b804-bbd92739a9d5.png",[],[],{"id":26,"name":27,"slug":28,"description":29},[93,97,98,102,103],{"id":94,"name":95,"slug":96},"541aaa1f-7a45-4fd7-b0f4-8798d3cef066","《我的世界》","minecraft",{"id":71,"name":72,"slug":73},{"id":99,"name":100,"slug":101},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":40,"name":41,"slug":42},{"id":67,"name":68,"slug":69},30,"2026-02-07T00:00:00.000Z","2026-07-20T12:44:49.447Z","2026-07-16T11:26:54.204Z",{"id":109,"type":14,"title":110,"slug":111,"summary":112,"body":113,"coverUrl":114,"productScreenshots":115,"productLinks":116,"authorName":60,"authorUrl":61,"authorSubject":24,"category":117,"tags":122,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":129,"sortOrder":47,"publishedAt":130,"updatedAt":131,"createdAt":132},"871e57ba-8d0e-4f70-a706-b7ec5f472ea7","Skill是什么？","what-is-skill","一套可复用、可安装、可共享的任务说明","在AI智能体和AI编程工具中，Skill通常指一套可复用、可安装、可共享的任务说明。它把操作规范、专业知识、示例、脚本和参考资料组织在一起，让AI能够更稳定地完成某一类工作。\n\n随着ChatGPT、Codex、Claude Code等工具逐渐从“聊天机器人”发展为能够读取文件、调用工具和执行任务的智能体，仅靠临时提示词已经很难管理复杂、重复的工作。Skill的出现，正是为了把成熟的工作方法保存下来，让AI在需要时直接调用。\n\n## 一、Skill到底是什么？\n\n可以把通用AI想象成一名能力很强、学习速度很快，但不了解你具体工作规范的新员工。\n\n你可以每次都重新告诉它：\n\n- 报告应该使用什么结构；\n- 代码需要遵循哪些规范；\n- 处理PDF时应该调用什么程序；\n- 发布网站前要检查哪些项目；\n- 分析数据时要生成哪些图表。\n\n但这些要求如果每次都重新输入，不仅麻烦，还容易遗漏。\n\n**Skill就是为AI准备的一份“标准作业包”。**\n\n它通常以一个文件夹存在，核心文件一般是`SKILL.md`。除了文字说明，还可以包含：\n\n- 操作步骤；\n- 任务触发条件；\n- 示例输入和输出；\n- 模板文件；\n- Python、Shell或JavaScript脚本；\n- API说明和参考资料；\n- 检查清单与质量标准。\n\nOpenAI将Agent Skills描述为封装指令、资源和可选脚本的任务能力包；ChatGPT中的Skills则被定义为可复用、可分享的工作流程。Claude Code的Skills也遵循Agent Skills开放标准，并在此基础上提供调用控制、子智能体运行和动态上下文等扩展能力。\n\n```mermaid\nflowchart TB\n    U[用户提出任务] --> A[AI智能体]\n    A --> D{是否有匹配的Skill}\n    D -- 没有 --> G[依靠通用能力完成]\n    D -- 有 --> S[读取Skill说明]\n    S --> R[加载模板、资料或脚本]\n    R --> T[按照固定流程执行]\n    T --> O[输出更稳定的结果]\n```\n\n## 二、Skill和提示词有什么区别？\n\n提示词和Skill都能指导AI，但两者解决的问题不同。\n\n| 对比项 | 普通提示词 | Skill |\n|---|---|---|\n| 使用方式 | 每次对话临时输入 | 安装后重复使用 |\n| 内容规模 | 通常较短 | 可以包含完整工作流程 |\n| 文件支持 | 一般只有文字 | 可包含脚本、模板和资料 |\n| 适用场景 | 一次性、简单任务 | 重复、专业、复杂任务 |\n| 一致性 | 容易因表达变化而波动 | 更容易保持固定标准 |\n| 分享方式 | 复制一段文字 | 分享完整Skill文件夹 |\n\n例如，下面是一条普通提示词：\n\n```text\n请检查这个网页是否存在SEO问题，并给出优化建议。\n```\n\n而一个SEO审计Skill可以进一步规定：\n\n1. 先检查页面是否能被抓取；\n2. 再检查标题、描述和Canonical；\n3. 分析结构化数据；\n4. 检查正文是否依赖JavaScript渲染；\n5. 按严重程度排列问题；\n6. 使用统一表格输出；\n7. 最后生成修改后的代码示例。\n\n因此，**提示词更像一次性的口头要求，Skill更像经过整理的标准操作手册。**\n\n## 三、Skill和工具、MCP有什么区别？\n\n这几个概念经常被混淆。\n\n### 1. 工具：让AI能够“做事”\n\n工具为AI提供实际操作能力，例如：\n\n- 搜索互联网；\n- 读取文件；\n- 执行Python；\n- 查询数据库；\n- 发送邮件；\n- 调用天气API；\n- 修改代码。\n\n工具解决的是：**AI能调用什么。**\n\n### 2. MCP：让AI连接外部系统\n\nMCP是Model Context Protocol的缩写，可以用统一方式把AI连接到数据库、知识库、GitHub、Notion、浏览器或企业内部系统。\n\nMCP解决的是：**AI怎样连接数据和服务。**\n\n### 3. Skill：告诉AI怎样完成任务\n\nSkill负责描述工作方法，例如：\n\n- 什么情况下应该调用某个工具；\n- 工具调用顺序是什么；\n- 哪些风险操作必须确认；\n- 输出必须符合什么格式；\n- 完成后如何检查质量。\n\nSkill解决的是：**AI应该按照什么流程做。**\n\n```mermaid\nflowchart TB\n    P[用户目标] --> S[Skill：任务流程与规范]\n    S --> A[AI智能体进行判断与规划]\n    A --> T[Tool：执行具体动作]\n    A --> M[MCP：连接外部系统]\n    M --> D[(数据库、文档、GitHub等)]\n    T --> O[搜索、计算、编辑、发送等结果]\n    D --> A\n    O --> A\n    A --> R[最终交付]\n```\n\n可以用一个简单比喻理解：\n\n- AI模型是大脑；\n- 工具是双手；\n- MCP是插座和连接线；\n- Skill是操作手册。\n\n## 四、一个Skill通常由什么组成？\n\n一个简单的Skill目录可能如下：\n\n```text\nseo-audit\u002F\n├── SKILL.md\n├── references\u002F\n│   ├── checklist.md\n│   └── examples.md\n├── scripts\u002F\n│   └── check_meta.py\n└── templates\u002F\n    └── report-template.md\n```\n\n其中最重要的是`SKILL.md`。\n\n一个最小化的Skill可以这样写：\n\n```markdown\n---\nname: seo-audit\ndescription: 检查网页的SEO与GEO基础问题，并输出按优先级排序的修复建议。\n---\n\n# SEO Audit\n\n## 何时使用\n\n当用户要求检查网页的SEO、GEO、抓取、索引或结构化数据问题时使用。\n\n## 工作流程\n\n1. 获取目标网页的初始HTML。\n2. 检查HTTP状态码和重定向。\n3. 检查title、description和canonical。\n4. 检查正文是否无需JavaScript即可读取。\n5. 检查JSON-LD结构化数据。\n6. 按严重、高、中、低四个等级整理问题。\n7. 提供可以直接修改的代码示例。\n\n## 输出格式\n\n- 总体评分\n- 关键问题\n- 修复优先级\n- 代码示例\n- 验收方法\n\n## 限制\n\n- 不把推测写成确定事实。\n- 无法访问页面时必须明确说明。\n- 涉及搜索引擎规则时优先参考官方文档。\n```\n\n### 元数据有什么作用？\n\n文件开头的`name`和`description`不只是介绍文字，它们还会影响智能体能否正确识别和调用Skill。\n\n```yaml\n---\nname: seo-audit\ndescription: 检查网页的SEO与GEO基础问题，并输出按优先级排序的修复建议。\n---\n```\n\n名称应该简短、稳定；描述则应该说明：\n\n- Skill能完成什么；\n- 什么情况下使用；\n- 哪些用户表达可能触发它。\n\n描述过于宽泛，Skill可能被错误调用；描述过于狭窄，应该调用时又可能无法触发。\n\n## 五、Skill是怎样工作的？\n\nSkill并不是重新训练AI模型，也不会永久改变模型本身。\n\n它更接近一种**按需加载的上下文机制**：当智能体判断某项任务与Skill匹配时，再读取Skill中的详细说明和资源。\n\n```mermaid\nsequenceDiagram\n    participant U as 用户\n    participant A as AI智能体\n    participant S as Skill\n    participant T as 工具或脚本\n\n    U->>A: 帮我检查这个网站的SEO问题\n    A->>A: 判断任务类型\n    A->>S: 读取seo-audit Skill\n    S-->>A: 返回流程、规范与模板\n    A->>T: 抓取网页并运行检查\n    T-->>A: 返回检测结果\n    A->>A: 按Skill要求验证和整理\n    A-->>U: 输出标准化审计报告\n```\n\n这种方式有三个明显优势：\n\n### 1. 减少上下文浪费\n\n智能体不必在每次对话开始时读取全部规范，只在任务需要时加载相关Skill。\n\n### 2. 提高执行一致性\n\n同一种任务可以反复使用相同流程、模板和检查标准，减少不同对话之间的质量波动。\n\n### 3. 便于团队共享\n\n团队可以把经验整理成Skill，让不同成员和不同智能体复用同一套工作方法。\n\n## 六、Skill可以用来做什么？\n\nSkill适合处理具有明确方法、重复频率较高或专业要求较强的任务。\n\n### 内容创作\n\n- 按固定风格撰写文章；\n- 生成产品介绍；\n- 检查事实和引用；\n- 将文章转换为社交媒体内容；\n- 生成统一格式的Markdown文档。\n\n### 软件开发\n\n- 创建符合团队规范的项目；\n- 执行代码审查；\n- 编写单元测试；\n- 排查构建错误；\n- 发布版本；\n- 生成API文档。\n\n### 设计与文档\n\n- 制作演示文稿；\n- 生成PDF报告；\n- 按品牌规范使用字体和版式；\n- 创建流程图；\n- 检查设计稿的一致性。\n\n### 数据分析\n\n- 清洗表格；\n- 计算指标；\n- 生成图表；\n- 检查异常值；\n- 按固定结构输出分析结论。\n\n### 企业流程\n\n- 整理会议纪要；\n- 生成周报；\n- 审核合同中的关键条款；\n- 根据模板回复客户；\n- 检查项目上线条件。\n\n```mermaid\nmindmap\n  root((Agent Skill))\n    内容\n      文章写作\n      事实核查\n      格式转换\n    开发\n      代码审查\n      自动测试\n      项目部署\n    设计\n      演示文稿\n      品牌规范\n      图片处理\n    数据\n      表格清洗\n      指标分析\n      图表生成\n    运营\n      周报\n      客服回复\n      内容发布\n```\n\n## 七、怎样安装和使用Skill？\n\n不同平台的界面和存放路径可能不同，但基本过程相似。\n\n### 方法一：安装现成Skill\n\n一般步骤为：\n\n1. 在官方库、插件市场或GitHub仓库中找到Skill；\n2. 阅读`SKILL.md`，确认用途和权限；\n3. 检查是否包含可执行脚本；\n4. 将Skill安装到平台支持的位置；\n5. 重新加载客户端或会话；\n6. 用一个明确任务测试它是否正确触发。\n\n在支持自动调用的平台中，用户不一定要直接说出Skill名称。例如安装网页测试Skill后，可以直接说：\n\n```text\n检查本地网页的登录流程，并记录失败的步骤。\n```\n\n智能体会根据任务和Skill描述判断是否调用。\n\n部分平台也支持显式调用，形式可能类似：\n\n```text\n使用 seo-audit Skill 检查这个页面。\n```\n\n或：\n\n```text\n\u002Fseo-audit https:\u002F\u002Fexample.com\n```\n\n具体调用方式取决于平台实现。\n\n### 方法二：把Skill放进项目\n\n项目级Skill适合保存某个仓库特有的规则，例如：\n\n```text\nmy-project\u002F\n├── src\u002F\n├── tests\u002F\n└── .agents\u002F\n    └── skills\u002F\n        └── release-check\u002F\n            └── SKILL.md\n```\n\n它可以要求智能体在发布前完成：\n\n- 运行测试；\n- 检查环境变量；\n- 构建生产版本；\n- 扫描未提交文件；\n- 更新版本号；\n- 生成变更日志。\n\n### 方法三：使用平台内置的Skill管理界面\n\n部分AI产品提供Skill或插件管理页面，可以完成：\n\n- 浏览推荐Skill；\n- 安装或启用Skill；\n- 查看已安装项目；\n- 控制可访问的数据；\n- 删除不再需要的Skill。\n\n由于各产品仍在快速更新，实际界面和权限应以对应平台的最新官方说明为准。\n\n## 八、怎样自己创建一个Skill？\n\n创建Skill不需要训练模型。只需把成熟的任务流程写清楚，并加入必要的资源。\n\n### 第一步：选择合适的任务\n\n好的Skill通常满足至少一个条件：\n\n- 任务会反复出现；\n- 执行步骤比较固定；\n- 输出格式需要保持一致；\n- 涉及团队内部规范；\n- 需要调用脚本或模板；\n- 普通提示词经常遗漏步骤。\n\n不适合做成Skill的任务包括：\n\n- 只会执行一次的临时要求；\n- 没有稳定方法的开放式闲聊；\n- 可以用一句提示词准确解决的简单任务。\n\n### 第二步：定义触发条件\n\n先回答三个问题：\n\n1. 用户通常会怎样描述这个任务？\n2. 哪些场景应该使用该Skill？\n3. 哪些相似场景不应该使用？\n\n例如：\n\n```markdown\n## 何时使用\n\n当用户要求创建、修改、读取或分析`.pptx`演示文稿时使用。\n\n## 不应使用\n\n当用户只要求提供演讲提纲，而不需要生成或编辑演示文件时，不要使用。\n```\n\n### 第三步：写出可靠流程\n\n不要只写“认真完成任务”，而要写成可以检查的步骤。\n\n较弱的写法：\n\n```markdown\n请专业地检查代码，确保没有问题。\n```\n\n更好的写法：\n\n```markdown\n1. 先读取受影响文件和相关测试。\n2. 检查空值、边界条件和错误处理。\n3. 检查是否引入安全问题。\n4. 运行现有测试。\n5. 对新增逻辑补充测试。\n6. 输出问题位置、影响和修复方案。\n```\n\n### 第四步：加入示例和模板\n\n示例可以让AI更准确地理解输出标准。\n\n```markdown\n## 输出示例\n\n### 严重问题\n\n**位置：** `src\u002Fauth.ts:42`\n\n**问题：** 用户输入未经验证就拼接进SQL语句。\n\n**影响：** 可能导致SQL注入。\n\n**建议：** 使用参数化查询，并增加恶意输入测试。\n```\n\n### 第五步：加入脚本\n\n当工作需要稳定计算、文件转换或自动检查时，脚本通常比自然语言更可靠。\n\n```python\n# scripts\u002Fcheck_required_files.py\nfrom pathlib import Path\n\nrequired_files = [\n    \"README.md\",\n    \"LICENSE\",\n    \".gitignore\",\n]\n\nmissing = [name for name in required_files if not Path(name).exists()]\n\nif missing:\n    print(\"缺少文件：\")\n    for name in missing:\n        print(f\"- {name}\")\n    raise SystemExit(1)\n\nprint(\"必要文件检查通过。\")\n```\n\nSkill中可以规定：\n\n```markdown\n发布项目之前，必须运行：\n\npython scripts\u002Fcheck_required_files.py\n```\n\n### 第六步：进行真实测试\n\n至少测试以下三类情况：\n\n| 测试类型 | 目的 |\n|---|---|\n| 正常任务 | 检查Skill能否正确执行 |\n| 模糊表达 | 检查Skill能否正确触发 |\n| 相似但无关的任务 | 检查Skill是否会被误调用 |\n\n## 九、怎样写出一个高质量Skill？\n\n### 1. 描述要具体\n\n不推荐：\n\n```yaml\ndescription: 帮助用户处理网页。\n```\n\n推荐：\n\n```yaml\ndescription: 检查网页的可访问性、SEO元数据、结构化数据和无JavaScript正文可读性，并生成按严重程度排序的修复报告。\n```\n\n### 2. 只保留必要内容\n\nSkill不是越长越好。过多背景材料会增加上下文负担，也可能让智能体忽略真正重要的规则。\n\n建议将内容分层：\n\n- `SKILL.md`保存核心流程；\n- `references\u002F`保存详细资料；\n- `templates\u002F`保存输出模板；\n- `scripts\u002F`保存可执行程序。\n\n### 3. 把硬性要求写成可验证规则\n\n不推荐：\n\n```markdown\n输出应当美观、专业。\n```\n\n推荐：\n\n```markdown\n- 一级标题只能出现一次。\n- 每个问题必须包含位置、影响、证据和修复建议。\n- 问题按严重、高、中、低排序。\n- 没有证据时不得下确定结论。\n```\n\n### 4. 为危险操作设置确认点\n\n涉及删除、发布、付款、发送、覆盖文件等动作时，应明确要求用户确认。\n\n```markdown\n在执行以下操作之前必须获得用户明确确认：\n\n- 删除文件或数据库记录；\n- 向外部收件人发送邮件；\n- 部署到生产环境；\n- 覆盖无法恢复的文件；\n- 产生费用的API调用。\n```\n\n### 5. 不要把密钥写进Skill\n\nSkill可能被复制、分享或提交到Git仓库。API密钥、访问令牌、密码和个人数据不应直接写入文件。\n\n正确方式是引用环境变量：\n\n```bash\nexport API_KEY=\"...\"\n```\n\n然后在脚本中读取：\n\n```python\nimport os\n\napi_key = os.environ[\"API_KEY\"]\n```\n\n## 十、使用第三方Skill时要注意什么？\n\nSkill可能包含脚本、命令和外部资源，因此不能只看名称就直接安装。\n\n安装前至少检查：\n\n1. Skill来自谁；\n2. `SKILL.md`要求AI做什么；\n3. 是否会读取个人文件；\n4. 是否会访问网络；\n5. 是否包含删除或覆盖命令；\n6. 脚本是否会上传数据；\n7. 是否要求提供密钥；\n8. 最近是否仍在维护。\n\n```mermaid\nflowchart TD\n    A[发现第三方Skill] --> B{来源可信？}\n    B -- 否 --> X[不要安装]\n    B -- 是 --> C[阅读SKILL.md]\n    C --> D[检查scripts目录]\n    D --> E{涉及敏感权限？}\n    E -- 是 --> F[限制权限或在沙箱测试]\n    E -- 否 --> G[使用测试任务验证]\n    F --> G\n    G --> H{行为符合预期？}\n    H -- 否 --> X\n    H -- 是 --> I[正式启用]\n```\n\n需要特别警惕以下内容：\n\n```bash\nrm -rf\ncurl ... | sh\nsudo ...\ngit push --force\n```\n\n这些命令不一定恶意，但可能造成不可逆影响。应先理解其用途，再决定是否执行。\n\n## 十一、一个完整示例：文章配图Skill\n\n下面是一个适合内容网站使用的简化示例。\n\n```markdown\n---\nname: article-illustration\ndescription: 根据文章主题生成简洁、无文字、16:9比例的封面插图方案。\n---\n\n# Article Illustration\n\n## 适用场景\n\n当用户要求为文章、博客或报告设计封面图时使用。\n\n## 工作流程\n\n1. 阅读文章标题和摘要。\n2. 提炼一个核心隐喻，不要堆叠多个概念。\n3. 优先使用抽象、几何或平面设计语言。\n4. 默认比例为16:9。\n5. 画面内不得出现文字、字母、水印和界面截图。\n6. 主体应占画面的25%至45%，保留足够留白。\n7. 颜色控制在三种主色以内。\n8. 输出图像生成提示词并执行图像生成工具。\n\n## 质量检查\n\n- 缩略图尺寸下是否仍能识别主体；\n- 是否存在多余文字；\n- 是否过度拥挤；\n- 是否准确表达文章主题；\n- 是否避免使用未经授权的品牌元素。\n```\n\n安装后，用户只需说：\n\n```text\n为“让大模型先查资料，再回答问题”设计一张文章封面图。\n```\n\n智能体便可以自动应用比例、留白、无文字和构图规则，而不需要用户每次重新说明。\n\n## 十二、Skill的真正价值是什么？\n\nSkill的价值并不只是“让AI多会一种功能”。\n\n它更重要的作用，是把人的经验转化为AI能够重复执行的流程。\n\n```mermaid\nflowchart LR\n    E[个人经验] --> W[整理工作步骤]\n    W --> S[制作成Skill]\n    S --> R[智能体重复执行]\n    R --> C[持续测试和修正]\n    C --> S\n    S --> T[团队共享]\n```\n\n一条优秀提示词可能解决一次问题；一个优秀Skill则可以持续改进，并被整个团队反复使用。\n\n因此，可以将Skill理解为：\n\n> **介于提示词、程序和操作手册之间的AI能力模块。**\n\n它用自然语言描述意图和规则，用脚本保证确定性，用模板维持输出标准，再由智能体根据当前任务灵活执行。\n\n## 十三、常见问题\n\n### Skill会让AI永久学会新知识吗？\n\n不会。Skill通常是在任务执行时被读取，并不会重新训练底层模型。删除或停用Skill后，对应规则通常也不会继续生效。\n\n### 不会编程也能创建Skill吗？\n\n可以。最简单的Skill只需要一个写清楚任务流程的`SKILL.md`文件。脚本是可选项，不是必需项。\n\n### Skill可以跨平台使用吗？\n\n部分Skill可以。Claude Code文档说明其Skills遵循Agent Skills开放标准；Codex也支持以`SKILL.md`为核心的能力包。不过不同平台可能增加自己的字段、目录约定和调用方式，因此迁移时仍需检查兼容性。\n\n### Skill能代替MCP吗？\n\n不能。Skill主要描述方法，MCP主要负责连接外部服务。两者经常搭配使用。\n\n### Skill越多越好吗？\n\n不是。安装过多、描述重叠的Skill可能增加误触发和冲突。更合理的做法是保留用途明确、质量可靠、经常使用的Skill。\n\n## 结语\n\nAI模型提供通用能力，工具提供行动能力，MCP提供连接能力，而Skill负责把这些能力组织成一套稳定的工作方法。\n\n对于普通用户，Skill可以减少重复提示；对于开发者，它可以封装工程流程；对于团队，它可以把个人经验变成共享标准。\n\n当你发现自己反复向AI解释同一套要求时，就可以考虑把它整理成一个Skill。\n\n## 参考资料\n\n1. [OpenAI Codex：Agent Skills](https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fskills)\n\n2. [OpenAI Help Center：Skills in ChatGPT](https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F20001066-skills-in-chatgpt)\n\n3. [OpenAI Codex：Customization](https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fconcepts\u002Fcustomization)\n\n4. [OpenAI：Introducing the Codex app](https:\u002F\u002Fopenai.com\u002Findex\u002Fintroducing-the-codex-app\u002F)\n\n5. [Anthropic Claude Code：Extend Claude with skills](https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fskills)\n\n6. [Anthropic Skills示例仓库] (https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills)\n\n> 注：AI产品的Skill安装入口、目录结构和功能仍在持续更新。实际使用时，应优先查看对应产品的最新官方文档。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-18\u002F4c35d873-e4f1-418f-a9ae-bb56d85df6ff.jpg",[],[],{"id":118,"name":119,"slug":120,"description":121},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[123,124,125,126,127,128],{"id":67,"name":68,"slug":69},{"id":32,"name":33,"slug":34},{"id":71,"name":72,"slug":73},{"id":99,"name":100,"slug":101},{"id":40,"name":41,"slug":42},{"id":75,"name":76,"slug":77},45,"2026-06-11T00:00:00.000Z","2026-07-18T16:22:51.494Z","2026-07-18T15:17:09.969Z",{"id":134,"type":14,"title":135,"slug":136,"summary":137,"body":138,"coverUrl":139,"productScreenshots":140,"productLinks":141,"authorName":142,"authorUrl":143,"authorSubject":24,"category":144,"tags":145,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":152,"sortOrder":47,"publishedAt":153,"updatedAt":154,"createdAt":155},"544fc658-c911-4de6-93b0-d2520087119a","MCP：AI 的「USB-C」时刻","mcp-ai-usb-c-moment","以前每个 AI 应用都要为 GitHub、数据库、日历各写一套私有连接器，这是 M×N 的集成噩梦，直到 MCP 的出现","如果你用过笔记本电脑，一定熟悉那种「每个设备一根专属线」的烦躁：鼠标一个接口、打印机另一个、硬盘又一个。2025 年之前的 AI 应用，几乎就是这种状态——想让一个助手同时读你的代码仓库、查数据库、发日历邀请，开发团队得为每一个系统写一套私有「连接器」，又脆又难维护。\n\n## 背景：每个 Agent 都曾是孤岛\n\n大模型本身只会「说话」，它要真正干活，得去调工具、读数据。在 MCP（Model Context Protocol，模型上下文协议）出现之前，这套对接是组合爆炸：假设市面上有 M 个 AI 客户端、N 个工具，开发者就要写 M×N 套集成。一个代码助手要读 Git、查 Jira、搜文档，就得维护三条互不相通的管线。\n\n更糟的是，这些连接器大多只服务某一个产品，换个助手就得重写。结果就是：每个 Agent 都困在自己的小岛上，能力被锁死在少数几个硬编码的集成里。\n\n## MCP 是什么：AI 世界的「USB-C」\n\n2024 年底，Anthropic 发布了 MCP。它的目标很朴素：给「AI 连工具」定义一个统一接口，就像 USB-C 给「设备连外设」定义统一接口一样。\n\n打个比方——如果大模型是大脑，那 MCP 就是手。大脑再聪明，没有手也打不开文件、点不了按钮、查不了数据库。MCP 让任意符合规范的「大脑」（Claude、ChatGPT、Gemini、Cursor、VS Code Copilot）都能使用任意符合规范的「手」（一个封装好的工具服务），而且不用为每个组合单独适配。\n\n2025 年 12 月，Anthropic 把 MCP 捐给了 Linux 基金会，OpenAI、Google、Microsoft 作为联合发起人。到 2026 年，它的 SDK 月下载量超过 9700 万次，ChatGPT、Claude、Gemini 都支持同一个协议——某种意义上，这场标准之战已经赢了。\n\n## 它是怎么运作的：三层结构\n\nMCP 把「连工具」拆成三个角色，理解这三层就理解了全部：\n\n- **Host（宿主）**：你直接使用的应用，比如 Claude 桌面端、VS Code、一个自定义聊天机器人。\n- **Client（客户端）**：住在 Host 内部、专门负责管理 MCP 连接的小组件。\n- **Server（服务端）**：一个轻量程序，把某个能力「暴露」出来，比如一个 GitHub 服务、一个数据库查询服务。\n\n每个 Server 通过三种「原语」提供能力：`Tools`（AI 可以调用的可执行函数，如 `create_issue`）、`Resources`（AI 可以读取的数据，如文件内容、数据库表结构）、`Prompts`（可复用的提示词模板）。它们底层用 **JSON-RPC**（一种简单的远程调用格式）通信，远程服务走 HTTP 传输，本地服务走标准输入输出。\n\n整个调用流程是这样的：\n\n```mermaid\nflowchart LR\n    U[用户] --> H[Host 应用\u003Cbr\u002F>Claude \u002F Cursor \u002F VS Code]\n    H --> C[MCP Client\u003Cbr\u002F>连接管理器]\n    C -->|JSON-RPC| S1[MCP Server: GitHub]\n    C -->|JSON-RPC| S2[MCP Server: 数据库]\n    C -->|JSON-RPC| S3[MCP Server: 天气 API]\n    S1 --> D1[(代码仓库)]\n    S2 --> D2[(业务数据)]\n    S3 --> D3[(外部 API)]\n```\n\n关键点在于：Host 只要实现一次 Client 协议，Server 只要实现一次 Server 协议，从此任意 Host 能连任意 Server。集成成本从 M×N 降到了 M+N。\n\n## 一个最小可运行的例子\n\n下面用官方 Python SDK 写一个「天气查询」MCP 服务，只暴露一个工具：\n\n```python\nfrom mcp.server.fastmcp import FastMCP\n\nmcp = FastMCP(\"weather\")  # 服务名叫 weather\n\n@mcp.tool()\ndef get_weather(city: str) -> str:\n    \"\"\"查询某城市的天气（示例返回静态数据）\"\"\"\n    return f\"{city} 今天晴，25°C。\"\n\nif __name__ == \"__main__\":\n    mcp.run()  # 默认以 stdio 方式启动，等待 Host 来连\n```\n\n运行前只需 `pip install mcp`，然后用任意支持 MCP 的客户端（Claude 桌面端、Cursor 等）配置这个服务路径即可。AI 在对话里说「查下北京天气」，客户端就会通过 MCP 调用 `get_weather(\"北京\")`，拿到结果再组织成自然语言回答你。注意：这只是最小骨架，真实服务里要把静态返回值换成真正的天气 API 调用。\n\n## 取舍与边界：它解决了什么，没解决什么\n\nMCP 解决的是「连接标准」问题，但它不是银弹：\n\n- **它让集成变简单，但不保证工具安全。** 一个 MCP Server 可以是任何人所写，工具描述会直接喂给模型。如果 Server 既能读私有数据、又能访问不可信内容、还能对外发消息，就构成了安全风险（业界称之为「致命三件套」）。企业通常会加一层 **Gateway（网关）** 来做鉴权和审计——Uber、Amazon 都用了这种「网关 + 注册表」的控制平面。\n- **上下文膨胀是个真问题。** 接的 Server 一多，工具定义会塞满模型的上下文窗口。2026 年的常见解法是「按需加载」：只把当前 Agent 真正需要的工具暴露出来，而不是一次全塞进去。\n- **它定义「怎么连」，不定义「连上去说什么」。** 多 Agent 之间的协作语义，由另一套协议 A2A（Agent-to-Agent）负责——MCP 接工具，A2A 连同伴。\n\n## Tips\n\n- 下次看到「AI 连不上我的系统」，先问：有没有现成的 MCP Server？多数数据库、SaaS、开发工具都已有官方或社区实现。\n- 想自己动手：用官方 SDK（Python\u002FTypeScript 等）把内部的一个 API 包成 MCP Server，比写一套专属集成快得多。\n- 评估风险时记住三件事：私有数据、不可信输入、对外通信，三者叠加要格外小心，尽量放进网关管控。\n- 分清两层协议：接工具看 MCP，多 Agent 协作看 A2A，别混为一谈。\n- 把 MCP 当「基础设施」而非「功能」：它赢是因为无聊、通用、可复用，这正是它值得长期投入的原因。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-19\u002Fc3c06d99-a0ac-40ac-a283-7e77aabb4c4c.jpg",[],[],"Foundit AI","https:\u002F\u002Ffoundit.cn\u002Fabout",{"id":118,"name":119,"slug":120,"description":121},[146,147,148],{"id":71,"name":72,"slug":73},{"id":99,"name":100,"slug":101},{"id":149,"name":150,"slug":151},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",46,"2026-07-20T00:00:00.000Z","2026-07-19T17:39:20.060Z","2026-07-19T16:13:40.316Z",{"id":157,"type":14,"title":158,"slug":159,"summary":160,"body":161,"coverUrl":162,"productScreenshots":163,"productLinks":164,"authorName":60,"authorUrl":61,"authorSubject":24,"category":165,"tags":166,"sourceLabel":43,"sourceName":43,"sourceUrl":43,"status":44,"seoTitle":43,"seoDescription":43,"canonicalUrl":43,"isFeatured":45,"sno":175,"sortOrder":47,"publishedAt":79,"updatedAt":176,"createdAt":177},"ce9e6553-0ad3-45a5-86c8-63c9c58b4b61","RAG是什么？","what-is-rag","Retrieval-Augmented Generation，中文通常译为“检索增强生成”，其核心在于让大模型先查找相关资料，再根据资料组织答案","大语言模型能够写文章、总结材料、回答问题，但它并不是一个实时更新且绝对可靠的知识库。模型掌握的知识主要来自训练数据：它可能不了解训练结束后发生的事情，也无法自然获取企业内部文件；遇到不确定的问题时，还可能生成看似合理、实际上并不存在的内容。\n\nRAG，即Retrieval-Augmented Generation，中文通常译为“检索增强生成”，就是为解决这些问题而出现的一种技术架构。它的核心思路非常简单：\n\n**不要让大模型只凭记忆回答，而是先查找相关资料，再根据资料组织答案。**\n\n## 一、可以把RAG理解为“开卷考试”\n\n普通大模型回答问题，更像一场闭卷考试。它只能依靠训练过程中记住的知识进行推断。\n\nRAG则像一场开卷考试。当用户提出问题时，系统先从指定的知识库、数据库、网页或文件中找到相关内容，再把这些内容连同问题一起交给大模型。模型阅读资料后，整理出自然语言答案。\n\n例如，一名员工询问：\n\n> 公司一年有多少天带薪年假？\n\n没有RAG时，大模型可能根据一般劳动制度给出一个通用答案，但这个答案未必符合该公司的实际规定。\n\n使用RAG后，系统会先从公司的员工手册中找到“休假制度”相关段落，再要求大模型依据该段落回答，并附上文件名称或原文位置。这样得到的答案更贴近企业实际，也更容易核查。\n\nRAG这一名称来自Patrick Lewis等研究者在2020年发表的论文。该研究将预训练生成模型的“参数化记忆”与外部文档索引形成的“非参数化记忆”结合，用于知识密集型问答和文本生成任务。([arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2005.11401?utm_source=chatgpt.com))\n\n## 二、RAG通常怎样工作？\n\n一个基础的RAG系统可以分为“资料准备”和“问题回答”两个阶段。\n\n### 1.收集和处理资料\n\n系统首先导入可能被查询的资料，例如产品说明书、规章制度、客服记录、研究报告、网页、数据库内容和新闻文章。\n\n由于文档往往很长，系统不会直接把整份文件交给大模型，而是将其拆分成较小的文本片段。这个过程通常称为“分块”或“切片”。\n\n每个文本片段随后会通过Embedding模型转换成一组数字，也就是“向量”。这些向量可以在数学空间中表达文本的大致语义。例如，“年假规定”和“员工休假制度”虽然用词不同，但对应向量通常会比较接近。处理后的向量会被保存到向量数据库或搜索索引中。([微软学习](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fstorage\u002Ffiles\u002Fartificial-intelligence\u002Fretrieval-augmented-generation\u002Foverview?utm_source=chatgpt.com))\n\n### 2.理解用户问题\n\n当用户提出问题时，系统同样会把问题转换成向量，有时还会先进行关键词提取、意图识别或问题改写。\n\n例如，用户问“去年买的设备还能免费维修吗”，系统可能将其改写为更适合搜索的问题：“产品保修期限和免费维修条件是什么？”\n\n### 3.检索相关内容\n\n系统将问题与知识库中的文本片段进行比较，找出语义最接近的若干段内容。\n\n实际系统通常不只使用向量检索。向量检索善于理解语义，但对产品型号、人名、编号和精确术语可能不够敏感。因此，企业级RAG经常把关键词检索与向量检索结合起来，形成“混合检索”。候选内容还可以通过Rerank模型重新排序，把真正相关的内容放在前面。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fproductdesc-agentarts0\u002Fagentarts_03_0010.html?utm_source=chatgpt.com))\n\n### 4.把资料交给大模型\n\n系统将检索到的内容放进提示词，大致形成如下指令：\n\n> 请只根据以下资料回答用户问题。资料没有提供答案时，请明确说明无法确定，并列出引用来源。\n\n大模型随后根据这些资料进行归纳、解释或总结，最终生成易于阅读的答案。\n\n因此，RAG并不是重新训练一个大模型，而是在模型回答之前，为它临时补充一份与当前问题相关的参考资料。\n\n## 三、RAG能解决什么问题？\n\n### 1.接入模型没有学过的私有知识\n\n企业合同、内部流程、项目文档和个人资料通常不会出现在大模型的训练数据中。RAG可以把这些资料接入现有模型，而不必为每批新文档重新训练模型。\n\n因此，企业知识助手、内部客服、合同查询、技术文档问答和个人知识库，都是RAG最常见的应用。\n\n### 2.使用持续更新的信息\n\n模型的训练数据存在时间边界，而外部知识库可以随时更新。只要重新收录最新文档，RAG就能在回答时使用较新的产品信息、政策内容、库存数据或新闻资料。([Google Cloud](https:\u002F\u002Fcloud.google.com\u002Fuse-cases\u002Fretrieval-augmented-generation?hl=zh-CN&utm_source=chatgpt.com))\n\n### 3.降低部分事实性幻觉\n\nRAG为模型提供了明确的参考内容，使回答能够建立在真实文档之上。它还可以要求系统为答案标记出处，方便用户返回原文核查。\n\n不过，RAG只能降低幻觉风险，不能彻底消除幻觉。如果系统找错了资料、资料本身存在错误，或者模型误解了检索结果，仍然可能生成错误答案。([WIRED](https:\u002F\u002Fwww.wired.com\u002Fstory\u002Freduce-ai-hallucinations-with-rag?utm_source=chatgpt.com))\n\n### 4.降低知识更新成本\n\n微调需要准备训练数据并执行训练过程，适合调整模型的表达方式、任务能力或行为模式。RAG则更适合补充经常变化、需要引用来源的事实知识。\n\n例如，公司制度更新时，RAG系统通常只需要更新知识库；如果试图通过反复微调让模型记住每次制度变化，成本更高，也更难保证旧知识被彻底覆盖。\n\n## 四、RAG并不是“上传文档就能准确回答”\n\nRAG的概念很直观，但真正做好并不简单。系统的最终效果取决于整条链路，而不仅仅取决于大模型能力。\n\n### 文档质量\n\n如果原始资料结构混乱、内容过时、相互矛盾，系统即使准确找到了相关段落，也可能得到错误结论。\n\n图片、扫描件、复杂表格和流程图也需要专门解析。若系统只能读取普通文本，图片中的操作步骤和表格关系可能在入库时直接丢失。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fbestpractice-agentarts\u002Fagentarts_06_0197.html?utm_source=chatgpt.com))\n\n### 文本分块\n\n切片太短，内容可能失去上下文；切片太长，又会混入大量无关信息。\n\n例如，将“退款条件”和下一节“账户注销说明”放进同一个文本块，可能让系统在回答退款问题时同时召回无关内容。合理的切片通常要参考标题层级、段落结构、表格边界和语义完整性，而不是简单地每隔固定字数切开。\n\n### 检索准确率\n\nRAG系统首先要“找对”，之后才能“答对”。\n\n如果问题是“AX-107设备的保修期”，仅依靠语义相似度，系统可能召回其他型号的保修说明。因此，实际系统往往需要结合关键词匹配、元数据过滤、混合检索和重排序。\n\n### 回答边界\n\n知识库中没有答案时，系统应当明确表示“不知道”或“资料中没有说明”，而不是让大模型根据常识自行补充。\n\n一个可靠的RAG系统不仅要评估答案是否流畅，还要评估检索是否正确、答案是否受到资料支持、引用是否准确，以及面对知识范围之外的问题能否合理拒答。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fbestpractice-agentarts\u002Fagentarts_06_0092.html?utm_source=chatgpt.com))\n\n## 五、RAG、联网搜索和模型微调有什么区别？\n\nRAG是一种架构，知识来源既可以是企业内部数据库，也可以是互联网搜索结果。\n\n联网搜索可以看成一种面向公开网络的检索方式。它能够获得较新的公开信息，但网络内容质量不一，搜索结果也可能变化。\n\n私有知识库RAG的资料范围更可控，适合企业制度、产品文档和内部数据，但只能回答知识库已经收录的内容。\n\n微调则主要改变模型的行为模式和任务能力。例如，让模型学会特定写作风格、分类规则或固定输出格式。它并不天然适合保存大量持续变化、需要精确引用的事实内容。\n\n在实际应用中，这几种技术并不冲突。一个系统可以先通过RAG获取内部资料和联网信息，再使用经过微调的模型按照规定格式生成答案。\n\n## 六、RAG适合哪些场景？\n\nRAG特别适合以下类型的应用：\n\n- 企业内部知识问答；\n- 产品客服和售后助手；\n- 法律、医疗、科研文献检索辅助；\n- 软件开发文档助手；\n- 新闻资料和政策文件查询；\n- 个人笔记与文件问答；\n- 带有来源引用的搜索和研究工具。\n\n它尤其适合那些“答案必须以指定资料为依据”的任务。\n\n相反，如果任务主要是创意写作、闲聊、翻译或通用文本润色，RAG未必能够带来明显价值。对于要求执行计算、调用接口或操作业务系统的任务，通常还需要工具调用、工作流或智能体系统配合，而不能只依赖RAG。\n\n## 七、从基础RAG到高级RAG\n\n最基础的RAG通常只是“问题向量化—检索若干片段—交给模型回答”。高级系统则会增加更多步骤，例如：\n\n- 根据对话历史改写问题；\n- 把复杂问题拆分为多个子问题；\n- 同时使用关键词检索和语义检索；\n- 根据部门、时间、权限等元数据过滤结果；\n- 对候选内容进行重排序；\n- 检查答案中的每个结论是否受到引用内容支持；\n- 检索结果不足时再次搜索；\n- 针对表格、图片、音频和视频建立多模态索引。\n\n这些改进的目标都是相同的：让系统找得更准、引用更可靠，并在缺乏依据时停止回答。相关综述通常将RAG的发展划分为基础RAG、高级RAG和模块化RAG等方向。([arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.19473?utm_source=chatgpt.com))\n\n## 结语\n\nRAG没有让大模型真正“记住”更多知识，而是为大模型增加了一套查找和使用外部资料的机制。\n\n它把传统搜索系统擅长的“找到信息”，与大语言模型擅长的“理解和表达”组合起来，使AI能够使用私有知识、较新资料和可追溯来源回答问题。\n\n但RAG并不是消除错误的万能方案。它的可靠性取决于资料质量、文档解析、文本分块、检索算法、提示词设计和系统评估。一个优秀的RAG应用，重点不只是让模型回答得更像人，而是让每个重要结论都能找到依据，并让系统知道什么时候不应该回答。\n\n## 引用来源\n\n1. Patrick Lewis等，《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》，NeurIPS 2020。([arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2005.11401?utm_source=chatgpt.com))\n2. Meta AI，《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。([Meta AI](https:\u002F\u002Fai.meta.com\u002Fresearch\u002Fpublications\u002Fretrieval-augmented-generation-for-knowledge-intensive-nlp-tasks\u002F?utm_source=chatgpt.com))\n3. Google Cloud，《什么是检索增强生成（RAG）？》。([Google Cloud](https:\u002F\u002Fcloud.google.com\u002Fuse-cases\u002Fretrieval-augmented-generation?hl=zh-CN&utm_source=chatgpt.com))\n4. Microsoft Learn，《Retrieval Augmented Generation in Azure AI Search》。([微软学习](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fsearch\u002Fretrieval-augmented-generation-overview?utm_source=chatgpt.com))\n5. Amazon Web Services，《What is RAG?》。([Amazon Web Services, Inc.](https:\u002F\u002Faws.amazon.com\u002Fwhat-is\u002Fretrieval-augmented-generation\u002F?utm_source=chatgpt.com))\n6. 华为云，《RAG技术原理》。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fbestpractice-agentarts\u002Fagentarts_06_0198.html?utm_source=chatgpt.com))\n7. 华为云，《基本概念：RAG、Embedding模型、Rerank模型》。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fproductdesc-koosearch\u002Fkoosearch_03_0021.html?utm_source=chatgpt.com))\n8. 华为云，《影响RAG效果的因素》。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fbestpractice-agentarts\u002Fagentarts_06_0199.html?utm_source=chatgpt.com))\n9. 华为云，《企业知识问答助手（RAG）智能体评估》。([华为云帮助中心](https:\u002F\u002Fsupport.huaweicloud.com\u002Fbestpractice-agentarts\u002Fagentarts_06_0092.html?utm_source=chatgpt.com))\n10. Penghao Zhao等，《Retrieval-Augmented Generation for AI-Generated Content: A Survey》。([arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.19473?utm_source=chatgpt.com))\n11. Shangyu Wu等，《Retrieval-Augmented Generation for Natural Language Processing: A Survey》。([arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2407.13193?utm_source=chatgpt.com))\n12. Datawhale，《All-in-RAG：RAG技术全栈指南》。([GitHub](https:\u002F\u002Fgithub.com\u002Fdatawhalechina\u002Fall-in-rag?utm_source=chatgpt.com))","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-17\u002Fc152c56f-9e9d-4621-8467-85c414b3e101.jpg",[],[],{"id":118,"name":119,"slug":120,"description":121},[167,168,169,170,174],{"id":32,"name":33,"slug":34},{"id":99,"name":100,"slug":101},{"id":67,"name":68,"slug":69},{"id":171,"name":172,"slug":173},"a2ccffe0-49b2-458b-baf6-a83a1b20443d","大语言模型","llm",{"id":75,"name":76,"slug":77},48,"2026-07-18T15:02:36.652Z","2026-07-17T10:19:33.353Z"]