<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Your Blog</title>
        <link>https://xxx.com</link>
        <description>Your Blog Description</description>
        <lastBuildDate>Tue, 05 May 2026 16:48:27 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Feed for Node.js</generator>
        <language>en</language>
        <image>
            <title>Your Blog</title>
            <url>https://xxx.com/favicon.png</url>
            <link>https://xxx.com</link>
        </image>
        <copyright>All rights reserved 2026, Your Name</copyright>
        <item>
            <title><![CDATA[深入了解 OpenAI 的内部数据智能体]]></title>
            <link>https://xxx.com/blog/openai-in-house-data-agent</link>
            <guid>https://xxx.com/blog/openai-in-house-data-agent</guid>
            <pubDate>Wed, 28 Jan 2026 16:00:00 GMT</pubDate>
            <description><![CDATA[OpenAI 内部数据智能体的构建背景、上下文层级、记忆机制、评估体系和安全设计。]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>本文整理自 OpenAI 工程博客原文：<a href="https://openai.com/zh-Hans-CN/index/inside-our-in-house-data-agent/">深入了解 OpenAI 的内部数据智能体</a>。</p>
</blockquote>
<p>数据为系统如何学习、产品如何演进以及企业如何做出选择提供动力。但要快速、准确地获取答案，并结合相关上下文，往往比想象中更为困难。随着 OpenAI 业务范围的扩展，为了简化这项工作，我们建立了<strong>专属定制内部 AI 数据智能体</strong>，通过 OpenAI 的平台进行探索和推理。</p>
<p>我们的智能体是一款定制内部专用工具（非外部产品），围绕 OpenAI 的数据、权限和工作流而构建。我们将展示 OpenAI 如何构建和使用这一工具，以帮助大家了解 AI 如何以切实可行的方式，支持团队完成日常工作。我们用于构建和运行这一智能体的 OpenAI 工具（<a href="https://openai.com/index/introducing-codex/">Codex</a>、<a href="https://openai.com/index/introducing-gpt-5-2/">我们的 GPT‑5 旗舰模型</a>、<a href="https://platform.openai.com/docs/guides/evals">Evals API</a> 和 <a href="https://platform.openai.com/docs/guides/embeddings">Embeddings API</a>）与我们面向全球各地开发人员提供的工具相同。</p>
<p>我们的数据智能体可支持员工在几分钟（而非几天）内从问题中提取洞察数据。这降低了所有职能部门（而不仅仅是我们的数据团队）提取数据和进行细致分析的门槛。如今，OpenAI 的工程、数据科学、市场进入、财务和研究团队都依赖智能体来解答<strong>高价值数据问题</strong>。例如，它可以通过直观的自然语言格式，回答如何评估发布流程和理解业务运行状况等问题。该智能体结合了 Codex 驱动的表格级知识，以及产品和组织的背景信息。其持续学习记忆系统意味着它能够不断优化。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-01.wau-comparison.webp" alt="WAU 数据对比">
<em>屏幕截图显示用户在 2025 年 10 月 6 日询问 ChatGPT 周活跃用户 (WAU) 数据，并与 DevDay 2023 期间的数据进行比较。智能体报告称，2025 年的 WAU 约为 8 亿，2023 年的 WAU 约为 1 亿，备注信息表明变化幅度超过 7 亿，增长约 8 倍，随后还附上说明背景信息。</em></p>
<p>在这篇文章中，我们将深入分析为什么我们需要定制 AI 数据智能体，代码增强型数据上下文和自学习功能为何如此重要，以及我们在此过程中汲取的经验教训。</p>
<hr>
<h2>为什么我们需要定制工具</h2>
<p>OpenAI 的数据平台为工程、产品和研究部门的<strong>3,500 多名内部用户</strong>提供服务，涵盖<strong>70,000 个数据集</strong>中超过<strong>600 PB</strong> 的数据。在此规模下，寻找合适的表格可能是分析过程中最耗时的环节之一。</p>
<p>正如一位内部用户所解释的：</p>
<blockquote>
<p>&quot;我们有很多非常相似的表格，我曾耗费大量时间去厘清它们的不同之处，以及具体应选择哪一个表格。有的表格包括已注销用户，有的则不包括这些用户。有的表格存在重叠字段，很难分辨具体内容。&quot;</p>
</blockquote>
<p>即使选择了正确的表格，生成正确的结果也并非易事。分析师必须对表格数据和表格关系进行推理，以确保正确应用转换和筛选功能。常见的故障模式 — 多对多连接、筛选条件下推错误和未处理的空值，都可能会在不知不觉中输出无效结果。鉴于 OpenAI 庞大的组织架构，分析师不应将时间浪费在调试 SQL 语义或查询性能上：他们的重点应放在定义指标、验证假设和制定数据驱动的决策。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-02.sql-example.webp" alt="SQL 代码示例">
<em>这条 SQL 语句长达 180 多行。要确认我们是否连接正确的表格并查询相关列，并非易事。</em></p>
<hr>
<h2>工作原理</h2>
<p>让我们逐步了解 OpenAI 的智能体及其如何整理上下文并不断自我完善。</p>
<p>我们的智能体由 <a href="https://openai.com/index/introducing-gpt-5-2/">GPT‑5.2</a> 驱动，旨在通过 OpenAI 的数据平台进行推理。无论员工在何处办公，都可以使用这一工具：它能够充当 Slack 智能体、通过 Web 界面、嵌入集成开发环境 (IDE)、<a href="https://developers.openai.com/codex/mcp/">经由 MCP 连接的 Codex CLI</a> 以及直接<a href="https://platform.openai.com/docs/guides/tools-connectors-mcp">通过 MCP 连接器在 OpenAI 的内部 ChatGPT 应用中调用</a>。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-03-how-it-works.png" alt="数据智能体运作原理">
<em>标题为&quot;数据智能体运作原理&quot;的图表。Agent-UI、Local Agent-MCP、Remote Agent-MCP 和 Slack Agent 等入口点均已输入到 Agent-API。API 可连接内部数据知识和企业背景信息，与数据仓库和平台源同步，并通过 Agent-MCP 与 GPT-5.2 模型交换请求。</em></p>
<p>用户可以提出复杂的开放式问题，这通常需要多轮人工探索。以使用测试数据集的提示为例：</p>
<blockquote>
<p>&quot;For NYC taxi trips, which pickup-to-dropoff ZIP pairs are the most unreliable, with the largest gap between typical and worst-case travel times, and when does that variability occur?&quot;</p>
</blockquote>
<p>从理解问题到探索数据、运行查询和汇总结果，<strong>智能体可负责执行端到端分析</strong>。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-04-nyc-taxi-response.webp" alt="纽约市出租车分析">
<em>智能体对问题的答复。</em></p>
<p>智能体的一项核心优势在于其解决问题的推理能力。智能体并非遵循固定的脚本，而是会自行评估流程进展。如果某个中间结果出现异常（例如，由于错误的连接或筛选操作导致行数为零），智能体就会调查出现问题的具体环节，调整其方法，并再次尝试。在此过程中，它会保留完整的上下文，并在各步骤之间传递学习成果。这一<strong>闭环式自学习过程</strong>可将迭代任务从用户转移到智能体自身，从而更快输出结果，并持续提供质量远高于手动工作流的分析数据。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-05-nyc-taxi-workflow.webp" alt="纽约市出租车分析工作流">
<em>智能体可凭借推理能力，识别最不可靠的纽约市出租车上车点-下车点配对数据。</em></p>
<p>该智能体现已涵盖完整的分析工作流：发现数据、运行 SQL、发布笔记及报告。它能够理解企业内部知识，通过网络搜索获取外部信息，并不断积累记忆以实现持续优化。</p>
<hr>
<h2>上下文决定一切</h2>
<p>高质量的答案取决于<strong>丰富、准确的上下文</strong>。在缺乏上下文的情况下，即使是强大的模型也可能会输出错误结果，例如严重误估用户数量或曲解内部术语。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-06-query-slow.webp" alt="没有记忆的智能体查询缓慢">
<em>没有记忆能力的智能体，无法有效进行查询。</em></p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-07-query-fast.webp" alt="有记忆的智能体查询快速">
<em>智能体的记忆可通过定位正确的表格，加快查询速度。</em></p>
<p>为了避免这些故障模式，我们围绕<strong>多层上下文构建智能体，并以 OpenAI 的数据和机构知识为基础</strong>。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-08-context-layers.png" alt="数据智能体上下文层级">
<em>标题为&quot;数据智能体上下文层级&quot;的图表，展示了六个堆叠层级：1) 表格使用情况，2) 人工注释，3) Codex 增强，4) 机构知识，5) 记忆和 6) 运行时上下文。每一层都以金字塔形状的条形图显示。</em></p>
<h3>第 1 层：表格使用情况</h3>
<ul>
<li><strong>元数据基础：</strong> 智能体依赖模式元数据（列名和数据类型）来指导 SQL 编写，并使用表格沿袭（例如，上游和下游表格关系）来理解不同表格之间的上下文。</li>
<li><strong>查询推理：</strong> 采集历史查询有助于智能体理解如何编写查询，以及哪些表格通常相互关联。</li>
</ul>
<h3>第 2 层：人工注释</h3>
<ul>
<li><strong>精选描述：</strong> 由领域专家精心整理的表格和列相关描述，用于记录意图、语义、业务含义，以及无法从模式或过往查询中轻易推断的已知注意事项。</li>
</ul>
<p>仅靠元数据是不够的。要真正区分表格，你需要了解其创建方式及来源。</p>
<h3>第 3 层：Codex 增强</h3>
<ul>
<li>通过推导表格的代码级定义，智能体能够更深入地理解数据的实际内容。<ul>
<li>关于表格中存储的内容以及如何根据分析事件中得出的细微差别提供额外的信息。例如，它可以提供关于值的唯一性、表格数据更新频率、数据范围（例如，如果表格排除某些字段，即标识其具备相应的粒度级别）等上下文。</li>
</ul>
</li>
<li>通过展示如何在 Spark、Python 和其他数据系统中使用 SQL 以外的表格，提供更丰富的使用情况上下文。</li>
<li>这意味着，智能体可以区分内容相似但存在关键差异的表格。例如，它可以判断某个表格是否仅包含第一方 ChatGPT 流量。该上下文还会自动刷新，因此无需手动维护即可保持更新。</li>
</ul>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-09-codex-pipeline.png" alt="Codex 增强知识管道">
<em>标题为&quot;Codex 增强知识管道&quot;的图表。主流表格已应用于多个 Codex 任务，这些任务从 OpenAI 代码库中提取细节，包括表格的用途、粒度和主键、下游使用模式、替代表格选项以及数据新鲜度。</em></p>
<h3>第 4 层：机构知识</h3>
<ul>
<li>智能体可以访问 Slack、Google Docs 和 Notion，这些平台可记录关键的企业背景信息，例如产品发布、可靠性事件、内部代号和工具，以及关键指标的规范定义和计算逻辑。</li>
<li>这些文档会被采集、嵌入，并与元数据和权限一起存储。检索服务可在运行时处理访问控制和缓存，支持智能体高效且安全地获取这些信息。</li>
</ul>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-10-connector-usage.webp" alt="连接器使用量分析">
<em>用户询问连接器的使用量为何在 12 月呈现下滑趋势的屏幕截图。智能体解释称，使用量下降的原因是 2025 年 11 月 13 日出现的日志问题，导致 ChatGPT 5.1 发布后的使用量被低估。传统的遥测技术一直处于空白状态，直到更新的事件成为可信数据源。</em></p>
<h3>第 5 层：记忆</h3>
<ul>
<li>当智能体收到更正信息或发现某些数据问题存在细微差别时，它能够保存这些学习结果以供后续使用，从而在与用户交互的过程中持续改进。<ul>
<li>因此，未来的答案将以更准确的基线为切入点，而非反复处理相同的问题。</li>
<li>记忆的目标是保留并复用那些不易察觉的更正信息、过滤条件和约束限制，这些内容对于维持数据的正确性至关重要，但仅凭其他层级难以有效推断。</li>
<li>例如，在某个案例中，智能体不知道如何筛选特定的分析实验（它需要依赖与实验门中定义的特定字符串进行匹配）。在此过程中，记忆至关重要，因为这一能力可确保智能体正确筛选相关信息，而非盲目尝试进行字符串匹配。</li>
</ul>
</li>
<li>当你向智能体提出更正意见，或者当其从对话中查找学习内容时，它会提示你保存记忆，以备后续使用。<ul>
<li>用户也可以手动创建和编辑记忆。</li>
<li>记忆的范围涵盖全局和个人层面，而智能体所配备的工具将简化编辑流程。</li>
</ul>
</li>
</ul>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-11-memory-save.webp" alt="记忆保存功能">
<em>通知横幅显示&quot;数据智能体希望将 2 条学习内容保存到其记忆中&quot;，其中一个标注项为&quot;ChatGPT 顶级指标&quot;，右侧的确认消息显示&quot;已保存到全局记忆&quot;字样，且包含绿色复选标记。</em></p>
<h3>第 6 层：运行时上下文</h3>
<ul>
<li>如果表格缺乏先前的上下文或现有信息过时，智能体可以向数据仓库发起实时查询，以直接检查和查询该表格。这使其能够验证模式、实时理解数据，并做出相应的回复。</li>
<li>该智能体还能根据需要与其他数据平台系统（元数据服务、Airflow、Spark）进行对话，以获取数据仓库之外更广泛的数据上下文。</li>
</ul>
<p>我们运行每日离线管道，将表格使用情况、人工注释和 Codex 衍生的增强内容聚合成单一、规范化的表示形式。然后，使用 <a href="https://platform.openai.com/docs/api-reference/embeddings">OpenAI embeddings API</a> 将这些丰富的上下文转换为嵌入并存储以供检索。在查询时，智能体通过 <a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation">检索增强生成 (RAG)</a> 仅提取最相关的嵌入上下文，而不是扫描原始元数据或日志。这使得表格理解快速且可扩展，即使跨越数万个表格，也能保持运行时延迟的可预测性和低水平。运行时查询会根据需要实时发送到我们的数据仓库。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-12-context-retrieval.png" alt="上下文检索">
<em>标题为&quot;数据智能体中的上下文检索&quot;的图表。离线预处理层包括表格使用情况、人工注释、Codex 增强、机构知识和记忆，这些信息均已输入到 RAG 嵌入中。实时检索表明智能体可通过语义搜索或精确文本检索功能来查询数据库，以生成运行时上下文。</em></p>
<p>这些层共同确保智能体的推理基于 OpenAI 的数据、代码和机构知识，大幅减少错误并提高答案质量。</p>
<hr>
<h2>像团队成员一样思考和协作</h2>
<p>当问题清晰时，一次性答案有效，但大多数问题并非如此。通常，要得出正确结果需要反复推敲和某些方向调整。</p>
<p>智能体被设计为像一个可以与你交流的团队成员。它是对话式的、始终在线的，可以处理快速答案和迭代探索。</p>
<p>它在多轮之间保留完整的上下文，因此用户可以提出后续问题、调整意图或更改方向，而无需重复所有内容。如果智能体开始朝错误的方向发展，用户可以在分析过程中中断并重定向它，就像与一个倾听而非继续推进的人类合作者一样工作。</p>
<p>当指令不清晰或不完整时，智能体会主动提出澄清问题。如果没有提供回复，它会应用合理的默认值以继续进行。例如，如果用户询问业务增长但未指定日期范围，它可能会假设最近七天或30天。这些先验知识使其能够保持响应和非阻塞，同时仍能收敛到正确的结果。</p>
<p>因此，该智能体在当你<strong>确切知道自己想要什么</strong>（例如，&quot;告诉我关于这个表的信息&quot;）和<strong>同样强大当你正在探索</strong>（例如，&quot;我在这里看到下降，我们可以按客户类型和时间范围分解吗？&quot;）时都能很好地工作。</p>
<p>在推出后，我们观察到用户经常为常规重复工作运行相同的分析。为了加快这一过程，智能体的工作流程将重复分析打包成可重用的指令集。示例包括每周业务报告和表格验证的工作流程。通过一次编码上下文和最佳实践，工作流程简化了重复分析，并确保用户之间的结果一致。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-13-workflow-ui.webp" alt="工作流 UI">
<em>包含&quot;提出数据问题&quot;字样占位符的用户界面 (UI) 输入栏。输入栏下方是标注&quot;使用工作流&quot;字样的按钮，右侧为麦克风和发送图标。该条形图采用圆角设计，且置于深色背景之上。</em></p>
<hr>
<h2>在快速迭代的同时保持信任</h2>
<p>构建一个始终在线、不断发展的智能体意味着质量可能像改进一样容易漂移。如果没有紧密的反馈循环，回归是不可避免的且不可见的。在不破坏信任的情况下扩展能力的唯一途径是通过系统性评估。</p>
<p>在本节中，我们将讨论如何利用 <a href="https://platform.openai.com/docs/guides/evals">OpenAI 的 Evals API</a> 来衡量和保护智能体的响应质量。</p>
<p>其评估基于精心挑选的问答对集。每个问题针对我们在正确性方面非常关心的重要指标或分析模式，配有手动编写的&quot;黄金&quot;SQL 查询，该查询产生预期结果。对于每次评估，我们将自然语言问题发送到其查询生成端点，执行生成的 SQL，并将输出与预期 SQL 的结果进行比较。</p>
<p><img src="https://pub-018300d497994ec68ff9e54d3da4bc01.r2.dev/openai-data-agent/image-14-eval-pipeline.png" alt="评估管道">
<em>标题为&quot;数据智能体评估管道&quot;的图表。问答评估与预期的 SQL 同步输入到生成步骤，用于生成 SQL 和结果。OpenAI Evals 使用 dataframe 和 SQL 比较功能，比对生成的结果与预期结果，并输出评分和推理。</em></p>
<p>评估不依赖于简单的字符串匹配。生成的 SQL 在语法上可能不同但仍然是正确的，并且结果集可能包含不会实质性影响答案的额外列。为了考虑到这一点，我们比较 SQL 和结果数据，并将这些信号输入到 OpenAI 的 Evals 评分器中。评分器产生最终分数和解释，捕获正确性和可接受的变化。</p>
<p>这些评估就像单元测试，在开发期间持续运行以识别回归，就像生产环境中的金丝雀一样；这使我们能够及早发现问题，并在智能体能力扩展时自信地进行迭代。</p>
<hr>
<h2>智能体安全</h2>
<p>我们的智能体直接接入 OpenAI 现有的安全和访问控制模型。它纯粹作为接口层运行，继承和执行管理 OpenAI 数据的相同权限和护栏。</p>
<p><strong>智能体的所有访问都是严格的透传</strong>，这意味着用户只能查询他们已经有权访问的表格。当访问缺失时，它会标记这一点或回退到用户被授权使用的替代数据集。</p>
<p>最后，它专为透明而构建。像任何系统一样，它可能会犯错。它<strong>通过在每个答案旁边总结假设和执行步骤来暴露其推理过程</strong>。当执行查询时，它直接链接到基础结果，允许用户检查原始数据并验证分析的每一步。</p>
<hr>
<h2>经验教训</h2>
<p>从零开始构建我们的智能体揭示了一些关于智能体如何行为、它们在哪些方面挣扎以及什么实际上使它们在规模上可靠的实用经验教训。</p>
<h3>经验教训 #1：少即是多</h3>
<p>早期，我们将完整的工具集暴露给智能体，很快遇到了功能重叠的问题。虽然这种冗余对于特定自定义情况可能很有帮助，并且在手动调用时对人类来说更明显，但它对智能体来说很困惑。为了减少歧义并提高可靠性，我们限制和合并了某些工具调用。</p>
<h3>经验教训 #2：指导目标而非路径</h3>
<p>我们还发现，高度规定性的提示会降低结果质量。虽然许多问题具有通用分析形状，但细节差异足以使刚性指令经常将智能体推向错误的路径。通过转向更高级别的指导并依靠 GPT‑5 的推理来选择适当的执行路径，智能体变得更加稳健并产生更好的结果。</p>
<h3>经验教训 #3：意义存在于代码中</h3>
<p>模式和查询历史描述了表格的形状和用法，但其真正的意义存在于产生它的代码中。管道逻辑捕获了假设、新鲜度保证和业务意图，这些永远不会在 SQL 或元数据中体现。通过使用 Codex 爬取代码库，我们的智能体理解了数据集的实际构建方式，并能够更好地推理每个表格实际包含的内容。它可以比仅从仓库信号更准确地回答&quot;这里有什么&quot;和&quot;什么时候可以使用它&quot;。</p>
<hr>
<h2>愿景不变，工具更新</h2>
<p>我们不断努力改进我们的智能体，通过提高其处理歧义问题的能力，通过更强的验证提高其可靠性和准确性，并将其更深入地集成到工作流程中。我们相信它应该自然地融合到人们已经工作的方式中，而不是像一个单独的工具一样运作。</p>
<p>虽然我们的工具将继续受益于智能体推理、验证和自纠错的底层改进，但我们团队的使命保持不变：在 OpenAI 的数据生态系统中无缝交付快速、值得信赖的数据分析。</p>
<hr>
<h2>作者</h2>
<p><strong>Bonnie Xu、Aravind Suresh、Emma Tang</strong></p>
<h2>致谢</h2>
<p>特别鸣谢数据生产力和数据科学团队，以及众多跨职能用户的实验和反馈。</p>
<hr>
<h2>继续阅读</h2>
<ul>
<li><a href="https://openai.com/index/equip-responses-api-computer-environment/">从模型到智能体：为 Responses API 配备计算机环境</a> - 工程 - 2026年3月11日</li>
<li><a href="https://openai.com/index/beyond-rate-limits/">超越速率限制：扩大 Codex 和 Sora 的访问规模</a> - 工程 - 2026年2月13日</li>
<li><a href="https://openai.com/index/harness-engineering/">工程技术：在智能体优先的世界中利用 Codex</a> - 工程 - 2026年2月11日</li>
</ul>
]]></content:encoded>
            <author>your.email@example.com (Your Name)</author>
        </item>
        <item>
            <title><![CDATA[博客模板使用介绍]]></title>
            <link>https://xxx.com/blog/intro</link>
            <guid>https://xxx.com/blog/intro</guid>
            <pubDate>Sat, 05 Apr 2025 13:10:00 GMT</pubDate>
            <description><![CDATA[这是一个 Nextjs 博客模板，本文会介绍这个模板的一些基本用法]]></description>
            <content:encoded><![CDATA[<p>这是一个 Nextjs 博客模板，本文会介绍这个模板的一些基本用法。</p>
<h2>1. 如何编写博客</h2>
<p>这个仓库的博客文件需要放在 <code>src/content/blog</code> 目录下，可以是 markdown 文件，也可以是 mdx 文件。</p>
<p>有以下这些元数据需要用户自行根据需要进行配置：</p>
<ul>
<li><code>title</code>: 博客标题</li>
<li><code>date</code>: 博客发布日期</li>
<li><code>updated</code>: 博客更新日期</li>
<li><code>keywords</code>: 博客关键词，优化 SEO</li>
<li><code>featured</code>: 是否放在首页</li>
<li><code>summary</code>: 博客摘要</li>
</ul>
<h2>2. 博客配置</h2>
<p>博客的所有配置都集中在 <code>src/lib/config.ts</code> 文件中，这样做的好处是：</p>
<ol>
<li>集中管理：所有配置都在一个文件中，方便维护和修改</li>
<li>类型安全：使用 TypeScript 可以获得类型检查和自动补全</li>
<li>复用性：避免重复的配置散落在各个文件中</li>
<li>一致性：确保所有地方使用相同的配置值</li>
</ol>
<h3>2.1 站点基本配置</h3>
<pre><code class="language-typescript">site: {
  title: &quot;你的博客标题&quot;,
  name: &quot;你的博客名称&quot;,
  description: &quot;博客描述&quot;,
  keywords: [&quot;关键词1&quot;, &quot;关键词2&quot;],
  url: &quot;https://你的域名.com&quot;,
  baseUrl: &quot;https://你的域名.com&quot;,
  image: &quot;https://你的域名.com/og-image.png&quot;,
  favicon: {
    ico: &quot;/favicon.ico&quot;,
    png: &quot;/favicon.png&quot;,
    svg: &quot;/favicon.svg&quot;,
    appleTouchIcon: &quot;/favicon.png&quot;,
  },
  manifest: &quot;/site.webmanifest&quot;,
}
</code></pre>
<p>这些配置用于：</p>
<ul>
<li>网站的基本信息展示</li>
<li>SEO 优化</li>
<li>浏览器标签页图标</li>
<li>社交媒体分享预览</li>
</ul>
<h3>2.2 作者信息配置</h3>
<pre><code class="language-typescript">author: {
  name: &quot;你的名字&quot;,
  email: &quot;你的邮箱&quot;,
  bio: &quot;个人简介&quot;,
}
</code></pre>
<p>作者信息会用于：</p>
<ul>
<li>首页展示</li>
<li>RSS 订阅源信息</li>
<li>博客文章的作者信息</li>
</ul>
<h3>2.3 社交媒体配置</h3>
<pre><code class="language-typescript">social: {
  github: &quot;https://github.com/你的用户名&quot;,
  x: &quot;https://x.com/你的用户名&quot;,
  xiaohongshu: &quot;https://www.xiaohongshu.com/user/profile/你的ID&quot;,
  wechat: &quot;你的微信二维码图片链接&quot;,
  buyMeACoffee: &quot;https://www.buymeacoffee.com/你的用户名&quot;,
}
</code></pre>
<p>这些链接会显示在：</p>
<ul>
<li>首页的社交媒体链接区域</li>
<li>导航栏的社交媒体图标</li>
</ul>
<h3>2.4 评论系统配置</h3>
<pre><code class="language-typescript">giscus: {
  repo: &quot;你的GitHub仓库名&quot;,
  repoId: &quot;仓库ID&quot;,
  categoryId: &quot;分类ID&quot;,
}
</code></pre>
<p>使用 Giscus 作为评论系统，需要：</p>
<ol>
<li>在 GitHub 上安装 Giscus 应用</li>
<li>在你的仓库中启用 Discussions</li>
<li>获取配置信息并填入这里</li>
</ol>
<h3>2.5 导航菜单配置</h3>
<pre><code class="language-typescript">navigation: {
  main: [
    { 
      title: &quot;文章&quot;, 
      href: &quot;/blog&quot;,
    },
    // 可以添加更多导航项
  ],
}
</code></pre>
<p>这里配置网站的导航菜单，支持：</p>
<ul>
<li>普通链接</li>
<li>带子菜单的下拉菜单</li>
</ul>
<h3>2.6 SEO 配置</h3>
<pre><code class="language-typescript">seo: {
  metadataBase: new URL(&quot;https://你的域名.com&quot;),
  alternates: {
    canonical: &#39;./&#39;,
  },
  openGraph: {
    type: &quot;website&quot; as const,
    locale: &quot;zh_CN&quot;,
  },
  twitter: {
    card: &quot;summary_large_image&quot; as const,
    creator: &quot;@你的推特用户名&quot;,
  },
}
</code></pre>
<p>这些配置用于：</p>
<ul>
<li>搜索引擎优化</li>
<li>社交媒体分享卡片</li>
<li>网站元数据</li>
</ul>
<h3>2.7 RSS 订阅配置</h3>
<pre><code class="language-typescript">rss: {
  title: &quot;你的博客标题&quot;,
  description: &quot;博客描述&quot;,
  feedLinks: {
    rss2: &quot;/rss.xml&quot;,
    json: &quot;/feed.json&quot;,
    atom: &quot;/atom.xml&quot;,
  },
}
</code></pre>
<p>这些配置用于生成：</p>
<ul>
<li>RSS 2.0 订阅源</li>
<li>JSON Feed</li>
<li>Atom 订阅源</li>
</ul>
<h2>3. 如何修改配置</h2>
<ol>
<li>打开 <code>src/lib/config.ts</code> 文件</li>
<li>根据你的需求修改相应的配置项</li>
<li>保存文件后，Next.js 会自动重新构建并应用新的配置</li>
</ol>
<p>注意事项：</p>
<ul>
<li>确保所有 URL 都是有效的</li>
<li>图片链接应该是可访问的</li>
<li>社交媒体链接要填写完整的 URL</li>
<li>配置修改后，建议检查网站的：<ul>
<li>首页展示</li>
<li>导航菜单</li>
<li>SEO 信息</li>
<li>社交媒体分享效果</li>
<li>RSS 订阅源</li>
</ul>
</li>
</ul>
<h2>4. 如何生成 RSS 订阅源</h2>
<p>修改 scripts/generate-rss.js 文件中的配置，然后运行：</p>
<pre><code class="language-bash">npm run generate-rss
</code></pre>
<h2>5. 如何生成 Sitemap</h2>
<p>修改 scripts/generate-sitemap.js 文件中的配置，然后运行：</p>
<pre><code class="language-bash">npm run generate-sitemap
</code></pre>
]]></content:encoded>
            <author>your.email@example.com (Your Name)</author>
        </item>
        <item>
            <title><![CDATA[Markdown 基本用法]]></title>
            <link>https://xxx.com/blog/hello-world</link>
            <guid>https://xxx.com/blog/hello-world</guid>
            <pubDate>Sat, 05 Apr 2025 12:10:00 GMT</pubDate>
            <description><![CDATA[这篇文章包含markdown语法基本的内容。]]></description>
            <content:encoded><![CDATA[<p>这篇文章包含markdown语法基本的内容。</p>
<p>在markdown里可以使用 \ 对特殊符号进行转义。  </p>
<h1>1. 标题</h1>
<p><strong>语法</strong></p>
<pre><code class="language-md"># This is an &lt;h1&gt; tag
## This is an &lt;h2&gt; tag
### This is an &lt;h3&gt; tag
#### This is an &lt;h4&gt; tag
</code></pre>
<p><strong>实例</strong></p>
<h1>This is an h1 tag</h1>
<h2>This is an h2 tag</h2>
<h3>This is an h3 tag</h3>
<h4>This is an h4 tag</h4>
<h1>2. 强调和斜体</h1>
<p><strong>语法</strong></p>
<pre><code class="language-md">*This text will be italic*
_This will also be italic_

**This text will be bold**
__This will also be bold__
</code></pre>
<p><strong>实例</strong></p>
<p><em>This text will be italic</em>
<em>This will also be italic</em></p>
<p><strong>This text will be bold</strong>
<strong>This will also be bold</strong></p>
<h1>3. 有序列表和无序列表</h1>
<p><strong>语法</strong></p>
<pre><code class="language-md">* Item 1
* Item 2
* Item 3

1. Item 1
2. Item 2
3. Item 3
</code></pre>
<p><strong>实例</strong></p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ol>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ol>
<h1>4. 图片</h1>
<p><strong>语法</strong></p>
<pre><code>![img-name](img-url)
</code></pre>
<p><strong>实例</strong>
<img src="https://storage.guangzhengli.com/images/wechat-official-account.png" alt="微信公众号"></p>
<h1>5. 超链接</h1>
<p><strong>语法</strong></p>
<pre><code>[link-name](link-url)
</code></pre>
<p><strong>实例</strong></p>
<p><a href="https://storage.guangzhengli.com/images/wechat-official-account.png">微信公众号链接</a></p>
<h1>6. 引用</h1>
<p><strong>语法</strong></p>
<pre><code class="language-md">&gt; 引用本意是引用别人的话之类  
</code></pre>
<p><strong>实例</strong></p>
<blockquote>
<p>If you please draw me a sheep!<br>不想当将军的士兵, 不是好士兵.  </p>
</blockquote>
<h1>7. 单行代码</h1>
<p><strong>语法</strong></p>
<pre><code>`This is an inline code.`
</code></pre>
<p><strong>实例</strong></p>
<p><code>同样的单行代码, 我经常用来显示特殊名词</code></p>
<h1>8. 多行代码</h1>
<p><strong>语法</strong></p>
<pre><code class="language-md">​```js
for (var i=0; i&lt;100; i++) {
    console.log(&quot;hello world&quot; + i);
}
​```
</code></pre>
<p><strong>实例</strong></p>
<pre><code class="language-js">for (var i=0; i&lt;100; i++) {
    console.log(&quot;hello world&quot; + i);
}
</code></pre>
<p>也可以通过缩进来显示代码, 下面是示例:  </p>
<pre><code>console.loe(&quot;Hello_World&quot;);
</code></pre>
<h1>9. 表格</h1>
<h2>Table</h2>
<table>
<thead>
<tr>
<th>Table Header 1</th>
<th>Table Header 2</th>
<th>Table Header 3</th>
</tr>
</thead>
<tbody><tr>
<td>Division 1</td>
<td>Division 2</td>
<td>Division 3</td>
</tr>
<tr>
<td>Division 1</td>
<td>Division 2</td>
<td>Division 3</td>
</tr>
<tr>
<td>Division 1</td>
<td>Division 2</td>
<td>Division 3</td>
</tr>
</tbody></table>
<h1>参考链接</h1>
<ul>
<li><a href="https://guides.github.com/features/mastering-markdown/">https://guides.github.com/features/mastering-markdown/</a>  </li>
<li><a href="https://help.github.com/articles/basic-writing-and-formatting-syntax/">https://help.github.com/articles/basic-writing-and-formatting-syntax/</a></li>
</ul>
]]></content:encoded>
            <author>your.email@example.com (Your Name)</author>
        </item>
    </channel>
</rss>