Repository navigation
Expand file tree
/
Copy pathsearch.xml
More file actions
134 lines (64 loc) · 70.2 KB
/
Copy pathsearch.xml
File metadata and controls
134 lines (64 loc) · 70.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>一句话生成 PPT?难怪你做的总差点意思</title>
<link href="/2026/08/18/2026-08-18-how-to-generate-ppt-with-ai/"/>
<url>/2026/08/18/2026-08-18-how-to-generate-ppt-with-ai/</url>
<content type="html"><![CDATA[<p><strong>欢迎来到老苏的AI茶馆,一杯茶,一段话,聊聊 AI 的那些事儿。</strong></p><hr><h2 id="1-为什么你让-AI-生成的-PPT-总是差点意思"><a href="#1-为什么你让-AI-生成的-PPT-总是差点意思" class="headerlink" title="1. 为什么你让 AI 生成的 PPT 总是差点意思"></a>1. 为什么你让 AI 生成的 PPT 总是差点意思</h2><p>很多人的用法是:打开一个 AI 生成 PPT 的工具,输入一句话主题,点击生成。</p><p>然后收获一版配色随机、版式混乱、字体打架的「AI 审美大礼包」。改起来,往往比从头自己做还累。</p><p>问题不在模型,而在用法:你跳过了「风格定义」这一步,AI 只能凭默认审美自由发挥。</p><p>我的思路是把 PPT 拆成两件独立的事:</p><ul><li><strong>设计风格</strong>:配色、字体、版式、图形语言——交给一份可确认、可复用的规范</li><li><strong>内容结构</strong>:每页讲什么、要点是什么、配什么图——交给一份结构化大纲</li></ul><p>这就像装修房子:先定设计图,再列购物清单。设计图管「家里长什么样」,购物清单管「往家里放什么」。两件事分开做,都不会乱。</p><p><img src="/medias/images/2026-08-18-how-to-generate-ppt-with-ai/03-framework-style-content-split.png" alt="设计风格与内容结构双轨分离"></p><p>先锁定风格,再生成内容。这就是这篇文章要讲的完整工作流。</p><h2 id="2-核心工作流:五步走"><a href="#2-核心工作流:五步走" class="headerlink" title="2. 核心工作流:五步走"></a>2. 核心工作流:五步走</h2><p><img src="/medias/images/2026-08-18-how-to-generate-ppt-with-ai/01-flowchart-five-steps.png" alt="五步工作流总览"></p><p>一句话概括:</p><blockquote><p><strong>准备模板 -> 视觉模型提取 design.md -> 人工确认风格 -> LLM 生成大纲 -> 生成成稿</strong></p></blockquote><h3 id="2-1-第一步:准备一个-PPT-模板"><a href="#2-1-第一步:准备一个-PPT-模板" class="headerlink" title="2-1. 第一步:准备一个 PPT 模板"></a>2-1. 第一步:准备一个 PPT 模板</h3><p>模板是风格的「事实标准」,可以是:</p><ul><li>公司品牌模板</li><li>你收藏的优质模板</li><li>甚至只是三五页你觉得「就是这个感觉」的参考页</li></ul><p>不用贪多,取几张代表性页面即可:<strong>封面、目录页、章节页、内容页、结尾页</strong>,五种版式各一到两张。</p><p>模板先行的意义在于:风格从源头锁定,后面所有生成都在同一套审美坐标系里,不会跑偏。</p><h3 id="2-2-第二步:用-LLM-视觉模型把模板变成-design-md"><a href="#2-2-第二步:用-LLM-视觉模型把模板变成-design-md" class="headerlink" title="2-2. 第二步:用 LLM 视觉模型把模板变成 design.md"></a>2-2. 第二步:用 LLM 视觉模型把模板变成 design.md</h3><p>现在的多模态模型(Doubao、GPT-5.6、Claude 等)看图能力已经很强。把模板页截图喂给它,让它提取:</p><ul><li><strong>配色</strong>:主色、辅色、背景色(给出具体色值)</li><li><strong>字体层级</strong>:标题/正文/注释的字号与字重关系</li><li><strong>版式结构</strong>:标题位置、内容区划分、页边距与留白</li><li><strong>图形语言</strong>:圆角还是直角、线条粗细、图标风格、装饰元素</li><li><strong>整体气质</strong>:商务/科技/活泼/极简,一句话定调</li></ul><p>输出就是一份 <code>design.md</code>——把「模板长什么样」翻译成「AI 能执行的设计规范」。</p><p>一份 <code>design.md</code> 的骨架,大致长这样:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># 设计风格规范(design.md)</span><span class="token comment">## 整体气质</span>科技感、克制、大量留白<span class="token comment">## 配色</span>- 主色:<span class="token comment">#1E3A8A(深蓝,用于标题与重点)</span>- 辅色:<span class="token comment">#3B82F6(亮蓝,用于强调与图标)</span>- 背景:<span class="token comment">#FFFFFF</span>- 正文:<span class="token comment">#334155</span><span class="token comment">## 字体层级</span>- 页面标题:32pt 加粗- 小节标题:20pt 半粗- 正文:16pt 常规,行距1.5<span class="token comment">## 版式</span>- 标题居左上,正文区占右侧2/3- 页边距:上下64px,左右80px- 每页要点不超过5条<span class="token comment">## 图形语言</span>- 圆角卡片(半径12px)、细线图标、无渐变- 数据用单色系图表,不用3D<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><img src="/medias/images/2026-08-18-how-to-generate-ppt-with-ai/04-infographic-design-md-anatomy.png" alt="design.md:把模板翻译成设计规范"></p><h3 id="2-3-第三步:人工确认-design-md-的设计风格"><a href="#2-3-第三步:人工确认-design-md-的设计风格" class="headerlink" title="2-3. 第三步:人工确认 design.md 的设计风格"></a>2-3. 第三步:人工确认 design.md 的设计风格</h3><p>注意:<code>design.md</code> 是「AI 眼中的模板」,未必等于「你想要的风格」。</p><p>这一步要校准的:</p><ul><li>色值提取对不对,主辅色有没有认反</li><li>字号层级是否符合实际使用预期</li><li>有没有漏掉关键版式特征(比如模板里的页眉线、logo 位)</li></ul><p>成本极低——改几行文字的事,但它决定了后续所有产出的下限。确认之后,<code>design.md</code> 就是这个项目的「风格宪法」:</p><ul><li>可以版本化管理:风格调整等于改文档,不用改图</li><li>可以团队共享:设计规范天然可沉淀、可复用</li></ul><h3 id="2-4-第四步:用-LLM-生成-PPT-大纲"><a href="#2-4-第四步:用-LLM-生成-PPT-大纲" class="headerlink" title="2-4. 第四步:用 LLM 生成 PPT 大纲"></a>2-4. 第四步:用 LLM 生成 PPT 大纲</h3><p>现在才轮到内容。喂给 LLM 的输入有四部分:</p><ul><li><strong>主题与素材</strong>:你要讲什么、手头有什么材料</li><li><strong>目标受众</strong>:讲给谁听——是给管理层的汇报,还是给一线工程师的分享?受众决定详略取舍和话语体系</li><li><strong>要支持的决策</strong>:讲完希望对方做出什么决定、采取什么行动?比如「争取预算审批」和「统一技术选型」,大纲的论证重心会完全不同</li><li><strong>design.md</strong>:把版式约束(比如「每页要点不超过 5 条」)带进大纲,让大纲从生成起就能被当前版式承接</li></ul><p>其中前两条最容易被忽略,却最影响大纲质量:</p><blockquote><p><strong>受众决定「讲到什么深度」,决策决定「把论证压到哪一页」。</strong></p></blockquote><p>一份给管理层争取预算的 PPT,技术细节只需一页带过,但投入产出、风险与里程碑要给足;反过来,一场面向工程师的选型分享,架构对比才是重头戏。把这两条讲清楚,LLM 才会替你做对详略取舍,而不是生成一堆四平八稳、面面俱到却没立场的「正确的废话」。</p><p>让 LLM 按页生成大纲,每页固定输出三要素:<strong>标题、要点、配图建议</strong>(下一章展开讲怎么写好)。</p><p>风格和内容在这一步「合流」,但互不越界:<code>design.md</code> 管长得怎么样,大纲管讲什么。</p><h3 id="2-5-第五步:大纲驱动生成,收尾导出"><a href="#2-5-第五步:大纲驱动生成,收尾导出" class="headerlink" title="2-5. 第五步:大纲驱动生成,收尾导出"></a>2-5. 第五步:大纲驱动生成,收尾导出</h3><p>拿着确认过的 <code>design.md</code> + 大纲去逐页生成,用什么方式都行:</p><ul><li>AI 生成 PPT 工具(Gamma、讯飞智文等)</li><li>LLM + HTML 渲染脚本</li><li>人工按大纲套模板</li></ul><p>生成后人工微调,导出发布。</p><p>关键收益在复用:</p><ul><li>换主题?只重跑第四、五步</li><li>换风格?换模板重新提取 <code>design.md</code>,大纲基本不动</li><li>模板和 <code>design.md</code> 沉淀下来,就是团队资产</li></ul><h2 id="3-大纲三要素:标题、要点、配图建议"><a href="#3-大纲三要素:标题、要点、配图建议" class="headerlink" title="3. 大纲三要素:标题、要点、配图建议"></a>3. 大纲三要素:标题、要点、配图建议</h2><p><img src="/medias/images/2026-08-18-how-to-generate-ppt-with-ai/02-infographic-outline-three-elements.png" alt="大纲三要素信息图"></p><p>大纲是整套工作流的「内容中枢」,质量全看这三要素写得好不好。</p><h3 id="3-1-标题:每页的一句话主张"><a href="#3-1-标题:每页的一句话主张" class="headerlink" title="3-1. 标题:每页的一句话主张"></a>3-1. 标题:每页的一句话主张</h3><ul><li>写「主张」不写「栏目名」:「AI 接管排版,人专注叙事」好过「AI 的优势」</li><li>一页标题就是一个记忆点,串起来就是整场演讲的故事线</li></ul><h3 id="3-2-要点:3-5-条完整信息"><a href="#3-2-要点:3-5-条完整信息" class="headerlink" title="3-2. 要点:3-5 条完整信息"></a>3-2. 要点:3-5 条完整信息</h3><ul><li>每条是一个完整信息单元,不写半句话</li><li>超过 5 条就拆页:宁可页多,不要字密</li></ul><h3 id="3-3-配图建议:描述图的类型与内容搭配"><a href="#3-3-配图建议:描述图的类型与内容搭配" class="headerlink" title="3-3. 配图建议:描述图的类型与内容搭配"></a>3-3. 配图建议:描述图的类型与内容搭配</h3><p>先澄清一个定位:配图建议不是「让 AI 去生成一张图片」的 prompt,而是<strong>这一页配什么类型的图、图里呈现哪些内容维度</strong>——它是图表的信息结构规格。</p><p>写法拆开就是三件事:</p><ul><li><strong>图类型</strong>:时间轴、矩阵热力图、四象限、卡片组、流程图、对比表……选最能承载该页逻辑的类型</li><li><strong>维度字段</strong>:图里要出现哪些内容轴(比如「七类任务类型 × 部门」)</li><li><strong>标注重点</strong>:需要在图上强调的信息(比如「标注覆盖关系」「突出结构性问题标签」)</li></ul><p>几个范例:</p><blockquote><p><strong>配图建议</strong>:三阶段递进时间轴,标注各阶段核心目标与验收闸门</p><p><strong>配图建议</strong>:四象限或表格展示建设批次、覆盖部门、场景数与说明</p><p><strong>配图建议</strong>:七类任务类型×部门矩阵热力图,标注覆盖关系</p><p><strong>配图建议</strong>:五类痛点以图标+短描述卡片形式呈现,突出「结构性问题」标签</p></blockquote><p>和 <code>design.md</code> 的分工也很清晰:</p><blockquote><p><strong>配图建议决定图里画什么、怎么组织;design.md 决定图长什么样。</strong></p></blockquote><p>两份规范合在一起,才是这一页配图的完整方案——既可以交给设计师或 AI 绘图工具按风格执行,也可以直接用图表组件渲染。</p><p>一个完整的示例:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment">## 第3页:AI不是替代你排版,而是接管排版</span><span class="token comment">### 要点</span>- 把「设计+排版」交给模型,人专注在「内容与逻辑」- 风格由design.md锁定,生成结果稳定可预期- 人的时间花在打磨叙事,而不是对齐像素<span class="token comment">### 配图建议</span>三阶段演进时间轴(手工排版-<span class="token operator">></span>模板套用-<span class="token operator">></span>AI生成),标注各阶段的时间投入与返工率对比<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="4-工具怎么选(辅助参考)"><a href="#4-工具怎么选(辅助参考)" class="headerlink" title="4. 工具怎么选(辅助参考)"></a>4. 工具怎么选(辅助参考)</h2><p>工作流是主菜,工具只是餐具,按需替换:</p><table><thead><tr><th>工具</th><th>形态</th><th>在工作流中的位置</th></tr></thead><tbody><tr><td>Doubao / GLM 5.3 Flash / GPT-5.6 / Claude</td><td>多模态 LLM</td><td>第二步提取 design.md、第四步生成大纲</td></tr><tr><td>Codex / 豆包办公 / WorkBuddy</td><td>桌面办公套件</td><td>第五步快速成稿</td></tr><tr><td>LLM + HTML 渲染脚本</td><td>代码方案</td><td>第五步高度定制、可版本化</td></tr></tbody></table><h2 id="5-注意事项与局限"><a href="#5-注意事项与局限" class="headerlink" title="5. 注意事项与局限"></a>5. 注意事项与局限</h2><ul><li>AI 不负责事实核查:大纲里的数据、引用,需人工校验</li><li>复杂图表、企业模板的还原度有限:核心页仍建议人工兜底</li><li>涉及保密内容:注意模型的数据政策与隐私边界</li></ul><hr><p><strong>茶喝完了,该聊的也聊得差不多了,工作再忙,先把手里那杯喝完再说。</strong></p><p><strong>老苏的茶馆不打烊,我们下次再来。</strong></p>]]></content>
<categories>
<category> AI编程 </category>
</categories>
<tags>
<tag> AI生成PPT </tag>
<tag> 工作流 </tag>
<tag> 效率工具 </tag>
</tags>
</entry>
<entry>
<title>AGENTS.md:让AI编码助手真正懂你的项目</title>
<link href="/2026/05/26/2026-05-26-what-is-agents-md/"/>
<url>/2026/05/26/2026-05-26-what-is-agents-md/</url>
<content type="html"><![CDATA[<p><strong>欢迎来到老苏的AI茶馆,一杯茶,一段话,聊聊 AI 的那些事儿。</strong></p><h2 id="1、什么是AGENTS-md"><a href="#1、什么是AGENTS-md" class="headerlink" title="1、什么是AGENTS.md"></a>1、什么是AGENTS.md</h2><ul><li><a href="https://github.com/agentsmd/agents.md">https://github.com/agentsmd/agents.md</a></li></ul><p>AGENTS.md是一种简单、开放的编码代理指导格式,简单来讲,可以将 AGENTS.md 视为Agent的 README:一个专门的、可预测的地方,用于提供上下文和说明,以帮助 AI 编码代理在您的项目中工作。<br>AGENTS.md 是人工智能软件开发生态系统中各方共同努力的成果,其中包括 OpenAI Codex、Amp、Google 的 Jules、Cursor 和 Factory。</p><p><img src="/medias/images/2026-05-26-what-is-agents-md/01-comparison-readme-vs-agents.png" alt="README.md vs AGENTS.md 对比"></p><h3 id="1-1、为什么使用AGENTS-md"><a href="#1-1、为什么使用AGENTS-md" class="headerlink" title="1-1、为什么使用AGENTS.md"></a>1-1、为什么使用AGENTS.md</h3><p>README.md 文件是为人类准备的:快速入门指南、项目描述和贡献指南。<br>AGENTS.md 对此进行了补充,其中包含编码代理所需的额外、有时详细的上下文:构建步骤、测试和约定,这些内容可能会使 README 变得杂乱,或者与人类贡献者无关。</p><p>一句话总结:README.md是给人类看的,AGENTS.md是给AGENTS看的</p><p>AGENTS.md的核心思想,可以用以下几句话进行总结</p><ul><li>统一标准:一个文件服务所有 AI 编程工具</li><li>开放格式:由 OpenAI、Google 等共同制定,非专有</li><li>简单实用:标准 Markdown 格式,零学习成本</li><li>智能就近:支持嵌套,离文件最近的 AGENTS.md 优先</li></ul><p><img src="/medias/images/2026-05-26-what-is-agents-md/02-infographic-core-features.png" alt="AGENTS.md 四大核心特性"></p><h2 id="2、创建AGENTS文件"><a href="#2、创建AGENTS文件" class="headerlink" title="2、创建AGENTS文件"></a>2、创建AGENTS文件</h2><p>只需在需要的目录中创建一个名为 AGENTS.md 或 agents.md 的文件即可。该文件使用普通 Markdown 格式,不需要任何特殊的 frontmatter。</p><p>AGENTS.md示例结构</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">my-project/├── AGENTS.md <span class="token comment"># 整个项目的全局指令</span>├── frontend/│ ├── AGENTS.md <span class="token comment"># 前端代码专用指令</span>│ └── src/│ └── components/│ └── AGENTS.md <span class="token comment"># 组件专用指令</span>├── backend/│ └── AGENTS.md <span class="token comment"># 后端代码专用指令</span>└── docs/ └── AGENTS.md <span class="token comment"># 文档指令</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><img src="/medias/images/2026-05-26-what-is-agents-md/03-framework-directory-structure.png" alt="AGENTS.md 嵌套目录结构"></p><p>示例文件</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># Sample AGENTS.md file</span><span class="token comment">## Dev environment tips</span>- Use <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> dlx turbo run where <span class="token operator"><</span>project_name<span class="token operator">></span><span class="token variable">`</span></span> to jump to a package instead of scanning with <span class="token variable"><span class="token variable">`</span><span class="token function">ls</span><span class="token variable">`</span></span><span class="token builtin class-name">.</span>- Run <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> <span class="token function">install</span> <span class="token parameter variable">--filter</span> <span class="token operator"><</span>project_name<span class="token operator">></span><span class="token variable">`</span></span> to <span class="token function">add</span> the package to your workspace so Vite, ESLint, and TypeScript can see it.- Use <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> create vite@latest <span class="token operator"><</span>project_name<span class="token operator">></span> -- <span class="token parameter variable">--template</span> react-ts<span class="token variable">`</span></span> to spin up a new React + Vite package with TypeScript checks ready.- Check the name field inside each package's package.json to confirm the right name—skip the top-level one.<span class="token comment">## Testing instructions</span>- Find the CI plan <span class="token keyword">in</span> the .github/workflows folder.- Run <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> turbo run <span class="token builtin class-name">test</span> <span class="token parameter variable">--filter</span> <span class="token operator"><</span>project_name<span class="token operator">></span><span class="token variable">`</span></span> to run every check defined <span class="token keyword">for</span> that package.- From the package root you can just call <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> <span class="token builtin class-name">test</span><span class="token variable">`</span></span><span class="token builtin class-name">.</span> The commit should pass all tests before you merge.- To focus on one step, <span class="token function">add</span> the Vitest pattern: <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> vitest run <span class="token parameter variable">-t</span> <span class="token string">"<test name>"</span><span class="token variable">`</span></span><span class="token builtin class-name">.</span>- Fix any <span class="token builtin class-name">test</span> or <span class="token builtin class-name">type</span> errors <span class="token keyword">until</span> the whole suite is green.- After moving files or changing imports, run <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> lint <span class="token parameter variable">--filter</span> <span class="token operator"><</span>project_name<span class="token operator">></span><span class="token variable">`</span></span> to be sure ESLint and TypeScript rules still pass.- Add or update tests <span class="token keyword">for</span> the code you change, even <span class="token keyword">if</span> nobody asked.<span class="token comment">## PR instructions</span>- Title format: <span class="token punctuation">[</span><span class="token operator"><</span>project_name<span class="token operator">></span><span class="token punctuation">]</span> <span class="token operator"><</span>Title<span class="token operator">></span>- Always run <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> lint<span class="token variable">`</span></span> and <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> <span class="token builtin class-name">test</span><span class="token variable">`</span></span> before committing.<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="3、加载顺序"><a href="#3、加载顺序" class="headerlink" title="3、加载顺序"></a>3、加载顺序</h2><p>AGENTS.md 的一大优势是可以根据文件位置自动确定作用域</p><p>这意味着你可以在不同层级放置多个 AGENTS.md 文件,每个文件为其所在目录提供更细致、更加具体的指导。</p><p>TRAE AGENTS的核心加载逻辑<br>从当前工作目录开始 向上递归遍历 ,加载所有能覆盖当前目录的 AGENTS.md,形成从子到父的规则继承链,并非一次性加载所有子目录下的文件,只有进入对应子目录工作时,才会加载该子目录的 AGENTS.md,且仅对当前子目录及其下属文件生效</p><p>越靠近当前工作目录的 AGENTS.md 优先级越高,下层文件的规则会覆盖上层文件的冲突规则</p><p><img src="/medias/images/2026-05-26-what-is-agents-md/04-flowchart-loading-order.png" alt="AGENTS.md 加载顺序"></p><p>CLAUDE的CLAUDE.md的加载逻辑是<br>不同级别的CLAUDE.md 与 Auto memory 的整体加载顺序,应如下</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token number">1</span>. Managed Memory <span class="token punctuation">(</span>/etc/claude-code/CLAUDE.md<span class="token punctuation">)</span> - 全局管理指令 <span class="token number">1</span>. User Memory <span class="token punctuation">(</span>~/.claude/CLAUDE.md<span class="token punctuation">)</span> - 用户级别的全局指令 <span class="token number">2</span>. Project Memory <span class="token punctuation">(</span>从根目录到当前工作目录(CWD<span class="token punctuation">)</span>,自下而上遍历,自上而下加载) ├── CLAUDE.md <span class="token punctuation">(</span>项目根目录中的<span class="token punctuation">)</span> ├── .claude/CLAUDE.md └── .claude/rules/*.md <span class="token punctuation">(</span>按字母顺序<span class="token punctuation">)</span> <span class="token number">3</span>. Local Memory <span class="token punctuation">(</span>CLAUDE.local.md,也在项目中<span class="token punctuation">)</span> - 项目本地指令 <span class="token number">4</span>. Auto Memory <span class="token punctuation">(</span>源码中的@memdir<span class="token punctuation">)</span> ~/.claude/projects/<span class="token operator"><</span>project<span class="token operator">></span>/memory/MEMORY.md <span class="token number">5</span>. Team Memory <span class="token punctuation">(</span>共享团队记忆,如启用。<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>Project Memory 的加载方式是:自下而上遍历,自上而下加载</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">// 先从当前目录自下而上遍历收集所有目录的CLAUDE.md,直到根目录 <span class="token keyword">while</span> <span class="token punctuation">(</span>currentDir <span class="token operator">!=</span><span class="token operator">=</span> parse<span class="token punctuation">(</span>currentDir<span class="token punctuation">)</span>.root<span class="token punctuation">)</span> <span class="token punctuation">{</span> dirs.push<span class="token punctuation">(</span>currentDir<span class="token punctuation">)</span> currentDir <span class="token operator">=</span> dirname<span class="token punctuation">(</span>currentDir<span class="token punctuation">)</span> <span class="token punctuation">}</span> // 然后反转后再自上而下加载,从根目录向下依次加载CLAUDE.md <span class="token keyword">for</span> <span class="token punctuation">(</span>const <span class="token function">dir</span> of dirs.reverse<span class="token punctuation">(</span><span class="token punctuation">))</span> <span class="token punctuation">{</span> // 加载 CLAUDE.md, .claude/CLAUDE.md, .claude/rules/*.md <span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="4、如何写好一个AGENTS-md"><a href="#4、如何写好一个AGENTS-md" class="headerlink" title="4、如何写好一个AGENTS.md"></a>4、如何写好一个AGENTS.md</h2><p>AGENTS里面主要放哪些内容<br>AGENTS的示例</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># MyApp — 电商管理后台</span>基于 Next.js <span class="token number">14</span> App Router + Prisma + PostgreSQL 的电商管理系统。<span class="token comment">## 技术栈</span>- 前端:Next.js <span class="token number">14</span>(App Router)、TypeScript、Tailwind CSS、shadcn/ui- 后端:Next.js API Routes、Prisma ORM- 数据库:PostgreSQL <span class="token number">15</span>- 认证:NextAuth.js v5- 包管理:pnpm<span class="token comment">## 常用命令</span><span class="token function">pnpm</span> dev <span class="token comment"># 启动开发服务器(端口 3000)</span><span class="token function">pnpm</span> build <span class="token operator">&&</span> <span class="token function">pnpm</span> start <span class="token comment"># 构建并启动生产服务器</span><span class="token function">pnpm</span> <span class="token builtin class-name">test</span> <span class="token comment"># 运行所有测试</span><span class="token function">pnpm</span> test:e2e <span class="token comment"># 运行端到端测试(需先启动 dev server)</span><span class="token function">pnpm</span> db:migrate <span class="token comment"># 执行数据库迁移</span><span class="token function">pnpm</span> db:studio <span class="token comment"># 打开 Prisma Studio(数据库可视化工具)</span><span class="token function">pnpm</span> lint <span class="token operator">&&</span> <span class="token function">pnpm</span> typecheck <span class="token comment"># 代码检查和类型检查</span><span class="token comment">## 项目结构</span>- <span class="token variable"><span class="token variable">`</span>src/app/<span class="token variable">`</span></span> — App Router 页面和 API 路由- <span class="token variable"><span class="token variable">`</span>src/app/<span class="token punctuation">(</span>dashboard<span class="token punctuation">)</span>/<span class="token variable">`</span></span> — 需要登录的后台页面- <span class="token variable"><span class="token variable">`</span>src/app/api/<span class="token variable">`</span></span> — API 路由(RESTful 风格)- <span class="token variable"><span class="token variable">`</span>src/components/<span class="token variable">`</span></span> — 可复用组件- <span class="token variable"><span class="token variable">`</span>src/lib/<span class="token variable">`</span></span> — 工具函数、数据库客户端、认证配置- <span class="token variable"><span class="token variable">`</span>prisma/schema.prisma<span class="token variable">`</span></span> — 数据库 Schema 定义<span class="token comment">## 编码规范</span>- 只使用具名导出(named export),禁止 default export(除 Next.js 页面文件外)- 服务端组件默认 async,客户端组件在文件顶部加 <span class="token variable"><span class="token variable">`</span>"use client"<span class="token variable">`</span></span>- API 路由统一返回格式:成功 <span class="token variable"><span class="token variable">`</span><span class="token punctuation">{</span> data: T <span class="token punctuation">}</span><span class="token variable">`</span></span>,失败 <span class="token variable"><span class="token variable">`</span><span class="token punctuation">{</span> error: string, code: string <span class="token punctuation">}</span><span class="token variable">`</span></span>- 数据库查询封装在 <span class="token variable"><span class="token variable">`</span>src/lib/db/<span class="token variable">`</span></span> 目录下,不在其他地方直接使用 <span class="token variable"><span class="token variable">`</span>prisma<span class="token variable">`</span></span> 客户端<span class="token comment">## 注意事项</span>- <span class="token variable"><span class="token variable">`</span>prisma/migrations/<span class="token variable">`</span></span> 中已有文件**禁止修改**,数据库变更只能执行 <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> db:migrate<span class="token variable">`</span></span> 新增迁移- <span class="token variable"><span class="token variable">`</span>.env.local<span class="token variable">`</span></span> 包含真实密钥,**禁止读取或输出文件内容**- <span class="token variable"><span class="token variable">`</span>src/lib/auth.ts<span class="token variable">`</span></span> 是认证核心文件,**修改前必须告知我**- 修改 <span class="token variable"><span class="token variable">`</span>prisma/schema.prisma<span class="token variable">`</span></span> 后必须执行 <span class="token variable"><span class="token variable">`</span><span class="token function">pnpm</span> db:migrate<span class="token variable">`</span></span> 并提交迁移文件<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="大小的限制"><a href="#大小的限制" class="headerlink" title="大小的限制"></a>大小的限制</h3><p>Codex 在项目文档中提到,</p><p><a href="https://developers.openai.com/codex/guides/agents-md">https://developers.openai.com/codex/guides/agents-md</a></p><p>project_doc_max_bytes,project级别的大小会限制在32K,超过这个部分的内容会自动截断</p><p>所以整体的最好控制在80-150行,建议总字数控制在 500 字以内,超过 1000 字时需要考虑精简</p><p>多模块仓库(Monorepo)的配置方式</p><p>在 Monorepo 中,可以在仓库根目录放一个全局 CLAUDE.md,每个子包目录下再放各自的 CLAUDE.md。Claude 打开某个子包的文件时,会同时加载根目录和该子包目录下的两个文件</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">my-monorepo/├── CLAUDE.md ← 全局规范:共用命令、整体架构、通用约定├── packages/│ ├── web/│ │ └── CLAUDE.md ← 前端专属:React 规范、样式约定、构建流程│ ├── api/│ │ └── CLAUDE.md ← 后端专属:API 设计规范、数据库约定│ └── shared/│ └── CLAUDE.md ← 共享包:导出规则、版本管理约定└── tools/ └── CLAUDE.md ← 工具脚本:特殊说明和使用限制<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="根目录-AGENTS-md"><a href="#根目录-AGENTS-md" class="headerlink" title="根目录 AGENTS.md"></a>根目录 AGENTS.md</h3><table><thead><tr><th>分类</th><th>内容</th></tr></thead><tbody><tr><td>项目上下文</td><td>项目是什么、技术栈、目录结构、主要模块职责</td></tr><tr><td>开发环境</td><td>依赖安装、运行环境、版本要求、启动命令</td></tr><tr><td>构建与验证</td><td>build、test、lint、typecheck、CI 检查方式</td></tr><tr><td>通用工程规范</td><td>代码风格、命名、抽象原则、依赖边界、公共 API 约定</td></tr><tr><td>安全与风险</td><td>secrets、权限、鉴权、支付、数据删除、生产配置等高风险规则</td></tr><tr><td>协作流程</td><td>文档更新、PR 要求、提交说明、变更总结方式</td></tr></tbody></table><h3 id="子目录-AGENTS-md"><a href="#子目录-AGENTS-md" class="headerlink" title="子目录 AGENTS.md"></a>子目录 AGENTS.md</h3><table><thead><tr><th>分类</th><th>内容</th></tr></thead><tbody><tr><td>作用范围与职责</td><td>当前目录覆盖范围、模块职责、与其他模块的边界</td></tr><tr><td>本地开发命令</td><td>当前 app/package/service 的启动、测试、构建、生成代码命令</td></tr><tr><td>本地实现规范</td><td>本模块特有的代码风格、架构约束、依赖规则、领域规则</td></tr><tr><td>本地验证要求</td><td>修改此目录后应跑哪些测试、重点覆盖哪些场景</td></tr><tr><td>风险与例外</td><td>当前模块的危险区域、不能随意修改的文件、兼容性要求</td></tr><tr><td>参考资料</td><td>指向更详细的设计文档、API 文档、流程文档</td></tr></tbody></table><p><img src="/medias/images/2026-05-26-what-is-agents-md/05-framework-root-vs-subdir.png" alt="根目录 vs 子目录 AGENTS.md"></p><h2 id="第5章:Agents-md-如何落地:生成、修改、迭代三步走"><a href="#第5章:Agents-md-如何落地:生成、修改、迭代三步走" class="headerlink" title="第5章:Agents.md 如何落地:生成、修改、迭代三步走"></a>第5章:Agents.md 如何落地:生成、修改、迭代三步走</h2><p><code>Agents.md</code> 不应该被当成一次性写完的提示词文件。<br>更准确地说,它是 Agent 的行为配置文件,也是团队沉淀 AI 工作方式的入口。</p><p>在实际落地中,我更推荐用一个简单但有效的方法:</p><blockquote><p><strong>生成 → 修改 → 迭代</strong></p></blockquote><p>这不是线性流程,而是一个持续循环。</p><p><img src="/medias/images/2026-05-26-what-is-agents-md/06-flowchart-generate-modify-iterate.png" alt="生成→修改→迭代持续循环"></p><h3 id="5-1-生成:先让-Agent-跑起来"><a href="#5-1-生成:先让-Agent-跑起来" class="headerlink" title="5.1 生成:先让 Agent 跑起来"></a>5.1 生成:先让 Agent 跑起来</h3><p>第一版 <code>Agents.md</code> 不需要复杂,重点是建立一个最小可运行版本。</p><p>这个阶段的目标不是“写得完美”,而是验证 Agent 是否能完成核心任务。</p><p>一个初版通常只需要包含几类信息:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># Role</span>你是一个资深数据分析助手。<span class="token comment"># Goals</span>帮助用户分析业务数据,并输出可执行的洞察。<span class="token comment"># Constraints</span>- 不编造数据- 输出结构清晰- 结论需要有依据<span class="token comment"># Workflow</span><span class="token number">1</span>. 理解用户问题<span class="token number">2</span>. 分析相关数据<span class="token number">3</span>. 输出结论和建议<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>第一版要尽量克制。</p><p>不要一开始就把所有规则、边界、异常情况全部写进去。<br>内容越复杂,后续越难判断问题到底出在哪里。</p><p>这个阶段最重要的是回答三个问题:</p><ul><li>Agent 是否理解自己的角色?</li><li>输出是否基本稳定?</li><li>用户是否愿意继续使用?</li></ul><p>只要这三个问题能得到验证,第一版就已经完成了它的使命。</p><h3 id="5-2-修改:用真实问题修正行为"><a href="#5-2-修改:用真实问题修正行为" class="headerlink" title="5.2 修改:用真实问题修正行为"></a>5.2 修改:用真实问题修正行为</h3><p>当 Agent 进入真实使用场景后,一定会出现问题。</p><p>比如:</p><ul><li>输出格式不稳定</li><li>回答重点偏移</li><li>任务理解错误</li><li>工具调用不符合预期</li><li>长上下文下行为漂移</li></ul><p>这些问题不是失败,而是优化 <code>Agents.md</code> 的输入信号。</p><p>但修改时要避免一个常见错误:<br>不断追加“不要这样、必须那样、再次强调”。</p><p>这样很容易让 <code>Agents.md</code> 变成规则堆叠,最后越来越难维护。</p><p>更好的方式是:</p><blockquote><p><strong>优先调整结构,而不是堆叠约束。</strong></p></blockquote><p>例如,与其这样写:</p><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown">输出要专业、简洁、有洞察,不能太长,也不能太泛。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>不如改成:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># Output Format</span><span class="token comment">## Summary</span>用一句话给出核心结论。<span class="token comment">## Key Insights</span>列出 <span class="token number">2</span>-3 个关键发现。<span class="token comment">## Recommendations</span>给出下一步建议。<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>结构化的要求通常比抽象描述更稳定。<br>因为模型更容易跟随明确格式,而不是理解模糊风格。</p><p>同时,每次修改最好只调整一个变量。<br>比如这次只改输出格式,下次只改角色定义,再下次只改工具调用规则。</p><p>这样才能知道:<br>到底是哪次修改带来了效果变化。</p><hr><h3 id="5-3-迭代:把经验沉淀成资产"><a href="#5-3-迭代:把经验沉淀成资产" class="headerlink" title="5.3 迭代:把经验沉淀成资产"></a>5.3 迭代:把经验沉淀成资产</h3><p>当 Agent 能稳定完成任务后,<code>Agents.md</code> 的价值会进一步放大。</p><p>它不再只是一个提示词文件,而是团队经验的沉淀载体。</p><p>随着使用增加,团队可以逐步把这些内容沉淀进去:</p><ul><li>常见任务流程</li><li>标准输出格式</li><li>失败案例处理方式</li><li>工具调用规则</li><li>领域术语和业务约定</li><li>不同场景下的行为边界</li></ul><p>这时,<code>Agents.md</code> 会从“让模型听话”,变成“让团队的 AI 工作方式可复用”。</p><p>也正是在这个阶段,团队需要避免另一个误区:</p><blockquote><p>不要试图打造一个万能 Agent。</p></blockquote><p>更合理的方式是让不同 Agent 负责不同任务。</p><p>例如:</p><table><thead><tr><th>Agent</th><th>主要职责</th></tr></thead><tbody><tr><td>Research Agent</td><td>信息检索与资料整理</td></tr><tr><td>Coding Agent</td><td>代码生成与修改</td></tr><tr><td>Review Agent</td><td>内容审查与质量检查</td></tr><tr><td>Planning Agent</td><td>任务拆解与计划制定</td></tr><tr><td>BI Agent</td><td>数据分析与洞察生成</td></tr></tbody></table><p>每个 Agent 都有自己的 <code>Agents.md</code>,边界更清晰,效果也更稳定。</p><p><img src="/medias/images/2026-05-26-what-is-agents-md/07-infographic-agent-roles.png" alt="专业 Agent 分工协作"></p><hr><h3 id="5-4-把-Agents-md-当成代码管理"><a href="#5-4-把-Agents-md-当成代码管理" class="headerlink" title="5.4 把 Agents.md 当成代码管理"></a>5.4 把 Agents.md 当成代码管理</h3><p>真正落地之后,<code>Agents.md</code> 不应该只被当作文档维护。</p><p>它更像代码。</p><p>既然是代码,就应该有:</p><ul><li>版本管理</li><li>Code Review</li><li>测试样例</li><li>效果评估</li><li>灰度发布</li><li>回滚机制</li></ul><p>很多 Agent 不稳定,并不是因为模型能力不够,而是因为提示词和行为配置缺少工程化管理。</p><p>最终,<code>Agents.md</code> 的价值不在于写出一段完美 Prompt,而在于持续沉淀一套可复用、可维护、可演进的 Agent 行为规范。</p><p>一句话总结:</p><blockquote><p><strong>Agents.md 的落地,不是一次写完,而是在真实使用中不断生成、修改、迭代。</strong></p></blockquote><p>茶喝完了,该聊的也聊得差不多了,工作再忙,先把手里那杯喝完再说。<br>老苏的茶馆不打烊,我们下次再来。</p><h2 id="6、参考文件"><a href="#6、参考文件" class="headerlink" title="6、参考文件"></a>6、参考文件</h2><p><a href="https://docs.windsurf.com/zh/windsurf/cascade/agents-md">https://docs.windsurf.com/zh/windsurf/cascade/agents-md</a></p><p><a href="https://redreamality.com/cn/blog/claude-md-agents-md-deep-dive">https://redreamality.com/cn/blog/claude-md-agents-md-deep-dive</a></p><p><a href="https://github.com/agentsmd/agents.md">https://github.com/agentsmd/agents.md</a></p><p><a href="https://www.runoob.com/claude-code/claude-code-claudemd.html">https://www.runoob.com/claude-code/claude-code-claudemd.html</a></p><p><a href="https://linux.do/t/topic/1907664">https://linux.do/t/topic/1907664</a></p>]]></content>
<categories>
<category> AI编程 </category>
</categories>
<tags>
<tag> AGENTS.md </tag>
<tag> AI编程 </tag>
<tag> 编码代理 </tag>
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/2026/05/22/hello-world/"/>
<url>/2026/05/22/hello-world/</url>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo new <span class="token string">"My New Post"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/writing.html">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo server<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo generate<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/generating.html">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo deploy<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>]]></content>
</entry>
<entry>
<title>三月面试复盘:5 类大模型岗位,到底都在做什么</title>
<link href="/2026/03/27/2026-03-27-a-guide-to-ai-job-interviews-in-march/"/>
<url>/2026/03/27/2026-03-27-a-guide-to-ai-job-interviews-in-march/</url>
<content type="html"><![CDATA[<p><strong>欢迎来到老苏的AI茶馆,一杯茶,一段话,聊聊 AI 的那些事儿。</strong></p><p>2026 年 3 月,我密集面了五类跟”大模型”沾边的岗位:</p><ul><li>大模型算法工程师</li><li>大模型应用工程师</li><li>云厂商解决方案架构师</li><li>云厂商大模型解决方案架构师</li><li>云厂商 FDE 大模型前沿部署工程师</li></ul><p>面完一圈,最大的感受是——这五个岗位虽然简历上都能写”从事大模型相关工作”,但日常干的活、面试问的题、甚至思维方式,几乎是五个完全不同的工种。</p><p>这篇文章,我把这次面试经历整理了一下,帮你搞清楚这几个岗位到底有什么区别,面试的时候大概会被问什么。</p><h2 id="1、一条坐标轴,先把五个岗位摆上去"><a href="#1、一条坐标轴,先把五个岗位摆上去" class="headerlink" title="1、一条坐标轴,先把五个岗位摆上去"></a>1、一条坐标轴,先把五个岗位摆上去</h2><p>要理解这五个岗位的区别,有一个很好用的维度:<strong>你的工作重心离”模型本身”更近,还是离”客户”更近?</strong></p><p>你可以想象一条横轴,最左边是模型,最右边是客户。</p><p><img src="/medias/images/2026-03-27-a-guide-to-ai-job-interviews-in-march/01-infographic-role-axis.png" alt="五大模型岗位定位坐标轴:从模型到客户的完整定位图"></p><p><strong>大模型算法工程师</strong>站在最左边。他的工作就是让模型变得更好——预训练、微调、对齐、推理加速,核心产出是模型本身的能力提升。</p><p><strong>大模型应用工程师</strong>站在左边偏中的位置。他不训练模型,但他是把模型”用好”的人。日常工作是基于现有的大模型构建 Agent、设计 Prompt、搭建 RAG 系统,让模型在具体业务场景里真正跑起来。如果说算法工程师是造发动机的人,应用工程师就是拿着发动机造车的人。</p><p><strong>云厂商大模型解决方案架构师</strong>站在中间。他比应用工程师更靠近客户一步——不光要懂大模型应用怎么搭,还要理解客户的业务场景,设计出一套完整的方案让客户拍板买单。他的产出除了方案文档和技术架构图,往往还要做一个让客户能直观理解的 Demo。</p><p><strong>云厂商解决方案架构师</strong>站在中间偏右。他不只做大模型方向,而是负责云平台上所有产品组件的整体方案设计。大模型只是他方案里的一个模块,旁边还有数据库、容器、网络、安全一堆东西。他更像是云厂商的”全科医生”——面对客户时,他是技术 1 号位,客户的所有技术问题,都由他来接。</p><p><strong>云厂商 FDE 大模型前沿部署工程师</strong>站在最右边。他不光要设计方案,还要驻场到客户那里,亲手把东西跑通。模型部署到客户环境里出了问题,他来排查;客户说效果不好,他来调优;客户说需求变了,他来改方案。他是离客户最近的技术角色。</p><p>换一个更直观的类比:如果把大模型产品比作一道菜——算法工程师是研发菜品配方的人,应用工程师是拿着配方把菜做出来的人,大模型解决方案架构师是根据食客口味定制菜单的人,解决方案架构师是设计整个厨房和供应链的人,FDE 是端着菜到包间里、根据客人反馈现场调味的人。</p><p>还可以从组织架构的角度做一个划分:大模型算法工程师和大模型应用工程师属于<strong>研发体系</strong>,云厂商解决方案架构师和大模型解决方案架构师属于<strong>售前体系</strong>,而 FDE 则更偏向<strong>售中和售后体系</strong>。</p><h2 id="2、三条路,三套面试逻辑"><a href="#2、三条路,三套面试逻辑" class="headerlink" title="2、三条路,三套面试逻辑"></a>2、三条路,三套面试逻辑</h2><p>面完之后回头看,这五个岗位可以归成三条路。</p><p><img src="/medias/images/2026-03-27-a-guide-to-ai-job-interviews-in-march/02-infographic-three-paths.png" alt="三条职业路径:造模型、用模型造应用、让模型落地"></p><h3 id="2-1、第一条路:造模型"><a href="#2-1、第一条路:造模型" class="headerlink" title="2-1、第一条路:造模型"></a>2-1、第一条路:造模型</h3><p>大模型算法工程师走的就是这条路。面试围绕的核心问题是:<strong>你能不能把模型做得更好?</strong></p><p>常见的面试题包括:</p><ul><li>Transformer 的自注意力机制,讲一下原理;</li><li>R1 训练全流程;</li><li>大模型复读、幻觉问题如何解决;</li><li>GRPO 相比 PPO 的改进;</li><li>Thinking 模型如何训练;</li><li>PPO 的整体训练流程。</li></ul><p>这条路的面试,不怎么聊客户,也不怎么聊商业。核心就一件事:你对模型的理解有多深,动手能力有多强。论文要读、代码要写、PyTorch 要熟、分布式训练要会,门槛主要在技术深度。</p><h3 id="2-2、第二条路:用模型造应用"><a href="#2-2、第二条路:用模型造应用" class="headerlink" title="2-2、第二条路:用模型造应用"></a>2-2、第二条路:用模型造应用</h3><p>大模型应用工程师走的是这条路。跟算法工程师最容易搞混,但面试一坐下来就知道区别了——算法工程师面的是”模型怎么训”,应用工程师面的是”模型怎么用”。</p><p>面试里被问到最多的是 <strong>Agent 相关的问题</strong>,比如:</p><ul><li>用 LangGraph 设计一个多 Agent 协作系统,你会怎么拆分角色和任务?</li><li>Agent 在执行复杂任务时陷入死循环了,你怎么排查和解决?</li><li>ReAct 和 Plan-and-Execute 两种 Agent 范式各自适合什么场景?</li></ul><p><strong>Prompt 工程</strong>也是重点考察项:</p><ul><li>同一个任务,在 Claude 和 GPT-4o 上 Prompt 写法有什么区别?</li><li>你怎么设计一个系统级 Prompt 来保证输出的结构化(比如稳定输出 JSON)?</li><li>Few-shot 和 CoT(Chain of Thought,链式思维)在什么场景下效果差异最大?</li></ul><p><strong>RAG</strong> 也必考。但跟云厂商大模型解决方案架构师不同,应用工程师的 RAG 问题更偏工程实现——你的分块策略怎么定的?用什么 Embedding 模型?怎么做召回排序的多路融合?线上 RAG 系统的延迟瓶颈通常在哪?</p><p>还有一个算法工程师不太会被问到、但应用工程师一定会遇到的点:<strong>评测</strong>。你怎么建一套自动化的 Eval 体系?Prompt 改了一版之后,怎么量化这次修改对业务指标的影响?线上 Agent 跑飞了,你的监控和兜底策略是什么?</p><p>这条路需要的技能组合挺有意思——你不需要会训练模型,但你需要非常理解模型的行为特征。Temperature 调到多少合适、不同模型对长上下文的处理能力差异、Token 消耗怎么优化,这些都是应用工程师的基本功。</p><p>换句话说,算法工程师要知道发动机怎么造,应用工程师要知道发动机在什么转速下最省油。</p><h3 id="2-3、第三条路:让模型在客户那里落地"><a href="#2-3、第三条路:让模型在客户那里落地" class="headerlink" title="2-3、第三条路:让模型在客户那里落地"></a>2-3、第三条路:让模型在客户那里落地</h3><p>剩下三个岗位——云厂商解决方案架构师、云厂商大模型解决方案架构师、云厂商 FDE——都在这条路上。它们有一个共同特点:都属于云厂商体系,都要面对客户,但站的位置不同。</p><p>这三个岗位的面试都有一个共同环节:<strong>给你一个客户场景,让你现场出方案。</strong></p><p>比如:”某银行想用大模型做智能客服,你怎么设计?”或者:”客户现在用的是传统规则引擎,想迁移到大模型方案,你觉得应该怎么做?”</p><p>但三个岗位考察的侧重点不一样。</p><p><strong>云厂商解决方案架构师</strong>的面试更偏”广度”。会问你对云产品的熟悉程度——计算、存储、网络、容器、数据库、安全各个模块你了解多少;会问你怎么做技术选型、怎么写投标方案、怎么跟客户高层做技术汇报。大模型只是他需要掌握的众多技术方向之一。有个面试官直接问我:</p><blockquote><p>“客户 CTO 问你,为什么选你们家的云而不是竞品,你怎么回答?”</p></blockquote><p>这是一个非常典型的售前场景题。不过随着大模型的发展,解决方案架构师的门槛也在提高——除了云计算全栈能力,现在越来越看重候选人的 AI 背景,因为客户聊得最多的就是 AI,比如最近火热的”养虾”。</p><p><strong>云厂商大模型解决方案架构师</strong>的面试聚焦在大模型应用层面的方案能力。会问:RAG 的召回率不够高你怎么优化?向量数据库选 Milvus 还是 OpenSearch,各自的优缺点?客户的数据涉及敏感信息,你怎么做数据脱敏后再送进模型?大模型应用里怎么做幻觉检测和质量评估?</p><p>这个岗位跟大模型应用工程师有交集,但区别在于——应用工程师属于研发侧,这个岗位属于售前侧。设计方案的时候,除了技术实现,还要考虑怎么增加云上的用量、怎么提升用户的 Token 消耗量、怎么让用户用上更多的云上 AI 服务,同时还要把方案给客户讲明白。</p><p><strong>云厂商 FDE 大模型前沿部署工程师</strong>的面试最”杂”——技术要问,场景要问,甚至还会问你怎么处理客户关系。一个典型的问题:</p><blockquote><p>“模型部署到客户的私有化环境,GPU 驱动和 CUDA 版本跟你的推理框架不兼容,客户催得很急,你怎么处理?”</p></blockquote><p>另一个:</p><blockquote><p>“你驻场两周后发现客户真正的痛点跟最初签合同时说的不一样,你怎么办?”</p></blockquote><p>FDE 的面试特别强调一个能力:<strong>在信息不完整、资源有限、客户在旁边盯着的情况下,把事情搞定。</strong></p><p>FDE 这个岗位起源于 Palantir,他们管这个角色叫”Delta”。后来 OpenAI、Salesforce、Ramp 这些公司都在大规模招 FDE。据报道,2025 年相关职位的招聘量增长超过了 800%。之所以这么火,是因为 AI 产品跟传统 SaaS 不一样——每个客户的业务场景差异太大,不可能一套方案打天下,必须有人到现场去”修路”。最近国内的一些云厂商,也开始招这个岗位了。</p><h2 id="3、一张表,看清五个岗位的核心差异"><a href="#3、一张表,看清五个岗位的核心差异" class="headerlink" title="3、一张表,看清五个岗位的核心差异"></a>3、一张表,看清五个岗位的核心差异</h2><p><img src="/medias/images/2026-03-27-a-guide-to-ai-job-interviews-in-march/03-infographic-role-comparison.png" alt="五岗位核心差异对比图"></p><table><thead><tr><th>维度</th><th>算法工程师</th><th>应用工程师</th><th>云厂商解决方案架构师</th><th>云厂商大模型解决方案架构师</th><th>云厂商 FDE</th></tr></thead><tbody><tr><td>核心工作</td><td>训练/微调/推理优化</td><td>Agent 开发/Prompt 工程/RAG 搭建</td><td>云平台整体方案设计</td><td>大模型应用方案设计</td><td>驻场部署+现场调优</td></tr><tr><td>关键技能</td><td>PyTorch、分布式训练、论文复现</td><td>LangChain/LangGraph、Prompt 设计、评测体系</td><td>云产品全栈、方案写作、客户汇报</td><td>RAG/Agent 架构设计、方案咨询</td><td>全栈工程、问题排查、客户沟通</td></tr><tr><td>典型面试题</td><td>“PPO 的原理讲一下”</td><td>“Agent 死循环了怎么排查”</td><td>“客户要上混合云,你怎么规划”</td><td>“RAG 召回率低怎么优化”</td><td>“部署环境出问题,客户在催,你怎么办”</td></tr><tr><td>产出形式</td><td>模型权重、训练代码</td><td>可运行的应用系统</td><td>方案文档、投标材料</td><td>大模型专项方案</td><td>在客户环境跑通的系统</td></tr><tr><td>工作节奏</td><td>跟模型打交道为主</td><td>跟代码和产品打交道</td><td>售前为主,跟销售配合,技术 1 号位</td><td>售前+技术咨询</td><td>售中+售后+驻场交付</td></tr></tbody></table><h2 id="4、想清楚你更喜欢造东西、用东西,还是把东西交到别人手上"><a href="#4、想清楚你更喜欢造东西、用东西,还是把东西交到别人手上" class="headerlink" title="4、想清楚你更喜欢造东西、用东西,还是把东西交到别人手上"></a>4、想清楚你更喜欢造东西、用东西,还是把东西交到别人手上</h2><p>面试这一圈下来,我最大的体会是:选岗位之前,先搞清楚自己喜欢什么样的工作状态。</p><p>算法工程师的日常是跟论文和 GPU 集群打交道,可能连续几周都在调一个训练任务,成就感来自模型指标的提升。这条路需要足够的技术深度,也需要耐得住寂寞。</p><p>应用工程师的日常是跟框架、Prompt、Agent 打交道,成就感来自”这个 Agent 真的能干活了”。这条路要求你对模型的行为特征有直觉式的理解,同时工程能力要扎实,能快速把想法变成可运行的系统。它也是目前市场上需求增长最快的方向之一——会训练模型的公司就那么几家,但需要拿模型构建应用的公司数不清。</p><p>云厂商体系里的三个岗位,成就感更多来自”把东西交到客户手上,并且真的用起来了”。代价是你得花大量时间在沟通、写方案、出差上。其中解决方案架构师偏售前,FDE 偏售后交付,大模型解决方案架构师在两者之间。</p><p>三条路没有高下之分。但面试准备的方向完全不同——走算法路线,就去刷论文、写代码、搞训练实验;走应用路线,就去用 LangChain 搭 Agent、练 Prompt 调优、建评测体系;走落地路线,就去练场景拆解、学云产品、想清楚怎么把技术方案讲给非技术人员听。</p><p>知道自己想站在哪个位置,才不会投错简历。</p><p><img src="/medias/images/2026-03-27-a-guide-to-ai-job-interviews-in-march/04-infographic-decision-guide.png" alt="岗位选择决策指南:你喜欢造东西、用东西、还是把东西交到别人手上?"></p><p><strong>茶喝完了,该聊的也聊得差不多了,工作再忙,先把手里那杯喝完再说。</strong></p><p><strong>老苏的茶馆不打烊,我们下次再来。</strong></p>]]></content>
<categories>
<category> 大模型 </category>
</categories>
<tags>
<tag> 大模型 </tag>
<tag> 面试 </tag>
<tag> 求职 </tag>
</tags>
</entry>
<entry>
<title>大模型训练数据集介绍</title>
<link href="/2023/06/05/2023-06-05-llm-train-data/"/>
<url>/2023/06/05/2023-06-05-llm-train-data/</url>
<content type="html"><![CDATA[<h2 id="1、斯坦福开源数据集"><a href="#1、斯坦福开源数据集" class="headerlink" title="1、斯坦福开源数据集"></a>1、斯坦福开源数据集</h2><p>数据集名称:alpaca_data.json</p><p><a href="https://github.com/tatsu-lab/stanford_alpaca">https://github.com/tatsu-lab/stanford_alpaca</a></p><p>alpaca_data.json包含了我们用于微调Alpaca模型的52K条指令跟随数据。<br>这个JSON文件是一个字典列表,每个字典包含以下字段:<br>instruction: str,描述模型应执行的任务。</p><p>这52K条指令中的每一条都是独特的。</p><p>input: str,任务的可选上下文或输入。例如,当指令为“总结以下文章”时,输入为文章。大约40%的示例有输入。</p><p>output: str,由text-davinci-003生成的指令答案</p><h2 id="2、Belle开源数据集"><a href="#2、Belle开源数据集" class="headerlink" title="2、Belle开源数据集"></a>2、Belle开源数据集</h2><h3 id="2-1、个性化角色对话"><a href="#2-1、个性化角色对话" class="headerlink" title="2-1、个性化角色对话"></a>2-1、个性化角色对话</h3><p>数据集名称:BelleGroup/generated_chat_0.4M</p><p><a href="https://huggingface.co/datasets/BelleGroup/generated_chat_0.4M">https://huggingface.co/datasets/BelleGroup/generated_chat_0.4M</a></p><pre class="line-numbers language-plsql" data-language="plsql"><code class="language-plsql">instruction<span class="token operator">:</span> 指令input<span class="token operator">:</span> 输入(本数据集均为空)output<span class="token operator">:</span> 输出<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h3 id="2-2、中文数据题数据"><a href="#2-2、中文数据题数据" class="headerlink" title="2-2、中文数据题数据"></a>2-2、中文数据题数据</h3><p>数据集名称:BelleGroup/school_math_0.25M</p><p><a href="https://huggingface.co/datasets/BelleGroup/school_math_0.25M">https://huggingface.co/datasets/BelleGroup/school_math_0.25M</a></p><p>字段同上</p><h3 id="2-3、中文指令数据"><a href="#2-3、中文指令数据" class="headerlink" title="2-3、中文指令数据"></a>2-3、中文指令数据</h3><p>数据集名称:BelleGroup/train_2M_CN</p><p><a href="https://huggingface.co/datasets/BelleGroup/train_2M_CN">https://huggingface.co/datasets/BelleGroup/train_2M_CN</a></p><h2 id="3、Guanaco数据集"><a href="#3、Guanaco数据集" class="headerlink" title="3、Guanaco数据集"></a>3、Guanaco数据集</h2><p>Guanaco是一个基于Meta的LLaMA 7B模型训练的指令跟随语言模型。在Alpaca模型的原始52K数据的基础上,我们添加了额外的534,530个条目,涵盖英语、简体中文、繁体中文(台湾)、繁体中文(香港)、日语、德语以及各种语言和语法任务。通过使用这些丰富的数据重新训练和优化模型,Guanaco在多语言环境中展现出了出色的性能和潜力</p><p>数据集名称:Guanaco<br><a href="https://guanaco-model.github.io/">https://guanaco-model.github.io/</a></p><h2 id="4、Fifefly-数据集"><a href="#4、Fifefly-数据集" class="headerlink" title="4、Fifefly 数据集"></a>4、Fifefly 数据集</h2><p>我们收集了23个常见的中文数据集,对于每个任务,由人工书写若干种指令模板,保证数据的高质量与丰富度,数据量为115万 。</p><p>数据分布如下图所示</p><p><img src="https://cdn.jsdelivr.net/gh/supinyu/supinyu.github.io/medias/images/06-05-03.png" alt="数据分布"></p><p>每条数据的格式如下,包含任务类型、输入、目标输出:</p><pre class="line-numbers language-plsql" data-language="plsql"><code class="language-plsql">{ <span class="token string">"kind"</span><span class="token operator">:</span> <span class="token string">"ClassicalChinese"</span><span class="token punctuation">,</span> <span class="token string">"input"</span><span class="token operator">:</span> <span class="token string">"将下面句子翻译成现代文:\n石中央又生一树,高百余尺,条干偃阴为五色,翠叶如盘,花径尺余,色深碧,蕊深红,异香成烟,著物霏霏。"</span><span class="token punctuation">,</span> <span class="token string">"target"</span><span class="token operator">:</span> <span class="token string">"大石的中央长着一棵树,一百多尺高,枝干是彩色的,树叶有盘子那样大,花的直径有一尺宽,花瓣深蓝色,花中飘出奇异的香气笼罩着周围,如烟似雾。"</span>}<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>数据集名称:YeungNLP/firefly-train-1.1M</p><p><a href="https://huggingface.co/datasets/YeungNLP/firefly-train-1.1M">https://huggingface.co/datasets/YeungNLP/firefly-train-1.1M</a></p><p>训练数据集的token长度分布如下图所示,绝大部分数据的长度都小于600:</p><p><img src="https://cdn.jsdelivr.net/gh/supinyu/supinyu.github.io/medias/images/06-05-02.png" alt="token长度分布"></p><h2 id="5、alpaca-chinese-dataset"><a href="#5、alpaca-chinese-dataset" class="headerlink" title="5、alpaca_chinese_dataset"></a>5、alpaca_chinese_dataset</h2><p>在alpaca_dataset的基础上,进行了翻译,并补充了相关中文数据</p><p><a href="https://github.com/hikariming/alpaca_chinese_dataset">https://github.com/hikariming/alpaca_chinese_dataset</a></p><h2 id="6、Chinese-Open-Instruction-Generalist"><a href="#6、Chinese-Open-Instruction-Generalist" class="headerlink" title="6、Chinese Open Instruction Generalist"></a>6、Chinese Open Instruction Generalist</h2><p>智源开源的数据集<br>我们提出了“中国开放指令通用项目(COIG)”,以维护一组无害、有用和多样化的中文指令语料库。主要包括</p><ul><li>翻译通用指令语料库,</li><li>考试指令语料库,</li><li>人类价值对齐指令语料库,</li><li>一个多轮反事实修正聊天语料库</li><li>一个leetcode指令语料库</li></ul><p><a href="https://huggingface.co/datasets/BAAI/COIG">https://huggingface.co/datasets/BAAI/COIG</a></p><h2 id="7、Alpaca-GPT4"><a href="#7、Alpaca-GPT4" class="headerlink" title="7、Alpaca_GPT4"></a>7、Alpaca_GPT4</h2><p><a href="https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM">https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM</a></p><p>亮点是利用 GPT-4 生成的 Alpaca 数据,并做了中文的翻译</p><h2 id="8、Alpaca-CoT"><a href="#8、Alpaca-CoT" class="headerlink" title="8、Alpaca-CoT"></a>8、Alpaca-CoT</h2><p>对现在的开源数据集做了相关的整理和汇总,并且加上了自己开源的CoT数据集。懒人必备</p><p><a href="https://huggingface.co/datasets/QingyiSi/Alpaca-CoT">https://huggingface.co/datasets/QingyiSi/Alpaca-CoT</a></p><h2 id="9、其他数据"><a href="#9、其他数据" class="headerlink" title="9、其他数据"></a>9、其他数据</h2><ul><li>OpenDataLab 为国产大模型提供高质量的开放数据集<ul><li><a href="https://opendatalab.com/">https://opendatalab.com/</a></li></ul></li><li>千言数据集<ul><li><a href="https://www.luge.ai/#/">https://www.luge.ai/#/</a></li></ul></li></ul>]]></content>
<categories>
<category> 大模型 </category>
</categories>
<tags>
<tag> 大模型 </tag>
<tag> 数据集 </tag>
</tags>
</entry>
</search>