<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>文章 on Koi's Blog</title><link>https://koialkaid.github.io/blog/posts/</link><description>Recent content in 文章 on Koi's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 20:30:00 +0800</lastBuildDate><atom:link href="https://koialkaid.github.io/blog/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Trellis 技术分享资料：大模型科普与 AI Coding 框架</title><link>https://koialkaid.github.io/blog/posts/trellis-tech-sharing-materials/</link><pubDate>Tue, 21 Apr 2026 20:30:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/trellis-tech-sharing-materials/</guid><description>&lt;h1 id="l站原帖链接"&gt;L站原帖链接&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linux.do/t/topic/2017019"&gt;https://linux.do/t/topic/2017019&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="trellis-codex-app"&gt;&lt;strong&gt;Trellis-codex app&lt;/strong&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;配置codex的自动演进config设置（进行中）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://oa.feishu.cn/report/v3/api/File?tenantId=6786976427968299009&amp;amp;app_id=cli_9d0208a7d1bbd10c&amp;amp;key=e2d0b881e4cd4962ba920795ffbd3a0f.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://oa.feishu.cn/report/v3/api/File?tenantId=6786976427968299009&amp;amp;app_id=cli_9d0208a7d1bbd10c&amp;amp;key=9b1afadc6fa24671ba98fc9ce150502f.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;适配codex app的trellis指令大全+使用说明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://oa.feishu.cn/report/v3/api/File?tenantId=6786976427968299009&amp;amp;app_id=cli_9d0208a7d1bbd10c&amp;amp;key=d9f5d82264e5413ebda1a762603ecbe5.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始化指令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://oa.feishu.cn/report/v3/api/File?tenantId=6786976427968299009&amp;amp;app_id=cli_9d0208a7d1bbd10c&amp;amp;key=0b8a2660934f47f7807e9e362f1f37e6.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果需求不明确，可以使⽤ /brainstorm 命令进⾏头脑风暴（从Harness Engineering，再到 Trellis 落地中，有详细的使用流程）&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="指令"&gt;指令&lt;/h1&gt;
&lt;p&gt;指令的作用：&lt;em&gt;&lt;strong&gt;告诉 AI：现在进入哪一种工作模式。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="start打开hooks了不必手动"&gt;$start：打开hooks了，不必手动&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;让 AI 先读当前项目的上下文，再开始工作。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;该用的时候：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新开一个旧项目会话，想让 AI 先接上状态&lt;/li&gt;
&lt;li&gt;从老线程回来，怕 AI 不记得上下文&lt;/li&gt;
&lt;li&gt;AI 明显不知道当前项目情况&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="brainstorm需求分析前"&gt;$Brainstorm：需求分析前&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;需求不清的时候，不急着写代码，先一起把事情想清楚。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;该用的时候：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你只知道“大概要做什么”，但还没想清楚&lt;/li&gt;
&lt;li&gt;一个需求很复杂，不知道怎么拆&lt;/li&gt;
&lt;li&gt;你担心 AI 一上来就写错方向&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="before-dev写修改代码钱前是代码规范单人基本不必考虑"&gt;$Before Dev：写/修改代码钱前，是代码规范（单人基本不必考虑）&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;开始写代码前，让 AI 先读项目规范。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;该用的时候：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你准备开始正式改代码&lt;/li&gt;
&lt;li&gt;尤其是新功能、重构、多文件修改&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="check检查代码是否规范单人不必考虑"&gt;$Check：检查代码是否规范（单人不必考虑）&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;代码写完后，按项目规范检查一遍。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;它更偏向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码有没有符合规范&lt;/li&gt;
&lt;li&gt;有没有明显跑偏&lt;/li&gt;
&lt;li&gt;有没有和项目已有风格不一致&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;该用的时候：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你写完一轮代码&lt;/li&gt;
&lt;li&gt;想先让 AI 做一次自查&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="finish-work判断开发是否完成可不可以进入测试阶段"&gt;$Finish Work：判断开发是否完成，可不可以进入测试阶段&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;准备结束这轮工作前，做一次收尾总检查。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它会关注什么？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这轮改动有没有漏检查&lt;/li&gt;
&lt;li&gt;是否需要补规范&lt;/li&gt;
&lt;li&gt;是否有未收尾的问题&lt;/li&gt;
&lt;li&gt;是否适合进入测试/提交阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;该用的时候：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你准备结束当前这轮开发&lt;/li&gt;
&lt;li&gt;你觉得“差不多做完了”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="record-session开发完成后的状态总结记录"&gt;$Record Session：开发完成后的状态总结记录&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;把这次工作的结果记下来，方便下次继续。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;什么时候用？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是非常重要的一点：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;通常在你已经测试过、并且已经提交之后再用。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;也就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;开发完成&lt;/li&gt;
&lt;li&gt;你自己验证/测试&lt;/li&gt;
&lt;li&gt;你提交代码&lt;/li&gt;
&lt;li&gt;再 record-session&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="check-cross-layer检查适不适合改动做支线任务修改代码"&gt;$Check Cross Layer：检查适不适合改动，做支线任务/修改代码&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;它是什么意思？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;检查这次改动会不会牵一发动全身。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="它适合什么场景"&gt;&lt;strong&gt;它适合什么场景？&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;改接口&lt;/li&gt;
&lt;li&gt;改前后端数据流&lt;/li&gt;
&lt;li&gt;改数据库结构&lt;/li&gt;
&lt;li&gt;改跨模块逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="update-spec记录规范"&gt;$Update Spec：记录规范&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;把这次工作里学到的新规范，写回项目规范库。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;它为什么重要？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为 Trellis 不只是帮你当下写代码，&lt;br&gt;
它还想让项目的规则慢慢沉淀下来。&lt;/p&gt;
&lt;p&gt;比如你这次发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某类接口必须这么写&lt;/li&gt;
&lt;li&gt;某种目录结构以后都统一&lt;/li&gt;
&lt;li&gt;某种坑以后都要避开&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些都应该写进 .trellis/spec/&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;什么时候用？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这次开发形成了稳定规则&lt;/li&gt;
&lt;li&gt;你不希望以后再重复解释&lt;/li&gt;
&lt;li&gt;你想让 AI 下次自动遵守&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="break-loop死循环后重新分析"&gt;$Break Loop：死循环后重新分析&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;当你反复修来修去都不对时，停下来做一次根因分析。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;什么时候用？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修 A 坏 B&lt;/li&gt;
&lt;li&gt;修 B 坏 A&lt;/li&gt;
&lt;li&gt;连续两三轮都在兜圈子&lt;/li&gt;
&lt;li&gt;你怀疑自己只是在“止血”，没找到根因&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="onboard"&gt;$Onboard&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;系统学习这个 Trellis 项目怎么工作。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>LLM 基础机制：把“会用 API”变成“理解模型边界”</title><link>https://koialkaid.github.io/blog/posts/llm-foundations-for-agent-engineer/</link><pubDate>Mon, 20 Apr 2026 22:30:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/llm-foundations-for-agent-engineer/</guid><description>&lt;h1 id="llm-基础机制"&gt;&lt;strong&gt;LLM 基础机制&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;现在的状态非常典型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经会用一些 AI 工具；&lt;/li&gt;
&lt;li&gt;也已经接触 API；&lt;/li&gt;
&lt;li&gt;甚至已经在工作里和 AI 一起做事；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这并不等于真的理解模型在做什么。&lt;/p&gt;
&lt;p&gt;如果这一层不先补上，后面学 Prompt、Function Calling、Tool Use、Agent 工作流，都会很容易变成“会操作，不会解释”。&lt;/p&gt;
&lt;p&gt;所以这篇文章的目标不是教我怎么调用某个接口，而是帮我回答一个更关键的问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;当我说“我在用大模型”时，我到底在用什么？&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="一-llm"&gt;一、 LLM&lt;/h2&gt;
&lt;p&gt;很多人在初学阶段都会自然地产生一种错觉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有了模型，系统就自动“聪明”了；&lt;/li&gt;
&lt;li&gt;模型能回答问题，所以它也应该能承担决策、执行、状态管理这些工作；&lt;/li&gt;
&lt;li&gt;只要 Prompt 写好，整体系统就会自然变稳。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类错觉之所以常见，是因为模型的输出看起来太像“理解”。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLM 是系统中的一个能力模块，不是整个系统。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="1-模型擅长的是什么"&gt;1. 模型擅长的是什么&lt;/h3&gt;
&lt;p&gt;大模型最擅长的，其实是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据输入上下文预测下一个最可能的 token；&lt;/li&gt;
&lt;li&gt;在足够多的训练数据支持下，生成结构上合理、语义上看起来连贯的输出；&lt;/li&gt;
&lt;li&gt;对复杂语言任务进行模式匹配、归纳和重组。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换成更工程化的话说，它像是一个：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;强大的语言压缩与展开器。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;你给它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;问题&lt;/li&gt;
&lt;li&gt;上下文&lt;/li&gt;
&lt;li&gt;约束&lt;/li&gt;
&lt;li&gt;示例&lt;/li&gt;
&lt;li&gt;工具结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它会在这些输入之上生成一个“最像合理答案”的输出。&lt;/p&gt;
&lt;h3 id="2-模型不擅长的是什么"&gt;2. 模型不擅长的是什么&lt;/h3&gt;
&lt;p&gt;它并不天然擅长：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期稳定保存状态；&lt;/li&gt;
&lt;li&gt;精确记忆很久以前的细节；&lt;/li&gt;
&lt;li&gt;永远遵守你的格式约束；&lt;/li&gt;
&lt;li&gt;自动知道何时调用外部工具；&lt;/li&gt;
&lt;li&gt;为复杂任务自己维持完整的执行链路；&lt;/li&gt;
&lt;li&gt;保证在每一次请求中都可靠一致。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;模型可以提供“智能”，但不能直接替代系统设计。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这就是为什么招聘里会强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务拆解&lt;/li&gt;
&lt;li&gt;Tool Use&lt;/li&gt;
&lt;li&gt;多步骤执行&lt;/li&gt;
&lt;li&gt;记忆机制&lt;/li&gt;
&lt;li&gt;状态管理&lt;/li&gt;
&lt;li&gt;失败兜底&lt;/li&gt;
&lt;li&gt;稳定性与成本控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为一旦你进入真实产品场景，你就会发现：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“让模型答出来”&lt;/strong&gt; 和 &lt;strong&gt;“让产品稳定运行”&lt;/strong&gt; 是完全不同的两件事。&lt;/p&gt;
&lt;h2 id="二llm-的最小工作方式输入上下文输出"&gt;二、LLM 的最小工作方式：输入、上下文、输出&lt;/h2&gt;
&lt;p&gt;如果要理解模型，最先要弄清楚的不是框架，而是最基本的工作单元。&lt;/p&gt;
&lt;h3 id="1-输入不是一句问题而是一整个消息结构"&gt;1. 输入不是一句问题，而是一整个消息结构&lt;/h3&gt;
&lt;p&gt;在今天大多数聊天型模型接口里，输入往往不是简单的一句字符串，而是一组消息。&lt;/p&gt;
&lt;p&gt;最常见的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;system&lt;/li&gt;
&lt;li&gt;user&lt;/li&gt;
&lt;li&gt;assistant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人一开始会把它们当成“格式要求”，但其实它们背后代表的是&lt;strong&gt;角色分工&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id="system"&gt;system&lt;/h4&gt;
&lt;p&gt;负责给模型设定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;角色&lt;/li&gt;
&lt;li&gt;任务边界&lt;/li&gt;
&lt;li&gt;输出规范&lt;/li&gt;
&lt;li&gt;价值倾向或行为限制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更像是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;系统级指令或规则背景。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="user"&gt;user&lt;/h4&gt;
&lt;p&gt;是这次真实提问者提供的信息。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我想让你做什么&lt;/li&gt;
&lt;li&gt;我关心什么&lt;/li&gt;
&lt;li&gt;当前场景是什么&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="assistant"&gt;assistant&lt;/h4&gt;
&lt;p&gt;则是历史对话里模型自己之前说过的话。&lt;/p&gt;
&lt;p&gt;它的意义不只是“聊天记录”，而是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;把前面的推理和承诺重新放回当前上下文里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2-为什么这点重要"&gt;2. 为什么这点重要&lt;/h3&gt;
&lt;p&gt;因为很多后续问题都源自你有没有意识到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型看到的不是“你脑海里的意图”&lt;/li&gt;
&lt;li&gt;模型只看到这次你喂进去的消息结构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这句话听起来简单，但它会直接改变你对很多现象的理解。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么模型明明“上一轮答应了”，这一轮又变了；&lt;/li&gt;
&lt;li&gt;为什么 system prompt 里写了规则，它还是没完全照做；&lt;/li&gt;
&lt;li&gt;为什么上下文一长，回答开始跑偏。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题本质上都和：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;模型到底看到了什么输入&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;有关。&lt;/p&gt;
&lt;h2 id="三上下文为什么是核心而不是附属概念"&gt;三、上下文为什么是核心，而不是附属概念&lt;/h2&gt;
&lt;p&gt;“上下文”这个词很常见，但很容易被讲得过于轻飘。&lt;/p&gt;
&lt;p&gt;对工程来说，它其实是最核心的问题之一。&lt;/p&gt;
&lt;h3 id="1-上下文决定模型当前的世界观"&gt;1. 上下文决定模型当前的世界观&lt;/h3&gt;
&lt;p&gt;模型并不会真正“记住”你之前说过什么。&lt;/p&gt;</description></item><item><title>从使用 AI 到理解 Agent：学习任务与进度规划</title><link>https://koialkaid.github.io/blog/posts/agent-job-study-plan-progress/</link><pubDate>Mon, 20 Apr 2026 21:00:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/agent-job-study-plan-progress/</guid><description>&lt;h2 id="一起点"&gt;一、起点&lt;/h2&gt;
&lt;h3 id="1-已经接触过什么"&gt;1. 已经接触过什么&lt;/h3&gt;
&lt;p&gt;日常会使用 Codex app，也接触 API、号池这类东西。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我知道模型可以被接入使用；&lt;/li&gt;
&lt;li&gt;我知道 API 是真实工作流的一部分；&lt;/li&gt;
&lt;li&gt;我也已经在用 AI 参与一些实际任务，而不是只停留在看概念。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-真正缺什么"&gt;2. 真正缺什么&lt;/h3&gt;
&lt;p&gt;缺的不是“再多用几个工具”，而是下面这些更底层的理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么 Agent 不是简单的“聊天 + 调 API”；&lt;/li&gt;
&lt;li&gt;Tool Use / Function Calling 到底解决什么问题；&lt;/li&gt;
&lt;li&gt;上下文、记忆、规划、多步执行之间是什么关系；&lt;/li&gt;
&lt;li&gt;为什么一个看起来能跑的 Demo，离真实产品还差很远；&lt;/li&gt;
&lt;li&gt;延迟、稳定性、成本、失败兜底为什么会在招聘里被反复强调。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-不适合的学习方式"&gt;3. 不适合的学习方式&lt;/h3&gt;
&lt;p&gt;基于这个起点，不适合直接走两条路：&lt;/p&gt;
&lt;h4 id="不适合路线一上来就刷框架"&gt;不适合路线一：上来就刷框架&lt;/h4&gt;
&lt;p&gt;比如一上来就学：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LangChain
n- LangGraph&lt;/li&gt;
&lt;li&gt;Coze&lt;/li&gt;
&lt;li&gt;各种 workflow builder&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;框架会让我“看起来做了很多”，但不代表我真正理解了底层机制。&lt;/p&gt;
&lt;h4 id="不适合路线二上来就做重项目"&gt;不适合路线二：上来就做重项目&lt;/h4&gt;
&lt;p&gt;我当然可以立刻做项目，但如果理论没有补起来，项目大概率会变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能跑&lt;/li&gt;
&lt;li&gt;但解释不清楚&lt;/li&gt;
&lt;li&gt;换一个场景就不会做&lt;/li&gt;
&lt;li&gt;面试时说不明白为什么这样设计&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="二往-agent--ai-工程师方向转"&gt;二、往 Agent / AI 工程师方向转&lt;/h2&gt;
&lt;p&gt;如果我的目标只是“把 AI 用顺一点”，那我可能只需要继续熟悉工具、优化提示词、积累一些 workflow 使用经验。&lt;/p&gt;
&lt;p&gt;但我现在更偏向的是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;尽快往 Agent / AI 工程师方向转。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;要开始补：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术原理&lt;/li&gt;
&lt;li&gt;系统意识&lt;/li&gt;
&lt;li&gt;能力分层&lt;/li&gt;
&lt;li&gt;工程语境里的抽象能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，我不是想成为“会用 AI 的人”，而是想成为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;能理解 Agent 为什么这样工作，并逐步有能力把它做成产品的人。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="三为什么把学习重点放在理论上"&gt;三、为什么把学习重点放在理论上&lt;/h2&gt;
&lt;h3 id="1-现在最需要的是概念地图"&gt;1. 现在最需要的是概念地图&lt;/h3&gt;
&lt;p&gt;需要先把这些词真正分清：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM&lt;/li&gt;
&lt;li&gt;Prompt&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Tool Use&lt;/li&gt;
&lt;li&gt;Function Calling&lt;/li&gt;
&lt;li&gt;Agent&lt;/li&gt;
&lt;li&gt;Workflow&lt;/li&gt;
&lt;li&gt;Planning&lt;/li&gt;
&lt;li&gt;RAG&lt;/li&gt;
&lt;li&gt;Multi-agent&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-需要的是工程语境中的理论"&gt;2. 需要的是“工程语境中的理论”&lt;/h3&gt;
&lt;p&gt;不是去读纯学术课，也不是要从 Transformer 数学推导开始。&lt;/p&gt;
&lt;p&gt;真正要补的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个概念在实际系统里解决什么问题；&lt;/li&gt;
&lt;li&gt;它和别的模块怎么连接；&lt;/li&gt;
&lt;li&gt;为什么招聘里会看重它；&lt;/li&gt;
&lt;li&gt;它的边界在哪里；&lt;/li&gt;
&lt;li&gt;它出问题时通常会表现成什么样。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;理论优先，但每个理论都必须带着工程问题一起理解。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="四学习主线怎么排先学什么后学什么"&gt;四、学习主线怎么排：先学什么，后学什么&lt;/h2&gt;
&lt;h3 id="第一阶段-agent-的基础骨架"&gt;第一阶段： Agent 的基础骨架&lt;/h3&gt;
&lt;h4 id="第一组llm-基础机制"&gt;第一组：LLM 基础机制&lt;/h4&gt;
&lt;p&gt;要搞清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型的输入输出到底是什么；&lt;/li&gt;
&lt;li&gt;system / user / assistant 为什么这样分；&lt;/li&gt;
&lt;li&gt;上下文为什么会影响结果；&lt;/li&gt;
&lt;li&gt;token、窗口长度、成本、延迟之间是什么关系；&lt;/li&gt;
&lt;li&gt;为什么模型并不真正“理解”，却仍然能完成很多任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="第二组prompt--上下文--输出约束"&gt;第二组：Prompt / 上下文 / 输出约束&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Prompt 到底在控制什么；&lt;/li&gt;
&lt;li&gt;为什么有时约束写了但模型不听；&lt;/li&gt;
&lt;li&gt;为什么多轮对话会越来越乱；&lt;/li&gt;
&lt;li&gt;如何让输出更稳定；&lt;/li&gt;
&lt;li&gt;什么时候应该让模型自由回答，什么时候应该强结构化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="第三组function-calling--tool-use"&gt;第三组：Function Calling / Tool Use&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;能不能调用工具；&lt;/li&gt;
&lt;li&gt;能不能基于工具结果继续执行；&lt;/li&gt;
&lt;li&gt;能不能把用户问题变成一串可执行动作。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第二阶段理解-agent-为什么能多步执行"&gt;第二阶段：理解 Agent 为什么能多步执行&lt;/h3&gt;
&lt;h4 id="1-任务拆解"&gt;1. 任务拆解&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;一个复杂任务为什么要拆成多个步骤；&lt;/li&gt;
&lt;li&gt;拆得太粗和拆得太细分别会出什么问题；&lt;/li&gt;
&lt;li&gt;哪些步骤该交给模型，哪些步骤该交给规则或工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-工作流与规划"&gt;2. 工作流与规划&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;什么叫 planning；&lt;/li&gt;
&lt;li&gt;什么只是顺序执行，什么才算真正的规划；&lt;/li&gt;
&lt;li&gt;一个 Agent 的“思考”本质上是不是状态流转。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-多步执行中的状态"&gt;3. 多步执行中的状态&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;当前步骤是什么；&lt;/li&gt;
&lt;li&gt;上一步结果如何影响下一步；&lt;/li&gt;
&lt;li&gt;中间状态应该保存什么；&lt;/li&gt;
&lt;li&gt;失败时怎么继续而不是从零重来。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第三阶段再补更热更容易被误学的词"&gt;第三阶段：再补更热、更容易被误学的词&lt;/h3&gt;
&lt;h4 id="1-rag"&gt;1. RAG&lt;/h4&gt;
&lt;p&gt;我现在工作里其实还没有明显的知识库 / 检索增强场景，所以 RAG 不是第一优先级。&lt;/p&gt;</description></item><item><title>从一则招聘出发：Agent 工程师学习路线（详细版）</title><link>https://koialkaid.github.io/blog/posts/agent-job-learning-roadmap/</link><pubDate>Fri, 17 Apr 2026 20:30:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/agent-job-learning-roadmap/</guid><description>&lt;p&gt;如果把那份 JD 压缩成一句话，它想找的并不是“会调模型 API 的人”，而是能把大模型能力做成&lt;strong&gt;可执行、可维护、可上线的 Agent 系统&lt;/strong&gt;的人。&lt;/p&gt;
&lt;p&gt;要逐步补齐这几类能力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;LLM / Agent 基础机制理解&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Use / Function Calling / 工作流编排&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后端与系统工程能力&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG / 长上下文 / 状态管理&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稳定性、成本、延迟与产品化能力&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面我会按“优先级 → 学习顺序 → 阶段目标 → 产出物”的方式展开。&lt;/p&gt;
&lt;h2 id="一先判断这份-jd-真正要的是什么"&gt;一、先判断：这份 JD 真正要的是什么&lt;/h2&gt;
&lt;p&gt;先把招聘需求重新翻译成人话。&lt;/p&gt;
&lt;h3 id="1-它不是单纯的大模型应用岗"&gt;1. 它不是单纯的大模型应用岗&lt;/h3&gt;
&lt;p&gt;如果只是“接 OpenAI 接口、做个对话框、写点 Prompt”，其实不需要写出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务拆解&lt;/li&gt;
&lt;li&gt;决策逻辑&lt;/li&gt;
&lt;li&gt;Tool 调用&lt;/li&gt;
&lt;li&gt;多步骤执行&lt;/li&gt;
&lt;li&gt;记忆机制&lt;/li&gt;
&lt;li&gt;状态管理&lt;/li&gt;
&lt;li&gt;任务调度&lt;/li&gt;
&lt;li&gt;失败兜底&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些词一出现，说明岗位关注点已经从“模型调用”上升到了“&lt;strong&gt;系统设计&lt;/strong&gt;”。&lt;/p&gt;
&lt;h3 id="2-它也不是纯算法岗"&gt;2. 它也不是纯算法岗&lt;/h3&gt;
&lt;p&gt;JD 并没有重点要求你训练模型、调底层参数、做学术论文复现，而是反复强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API / function calling&lt;/li&gt;
&lt;li&gt;外部能力接入&lt;/li&gt;
&lt;li&gt;服务架构&lt;/li&gt;
&lt;li&gt;状态管理&lt;/li&gt;
&lt;li&gt;工程落地&lt;/li&gt;
&lt;li&gt;与产品、客户端、算法协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它的理想人选更像：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;懂模型边界的工程师，而不是只会调包的应用开发，也不是只做算法的研究员。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="3-它最核心的能力其实是抽象--落地"&gt;3. 它最核心的能力其实是“抽象 + 落地”&lt;/h3&gt;
&lt;p&gt;我觉得这份 JD 最值钱的一句是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;能从用户问题出发，抽象为 Agent 可执行的流程。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;因为这句话本质上要求你具备三层能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;理解真实问题&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;抽象成流程&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把流程落到系统&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是为什么后面的学习路线不能只列技术名词，而要围绕“问题 → 流程 → 系统”来安排。&lt;/p&gt;
&lt;h2 id="二学习优先级什么必须先学什么可以后置"&gt;二、学习优先级：什么必须先学，什么可以后置&lt;/h2&gt;
&lt;p&gt;如果完全从零开始，最容易犯的错误是顺着热词学：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;今天看 multi-agent&lt;/li&gt;
&lt;li&gt;明天学 RAG&lt;/li&gt;
&lt;li&gt;后天跑 Coze&lt;/li&gt;
&lt;li&gt;再后天试 LangGraph&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后会变成“每个词都知道一点，但没有一条能独立做成产品的主线”。&lt;/p&gt;
&lt;p&gt;所以我建议按下面这个优先级来学。&lt;/p&gt;
&lt;h3 id="第一层必须尽快掌握"&gt;第一层：必须尽快掌握&lt;/h3&gt;
&lt;p&gt;这部分决定你能不能进入岗位要求的基本线。&lt;/p&gt;
&lt;h4 id="1-llm-调用基础"&gt;1. LLM 调用基础&lt;/h4&gt;
&lt;p&gt;至少要熟悉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chat Completions / Responses 这类调用模式&lt;/li&gt;
&lt;li&gt;system / user / assistant 角色结构&lt;/li&gt;
&lt;li&gt;token、上下文长度、温度、成本这些最基本概念&lt;/li&gt;
&lt;li&gt;流式输出与非流式输出差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目标不是成为 API 文档朗读者，而是知道：&lt;/p&gt;</description></item><item><title>一则招聘</title><link>https://koialkaid.github.io/blog/posts/a-job-posting/</link><pubDate>Wed, 15 Apr 2026 18:02:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/a-job-posting/</guid><description>&lt;p&gt;&lt;a href="https://linux.do/t/topic/1966138"&gt;深圳智能硬件公司招聘 AI Agent 工程师 （25k+） - 非我莫属 - LINUX DO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;工作地点： 深圳&lt;br&gt;
所属团队： 产品与技术团队&lt;/p&gt;
&lt;p&gt;职位描述&lt;br&gt;
我们正在构建以 Agent 为核心的产品：它不仅响应用户输入，还能理解上下文、拆解任务，并在多个能力之间做决策与执行。&lt;br&gt;
这个岗位的核心，不是简单接入大模型，而是设计和实现一套可扩展、可演进的 Agent 系统——让 AI 能力在真实产品中稳定运行，而不是停留在 Demo。&lt;br&gt;
你将参与定义：一个 Agent 应该如何思考、如何调用工具、如何在复杂场景中持续工作。&lt;/p&gt;
&lt;p&gt;主要职责&lt;br&gt;
设计并实现 Agent 系统架构（任务拆解、决策逻辑、Tool 调用、多步骤执行等）；&lt;br&gt;
构建大模型调用链路（Prompt 设计、上下文管理、多轮对话、记忆机制等）；&lt;br&gt;
设计 Tool Use 体系（API / function calling / 外部能力接入），提升 Agent 的可执行性；&lt;br&gt;
参与 AI 产品核心能力设计，将模型能力转化为稳定、可控的用户体验；&lt;br&gt;
优化 Agent 的稳定性与效果（响应质量、延迟、成本控制、失败兜底等）；&lt;br&gt;
与客户端、算法团队协作，推动 Agent 在真实业务中的落地与迭代；&lt;br&gt;
持续探索前沿 Agent 架构（multi-agent、planning、RAG 等）并评估落地价值。&lt;br&gt;
任职要求&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI / Agent 核心能力（必须）&lt;br&gt;
有 LLM 应用开发经验（OpenAI / Claude / Gemini / Qwen 等）；&lt;br&gt;
理解 Agent 的核心机制（任务拆解、规划、Tool Use、多轮推理等）；&lt;br&gt;
熟悉 Prompt Engineering、Function Calling、上下文管理等关键能力；&lt;br&gt;
有实际 Agent / Copilot / 对话系统项目经验优先。&lt;/li&gt;
&lt;li&gt;系统与架构能力&lt;br&gt;
能独立设计复杂系统结构（而不仅是调用 API）；&lt;br&gt;
理解 Agent 在真实产品中的问题（延迟、稳定性、不可控性等）；&lt;br&gt;
后端开发经验（Python / Node.js 等），具备工程落地能力；&lt;br&gt;
熟悉服务架构（API 设计、状态管理、任务调度等）。&lt;/li&gt;
&lt;li&gt;产品理解与抽象能力&lt;br&gt;
能从用户问题出发，抽象为 Agent 可执行的流程；&lt;br&gt;
理解“能力 ≠ 体验”，能够将模型能力转化为可用产品；&lt;br&gt;
对复杂交互（对话、任务流、推荐等）有基本判断；&lt;br&gt;
能在不确定性中快速试验并收敛方案。&lt;/li&gt;
&lt;li&gt;工程与协作能力&lt;br&gt;
代码结构清晰，有良好的工程规范与可维护性意识；&lt;br&gt;
能与产品、设计、客户端工程师高效协作；&lt;br&gt;
具备强自驱力，能够独立推进复杂问题落地；&lt;br&gt;
持续关注 AI 技术发展，并能判断其实际价值。&lt;br&gt;
加分项&lt;br&gt;
有 multi-agent 系统设计经验；&lt;br&gt;
有 RAG（检索增强生成）、知识库或长上下文处理经验；&lt;br&gt;
使用过 LangChain、LangGraph、AutoGen、Coze 等框架；&lt;br&gt;
有 AI 产品从 0 到 1 落地经验；&lt;br&gt;
有性能优化或成本优化经验（如 token 控制、缓存策略等）。&lt;br&gt;
我们能提供&lt;br&gt;
核心位置： Agent 是产品中枢，你将参与其核心设计；&lt;br&gt;
问题深度： 面对的是“如何让 AI 真正可用”的系统级问题；&lt;br&gt;
成长空间： 从工程实现走向 AI 产品架构的路径；&lt;br&gt;
团队方式： 小团队快速迭代，直接影响产品方向。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>md格式大全</title><link>https://koialkaid.github.io/blog/posts/md-format-guide/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0800</pubDate><guid>https://koialkaid.github.io/blog/posts/md-format-guide/</guid><description>&lt;p&gt;这篇文章用来集中记录 Markdown 的常见格式。&lt;/p&gt;
&lt;p&gt;以后写博客时，如果忘了某个格式怎么写，可以直接回到这里查。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：不同平台对 Markdown 的支持略有差异。这里以个人博客、GitHub 常见写法和 Hugo 常用 Markdown 为主。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-标题"&gt;1. 标题&lt;/h2&gt;
&lt;p&gt;Markdown 用 &lt;code&gt;#&lt;/code&gt; 表示标题。&lt;br&gt;
&lt;code&gt;#&lt;/code&gt; 越多，标题级别越低。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 一级标题
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 二级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### 三级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#### 四级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;##### 五级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;###### 六级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;h1 id="一级标题示例"&gt;一级标题示例&lt;/h1&gt;
&lt;h2 id="二级标题示例"&gt;二级标题示例&lt;/h2&gt;
&lt;h3 id="三级标题示例"&gt;三级标题示例&lt;/h3&gt;
&lt;h4 id="四级标题示例"&gt;四级标题示例&lt;/h4&gt;
&lt;h5 id="五级标题示例"&gt;五级标题示例&lt;/h5&gt;
&lt;h6 id="六级标题示例"&gt;六级标题示例&lt;/h6&gt;
&lt;h2 id="2-段落"&gt;2. 段落&lt;/h2&gt;
&lt;p&gt;普通文字直接写就是段落。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;这是第一段。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;这是第二段。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;p&gt;这是第一段。&lt;/p&gt;
&lt;p&gt;这是第二段。&lt;/p&gt;
&lt;h2 id="3-换行"&gt;3. 换行&lt;/h2&gt;
&lt;p&gt;Markdown 里普通回车不一定会变成换行。&lt;br&gt;
如果想在同一个段落里强制换行，可以在行尾加两个空格，或者直接空一行分成两个段落。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;第一行后面有两个空格 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;第二行会换行显示
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;p&gt;第一行后面有两个空格&lt;br&gt;
第二行会换行显示&lt;/p&gt;
&lt;h2 id="4-粗体斜体粗斜体"&gt;4. 粗体、斜体、粗斜体&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;**粗体**
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="font-style:italic"&gt;*斜体*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="font-style:italic"&gt;**&lt;/span&gt;*粗斜体***
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;粗体&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;斜体&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;粗斜体&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="5-删除线"&gt;5. 删除线&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~~这是一段被删除的文字~~
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;p&gt;&lt;del&gt;这是一段被删除的文字&lt;/del&gt;&lt;/p&gt;
&lt;h2 id="6-行内代码"&gt;6. 行内代码&lt;/h2&gt;
&lt;p&gt;用反引号包住一小段代码或命令。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;使用 &lt;span style="color:#e6db74"&gt;`hugo server`&lt;/span&gt; 启动本地预览。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;hugo server&lt;/code&gt; 启动本地预览。&lt;/p&gt;
&lt;h2 id="7-代码块"&gt;7. 代码块&lt;/h2&gt;
&lt;p&gt;用三个反引号包住多行代码。&lt;br&gt;
可以在开头标注语言，方便高亮。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;JavaScript 示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;hello&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`Hello, &lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;hello&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;Markdown&amp;#39;&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;HTML 示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;article&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;标题&amp;lt;/&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;正文&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;article&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="8-引用"&gt;8. 引用&lt;/h2&gt;
&lt;p&gt;用 &lt;code&gt;&amp;gt;&lt;/code&gt; 表示引用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;&amp;gt; &lt;/span&gt;&lt;span style="font-style:italic"&gt;这是一段引用。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际效果：&lt;/p&gt;</description></item></channel></rss>