<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI 工具试用 on 扎塔-Zata</title><link>https://www.zata.cc/tags/ai-%E5%B7%A5%E5%85%B7%E8%AF%95%E7%94%A8/</link><description>Recent content in AI 工具试用 on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Thu, 24 Sep 2026 17:09:06 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/ai-%E5%B7%A5%E5%85%B7%E8%AF%95%E7%94%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>everything-claude-code</title><link>https://www.zata.cc/p/everything-claude-code/</link><pubDate>Tue, 17 Mar 2026 10:53:29 +0800</pubDate><guid>https://www.zata.cc/p/everything-claude-code/</guid><description>&lt;img src="https://www.zata.cc/p/everything-claude-code/images/index/index.png" alt="Featured image of post everything-claude-code" />&lt;h1 id="安装和配置">安装和配置
&lt;/h1>&lt;h1 id="注意事项">注意事项
&lt;/h1>&lt;h2 id="概念">概念
&lt;/h2>&lt;p>更准确地说，它是把一整套 AI 开发工作流打包成仓库和插件，主要包括：&lt;/p>
&lt;ul>
&lt;li>agents：子代理角色，比如规划、架构、代码审查、安全审查&lt;/li>
&lt;li>skills：可复用工作流，比如 TDD、持续学习、搜索优先、安全检查、前后端模式&lt;/li>
&lt;li>commands：斜杠命令，比如 /plan、/verify、/code-review、/multi-execute&lt;/li>
&lt;li>hooks / rules / mcp-configs：自动化钩子、规范规则、MCP 外部工具接入&lt;/li>
&lt;/ul>
&lt;p>它的核心目标是把 AI 编码助手从“会聊天的工具”变成“更像工程团队的系统”：更会规划、记忆上下文、做验证循环、自动审查、安全扫
描和多代理协作。&lt;/p>
&lt;p>如果你问“适合拿来干嘛”，答案是：&lt;/p>
&lt;ul>
&lt;li>搭一套更强的 Claude Code/Codex 开发环境&lt;/li>
&lt;li>复用现成的 agent/skill/rule&lt;/li>
&lt;li>给团队统一 AI 编码规范和自动化流程
如果你问“它是不是一个能直接运行的产品”，答案是否。它更像一个 AI coding workflow toolkit，不是 SaaS/后端/前端业务项目。&lt;/li>
&lt;/ul>
&lt;p>补充一点：截至 2026-03-17，GitHub 页面显示它已经定位成 “AI agent harness performance optimization system”，英文 README
写的是 21 agents / 102 skills / 52 commands；我看到中文 README 里还是较早的 13 / 43 / 31，推测中文文档有些滞后。&lt;/p>
&lt;p>来源：
GitHub 仓库 (&lt;a class="link" href="https://github.com/affaan-m/everything-claude-code" target="_blank" rel="noopener"
>https://github.com/affaan-m/everything-claude-code&lt;/a>)
README.md (&lt;a class="link" href="https://github.com/affaan-m/everything-claude-code/blob/main/README.md" target="_blank" rel="noopener"
>https://github.com/affaan-m/everything-claude-code/blob/main/README.md&lt;/a>)
package.json (&lt;a class="link" href="https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/package.json" target="_blank" rel="noopener"
>https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/package.json&lt;/a>)&lt;/p></description></item><item><title>cherry-studio</title><link>https://www.zata.cc/p/cherry-studio/</link><pubDate>Mon, 09 Mar 2026 10:16:47 +0800</pubDate><guid>https://www.zata.cc/p/cherry-studio/</guid><description>&lt;img src="https://www.zata.cc/p/cherry-studio/images/index/index.png" alt="Featured image of post cherry-studio" />&lt;h1 id="cherry-studio-详细使用教程">Cherry Studio 详细使用教程
&lt;/h1>&lt;p>Cherry Studio 是一款备受推崇的桌面端跨平台 AI 客户端，被誉为&amp;quot;AI 领域的瑞士军刀”[1]。它本身不提供大模型算力，而是作为一个统一的图形界面，让你能够将各大云端 API（如 DeepSeek、OpenAI、Claude、Gemini）以及本地模型（如 Ollama）汇聚在一起使用 [1]。&lt;/p>
&lt;p>它主打隐私安全（数据保存在本地）、多模型对比、内置 300+ 智能助手以及强大的**知识库和代码助手（Code Agent）**功能 [2][3][4][5]。&lt;/p>
&lt;p>以下是一份从零开始的 Cherry Studio 详细使用教程：&lt;/p>
&lt;p>&lt;strong>第一步：下载与安装&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>支持系统&lt;/strong>：Windows (64 位)、macOS (10.15+)、Linux[1][6]。&lt;/li>
&lt;li>&lt;strong>下载途径&lt;/strong>：
&lt;ul>
&lt;li>前往官方网站 (&lt;a class="link" href="https://cherry-ai.com" target="_blank" rel="noopener"
>cherry-ai.com&lt;/a>) 或 GitHub 仓库 (&lt;a class="link" href="https://github.com/CherryHQ/cherry-studio" target="_blank" rel="noopener"
>CherryHQ/cherry-studio&lt;/a>) 的 Releases 页面下载对应的安装包 [3][6][7]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>安装&lt;/strong>：双击下载的安装包，按提示“下一步”即可完成，开箱即用 [6]。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>第二步：核心配置——接入 AI 模型&lt;/strong>&lt;/p>
&lt;p>因为 Cherry Studio 是一个“客户端”，你需要为它配置 API 密钥（API Key）或连接本地模型才能开始对话 [6][8]。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>接入云端模型（以 DeepSeek 或第三方 API 为例）&lt;/strong>
如果你有官方的 API Key，或者使用中转平台（如硅基流动、海鲸 AI 等）的 API：&lt;/p>
&lt;ul>
&lt;li>打开 Cherry Studio，点击左下角的“设置”（齿轮图标 ⚙️）[6][9]。&lt;/li>
&lt;li>在左侧菜单中选择“模型服务” (Providers)[9]。&lt;/li>
&lt;li>你会看到许多内置的服务商列表。你可以直接点击对应的服务商（如 OpenAI、Anthropic），或者点击“添加”创建一个**“自定义服务商” (Custom)**[9]。&lt;/li>
&lt;li>&lt;strong>填写关键参数&lt;/strong>（以自定义 OpenAI 兼容接口为例）：
&lt;ul>
&lt;li>&lt;strong>API 地址 (Base URL)&lt;/strong>：填入服务商提供的地址（例如 &lt;code>https://api.deepseek.com/v1&lt;/code> 或你的中转 API 地址）。注意通常需以 &lt;code>/v1&lt;/code> 结尾。&lt;/li>
&lt;li>&lt;strong>API 密钥 (API Key)&lt;/strong>：填入你的 &lt;code>sk-xxxxxx&lt;/code> 密钥 [9]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>添加模型&lt;/strong>：
&lt;ul>
&lt;li>在配置界面的下方，找到“模型列表”或“管理模型”[6]。&lt;/li>
&lt;li>手动输入需要使用的模型 ID（例如 &lt;code>deepseek-chat&lt;/code>, &lt;code>gpt-4o&lt;/code>, &lt;code>claude-3-5-sonnet&lt;/code>），点击添加或回车 [6][9]。&lt;/li>
&lt;li>勾选这些模型使其生效，并可以将最常用的设为“默认模型”[6]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>接入本地模型（通过 Ollama 或 LM Studio）&lt;/strong>
如果你的电脑配置较好，想免费且断网使用 AI：&lt;/p>
&lt;ul>
&lt;li>确保电脑上已安装并运行 Ollama，并且已经拉取了模型（如 &lt;code>ollama run qwen2.5&lt;/code>）。&lt;/li>
&lt;li>在 Cherry Studio 设置 -&amp;gt; 模型服务中，找到 Ollama。&lt;/li>
&lt;li>默认 API 地址通常为 &lt;code>http://127.0.0.1:11434&lt;/code>。&lt;/li>
&lt;li>软件会自动拉取你本地已安装的模型列表，勾选即可使用 [4][6]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>第三步：日常基础使用&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>基础对话与多模型同开（对比模式）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>基础对话&lt;/strong>：回到主界面，点击左侧导航栏的“聊天”图标，在顶部下拉菜单选择你刚才配置好的模型，即可在下方输入框提问。&lt;/li>
&lt;li>&lt;strong>多模型同开（强烈推荐）&lt;/strong>：如果你想看同一问题不同 AI 的回答哪个更好。在聊天界面，点击聊天框顶部的&amp;quot;+&amp;ldquo;号或模型图标，可以同时勾选 2 个或更多的模型（比如同时勾选 GPT-4o 和 Claude 3.5）。发送一句话，屏幕会分栏同时展示不同模型的回答 [1][6][7]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>文件解析与多模态对话&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>如果你选择的模型支持多模态（如 &lt;code>gpt-4o&lt;/code> 或 &lt;code>claude-3-5-sonnet&lt;/code> 等），你可以直接将 PDF、Word、Excel 文档或图片拖拽到输入框中 [3][6]。&lt;/li>
&lt;li>软件会自动解析文档内容，你可以针对文档进行提问、总结和提取信息 [3][6]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>使用内置的 300+ 智能助手（Agent）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>不想每次都写长长的 Prompt（提示词）？&lt;/li>
&lt;li>点击左侧导航栏的“助手” (Assistants/Agents) 模块 [8]。&lt;/li>
&lt;li>里面内置了涵盖编程、写作、翻译、学术、营销等领域的 300 多种设定好的助手 [4]。&lt;/li>
&lt;li>找到你需要的助手（例如“小红书爆款文案生成器”或&amp;quot;Python 专家”），点击它并选择对应的运行模型，即可直接进入专用对话流 [4]。&lt;/li>
&lt;li>&lt;strong>自定义助手&lt;/strong>：你也可以点击“新建助手”，输入你自己的系统提示词（System Prompt），为其设置特定图标并保存，打造专属助理 [6][7]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>第四步：进阶功能探索&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>构建个人本地知识库 (Knowledge Base)&lt;/strong>
Cherry Studio 最受欢迎的特性之一是其本地知识库功能，适合处理超大型私人文档集，不会把你的机密数据随意传给第三方云端：&lt;/p>
&lt;ul>
&lt;li>在左侧菜单找到“知识库”[2][9]。&lt;/li>
&lt;li>新建一个知识库，选择一个用于进行向量化的 Embedding 模型（通常各 API 服务商都有提供，如 OpenAI 的 &lt;code>text-embedding-3-small&lt;/code>）。&lt;/li>
&lt;li>导入你的文件夹、PDF 论文库或纯文本 [2]。&lt;/li>
&lt;li>处理完成后，在聊天界面可以关联该知识库，AI 的回答就会基于你的文档进行检索和生成，实现完美的私有知识问答 [2][9]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Code Tools（AI 编程助手 Agent）&lt;/strong>
自 1.5.7 版本起，Cherry Studio 深度整合了 AI 程序员工具：&lt;/p>
&lt;ul>
&lt;li>点击界面左侧或顶部的&amp;quot;Code Tool&amp;rdquo;[5]。&lt;/li>
&lt;li>你可以在这里直接调用像 Claude Code、Gemini CLI、Qwen Code 等原生终端 AI 编程工具 [5]。&lt;/li>
&lt;li>指定你的本地代码项目文件夹，授予权限后，AI 可以直接读取你的项目代码，甚至帮你自动修改文件和执行终端命令（相当于拥有了类似 Cursor 的项目级编辑能力）[5]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>MCP 服务器接入 (Model Context Protocol)&lt;/strong>
MCP 是一种让大模型能够使用外部工具的协议。&lt;/p>
&lt;ul>
&lt;li>在设置中找到 MCP 服务器 [9]。&lt;/li>
&lt;li>你可以配置并启动不同的 MCP 插件，比如让 AI 具备联网搜索网页、查询本地数据库、或者调用外部 API 的能力 [9]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>WebDAV 云端同步与备份&lt;/strong>
因为 Cherry Studio 是本地客户端，更换电脑时聊天记录不在云端。&lt;/p>
&lt;ul>
&lt;li>在“设置 -&amp;gt; 数据同步”中，你可以配置 WebDAV（如坚果云，或自带 NAS 的 WebDAV）。配置后，你的所有配置、助手和聊天记录都可以安全地加密备份并多端同步 [6]。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>💡 实用小贴士 (Tips)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>显示 Token 消耗&lt;/strong>：在“设置 -&amp;gt; 界面/显示”中，可以开启“显示预估 Token 数”，这能帮你清楚地知道每次提问花费了多少 API 额度 [8]。&lt;/li>
&lt;li>&lt;strong>快捷唤醒全局搜索&lt;/strong>：可以使用快捷键唤出全局搜索或全局翻译小窗口，不打断你当前在其他软件（如浏览器、Word）中的工作流 [3]。&lt;/li>
&lt;li>&lt;strong>快捷键换行&lt;/strong>：通常 Enter 是发送，Shift + Enter 是换行（可在设置中修改）。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>总结&lt;/strong>&lt;/p>
&lt;p>Cherry Studio 的使用逻辑是：“下载软件” -&amp;gt; “填好 API Key&amp;quot; -&amp;gt; “选择模型开始聊天或建知识库”[6][8]。当你把基础配置跑通后，它将是你提高生产力的最强桌面工具 [7][9]。&lt;/p>
&lt;p>&lt;strong>资料来源&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>help&lt;/li>
&lt;li>skywork.ai&lt;/li>
&lt;li>jimmysong.io&lt;/li>
&lt;li>cherry-ai.com&lt;/li>
&lt;li>medium.com&lt;/li>
&lt;li>cherry-ai.com&lt;/li>
&lt;li>github.io&lt;/li>
&lt;li>github.com&lt;/li>
&lt;li>wanjiedata.com&lt;/li>
&lt;li>atalk-ai.com&lt;/li>
&lt;/ul>
&lt;h2 id="注意事项">注意事项
&lt;/h2>&lt;p>&lt;img src="https://www.zata.cc/p/cherry-studio/images/index/image.png"
width="1146"
height="758"
srcset="https://www.zata.cc/p/cherry-studio/images/index/image_hu9059234813721056590.png 480w, https://www.zata.cc/p/cherry-studio/images/index/image_hu3107548062758636679.png 1024w"
loading="lazy"
alt="webdva需要加上/ "
class="gallery-image"
data-flex-grow="151"
data-flex-basis="362px"
>&lt;/p></description></item><item><title>wrap.dev</title><link>https://www.zata.cc/p/wrap.dev/</link><pubDate>Tue, 03 Mar 2026 21:40:54 +0800</pubDate><guid>https://www.zata.cc/p/wrap.dev/</guid><description>&lt;img src="https://www.zata.cc/p/wrap.dev/images/index/index.png" alt="Featured image of post wrap.dev" />&lt;h1 id="warp-终端使用教程与功能详解">Warp 终端使用教程与功能详解
&lt;/h1>&lt;p>warp.dev（官方名称为 Warp）是一款基于 Rust 编写、GPU 加速的现代终端工具。它不仅是一个更快的命令行界面，更被定位为&amp;quot;Agentic Development Environment&amp;quot; (ADE)，即集成了 AI 智能体（Agents）和 IDE 功能的下一代开发环境。&lt;/p>
&lt;p>以下是 Warp 的详细使用教程，涵盖从基础安装到高级 AI 工作流的操作。&lt;/p>
&lt;p>&lt;strong>一、安装与环境准备 [1]&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>下载安装&lt;/strong>：
&lt;ul>
&lt;li>官网下载：访问 warp.dev 点击下载。&lt;/li>
&lt;li>MacOS (Homebrew)：&lt;code>brew install --cask warp&lt;/code>[1]&lt;/li>
&lt;li>Windows (WinGet)：&lt;code>winget install Warp.Warp&lt;/code>[1]&lt;/li>
&lt;li>Linux：支持 .deb、.rpm 以及 AppImage 格式。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>账号登录&lt;/strong>：Warp 需要登录（支持 GitHub/Google 登录），这主要是为了云端同步你的工作流（Workflows）和 AI 偏好。&lt;/li>
&lt;li>&lt;strong>Shell 支持&lt;/strong>：Warp 默认支持 zsh、bash、fish 和 PowerShell。它会自动读取你现有的 shell 配置（如 .zshrc），无缝迁移。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>二、核心概念：块（Blocks）[2][3]&lt;/strong>&lt;/p>
&lt;p>不同于传统终端那种“流式”的纯文本，Warp 引入了 Blocks（块）的概念：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>独立性&lt;/strong>：每一条命令及其输出都被封装成一个独立的方块。[3]&lt;/li>
&lt;li>&lt;strong>操作&lt;/strong>：你可以单独对某个 Block 进行操作（点击右上角），例如：
&lt;ul>
&lt;li>&lt;strong>Copy Output&lt;/strong>：只复制该命令的输出结果。&lt;/li>
&lt;li>&lt;strong>Share Block&lt;/strong>：生成一个永久链接，直接把出错的日志分享给同事。&lt;/li>
&lt;li>&lt;strong>AI Explain&lt;/strong>：让 AI 解释为什么这条命令报错了。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>三、核心功能与 AI 操作指南&lt;/strong>&lt;/p>
&lt;p>Warp 的精髓在于它将 AI 深度集成到了命令行中。[4]&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>AI 命令搜寻（Natural Language to Shell）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>快捷键：输入 &lt;code>#&lt;/code> 或按下 &lt;code>Ctrl&lt;/code> + &lt;code>`&lt;/code>（反引号）。[5]&lt;/li>
&lt;li>用法：直接输入中文或英文需求，例如 &lt;code># 查找所有大于 100MB 的文件&lt;/code>。&lt;/li>
&lt;li>效果：Warp 会实时生成对应的 shell 命令（如 &lt;code>find . -type f -size +100M&lt;/code>），按回车即可填入输入框。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Warp AI 聊天（上下文感知的 AI 助手）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>快捷键：&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>（或点击侧边栏 AI 图标）。&lt;/li>
&lt;li>用法：它不同于网页版 ChatGPT，它知道你的终端上下文（当前目录、上个命令的错误、文件结构）。&lt;/li>
&lt;li>场景：你可以问“为什么刚才的 build 失败了？”或“在这个项目里如何配置 Redis？”&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Agentic Development（智能体开发模式）&lt;/strong>
这是 Warp 最新的方向，利用内置的 Oz 智能体处理复杂任务。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Warp Dispatch (&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>I&lt;/code>)&lt;/strong>：你可以下达一个宏观指令（如：“将这个项目所有的图片压缩并移动到 assets 文件夹”）。AI 会制定计划，请求你授权运行一系列终端命令，并自动完成。&lt;/li>
&lt;li>&lt;strong>Warp Pair (&lt;code>Ctrl&lt;/code> + &lt;code>I&lt;/code>)&lt;/strong>：类似结对编程，AI 会读取你的代码和报错，辅助你实时调试。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Warp Drive（工作流同步）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>功能：你可以将常用的、难记的命令（带参数）保存为 Workflows。[3][5]&lt;/li>
&lt;li>团队协作：你可以创建团队文件夹，将常用的部署脚本、数据库迁移命令共享给全组人使用，大家直接搜关键词就能运行。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>四、像 IDE 一样编辑命令&lt;/strong>&lt;/p>
&lt;p>Warp 的输入框（Input Area）不是简单的文本行，而是一个功能完备的编辑器：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>光标操作&lt;/strong>：支持鼠标点击定位。&lt;/li>
&lt;li>&lt;strong>多行编辑&lt;/strong>：按 &lt;code>Shift&lt;/code> + &lt;code>Enter&lt;/code> 换行，支持语法高亮。&lt;/li>
&lt;li>&lt;strong>补全系统&lt;/strong>：基于历史记录和 AI 预测的智能补全。输入命令时，按 &lt;code>Tab&lt;/code> 键可以快速选择建议。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>五、必备快捷键清单&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">功能&lt;/th>
&lt;th style="text-align: left">快捷键 (Mac)&lt;/th>
&lt;th style="text-align: left">快捷键 (Win/Linux)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">打开命令面板&lt;/td>
&lt;td style="text-align: left">&lt;code>Cmd&lt;/code> + &lt;code>P&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>P&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">AI 自然语言搜寻&lt;/td>
&lt;td style="text-align: left">&lt;code>#&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>#&lt;/code> 或 &lt;code>Ctrl&lt;/code> + &lt;code>`&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">侧边栏 AI 聊天&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">Agent 智能体模式&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>I&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>I&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">向上/下跳转 Block&lt;/td>
&lt;td style="text-align: left">&lt;code>Cmd&lt;/code> + &lt;code>Up&lt;/code> / &lt;code>Down&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>Up&lt;/code> / &lt;code>Down&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">清理屏幕&lt;/td>
&lt;td style="text-align: left">&lt;code>Cmd&lt;/code> + &lt;code>K&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">新建标签页&lt;/td>
&lt;td style="text-align: left">&lt;code>Cmd&lt;/code> + &lt;code>T&lt;/code>&lt;/td>
&lt;td style="text-align: left">&lt;code>Ctrl&lt;/code> + &lt;code>T&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>六、进阶技巧&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>分屏（Split Panes）&lt;/strong>：&lt;code>Cmd&lt;/code> + &lt;code>D&lt;/code> (垂直分屏)，&lt;code>Cmd&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>D&lt;/code> (水平分屏)。方便一边看日志，一边运行命令。&lt;/li>
&lt;li>&lt;strong>主题自定义&lt;/strong>：输入 &lt;code>Cmd&lt;/code> + &lt;code>P&lt;/code> 搜索 &amp;ldquo;Themes&amp;rdquo;，Warp 内置了非常多精美的渐变色和极客风格主题。&lt;/li>
&lt;li>&lt;strong>SSH 增强&lt;/strong>：当你 SSH 到远程服务器时，Warp 依然能保持 Block 功能和部分 AI 特性（通过 Warpify 功能）。&lt;/li>
&lt;li>&lt;strong>MCP 支持&lt;/strong>：最新版 Warp 支持 Model Context Protocol (MCP)，允许你连接外部工具（如 Linear、Figma、Slack）作为 AI 的背景上下文。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>总结&lt;/strong>&lt;/p>
&lt;p>Warp 适合那些觉得传统终端（如 iTerm2 或 CMD）太“简陋”、不想死记硬背复杂 Shell 语法的开发者。它将“查文档 -&amp;gt; 复制命令 -&amp;gt; 粘贴执行 -&amp;gt; 出错搜报错”的循环，直接缩减成了在终端里“问 AI -&amp;gt; 执行”的极简流程。&lt;/p>
&lt;p>&lt;strong>资料来源&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>warp.dev&lt;/li>
&lt;li>thenewstack.io&lt;/li>
&lt;li>youtube.com&lt;/li>
&lt;li>medium.com&lt;/li>
&lt;/ul></description></item><item><title>ccNexus</title><link>https://www.zata.cc/p/ccnexus/</link><pubDate>Mon, 02 Mar 2026 17:43:36 +0800</pubDate><guid>https://www.zata.cc/p/ccnexus/</guid><description>&lt;img src="https://www.zata.cc/p/ccnexus/images/index/index.png" alt="Featured image of post ccNexus" />&lt;p>&lt;a class="link" href="https://github.com/lich0821/ccNexus/releases" target="_blank" rel="noopener"
>ccNexus 下载地址&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/ccnexus/images/index/image.png"
width="1008"
height="729"
srcset="https://www.zata.cc/p/ccnexus/images/index/image_hu17427354120233050841.png 480w, https://www.zata.cc/p/ccnexus/images/index/image_hu4405628468462632772.png 1024w"
loading="lazy"
alt="端点设置"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="331px"
>&lt;/p>
&lt;p>&lt;strong>ccNexus 项目介绍&lt;/strong>&lt;br>
（基于 GitHub 仓库 &lt;a class="link" href="https://github.com/lich0821/ccNexus" target="_blank" rel="noopener"
>https://github.com/lich0821/ccNexus&lt;/a> 官方描述与 README 整理）&lt;/p>
&lt;p>&lt;strong>项目全称&lt;/strong>：ccNexus&lt;br>
&lt;strong>官方描述&lt;/strong>：Intelligent API gateway for Claude Code and Codex CLI —— 一个专为 &lt;strong>Claude Code&lt;/strong> 和 &lt;strong>Codex CLI&lt;/strong> 打造的智能 API 网关。&lt;br>
它能实现&lt;strong>端点自动轮换&lt;/strong>、&lt;strong>API 格式转换&lt;/strong>、&lt;strong>实时使用量监控&lt;/strong>，并无缝对接 OpenAI、Gemini 等多种平台。&lt;/p>
&lt;h3 id="核心功能亮点">核心功能亮点
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>多端点智能轮换&lt;/strong>：添加多个 API 地址，自动故障转移（一个挂了立刻切下一个）&lt;/li>
&lt;li>&lt;strong>API 格式转换&lt;/strong>：支持 Claude / OpenAI / Gemini 之间相互转换&lt;/li>
&lt;li>&lt;strong>实时统计面板&lt;/strong>：请求数、错误数、Token 消耗一目了然&lt;/li>
&lt;li>&lt;strong>WebDAV 多设备同步&lt;/strong>：配置和数据跨电脑、手机同步&lt;/li>
&lt;li>&lt;strong>纯后端 + Docker 支持&lt;/strong>：可作为 HTTP 服务运行，也支持容器化部署&lt;/li>
&lt;li>&lt;strong>跨平台原生支持&lt;/strong>：Windows、macOS、Linux 均有对应可执行文件&lt;/li>
&lt;/ul>
&lt;h3 id="支持平台与安装方式超简单">支持平台与安装方式（超简单）
&lt;/h3>&lt;ol>
&lt;li>去 &lt;strong>Releases 页面&lt;/strong> 下载最新版本（你直接点的就是这个页面）：&lt;br>
&lt;a class="link" href="https://github.com/lich0821/ccNexus/releases" target="_blank" rel="noopener"
>https://github.com/lich0821/ccNexus/releases&lt;/a>&lt;/li>
&lt;li>解压后运行即可：
&lt;ul>
&lt;li>Windows：直接双击 &lt;code>ccNexus.exe&lt;/code>&lt;/li>
&lt;li>macOS：拖到「应用程序」文件夹，第一次右键 →「打开」&lt;/li>
&lt;li>Linux：&lt;code>tar -xzf ccNexus-linux-amd64.tar.gz &amp;amp;&amp;amp; ./ccNexus&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="快速配置两步搞定-claude-code--codex-cli">快速配置（两步搞定 Claude Code / Codex CLI）
&lt;/h3>&lt;ol>
&lt;li>启动 ccNexus（默认监听 &lt;code>http://127.0.0.1:3000&lt;/code>）&lt;/li>
&lt;li>添加端点（填 API 地址 + Key + 选择转换器）&lt;/li>
&lt;li>Claude Code 配置（&lt;code>~/.claude/settings.json&lt;/code>）：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;anthropic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;base_url&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;http://127.0.0.1:3000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>Codex CLI 配置（&lt;code>~/.codex/config.toml&lt;/code>）：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">model_provider&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;ccNexus&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">base_url&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;http://localhost:3000/v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h3 id="最新版本信息截至目前">最新版本信息（截至目前）
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>最新稳定版&lt;/strong>：v4.11.1（2026 年 2 月发布）&lt;/li>
&lt;li>包含 Mac Docker 菜单栏修复、标签兼容性优化、终端 Launcher 自定义等更新&lt;/li>
&lt;li>项目非常活跃，持续在迭代（已发布 60+ 个版本）&lt;/li>
&lt;/ul>
&lt;h3 id="项目数据一览">项目数据一览
&lt;/h3>&lt;ul>
&lt;li>语言：主要 Go + 前端（JavaScript/CSS）&lt;/li>
&lt;li>开源协议：MIT&lt;/li>
&lt;li>Star：743+｜Fork：89+&lt;/li>
&lt;li>标签：&lt;code>ai-coding&lt;/code>、&lt;code>claude-code-proxy&lt;/code>、&lt;code>claude-code-router&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>一句话总结&lt;/strong>：&lt;br>
如果你在用 Claude Code 或 Codex CLI，但苦于 API 限流、地区限制、多账号切换麻烦，&lt;strong>ccNexus 就是专门为你打造的“智能中转站”&lt;/strong> —— 一键轮换、格式转换、监控全都有，安装后几分钟就能用上。&lt;/p></description></item><item><title>cc-switch</title><link>https://www.zata.cc/p/cc-switch/</link><pubDate>Tue, 03 Feb 2026 10:27:23 +0800</pubDate><guid>https://www.zata.cc/p/cc-switch/</guid><description>&lt;img src="https://www.zata.cc/p/cc-switch/images/index/index.png" alt="Featured image of post cc-switch" />&lt;h1 id="cc-switch-使用">cc-switch 使用
&lt;/h1>&lt;h2 id="公开教程">公开教程
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.bilibili.com/read/cv44051635/?opus_fallback=1" target="_blank" rel="noopener"
>bili&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://github.com/farion1231/cc-switch/issues/814" target="_blank" rel="noopener"
>github issue &amp;mdash; vscode里面使用claude code for vscode免登录 &lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://zhuanlan.zhihu.com/p/1992351805414334464" target="_blank" rel="noopener"
>zhihu&lt;/a>&lt;/p>
&lt;h2 id="安装">安装
&lt;/h2>&lt;ol>
&lt;li>入到仓库,这里以wsl-ubuntu为例,下载deb包&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="https://github.com/farion1231/cc-switch" target="_blank" rel="noopener"
>cc-switch github地址&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image.png"
width="1715"
height="943"
srcset="https://www.zata.cc/p/cc-switch/images/index/image_hu12304345250513976806.png 480w, https://www.zata.cc/p/cc-switch/images/index/image_hu16535709286724172263.png 1024w"
loading="lazy"
alt="github"
class="gallery-image"
data-flex-grow="181"
data-flex-basis="436px"
>
2. 使用sudo apt install ./&amp;hellip; 命令去安装&lt;/p>
&lt;ul>
&lt;li>配置&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>创建统一供应商
&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-1.png"
width="1002"
height="642"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-1_hu6668096221410667128.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-1_hu17946163445970801270.png 1024w"
loading="lazy"
alt="新建"
class="gallery-image"
data-flex-grow="156"
data-flex-basis="374px"
>&lt;/li>
&lt;li>一键同步
&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-2.png"
width="1011"
height="643"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-2_hu7422586070124843964.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-2_hu17037751206308267715.png 1024w"
loading="lazy"
alt="同步"
class="gallery-image"
data-flex-grow="157"
data-flex-basis="377px"
>&lt;/li>
&lt;li>把设置里面的一些东西打开, 但是不需要开代理
&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-3.png"
width="1023"
height="673"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-3_hu2810676463438421115.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-3_hu2220274287635026480.png 1024w"
loading="lazy"
alt="设置,尤其是."
class="gallery-image"
data-flex-grow="152"
data-flex-basis="364px"
>&lt;/li>
&lt;/ol>
&lt;h2 id="配置-claude-供应商">配置 claude 供应商
&lt;/h2>&lt;hr>
&lt;ol>
&lt;li>
&lt;p>配置支持Anthropic协议的提供商&lt;/p>
&lt;p>1.1 配置kimi模型&lt;/p>
&lt;p>kimi 有两种供应方式,需要注意一下&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-4.png"
width="999"
height="645"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-4_hu2242902476095737500.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-4_hu10709808864810098904.png 1024w"
loading="lazy"
alt="kimi"
class="gallery-image"
data-flex-grow="154"
data-flex-basis="371px"
>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;ol start="2">
&lt;li>
&lt;p>配置只支持openai协议的提供商&lt;/p>
&lt;p>2.1 需要设置里面开启本地代理&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-5.png"
width="997"
height="652"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-5_hu16512917823219246461.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-5_hu2451860088890842709.png 1024w"
loading="lazy"
alt="设置-高级-本地代理"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="366px"
>&lt;/p>
&lt;p>2.2 需要将api格式改成openai,当然api接口也是openai格式对应的接口,这里也是以kimi为例
&lt;img src="https://www.zata.cc/p/cc-switch/images/index/image-6.png"
width="1000"
height="648"
srcset="https://www.zata.cc/p/cc-switch/images/index/image-6_hu7522774455329725260.png 480w, https://www.zata.cc/p/cc-switch/images/index/image-6_hu17689311226567257414.png 1024w"
loading="lazy"
alt="修改对应的api格式"
class="gallery-image"
data-flex-grow="154"
data-flex-basis="370px"
>&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title>软件工程的范式转移：基于 Claude Code 与智能体协作的高效编程实践</title><link>https://www.zata.cc/p/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%9A%84%E8%8C%83%E5%BC%8F%E8%BD%AC%E7%A7%BB%E5%9F%BA%E4%BA%8E-claude-code-%E4%B8%8E%E6%99%BA%E8%83%BD%E4%BD%93%E5%8D%8F%E4%BD%9C%E7%9A%84%E9%AB%98%E6%95%88%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link><pubDate>Sun, 01 Feb 2026 18:23:03 +0800</pubDate><guid>https://www.zata.cc/p/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%9A%84%E8%8C%83%E5%BC%8F%E8%BD%AC%E7%A7%BB%E5%9F%BA%E4%BA%8E-claude-code-%E4%B8%8E%E6%99%BA%E8%83%BD%E4%BD%93%E5%8D%8F%E4%BD%9C%E7%9A%84%E9%AB%98%E6%95%88%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/</guid><description>&lt;img src="https://www.zata.cc/p/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%9A%84%E8%8C%83%E5%BC%8F%E8%BD%AC%E7%A7%BB%E5%9F%BA%E4%BA%8E-claude-code-%E4%B8%8E%E6%99%BA%E8%83%BD%E4%BD%93%E5%8D%8F%E4%BD%9C%E7%9A%84%E9%AB%98%E6%95%88%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/images/index/index.png" alt="Featured image of post 软件工程的范式转移：基于 Claude Code 与智能体协作的高效编程实践" />&lt;h1 id="一人开发文档何去何从ai-时代我用-4-份文档搞定整个项目">一人开发，文档何去何从？AI 时代，我用 4 份文档搞定整个项目
&lt;/h1>&lt;blockquote>
&lt;p>曾经，我对着国标“十三类文档”头皮发麻；如今，一个 README + 3 份轻量文档，撑起年更 5 个项目的开发节奏。AI 不是替代文档，而是帮我们找回文档的本质：&lt;strong>为解决问题而生，而非为流程而写&lt;/strong>。&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>刚入行时，我曾花 3 天写《详细设计说明书》，结果上线前需求一改，文档直接报废。更讽刺的是——&lt;strong>没人看它&lt;/strong>。开发同事直接翻代码，产品经理盯着原型图，测试同学只关心用例。&lt;/p>
&lt;p>传统软件工程推崇的“十三类文档”（需求规格、概要设计、详细设计……），诞生于瀑布模型时代，核心假设是：&lt;/p>
&lt;blockquote>
&lt;p>✅ 需求稳定 ✅ 团队分工明确 ✅ 文档是交付物&lt;/p>
&lt;/blockquote>
&lt;p>但今天的现实是：&lt;/p>
&lt;blockquote>
&lt;p>❌ 需求周周变 ❌ 一人身兼数职 ❌ 代码才是唯一真相&lt;/p>
&lt;/blockquote>
&lt;p>当文档沦为“流程合规”的仪式，它就从资产变成了负债。&lt;/p>
&lt;hr>
&lt;p>经过 3 年独立开发实践 + AI 工具深度使用，我将文档体系压缩为 &lt;strong>4 份核心文档&lt;/strong>。它们不是“简化版传统文档”，而是&lt;strong>重构了文档的存在形式&lt;/strong>：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>文档&lt;/th>
&lt;th>传统对应&lt;/th>
&lt;th>核心价值&lt;/th>
&lt;th>存储位置&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>&lt;code>README.md&lt;/code>&lt;/strong>&lt;/td>
&lt;td>需求+用户手册&lt;/td>
&lt;td>5 分钟让任何人跑起来&lt;/td>
&lt;td>代码库根目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>&lt;code>DESIGN.md&lt;/code>&lt;/strong>&lt;/td>
&lt;td>概要+详细设计&lt;/td>
&lt;td>回答“为什么这样设计”&lt;/td>
&lt;td>代码库 &lt;code>/docs&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>可执行文档&lt;/strong>&lt;/td>
&lt;td>接口文档+数据库设计&lt;/td>
&lt;td>代码即文档，永不脱节&lt;/td>
&lt;td>嵌入代码/配置文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>&lt;code>DEPLOY.md&lt;/code>&lt;/strong>&lt;/td>
&lt;td>部署+运维手册&lt;/td>
&lt;td>一键恢复服务&lt;/td>
&lt;td>代码库根目录&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>💡 关键转变：&lt;strong>从“写文档”到“让系统自动生成文档”&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>&lt;strong>&lt;code>README.md&lt;/code>&lt;/strong> —— 项目的“电梯演讲”&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># TodoFlow 🚀
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>极简任务流工具，3 命令启动，无数据库依赖
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## ✨ 为什么需要它？
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 现有工具太重（Notion/Jira）→ 本项目单文件 200 行 Python
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 需要可视化流程 → 内置 Mermaid 流程图渲染
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">⚡ 快速开始
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">```bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://github.com/xxx/todoflow
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install -r requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python app.py # 访问 http://localhost:8000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>📡 核心 API&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X POST /tasks -d &lt;span class="s1">&amp;#39;{&amp;#34;title&amp;#34;:&amp;#34;写博客&amp;#34;}&amp;#39;&lt;/span> &lt;span class="c1"># 创建任务&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl /flow &lt;span class="c1"># 生成 Mermaid 流程图&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>❓ 常见问题
Q: 如何持久化数据？
A: 默认内存存储，加 &lt;code>--persist file.json&lt;/code> 启用 JSON 持久化&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; ✅ 价值：新协作者/未来的你，5 分钟内理解项目价值并跑起来
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">**`DESIGN.md`** —— 决策的“时间胶囊”
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">```markdown
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 架构设计决策
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">## 为什么不用数据库？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 需求：单机使用，数据量 &amp;lt; 1000 条
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 决策：JSON 文件持久化，避免 Docker 部署复杂度
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 代价：不支持并发写入 → 接受，本项目为个人工具
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">## 为什么选 FastAPI 而非 Flask？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 需求：需要自动生成 OpenAPI 文档
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 决策：FastAPI 内置 Swagger UI，省去手写 API 文档
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 验证：`/docs` 路径直接访问交互式文档
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>✅ 价值：3 个月后回看，秒懂“当初为啥这么设计”，避免重复踩坑&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>可执行文档&lt;/strong> —— 永不过期的“活文档”&lt;/p>
&lt;ul>
&lt;li>&lt;strong>API 文档&lt;/strong>：用 FastAPI 写代码 → 自动生成 &lt;code>/docs&lt;/code> Swagger UI&lt;/li>
&lt;li>&lt;strong>数据库 Schema&lt;/strong>：SQLAlchemy 模型 + 注释 → &lt;code>alembic&lt;/code> 自动生成迁移脚本&lt;/li>
&lt;li>&lt;strong>环境变量&lt;/strong>：&lt;code>.env.example&lt;/code> 文件即文档：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-env" data-lang="env">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 必填：邮件服务配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SMTP_HOST&lt;/span>&lt;span class="o">=&lt;/span>smtp.example.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SMTP_PORT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">587&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 选填：调试模式（默认 false）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">DEBUG&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>✅ 价值：文档与代码同生命周期，改代码即改文档&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>&lt;code>DEPLOY.md&lt;/code>&lt;/strong> —— 运维的“急救包”&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 部署指南
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 云服务器部署（Ubuntu 22.04）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>```bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 1. 安装依赖
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>sudo apt install python3-pip nginx
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 2. 配置 systemd 服务
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>sudo cp todoflow.service /etc/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl start todoflow
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 3. 配置 Nginx 反向代理（见 nginx.conf）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>sudo nginx -s reload
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>故障恢复&lt;/p>
&lt;ul>
&lt;li>服务挂了：&lt;code>sudo systemctl restart todoflow&lt;/code>&lt;/li>
&lt;li>磁盘满：&lt;code>rm -rf /var/log/todoflow/*.log&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; ✅ 价值：半夜报警时，照着步骤 5 分钟恢复服务
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">文档整合的核心不是“少写”，而是 **“让机器生成，人只校对”**。我的工作流：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| 场景 | 传统做法 | AI 增强做法 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">|------|----------|-------------|
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| 写 API 文档 | 手写 Markdown 表格 | 用 Copilot 从函数签名生成 OpenAPI YAML |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| 写 Changelog | 翻 Git Log 人工总结 | `git log --oneline v1.0..v1.1 \| cursor &amp;#34;生成用户友好的更新日志&amp;#34;` |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| 写部署步骤 | 回忆上次操作 | 让 AI 分析 Dockerfile + docker-compose.yml 生成部署命令 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| 写设计决策 | 事后补文档 | 开发时对 Cursor 说：“解释为什么用 Redis 而不用 Memcached”，直接生成 DESIGN.md 片段 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; 🌰 案例：我让 Cursor 分析一段异步队列代码，10 秒生成：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">```markdown
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; ## 为什么用 asyncio.Queue 而非 Celery？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; - 项目规模：单进程任务调度，无需分布式
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; - 依赖成本：避免引入 RabbitMQ/Redis
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; - 性能需求：任务量 &amp;lt; 1000/天，内存队列足够
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; - 代价：进程重启丢失队列 → 接受，任务可重试
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>给独立开发者的 3 条建议：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>起步期（&amp;lt;1 周项目）&lt;/strong>
→ 只维护 &lt;code>README.md&lt;/code>，包含：核心功能 + 3 条启动命令 + 1 个 curl 示例&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>成长期（持续维护项目）&lt;/strong>
→ 拆出 &lt;code>DESIGN.md&lt;/code>（记录关键决策） + &lt;code>DEPLOY.md&lt;/code>（记录部署细节）&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>拒绝“文档洁癖”&lt;/strong>
→ 不追求格式精美，追求&lt;strong>关键时刻能救命&lt;/strong>。一段能复制粘贴的命令，胜过 10 页精美 PDF&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;strong>最高级的文档，是“无需文档”&lt;/strong>&lt;/p>
&lt;p>代码自解释 + 系统自描述：&lt;/p>
&lt;ul>
&lt;li>用 &lt;code>--help&lt;/code> 输出清晰的 CLI 帮助&lt;/li>
&lt;li>用 &lt;code>/health&lt;/code> 提供服务状态自检&lt;/li>
&lt;li>用 OpenAPI 让前端直接调试后端&lt;/li>
&lt;li>用 &lt;code>.env.example&lt;/code> 告诉用户需要哪些配置&lt;/li>
&lt;/ul>
&lt;p>当工具链足够智能，文档将退化为“异常路径的注解”——只在人类需要理解“为什么”时出现。&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>AI 时代，我们不再为流程写文档，而是为“未来的自己”留线索。&lt;/strong>
4 份文档，不是妥协，而是聚焦：把时间留给创造，把记忆交给工具。&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>&lt;strong>延伸阅读&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://github.com/xxx/project-template" target="_blank" rel="noopener"
>我的开源项目文档模板&lt;/a>（含 DESIGN.md / DEPLOY.md 实例）&lt;/li>
&lt;li>《Software Engineering at Google》Chapter 19: Documentation&lt;/li>
&lt;li>工具推荐：MkDocs（轻量文档站）、Mermaid（代码画图）、Docusaurus（React 驱动文档）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;em>本文首发于个人博客，欢迎转发。独立开发不易，文档减负，从今天开始。&lt;/em> ✨&lt;/p>
&lt;h1 id="软件工程的范式转移基于-claude-code-与智能体协作的高效编程实践">软件工程的范式转移：基于 Claude Code 与智能体协作的高效编程实践
&lt;/h1>&lt;p>在软件开发工具演进的十年周期中，我们正见证一场深刻的范式转移：人工智能的角色从“行内补全助手”跃迁为“具备工具调用能力的协作智能体”。GitHub Copilot 等早期工具聚焦于提升单行代码的编写速度，而 Anthropic 推出的 &lt;strong>Claude Code&lt;/strong> 则重新定义了人机协作的边界——它不再局限于预测下一个 token，而是能够理解整个代码库、规划多步任务、并在人类监督下执行具有真实副作用的操作。&lt;/p>
&lt;p>本文将基于 Anthropic 官方文档与经验证的工程实践，系统阐述如何构建一套安全、高效、可扩展的智能体协作编程体系，并重点探讨如何将文档维护无缝融入开发工作流。&lt;/p>
&lt;h2 id="一claude-code终端原生的协作智能体">一、Claude Code：终端原生的协作智能体
&lt;/h2>&lt;p>Claude Code 是 Anthropic 官方推出的命令行工具，其设计哲学根植于 Unix 的“组合性”原则：&lt;strong>每个工具做好一件事，通过管道组合解决复杂问题&lt;/strong>。与 IDE 插件不同，Claude Code 以终端为第一交互界面，天然支持文件系统操作、Shell 命令执行与 Git 集成。&lt;/p>
&lt;h3 id="核心能力矩阵">核心能力矩阵
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>能力维度&lt;/th>
&lt;th>具体表现&lt;/th>
&lt;th>安全约束&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>代码库理解&lt;/td>
&lt;td>通过 200K+ tokens 上下文窗口分析整个项目结构&lt;/td>
&lt;td>仅访问用户授权的目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>工具调用&lt;/td>
&lt;td>在批准后执行文件编辑、Shell 命令、Git 操作&lt;/td>
&lt;td>&lt;strong>默认需人工批准&lt;/strong>，无静默执行&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>任务规划&lt;/td>
&lt;td>将模糊需求拆解为可验证的原子步骤&lt;/td>
&lt;td>关键节点自动暂停等待审查&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>持续对话&lt;/td>
&lt;td>会话中保持对项目状态的长期记忆&lt;/td>
&lt;td>企业版支持 Zero-Retention（不保留对话用于训练）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>💡 关键认知：Claude Code 是 &lt;strong>human-in-the-loop 的增强型代理&lt;/strong>，而非全自动机器人。所有修改操作默认需用户显式批准，这是 Anthropic 安全架构的基石。&lt;/p>
&lt;/blockquote>
&lt;h3 id="性能基准真实世界表现">性能基准：真实世界表现
&lt;/h3>&lt;p>在 SWE-bench Verified（评估真实 GitHub issue 修复能力的权威基准）中，Claude Sonnet 4.5（2025 年 9 月发布）达到 &lt;strong>77.2%–80.9%&lt;/strong> 的解决率，显著超越前代模型。在 OSWorld 基准（评估操作系统级多步任务）中，其得分从 Sonnet 3.5 的 42.2% 提升至 &lt;strong>61.4%&lt;/strong>，证明其在复杂工作流中的实用性。&lt;/p>
&lt;h2 id="二规则系统claudemd-的工程化实践">二、规则系统：CLAUDE.md 的工程化实践
&lt;/h2>&lt;p>&lt;code>CLAUDE.md&lt;/code> 是 Claude Code 的核心配置机制——一个位于项目根目录的 Markdown 文件，会在会话启动时自动加载为系统提示词。它将团队的架构决策、编码规范与工作流知识转化为 AI 可理解的指令。&lt;/p>
&lt;h3 id="21-文件加载逻辑">2.1 文件加载逻辑
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>位置&lt;/th>
&lt;th>行为&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>./CLAUDE.md&lt;/code>&lt;/td>
&lt;td>✅ 官方原生支持，自动加载&lt;/td>
&lt;td>项目级规范的唯一标准位置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>./subdir/CLAUDE.md&lt;/code>&lt;/td>
&lt;td>✅ 当工作目录进入子目录时自动激活&lt;/td>
&lt;td>适用于 Monorepo 的模块级规范&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>~/.claude/CLAUDE.md&lt;/code>&lt;/td>
&lt;td>⚠️ 非官方标准，需社区工具支持&lt;/td>
&lt;td>个人全局偏好（如 claude-flow）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>⚠️ 重要澄清：&lt;strong>不存在 &lt;code>.clauderules&lt;/code> 文件格式&lt;/strong>。所有规则应通过 &lt;code>CLAUDE.md&lt;/code> 表达，或通过 Skills 机制封装为可复用工作流。&lt;/p>
&lt;/blockquote>
&lt;h3 id="22-内容设计原则简洁可操作聚焦">2.2 内容设计原则：简洁、可操作、聚焦
&lt;/h3>&lt;p>Anthropic 官方建议 &lt;code>CLAUDE.md&lt;/code> 保持在 &lt;strong>500 行以内&lt;/strong>，社区实践共识为 &lt;strong>100–300 行&lt;/strong>。关键在于传递“必须知道”的规则，而非复制完整技术文档。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 项目概览
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>电商平台后端服务，基于 FastAPI + PostgreSQL，遵循领域驱动设计（DDD）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 技术栈
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 语言：Python 3.11+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 依赖管理：Poetry
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 数据库迁移：Alembic
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 测试：pytest + factory_boy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 文档：MkDocs + mkdocstrings（自动从 docstrings 生成 API 参考）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 代码规范
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 类型注解：所有函数必须包含完整类型提示（含返回值）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 异常处理：业务异常继承自 &lt;span class="sb">`DomainError`&lt;/span> 基类
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 日志：使用 structlog，禁止使用 print()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 测试：新功能必须附带单元测试（覆盖率 ≥80%）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 文档：公共 API 必须包含 Google 风格 docstrings，变更后同步更新用户指南
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 关键命令
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 启动开发服务器：&lt;span class="sb">`poetry run uvicorn app.main:app --reload`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 运行测试：&lt;span class="sb">`poetry run pytest tests/ -xvs`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 生成数据库迁移：&lt;span class="sb">`poetry run alembic revision --autogenerate -m &amp;#34;描述&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 构建文档站点：&lt;span class="sb">`poetry run mkdocs build`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 本地预览文档：&lt;span class="sb">`poetry run mkdocs serve`&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="三文档即代码mkdocs-与-ai-协作的工程实践">三、文档即代码：MkDocs 与 AI 协作的工程实践
&lt;/h2>&lt;p>文档滞后于代码是技术债的主要来源。通过将 MkDocs 与 Claude Code 深度集成，我们可以构建“代码变更即触发文档更新”的闭环工作流，实现文档与实现的实时对齐。&lt;/p>
&lt;h3 id="31-自动化参考文档mkdocstrings--动态生成">3.1 自动化参考文档：mkdocstrings + 动态生成
&lt;/h3>&lt;p>&lt;code>mkdocstrings&lt;/code> 插件可自动从 Python docstrings 提取 API 文档，但需配合生成脚本实现模块级页面的自动创建：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># scripts/gen_ref_pages.py&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;自动生成 MkDocs 参考文档页面&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pathlib&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">mkdocs_gen_files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">nav&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mkdocs_gen_files&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Nav&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 递归遍历源代码&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">path&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">sorted&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Path&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;src&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rglob&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;*.py&amp;#34;&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 跳过 __init__.py 和测试文件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;__&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="s2">&amp;#34;test&amp;#34;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">module_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">relative_to&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;src&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">with_suffix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">doc_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">relative_to&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;src&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">with_suffix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">full_doc_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Path&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;reference&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">doc_path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 构建导航层级&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">module_path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nav&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">full_doc_path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">as_posix&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 为每个模块创建引用页面&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="n">mkdocs_gen_files&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">full_doc_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;w&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">fd&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">identifier&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;.&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">module_path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;# `&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">identifier&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">`&lt;/span>&lt;span class="se">\n\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;::: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">identifier&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; options:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; show_root_heading: false&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; show_source: true&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 生成 SUMMARY.md 导航&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="n">mkdocs_gen_files&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;reference/SUMMARY.md&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;w&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">nav_file&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nav_file&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">writelines&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nav&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">build_literate_nav&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>mkdocs.yml&lt;/code> 配置示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">plugins&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">search&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">gen-files&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scripts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">scripts/gen_ref_pages.py&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">literate-nav&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nav_file&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">SUMMARY.md&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">mkdocstrings&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">handlers&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">python&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">options&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">docstring_style&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">google&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">show_signature&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">show_source&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">merge_init_into_class&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">nav&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">概览&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">index.md&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">用户指南&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">guides/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">API 参考&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">reference/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">架构设计&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">architecture/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="32-claude-code-驱动的文档维护工作流">3.2 Claude Code 驱动的文档维护工作流
&lt;/h3>&lt;p>Claude Code 无法“自动”维护文档，但可通过 &lt;strong>Hooks + Git 集成&lt;/strong>构建半自动化工作流：&lt;/p>
&lt;h4 id="步骤-1检测代码变更并触发文档任务">步骤 1：检测代码变更并触发文档任务
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ~/.claude/settings.json
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hooks&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;postToolUse&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;bash .github/scripts/check-doc-impact.sh {file}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;onTool&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;edit&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1"># .github/scripts/check-doc-impact.sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">FILE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 检测是否修改了公共 API&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> git diff HEAD -- &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$FILE&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> grep -q &lt;span class="s2">&amp;#34;^+.*def \|^-.*def \|^\+.*class \|^-.*class &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;⚠️ 检测到公共 API 变更，请同步更新文档：&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34; 1. 检查 docstrings 是否完整&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34; 2. 运行: poetry run python scripts/gen_ref_pages.py&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34; 3. 如需更新用户指南，运行: claude code &amp;#39;根据新功能更新 guides/ 目录下的相关文档&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fi&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="步骤-2ai-辅助生成用户指南内容">步骤 2：AI 辅助生成用户指南内容
&lt;/h4>&lt;p>当开发者执行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">claude code &lt;span class="s2">&amp;#34;根据新添加的 PaymentService.refund() 方法，更新 guides/payments.md 中的退款流程说明&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Claude Code 将：&lt;/p>
&lt;ol>
&lt;li>读取 &lt;code>src/services/payment.py&lt;/code> 中的实现与 docstrings&lt;/li>
&lt;li>分析现有 &lt;code>guides/payments.md&lt;/code> 结构&lt;/li>
&lt;li>生成包含以下要素的更新建议：
&lt;ul>
&lt;li>新方法的使用场景与参数说明&lt;/li>
&lt;li>与现有流程的集成点（Mermaid 序列图）&lt;/li>
&lt;li>常见错误处理示例&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>在应用前请求人工审查&lt;/strong>（默认 &lt;code>ask&lt;/code> 模式）&lt;/li>
&lt;/ol>
&lt;h4 id="步骤-3文档质量保障">步骤 3：文档质量保障
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># .github/workflows/docs.yml&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Documentation Quality Gate&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pull_request&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">paths&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s1">&amp;#39;src/**&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s1">&amp;#39;docs/**&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s1">&amp;#39;mkdocs.yml&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">jobs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">validate-docs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/checkout@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Set up Python&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/setup-python@v5&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">python-version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;3.11&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Install dependencies&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> pip install poetry
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> poetry install --with docs&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Build documentation (strict mode)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">poetry run mkdocs build --strict&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># --strict 会在发现 broken links 或 warnings 时失败&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Check for stale docstrings&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> # 检测有实现但无 docstrings 的公共函数
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> poetry run pylint --load-plugins pylint.extensions.docparams \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> --disable=all --enable=missing-param-doc,missing-return-doc \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> src/ || true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="33-ai-生成架构可视化mermaid-集成">3.3 AI 生成架构可视化：Mermaid 集成
&lt;/h3>&lt;p>现代 MkDocs（配合 &lt;code>mkdocs-material&lt;/code> 主题）原生支持 Mermaid，Claude Code 可生成精确的架构图：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 认证流程
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">```mermaid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sequenceDiagram
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant U as User
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant F as Frontend
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant A as AuthService
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant T as TokenService
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant DB as PostgreSQL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> U-&amp;gt;&amp;gt;F: POST /login (email, password)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F-&amp;gt;&amp;gt;A: validate_credentials(email, password)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A-&amp;gt;&amp;gt;DB: SELECT password_hash FROM users WHERE email=?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> DB--&amp;gt;&amp;gt;A: password_hash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A-&amp;gt;&amp;gt;A: bcrypt.verify(password, password_hash)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> alt valid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A-&amp;gt;&amp;gt;T: generate_jwt(user_id, roles)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> T--&amp;gt;&amp;gt;A: access_token, refresh_token
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A--&amp;gt;&amp;gt;F: {access_token, refresh_token}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F--&amp;gt;&amp;gt;U: 200 OK
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> else invalid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A--&amp;gt;&amp;gt;F: 401 Unauthorized
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F--&amp;gt;&amp;gt;U: 错误提示
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> end
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">开发者只需提示：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">```bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code &amp;#34;为新实现的 OAuth2 授权码流程生成 Mermaid 序列图，放入 docs/guides/auth.md&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Claude Code 将基于代码实现生成符合 Mermaid 语法的图表，并在插入前展示预览供审查。&lt;/p>
&lt;h2 id="四能力扩展skills-机制与按需加载">四、能力扩展：Skills 机制与按需加载
&lt;/h2>&lt;p>Skills 是 Claude Code 官方支持的模块化扩展系统，用于封装重复性工作流（如代码解释、测试生成、文档更新）。其独特价值在于&lt;strong>支持真正的按需加载&lt;/strong>——这是整个生态中唯一实现“渐进式披露”的机制。&lt;/p>
&lt;h3 id="41-目录结构">4.1 目录结构
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">~/.claude/skills/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── update-docs/ &lt;span class="c1"># 文档更新专用技能&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── SKILL.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── templates/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├── guide-template.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └── api-changelog.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── examples/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── payment-refund-doc.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── explain-code/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── SKILL.md
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="42-文档更新技能示例">4.2 文档更新技能示例
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">update-docs&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;根据代码变更同步更新 MkDocs 文档，包括 API 参考与用户指南&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">disable-model-invocation&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># 适用场景&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">新增/修改公共 API 后更新参考文档&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">功能迭代后更新用户指南&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">重构后更新架构图&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># 工作流程&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="l">. 分析变更文件的 diff，识别影响范围&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="l">. 检查相关模块的 docstrings 完整性&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="m">3&lt;/span>&lt;span class="l">. 更新或创建对应的 MkDocs Markdown 页面&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="m">4&lt;/span>&lt;span class="l">. 如涉及流程变更，生成 Mermaid 序列图/流程图&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="m">5&lt;/span>&lt;span class="l">. 在提交前运行 `mkdocs build --strict` 验证&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># 禁止行为&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">不得删除现有文档内容（除非确认已废弃）&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">不得修改未受影响的文档章节&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">所有图表必须基于实际代码逻辑生成&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="五自动化防护hooks-与权限模式">五、自动化防护：Hooks 与权限模式
&lt;/h2>&lt;h3 id="51-hooks确定性生命周期脚本">5.1 Hooks：确定性生命周期脚本
&lt;/h3>&lt;p>Hooks 是运行在 AI 智能体循环之外的确定性脚本，用于在关键节点执行强制性操作：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>事件&lt;/th>
&lt;th>触发时机&lt;/th>
&lt;th>典型用途&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>PreToolUse&lt;/code>&lt;/td>
&lt;td>工具执行前&lt;/td>
&lt;td>拦截危险命令（如 &lt;code>rm -rf&lt;/code>）、验证权限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>PostToolUse&lt;/code>&lt;/td>
&lt;td>工具执行后&lt;/td>
&lt;td>运行 linter、格式化、单元测试、&lt;strong>文档影响检测&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>UserPromptSubmit&lt;/code>&lt;/td>
&lt;td>用户提交请求前&lt;/td>
&lt;td>自动附加上下文（如当前 Git 分支）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="52-权限模式三重安全护栏">5.2 权限模式：三重安全护栏
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模式&lt;/th>
&lt;th>行为&lt;/th>
&lt;th>适用场景&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>ask&lt;/code>（默认）&lt;/td>
&lt;td>每次操作前请求用户批准&lt;/td>
&lt;td>日常开发，平衡效率与安全&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>auto&lt;/code>&lt;/td>
&lt;td>自动执行（&lt;strong>生产环境禁用&lt;/strong>）&lt;/td>
&lt;td>受控的 CI/CD 流水线&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>plan&lt;/code>&lt;/td>
&lt;td>仅生成操作计划，不执行修改&lt;/td>
&lt;td>代码审查、安全审计、&lt;strong>文档更新预览&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 预览文档更新计划（无副作用）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code --permission-mode plan &lt;span class="s2">&amp;#34;根据新 PaymentService.refund() 方法更新用户指南&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 执行文档更新（需人工批准每步操作）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code &lt;span class="s2">&amp;#34;更新 guides/payments.md 中的退款流程说明，包含 Mermaid 序列图&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="六外部系统集成mcp-协议">六、外部系统集成：MCP 协议
&lt;/h2>&lt;p>&lt;strong>Model Context Protocol (MCP)&lt;/strong> 是 Anthropic 于 2024 年 11 月推出的开放标准，用于安全地连接 AI 与外部工具（数据库、API、私有文档库）。&lt;/p>
&lt;h3 id="典型集成场景">典型集成场景
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>工具类型&lt;/th>
&lt;th>MCP 服务器&lt;/th>
&lt;th>能力示例&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>代码托管&lt;/td>
&lt;td>&lt;code>github-mcp&lt;/code>&lt;/td>
&lt;td>查询 issue 状态、拉取 PR 历史&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>数据库&lt;/td>
&lt;td>&lt;code>pg-mcp&lt;/code>&lt;/td>
&lt;td>安全查询 schema、执行只读诊断 SQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>浏览器自动化&lt;/td>
&lt;td>&lt;code>playwright-mcp&lt;/code>&lt;/td>
&lt;td>在真实浏览器中运行端到端测试&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>文档系统&lt;/td>
&lt;td>&lt;code>notion-mcp&lt;/code>&lt;/td>
&lt;td>同步技术设计文档至 Notion 知识库&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>⚠️ 安全提示：使用第三方 MCP 服务器需自行评估风险。Anthropic 不验证所有社区服务器的安全性，建议在隔离环境中测试。&lt;/p>
&lt;/blockquote>
&lt;h2 id="七跨工具协作github-copilot-指令文件">七、跨工具协作：GitHub Copilot 指令文件
&lt;/h2>&lt;p>&lt;code>.github/copilot-instructions.md&lt;/code> 是 GitHub 官方标准，被 Copilot Chat/Agents/CLI 自动识别。在混合工具环境中，建议分工如下：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>CLAUDE.md&lt;/code>&lt;/strong>：聚焦架构级规范、复杂工作流与&lt;strong>文档维护策略&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;code>.github/copilot-instructions.md&lt;/code>&lt;/strong>：聚焦行内补全相关的微观约束&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># 项目规范（Copilot 专用）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 架构约束
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 所有 API 路由必须通过 &lt;span class="sb">`@auth_required`&lt;/span> 装饰器
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 数据库查询必须使用 SQLAlchemy ORM，禁止原生 SQL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## 文档要求
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">-&lt;/span> 公共函数必须包含 Google 风格 docstrings
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> 参数描述需包含类型与业务含义（如 &amp;#34;user_id: int - 已认证用户的唯一标识&amp;#34;）
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="八安全治理框架">八、安全治理框架
&lt;/h2>&lt;p>随着 AI 获得工具调用能力，安全风险从“数据泄露”扩展至“操作风险”。企业应实施分层防御：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>风险类型&lt;/th>
&lt;th>缓解措施&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>代码/文档泄露&lt;/td>
&lt;td>选择企业版（Zero-Retention 策略），禁用内容用于模型训练&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>包幻觉&lt;/td>
&lt;td>Hooks 集成依赖验证（&lt;code>poetry check&lt;/code>），禁止直接 &lt;code>pip install&lt;/code> 未知包&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>权限过载&lt;/td>
&lt;td>始终使用 &lt;code>--permission-mode ask&lt;/code>，关键操作要求二次确认&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>文档失真&lt;/td>
&lt;td>所有 AI 生成文档必须经人工审核，CI 中启用 &lt;code>mkdocs build --strict&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>审计缺失&lt;/td>
&lt;td>启用 &lt;code>claude code --log-to-file&lt;/code> 记录所有操作，满足合规要求&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>🌍 合规提示：根据 2025 年生效的《欧盟 AI 法案》，高风险决策必须保留 human-in-the-loop 覆盖权，所有 AI 生成内容（包括文档）需标记来源（如 Git commit message 包含 &lt;code>[AI-assisted]&lt;/code>）。&lt;/p>
&lt;/blockquote>
&lt;h2 id="九实战工作流从代码变更到文档更新">九、实战工作流：从代码变更到文档更新
&lt;/h2>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 1：实现新功能（支付退款）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code &lt;span class="s2">&amp;#34;在 PaymentService 中实现 refund(transaction_id, reason) 方法，包含完整类型注解与 Google 风格 docstrings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 2：运行测试验证功能&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">poetry run pytest tests/services/test_payment.py -xvs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 3：检测文档影响（Hooks 自动触发）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 输出: &amp;#34;⚠️ 检测到公共 API 变更，请同步更新文档&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 4：预览文档更新计划&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code --permission-mode plan &lt;span class="s2">&amp;#34;根据新 refund() 方法更新 guides/payments.md 中的退款流程&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 5：执行文档更新（人工批准每步）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude code &lt;span class="s2">&amp;#34;更新 guides/payments.md：1) 添加 refund() 使用示例 2) 生成退款流程 Mermaid 序列图 3) 补充错误处理说明&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 6：验证文档构建&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">poetry run mkdocs build --strict
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 步骤 7：提交变更（标记 AI 参与）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add src/services/payment.py docs/guides/payments.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;[AI-assisted] 实现 PaymentService.refund() 并同步更新用户指南&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="十结语文档作为一等公民">十、结语：文档作为一等公民
&lt;/h2>&lt;p>在智能体协作时代，文档不应是开发完成后的“补作业”，而应成为与代码、测试同等重要的&lt;strong>一等公民&lt;/strong>。通过将 MkDocs 深度融入开发工作流，配合 Claude Code 的辅助能力，我们能够构建：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>自动化参考文档&lt;/strong>：通过 mkdocstrings + 动态生成脚本，确保 API 参考与代码实现零延迟同步&lt;/li>
&lt;li>&lt;strong>AI 辅助用户指南&lt;/strong>：在功能迭代时，由 Claude Code 生成初稿并插入精确的架构可视化&lt;/li>
&lt;li>&lt;strong>质量门禁&lt;/strong>：通过 &lt;code>mkdocs build --strict&lt;/code> 与 CI 集成，将文档完整性纳入合并门槛&lt;/li>
&lt;/ul>
&lt;p>这一实践的核心哲学是：&lt;strong>AI 负责执行重复性文档任务，人类负责审核与价值判断&lt;/strong>。当文档维护的成本显著降低，团队才能真正践行“文档即代码”的工程文化，将知识沉淀转化为可持续的竞争优势。&lt;/p>
&lt;hr>
&lt;h2 id="参考资源">参考资源
&lt;/h2>&lt;ol>
&lt;li>&lt;a class="link" href="https://code.claude.com/docs/en/overview" target="_blank" rel="noopener"
>Claude Code 官方文档&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.mkdocs.org/" target="_blank" rel="noopener"
>MkDocs 官方指南&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://mkdocstrings.github.io/" target="_blank" rel="noopener"
>mkdocstrings 插件文档&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://squidfunk.github.io/mkdocs-material/reference/diagrams/" target="_blank" rel="noopener"
>Mermaid 集成示例（mkdocs-material）&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://modelcontextprotocol.io/" target="_blank" rel="noopener"
>Model Context Protocol 规范&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://docs.github.com/en/copilot/tutorials/customization-library/custom-instructions/your-first-custom-instructions" target="_blank" rel="noopener"
>GitHub Copilot 自定义指令指南&lt;/a>&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>本文基于 Anthropic 官方文档与 MkDocs 社区实践（截至 2026 年 2 月）编写。技术持续演进，建议定期查阅官方资源获取最新功能与安全实践。&lt;/p>
&lt;/blockquote></description></item><item><title>claude-code&amp;codex&amp;Gemini-cli</title><link>https://www.zata.cc/p/claude-codecodexgemini-cli/</link><pubDate>Mon, 23 Jun 2025 19:57:52 +0800</pubDate><guid>https://www.zata.cc/p/claude-codecodexgemini-cli/</guid><description>&lt;img src="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/index.png" alt="Featured image of post claude-code&amp;codex&amp;Gemini-cli" />&lt;p>注意 : 不可或缺的一个工具是 cc-switch 可以查看cc-switch教程&lt;/p>
&lt;h2 id="claude-code">claude code
&lt;/h2>&lt;h3 id="使用教程">使用教程
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span> &lt;span class="c1"># agent teams&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 无需确认&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果用户是root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">IS_SANDBOX&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span> claude --dangerously-skip-permissions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果用户不是root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude --dangerously-skip-permissions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 别名，方便使用，加入到zshrc中&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">alias&lt;/span> &lt;span class="nv">clauded&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;claude --dangerously-skip-permissions&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;a class="link" href="https://itecsonline.com/post/how-to-install-claude-code-on-windows" target="_blank" rel="noopener"
>非常好用，在windows通过wsl使用claude，我就是看的这个&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://docs.anthropic.com/en/docs/claude-code/overview" target="_blank" rel="noopener"
>claude code 官方实战&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://github.com/anthropics/claude-code" target="_blank" rel="noopener"
>claude code 仓库&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://vocus.cc/article/6854309dfd89780001335549" target="_blank" rel="noopener"
>Claude Code 實戰教學：三大超好用功能公開！【2025年6月更新】【AI寫程式】&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://gaccode.com/document/claude-code-best-practices-zh" target="_blank" rel="noopener"
>Claude Code 最佳实践&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://itecsonline.com/post/claude-code-tips-tricks" target="_blank" rel="noopener"
>让claude更加好用&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://zhuanlan.zhihu.com/p/1928918331810886674" target="_blank" rel="noopener"
>Claude Code 用法全面拆解！26 项核心功能 + 实战技巧&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="安装">安装
&lt;/h3>&lt;h4 id="maclinuxwsl">mac/linux/wsl
&lt;/h4>&lt;ul>
&lt;li>安装&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 注意，要吧下面的端口设置成你自己的vpn端口，为什么先要设置代理环境变量？ 因为curl默认不会走代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 设置代理环境变量，这个是socks5代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">all_proxy&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;socks5://127.0.0.1:7897&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 或者
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">https_proxy&lt;/span>&lt;span class="o">=&lt;/span>http://127.0.0.1:7897 &lt;span class="nv">http_proxy&lt;/span>&lt;span class="o">=&lt;/span>http://127.0.0.1:7897
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> curl -fsSL https://claude.ai/install.sh &lt;span class="p">|&lt;/span> bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>卸载
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rm -f ~/.local/bin/claude
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf ~/.local/share/claude
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h4 id="windows">windows
&lt;/h4>&lt;p>推荐通过wsl安装&lt;/p>
&lt;p>&lt;a class="link" href="https://itecsonline.com/post/how-to-install-claude-code-on-windows" target="_blank" rel="noopener"
>安装参考&lt;/a>&lt;/p>
&lt;ol>
&lt;li>wsl &amp;ndash;install # 如果出现问题就要去 &lt;a class="link" href="https://blog.csdn.net/no1xium/article/details/131285182" target="_blank" rel="noopener"
>https://blog.csdn.net/no1xium/article/details/131285182&lt;/a>&lt;/li>
&lt;li>wsl &amp;ndash;list &amp;ndash;online # 查看有哪些可用的镜像,如果没有Ubuntu-24.04进行第三步&lt;/li>
&lt;li>wsl &amp;ndash;install -d Ubuntu-24.04&lt;/li>
&lt;/ol>
&lt;p>进入到wsl里面&lt;/p>
&lt;p>sudo apt update
sudo apt full-upgrade -y&lt;/p>
&lt;p>目前claude支持原生安装（2026/02） &lt;a class="link" href="https://code.claude.com/docs/en/overview" target="_blank" rel="noopener"
>claude code&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -fsSL https://claude.ai/install.sh &lt;span class="p">|&lt;/span> bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>安装cc-switch， 参考 本网站的 cc-switch 教程&lt;/p>
&lt;p>Install Additional Dependencies&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install python3 python3-pip -y &lt;span class="c1"># Install Python (if needed)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install git ripgrep -y &lt;span class="c1"># Install Git and Ripgrep (Recommended)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p ~/.npm-global
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="配置其他模型api以使用claude_code-----20260228">配置其他模型api以使用claude_code &amp;mdash; 20260228
&lt;/h3>&lt;p>参考cc-swith&lt;/p>
&lt;h3 id="使用技巧">使用技巧
&lt;/h3>&lt;ol>
&lt;li>CLAUDE.md 文件管理&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-8.png"
width="692"
height="797"
srcset="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-8_hu15659282894349763342.png 480w, https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-8_hu18230032320047788358.png 1024w"
loading="lazy"
alt="claude.md管理"
class="gallery-image"
data-flex-grow="86"
data-flex-basis="208px"
>&lt;/p>
&lt;hr>
&lt;ol start="2">
&lt;li>claude code 使用git worktree 开启多线程工作&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;ol>
&lt;li>创建 Git Worktree
为每个任务创建独立工作目录和分支。例如，开发 &lt;code>feature-auth&lt;/code> 和 &lt;code>feature-ui&lt;/code>：&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git worktree add ../my-project-auth -b feature-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git worktree add ../my-project-ui -b feature-ui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>验证：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git worktree list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;ol start="2">
&lt;li>配置环境
复制配置文件（如 &lt;code>.env&lt;/code>）并设置不同端口以避免冲突：&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cp .env ../my-project-auth/.env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cp .env ../my-project-ui/.env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>my-project-auth/.env&lt;/code>：&lt;code>PORT=3000&lt;/code>&lt;/li>
&lt;li>&lt;code>my-project-ui/.env&lt;/code>：&lt;code>PORT=3001&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>安装依赖：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project-auth &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> npm install
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project-ui &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> npm install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;ol start="3">
&lt;li>启动 Claude Code&lt;/li>
&lt;/ol>
&lt;p>在每个 Worktree 中运行 Claude Code：&lt;/p>
&lt;ul>
&lt;li>终端 1：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude &lt;span class="s2">&amp;#34;Implement JWT-based authentication with refresh tokens&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>终端 2：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project-ui
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude &lt;span class="s2">&amp;#34;Redesign UI with responsive Tailwind CSS layout&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;ol start="4">
&lt;li>提交和合并
提交代码：&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my_search-project-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;Add JWT authentication&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project-ui
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;Update UI with Tailwind CSS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>合并到主分支：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../my-project
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git merge feature-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git merge feature-ui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;ol start="5">
&lt;li>清理
删除 Worktree 和分支：&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git worktree remove ../my-project-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git worktree remove ../my-project-ui
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git branch -d feature-auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git branch -d feature-ui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>优化技巧&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>自动化脚本&lt;/strong>：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="k">function&lt;/span> wt&lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> git worktree add ../worktrees/&lt;span class="nv">$1&lt;/span> -b &lt;span class="nv">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">cd&lt;/span> ../worktrees/&lt;span class="nv">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cp ../my-project/.env .env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> npm install
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> claude
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>使用：&lt;code>wt feature-auth&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>任务文件&lt;/strong>：在每个 Worktree 创建 &lt;code>CLAUDE.md&lt;/code> 记录指令，调用 &lt;code>claude @CLAUDE.md&lt;/code>。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>IDE 集成&lt;/strong>：使用 VS Code 的 Git Worktrees 扩展切换 Worktree。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>注意事项&lt;/p>
&lt;/li>
&lt;li>
&lt;p>确保不同 Worktree 使用不同分支。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>为数据库任务配置独立实例（如 Docker 容器）。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>监控资源使用，避免并行任务过多导致过载。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>The Permission System Hack That Changes Everything&lt;/li>
&lt;/ol>
&lt;p>Tips: &lt;code>--dangerously-skip-permissions&lt;/code> 这个参数只能执行在非root用户下执行，因此如果只有root用户需要创建一个账户&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo useradd -m -s /bin/bash username &lt;span class="c1"># 创建新用户&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">su - username &lt;span class="c1"># 切换用户&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl --resolve raw.githubusercontent.com:443:185.199.108.133 -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install &lt;span class="p">|&lt;/span> bash -s &lt;span class="m">22&lt;/span> &lt;span class="c1"># 安装 node 其中--resolve表示自动去找可用的地址， 也可以安装nvm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm install -g https://gaccode.com/claudecode/install --registry&lt;span class="o">=&lt;/span>https://registry.npmmirror.com &lt;span class="c1"># 安装gac站的claude code&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude --dangerously-skip-permissions
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>在容器中开发时&amp;ndash;dangerously-skip-permissions指令让它自动执行&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果用户是root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">IS_SANDBOX&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span> claude --dangerously-skip-permissions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果用户不是root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">claude --dangerously-skip-permissions
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="claude-code-plugin-系统终极指南-最新版------20260228">Claude Code Plugin 系统终极指南 (最新版) &amp;mdash; 20260228
&lt;/h3>&lt;p>Claude Code 是 Anthropic 官方推出的 AI 编码助手（CLI + IDE 集成）。其 &lt;strong>Plugin（插件）系统&lt;/strong> 是最强大的扩展机制，允许通过 &lt;strong>Skills、Agents、Hooks、MCP Servers、LSP&lt;/strong> 等组件扩展功能，实现一键安装、版本管理和团队共享，告别手动复制 &lt;code>.claude/&lt;/code> 配置。&lt;/p>
&lt;p>本教程结合官方文档与最佳实践，覆盖 &lt;strong>环境搭建 → 发现使用 → 管理维护 → 开发创建&lt;/strong> 全流程。&lt;/p>
&lt;hr>
&lt;p>&lt;strong>一、环境搭建：安装 Claude Code&lt;/strong>&lt;/p>
&lt;p>在使用插件前，需确保已安装最新版本的 Claude Code。&lt;/p>
&lt;p>&lt;strong>1.1 安装 CLI 工具&lt;/strong>&lt;/p>
&lt;p>适用于 macOS / Linux / WSL（推荐）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -fsSL https://claude.ai/install.sh &lt;span class="p">|&lt;/span> bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>适用于 Windows PowerShell：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">irm https://claude.ai/install.ps1 &lt;span class="p">|&lt;/span> iex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>验证安装 (建议版本 1.0.33+)：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">claude --version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;em>首次运行 &lt;code>claude&lt;/code> 需登录 Anthropic 账号（需要 Claude Pro / Team / Max 订阅）。&lt;/em>&lt;/p>
&lt;p>&lt;strong>1.2 安装 IDE 插件（可选但推荐）&lt;/strong>&lt;/p>
&lt;p>插件系统在 IDE 中同样可用，且体验更佳：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VS Code&lt;/strong>：扩展市场搜索 &lt;strong>&amp;ldquo;Claude Code&amp;rdquo;&lt;/strong> 安装官方插件。&lt;/li>
&lt;li>&lt;strong>JetBrains&lt;/strong>：市场搜索 &lt;strong>&amp;ldquo;Claude Code [Beta]&amp;rdquo;&lt;/strong> 安装。&lt;/li>
&lt;li>&lt;em>效果&lt;/em>：编辑器右侧可直接聊天，支持 Diff 查看、自动打开文件，所有插件命令无缝集成。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;strong>二、核心概念：插件由什么组成？&lt;/strong>&lt;/p>
&lt;p>插件不仅仅是命令，它是一个功能包。理解组件有助于你选择合适的插件。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>组件&lt;/th>
&lt;th>功能描述&lt;/th>
&lt;th>调用方式&lt;/th>
&lt;th>典型用途&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Skills / Commands&lt;/strong>&lt;/td>
&lt;td>自定义 slash 命令&lt;/td>
&lt;td>&lt;code>/plugin-name:command&lt;/code>&lt;/td>
&lt;td>快捷操作（如 &lt;code>/commit:commit&lt;/code>）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Agents&lt;/strong>&lt;/td>
&lt;td>专用子代理&lt;/td>
&lt;td>&lt;code>/agents&lt;/code> 列表中选择&lt;/td>
&lt;td>特定任务专家（如安全审查员）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Hooks&lt;/strong>&lt;/td>
&lt;td>自动化钩子&lt;/td>
&lt;td>自动触发&lt;/td>
&lt;td>文件保存后自动 lint/format&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>MCP Servers&lt;/strong>&lt;/td>
&lt;td>连接外部工具&lt;/td>
&lt;td>自动出现在工具列表&lt;/td>
&lt;td>连接 GitHub、Slack、数据库&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>LSP Servers&lt;/strong>&lt;/td>
&lt;td>代码智能服务&lt;/td>
&lt;td>自动启用&lt;/td>
&lt;td>代码跳转、类型提示、诊断&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>&lt;strong>注意&lt;/strong>：安装插件后，命令通常带有 &lt;strong>命名空间&lt;/strong> 以避免冲突，例如 &lt;code>/commit-commands:commit&lt;/code>。&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>&lt;strong>三、用户指南：发现与安装插件&lt;/strong>&lt;/p>
&lt;p>&lt;strong>3.1 打开插件管理器&lt;/strong>&lt;/p>
&lt;p>在 Claude Code 会话中输入：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>进入交互式界面，包含四个 Tab：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>发现 (Discover)&lt;/strong>：浏览所有可用插件。&lt;/li>
&lt;li>&lt;strong>已安装 (Installed)&lt;/strong>：管理已装插件。&lt;/li>
&lt;li>&lt;strong>市场 (Marketplaces)&lt;/strong>：添加/删除插件源。&lt;/li>
&lt;li>&lt;strong>错误 (Errors)&lt;/strong>：查看加载失败详情。&lt;/li>
&lt;/ul>
&lt;p>&lt;em>操作提示：使用 &lt;code>Tab&lt;/code> 切换选项卡，方向键选择，&lt;code>Enter&lt;/code> 确认。&lt;/em>&lt;/p>
&lt;p>&lt;strong>3.2 添加插件市场&lt;/strong>&lt;/p>
&lt;p>官方市场 &lt;code>claude-plugins-official&lt;/code> 通常自动可用。如需添加第三方市场：&lt;/p>
&lt;p>添加 Anthropic 演示市场：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/plugin marketplace add anthropics/claude-code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>添加 GitHub 仓库市场：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/plugin marketplace add owner/repo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>添加本地路径：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/plugin marketplace add ./my-marketplace
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>3.3 安装插件（三种方式）&lt;/strong>&lt;/p>
&lt;p>&lt;strong>方式 A：交互式（最简单）&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>输入 &lt;code>/plugin&lt;/code> → 切换到“发现”Tab。&lt;/li>
&lt;li>找到插件 → &lt;code>Enter&lt;/code>。&lt;/li>
&lt;li>&lt;strong>选择安装范围&lt;/strong>（关键步骤）：
&lt;ul>
&lt;li>&lt;code>user&lt;/code>：仅当前用户，所有项目可用（默认）。&lt;/li>
&lt;li>&lt;code>project&lt;/code>：写入 &lt;code>.claude/settings.json&lt;/code>，团队共享（推荐）。&lt;/li>
&lt;li>&lt;code>local&lt;/code>：写入 &lt;code>.claude/settings.local.json&lt;/code>，不提交 git。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>方式 B：命令行一键安装&lt;/strong>&lt;/p>
&lt;p>官方市场安装：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/plugin install typescript-lsp@claude-plugins-official
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>指定范围安装（团队共享）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">claude plugin install pr-review-toolkit@anthropics-claude-code --scope project
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>方式 C：热门插件推荐&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>插件名&lt;/th>
&lt;th>功能&lt;/th>
&lt;th>推荐场景&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>typescript-lsp&lt;/code> / &lt;code>pyright-lsp&lt;/code>&lt;/td>
&lt;td>代码智能&lt;/td>
&lt;td>所有开发项目&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>commit-commands&lt;/code>&lt;/td>
&lt;td>智能提交&lt;/td>
&lt;td>Git 工作流&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pr-review-toolkit&lt;/code>&lt;/td>
&lt;td>PR 审查&lt;/td>
&lt;td>代码合并前&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>security-guidance&lt;/code>&lt;/td>
&lt;td>安全审查&lt;/td>
&lt;td>敏感代码处理&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>context7&lt;/code>&lt;/td>
&lt;td>API 文档&lt;/td>
&lt;td>查阅最新文档&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>&lt;strong>四、管理插件：更新与维护&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>操作&lt;/th>
&lt;th>命令 / 路径&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>查看已安装&lt;/strong>&lt;/td>
&lt;td>&lt;code>/plugin&lt;/code> → 已安装 Tab&lt;/td>
&lt;td>查看版本与状态&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>禁用/启用&lt;/strong>&lt;/td>
&lt;td>&lt;code>/plugin disable &amp;lt;name&amp;gt;&lt;/code>&lt;/td>
&lt;td>暂时停用但不卸载&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>卸载&lt;/strong>&lt;/td>
&lt;td>&lt;code>/plugin uninstall &amp;lt;name&amp;gt;&lt;/code>&lt;/td>
&lt;td>完全移除&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>更新单个&lt;/strong>&lt;/td>
&lt;td>&lt;code>/plugin update &amp;lt;name&amp;gt;&lt;/code>&lt;/td>
&lt;td>升级到最新版本&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>更新市场&lt;/strong>&lt;/td>
&lt;td>&lt;code>/plugin marketplace update &amp;lt;name&amp;gt;&lt;/code>&lt;/td>
&lt;td>刷新插件列表&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>配置文件&lt;/strong>&lt;/td>
&lt;td>&lt;code>.claude/settings.json&lt;/code>&lt;/td>
&lt;td>手动编辑项目级配置&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>自动更新配置&lt;/strong>&lt;/p>
&lt;p>可通过环境变量控制更新行为：&lt;/p>
&lt;p>禁用所有自动更新：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">DISABLE_AUTOUPDATER&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>仅保留插件更新，禁用 CLI 更新：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">FORCE_AUTOUPDATE_PLUGINS&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>&lt;strong>五、开发者指南：创建自己的插件&lt;/strong>&lt;/p>
&lt;p>&lt;strong>5.1 标准目录结构&lt;/strong>&lt;/p>
&lt;p>创建一个文件夹，结构如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">my-awesome-plugin/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── .claude-plugin/ # 元数据目录
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── plugin.json # 插件清单（必需）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── skills/ # 技能命令
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── greet/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── SKILL.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── agents/ # 子代理
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── security-reviewer.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── hooks/ # 钩子配置
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── hooks.json
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── .mcp.json # MCP 服务器定义
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── .lsp.json # LSP 服务器配置
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── scripts/ # 可执行脚本
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── format.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>5.2 编写 plugin.json&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;my-awesome-plugin&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;version&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;1.0.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;我的第一个插件&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;author&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Your Name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;email&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;you@example.com&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;license&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;MIT&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;skills&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;./skills/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;agents&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;./agents/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hooks&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;./hooks/hooks.json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>5.3 创建 Skill 示例&lt;/strong>&lt;/p>
&lt;p>&lt;code>skills/greet/SKILL.md&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">description: 向用户问好
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">你好！我是你的专属助手，今天有什么可以帮你的吗？
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>5.4 配置 Hooks 示例&lt;/strong>&lt;/p>
&lt;p>&lt;code>hooks/hooks.json&lt;/code> (实现保存后自动格式化):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hooks&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;PostToolUse&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;matcher&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Write|Edit&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hooks&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;${CLAUDE_PLUGIN_ROOT}/scripts/format.sh&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>5.5 本地调试与测试&lt;/strong>&lt;/p>
&lt;p>无需发布即可测试插件：&lt;/p>
&lt;p>指定插件目录启动：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">claude --plugin-dir ./my-awesome-plugin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>调试模式查看加载详情：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">claude --debug
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>进入会话后输入 &lt;code>/my-awesome-plugin:greet&lt;/code> 验证功能。&lt;/p>
&lt;p>&lt;strong>5.6 发布到市场&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>将代码上传至 GitHub 公共仓库。&lt;/li>
&lt;li>创建 &lt;code>marketplace.json&lt;/code> 索引文件。&lt;/li>
&lt;li>通过 Claude.ai 设置 → Plugins → Submit 提交至官方市场，或分享给团队直接使用 Git URL 安装。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;strong>六、故障排除 (Troubleshooting)&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>问题现象&lt;/th>
&lt;th>可能原因&lt;/th>
&lt;th>解决方案&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>/plugin&lt;/code> 命令不识别&lt;/td>
&lt;td>版本过低&lt;/td>
&lt;td>升级 CLI：`curl -fsSL &lt;a class="link" href="https://claude.ai/install.sh" target="_blank" rel="noopener"
>https://claude.ai/install.sh&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>插件未加载&lt;/td>
&lt;td>缓存问题&lt;/td>
&lt;td>删除缓存：&lt;code>rm -rf ~/.claude/plugins/cache&lt;/code> 后重启&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>命令未出现&lt;/td>
&lt;td>目录结构错误&lt;/td>
&lt;td>确保 &lt;code>skills/&lt;/code> 或 &lt;code>commands/&lt;/code> 在插件根目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hooks 未触发&lt;/td>
&lt;td>脚本无权限&lt;/td>
&lt;td>运行 &lt;code>chmod +x scripts/*.sh&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LSP 报错&lt;/td>
&lt;td>语言服务器缺失&lt;/td>
&lt;td>安装对应二进制（如 &lt;code>npm i -g typescript-language-server&lt;/code>）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>安装失败&lt;/td>
&lt;td>网络/权限问题&lt;/td>
&lt;td>检查 GitHub 仓库是否公开，或切换网络环境&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>命令冲突&lt;/td>
&lt;td>命名空间重复&lt;/td>
&lt;td>使用完整命名空间 &lt;code>/plugin-name:cmd&lt;/code> 调用&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>&lt;strong>七、最佳实践与建议&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>版本管理&lt;/strong>：遵循语义版本控制（MAJOR.MINOR.PATCH），便于回滚。&lt;/li>
&lt;li>&lt;strong>团队共享&lt;/strong>：使用 &lt;code>--scope project&lt;/code> 将插件配置提交到 &lt;code>.claude/settings.json&lt;/code>，确保团队成员环境一致。&lt;/li>
&lt;li>&lt;strong>安全优先&lt;/strong>：安装第三方插件前，检查其 &lt;code>plugin.json&lt;/code> 和脚本内容，确认来源可信。&lt;/li>
&lt;li>&lt;strong>路径规范&lt;/strong>：插件内部所有路径必须相对于插件根目录，以 &lt;code>./&lt;/code> 开头，或使用 &lt;code>${CLAUDE_PLUGIN_ROOT}&lt;/code> 变量。&lt;/li>
&lt;li>&lt;strong>结合规范&lt;/strong>：在项目根目录放置 &lt;code>CLAUDE.md&lt;/code> 定义编码规范，插件会自动遵守。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;strong>八、官方资源&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>官方文档 (中文)&lt;/strong>： &lt;code>https://code.claude.com/docs/zh-CN/&lt;/code>&lt;/li>
&lt;li>&lt;strong>插件开发文档&lt;/strong>： &lt;code>https://code.claude.com/docs/zh-CN/plugins&lt;/code>&lt;/li>
&lt;li>&lt;strong>官方演示仓库&lt;/strong>： &lt;code>https://github.com/anthropics/claude-code&lt;/code>&lt;/li>
&lt;li>&lt;strong>社区讨论&lt;/strong>：Claude 官方 Discord 频道&lt;/li>
&lt;/ul>
&lt;p>掌握插件系统后，Claude Code 的生产力将显著提升。通过团队统一安装核心插件（如 LSP、Commit、Security），可实现「一键 PR 审查 + 自动部署 + 安全扫描」的现代化开发全流程。&lt;/p>
&lt;h2 id="codex">codex
&lt;/h2>&lt;p>&lt;a class="link" href="https://developers.openai.com/codex/cli/" target="_blank" rel="noopener"
>codex 官方&lt;/a>&lt;/p>
&lt;h3 id="安装和配置">安装和配置
&lt;/h3>&lt;p>｀安装｀&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npm i -g @openai/codex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>｀配置｀&lt;/p>
&lt;p>&lt;strong>设置默认agent full模式&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-9.png"
width="1178"
height="802"
srcset="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-9_hu13838779268736693344.png 480w, https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-9_hu5599974891247110815.png 1024w"
loading="lazy"
alt="windows 下的agent full"
class="gallery-image"
data-flex-grow="146"
data-flex-basis="352px"
>&lt;/p>
&lt;p>&lt;strong>设置$env:PYTHONUTF8 = &amp;ldquo;1&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>不设置的话会出现乱码,因为python代码默认是utf8但是命令行默认是ascii&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-10.png"
width="611"
height="185"
srcset="https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-10_hu8509914624282466064.png 480w, https://www.zata.cc/p/claude-codecodexgemini-cli/images/index/image-10_hu973013388776446223.png 1024w"
loading="lazy"
alt="pythonutf8"
class="gallery-image"
data-flex-grow="330"
data-flex-basis="792px"
>&lt;/p></description></item><item><title>cursor使用教程</title><link>https://www.zata.cc/p/cursor%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Wed, 04 Jun 2025 10:16:56 +0800</pubDate><guid>https://www.zata.cc/p/cursor%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;img src="https://www.zata.cc/p/cursor%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/index.png" alt="Featured image of post cursor使用教程" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://finance.sina.com.cn/tech/csj/2025-06-05/doc-ineyyvph3632905.shtml" target="_blank" rel="noopener"
>cursor1.0版本来袭&lt;/a>
&lt;a class="link" href="https://dev-life.online/blog/cursor" target="_blank" rel="noopener"
>cursor二次大项目开发&lt;/a>&lt;/p>
&lt;h2 id="agent开发技巧">agent开发技巧
&lt;/h2>&lt;p>1.先让AI熟悉代码，生成项目文档&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">请分析整个代码库，生成一份项目结构文档，包括：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1. 项目架构概览
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2. 主要目录结构及其职责
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3. 关键模块的依赖关系图
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">4. 核心类和接口的功能说明
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">5. 数据流向图
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">6. API接口清单
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">7. 常见的代码模式和约定
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>2.一个chat只开发一个功能&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">我现在要开发一个新功能：给商品添加批量导入功能。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">以下是项目的结构文档，请先阅读以熟悉代码库：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[粘贴前面生成的项目文档]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>功能开发后总结成Guide文档&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">请总结一下我们刚才添加新接口的过程，生成一个&amp;#34;如何添加新接口&amp;#34;的指南文档，包括：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1. 需要修改哪些文件
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2. 代码结构和注意事项
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3. 测试方法
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">4. 潜在的坑和解决方案
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>持续维护和更新文档&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">我们刚才解决了权限系统的几个问题，请将以下内容更新到权限系统指南文档中：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1. 修改角色权限时需要同步更新缓存
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2. 权限检查顺序应该是：特殊权限 -&amp;gt; 角色权限 -&amp;gt; 默认权限
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3. 前端权限组件需要处理异步加载状态
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Tavily-搜索引擎api</title><link>https://www.zata.cc/p/tavily-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8Eapi/</link><pubDate>Tue, 20 May 2025 15:34:00 +0800</pubDate><guid>https://www.zata.cc/p/tavily-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8Eapi/</guid><description>&lt;img src="https://www.zata.cc/p/tavily-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8Eapi/images/index/index.png" alt="Featured image of post Tavily-搜索引擎api" />&lt;h1 id="tavily-api-python-sdk-详细使用教程">Tavily API Python SDK 详细使用教程
&lt;/h1>&lt;p>Tavily API 旨在为 AI 应用和开发者提供一个强大、快速且相关的搜索引擎。它可以直接返回针对查询的总结性答案，并附带相关的源信息。本教程将引导你完成 Tavily Python SDK 的安装和使用。&lt;/p>
&lt;h2 id="目录">目录
&lt;/h2>&lt;ol>
&lt;li>&lt;a class="link" href="#1-%e7%ae%80%e4%bb%8b" >简介&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#2-%e5%ae%89%e8%a3%85" >安装&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#3-api-%e5%af%86%e9%92%a5%e8%ae%be%e7%bd%ae" >API 密钥设置&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e6%8e%a8%e8%8d%90" >环境变量（推荐）&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#%e7%9b%b4%e6%8e%a5%e5%9c%a8%e4%bb%a3%e7%a0%81%e4%b8%ad%e8%ae%be%e7%bd%ae" >直接在代码中设置&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#4-%e5%9f%ba%e6%9c%ac%e6%90%9c%e7%b4%a2" >基本搜索&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#5-search-%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3" >&lt;code>search&lt;/code> 方法详解&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#%e5%b8%b8%e7%94%a8%e5%8f%82%e6%95%b0" >常用参数&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#%e7%a4%ba%e4%be%8b%e4%bd%bf%e7%94%a8%e4%b8%8d%e5%90%8c%e5%8f%82%e6%95%b0" >示例：使用不同参数&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#6-%e7%90%86%e8%a7%a3%e8%bf%94%e5%9b%9e%e7%bb%93%e6%9e%9c" >理解返回结果&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#%e6%95%b4%e4%bd%93%e5%93%8d%e5%ba%94%e7%bb%93%e6%9e%84" >整体响应结构&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#%e7%bb%93%e6%9e%9c%e6%9d%a1%e7%9b%ae-results-%e7%bb%93%e6%9e%84" >结果条目 (&lt;code>results&lt;/code>) 结构&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#7-%e9%ab%98%e7%ba%a7%e6%90%9c%e7%b4%a2%e5%8a%9f%e8%83%bd-%e5%9f%ba%e4%ba%8e-search-%e6%96%b9%e6%b3%95%e7%9a%84%e5%8f%82%e6%95%b0%e7%bb%84%e5%90%88" >高级搜索功能 (基于 &lt;code>search&lt;/code> 方法的参数组合)&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#%e8%8e%b7%e5%8f%96%e7%89%b9%e5%ae%9a%e4%b8%bb%e9%a2%98%e4%bf%a1%e6%81%af" >获取特定主题信息&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#%e7%bb%93%e5%90%88-include_domains-%e5%92%8c-exclude_domains" >结合 &lt;code>include_domains&lt;/code> 和 &lt;code>exclude_domains&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#8-%e9%94%99%e8%af%af%e5%a4%84%e7%90%86" >错误处理&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#9-%e5%ae%8c%e6%95%b4%e7%a4%ba%e4%be%8b%e4%bb%a3%e7%a0%81" >完整示例代码&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#10-%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7" >使用技巧&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 id="1-简介">1. 简介
&lt;/h2>&lt;p>Tavily API 通过其 Python SDK &lt;code>tavily-python&lt;/code>，可以轻松集成到你的 Python 项目中。它不仅返回传统的搜索结果列表，还能提供一个由 AI 生成的、针对用户查询的直接答案，这对于构建 RAG (Retrieval Augmented Generation) 系统或需要快速获取信息的 AI 应用非常有用。&lt;/p>
&lt;h2 id="2-安装">2. 安装
&lt;/h2>&lt;p>你可以使用 pip 来安装 Tavily Python SDK：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install tavily-python
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-api-密钥设置">3. API 密钥设置
&lt;/h2>&lt;p>要使用 Tavily API，你需要一个 API 密钥。你可以从 &lt;a class="link" href="https://tavily.com/" target="_blank" rel="noopener"
>Tavily AI 官网&lt;/a> 注册并获取。&lt;/p>
&lt;p>获取密钥后，有两种主要方式进行设置：&lt;/p>
&lt;h3 id="环境变量推荐">环境变量（推荐）
&lt;/h3>&lt;p>将 API 密钥设置为环境变量 &lt;code>TAVILY_API_KEY&lt;/code>。SDK 会自动检测并使用它。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Linux/macOS&lt;/strong>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">TAVILY_API_KEY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;你的API密钥&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>为了永久生效，可以将这行代码添加到你的 &lt;code>.bashrc&lt;/code>, &lt;code>.zshrc&lt;/code> 或其他 shell 配置文件中。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Windows&lt;/strong>:
在系统环境变量中添加一个新变量，名称为 &lt;code>TAVILY_API_KEY&lt;/code>，值为你的 API 密钥。或者在 PowerShell 中：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$env:TAVILY_API_KEY&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;你的API密钥&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h3 id="直接在代码中设置">直接在代码中设置
&lt;/h3>&lt;p>你也可以在初始化 &lt;code>TavilyClient&lt;/code> 时直接传入 API 密钥：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tavily_client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TavilyClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;你的API密钥&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果同时设置了环境变量并显式传入密钥，则代码中显式传入的密钥会优先使用。&lt;/p>
&lt;h2 id="4-基本搜索">4. 基本搜索
&lt;/h2>&lt;p>进行一次基本搜索非常简单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 假设 TAVILY_API_KEY 环境变量已设置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果没有设置环境变量，则使用: client = TavilyClient(api_key=&amp;#34;YOUR_API_KEY&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TavilyClient&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;2024年人工智能的最新进展是什么？&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 打印总结性答案 (如果请求并获得)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;总结性回答:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-&amp;#34;&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">30&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 打印搜索结果&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">搜索结果:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;标题: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;链接: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;url&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;内容摘要: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;content&amp;#39;&lt;/span>&lt;span class="p">][:&lt;/span>&lt;span class="mi">200&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 打印内容的前200个字符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-&amp;#34;&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;搜索过程中发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="5-search-方法详解">5. &lt;code>search&lt;/code> 方法详解
&lt;/h2>&lt;p>&lt;code>TavilyClient.search()&lt;/code> 是核心方法，它接受多个参数来定制你的搜索请求。&lt;/p>
&lt;h3 id="常用参数">常用参数
&lt;/h3>&lt;ul>
&lt;li>&lt;code>query&lt;/code> (str, 必需): 你的搜索查询语句。&lt;/li>
&lt;li>&lt;code>search_depth&lt;/code> (str, 可选): 搜索深度。
&lt;ul>
&lt;li>&lt;code>&amp;quot;basic&amp;quot;&lt;/code>: 速度更快，结果可能不那么全面。适用于需要快速获取初步信息的场景。（默认值）&lt;/li>
&lt;li>&lt;code>&amp;quot;advanced&amp;quot;&lt;/code>: 进行更深入的搜索，可能会检索更多信息并进行更复杂的分析，结果更全面，但耗时和消耗的信用点数可能更多。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;code>include_answer&lt;/code> (bool, 可选): 是否在结果中包含一个由 AI 生成的总结性答案。默认为 &lt;code>False&lt;/code>（但通常建议设为 &lt;code>True&lt;/code> 以充分利用 Tavily 的特性）。&lt;/li>
&lt;li>&lt;code>include_raw_content&lt;/code> (bool, 可选): 是否在每个搜索结果中包含原始的、未经处理的网页文本内容。默认为 &lt;code>False&lt;/code>。如果为 &lt;code>True&lt;/code>，结果中的 &lt;code>raw_content&lt;/code> 字段将被填充。&lt;/li>
&lt;li>&lt;code>max_results&lt;/code> (int, 可选): 返回的最大搜索结果数量。默认通常是 5 个左右。你可以根据需要调整。&lt;/li>
&lt;li>&lt;code>time_range&lt;/code> （[none,&amp;lsquo;day&amp;rsquo;,&amp;lsquo;week&amp;rsquo;,&amp;lsquo;month&amp;rsquo;,&amp;lsquo;year&amp;rsquo;],可选），默认是none&lt;/li>
&lt;li>&lt;code>include_domains&lt;/code> (list[str], 可选): 一个域名列表。Tavily 会尝试优先从这些域名中查找结果。例如：&lt;code>[&amp;quot;wikipedia.org&amp;quot;, &amp;quot;github.com&amp;quot;]&lt;/code>。&lt;/li>
&lt;li>&lt;code>exclude_domains&lt;/code> (list[str], 可选): 一个域名列表。Tavily 会尝试排除这些域名中的结果。例如：&lt;code>[&amp;quot;pinterest.com&amp;quot;]&lt;/code>。&lt;/li>
&lt;li>&lt;code>topic&lt;/code> (str, 可选): 指定搜索的主题领域，帮助Tavily更好地聚焦结果。可选值包括 (但不限于，具体请参考Tavily官方文档是否有更新)：
&lt;ul>
&lt;li>&lt;code>&amp;quot;general&amp;quot;&lt;/code> (默认)&lt;/li>
&lt;li>&lt;code>&amp;quot;news&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;finance&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;tech&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;academic&amp;quot;&lt;/code> (或 &lt;code>&amp;quot;research_paper&amp;quot;&lt;/code>) - 尤其适合查找学术论文&lt;/li>
&lt;li>&lt;code>&amp;quot;code&amp;quot;&lt;/code> - 专注于代码相关的结果&lt;/li>
&lt;li>&lt;em>注意&lt;/em>：&lt;code>topic&lt;/code> 的具体可用值和效果可能会随 API 更新而变化，请查阅最新的 Tavily 文档。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="示例使用不同参数">示例：使用不同参数
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TavilyClient&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># 假设API密钥已通过环境变量设置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 示例 1: 高级搜索，包含答案和原始内容，限定结果数量&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response_advanced&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;什么是量子计算及其潜在应用？&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">search_depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;advanced&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_answer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_raw_content&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- 高级搜索示例 ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">response_advanced&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;AI 回答: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">response_advanced&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;answer&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">res&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">response_advanced&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[]):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 标题: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 链接: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;url&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">res&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;raw_content&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 原始内容片段: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;raw_content&amp;#39;&lt;/span>&lt;span class="p">][:&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 截取前100字符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 示例 2: 搜索特定主题（例如，新闻）并指定域名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response_news&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;最新的AI芯片发布&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">topic&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;news&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 或 &amp;#34;tech&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_domains&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;theverge.com&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;techcrunch.com&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_answer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- 新闻主题与域名限定搜索示例 ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">response_news&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;AI 回答: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">response_news&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;answer&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">res&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">response_news&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[]):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 标题: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 链接: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;url&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="6-理解返回结果">6. 理解返回结果
&lt;/h2>&lt;p>Tavily API 的 &lt;code>search&lt;/code> 方法返回一个 JSON 对象 (在 Python SDK 中是字典)。&lt;/p>
&lt;h3 id="整体响应结构">整体响应结构
&lt;/h3>&lt;p>一个典型的响应字典可能包含以下键：&lt;/p>
&lt;ul>
&lt;li>&lt;code>query&lt;/code> (str): 你原始的搜索查询。&lt;/li>
&lt;li>&lt;code>answer&lt;/code> (str, 可选): 如果 &lt;code>include_answer=True&lt;/code> 并且 API 能够生成一个总结性答案，这里会包含该答案。&lt;/li>
&lt;li>&lt;code>results&lt;/code> (list[dict]): 一个包含搜索结果条目的列表。每个条目都是一个字典。&lt;/li>
&lt;li>&lt;code>images&lt;/code> (list[str], 可选): 如果搜索与图片相关且Tavily找到图片，可能会包含图片URL列表 (较少见于主要文本搜索场景，更多特定于图片搜索功能，如果Tavily支持)。&lt;/li>
&lt;li>&lt;code>response_time&lt;/code> (float, 可选): API 处理请求所用的时间（秒）。&lt;/li>
&lt;li>&lt;code>error&lt;/code> (str, 可选): 如果发生错误，这里可能包含错误信息。&lt;/li>
&lt;/ul>
&lt;h3 id="结果条目-results-结构">结果条目 (&lt;code>results&lt;/code>) 结构
&lt;/h3>&lt;p>&lt;code>results&lt;/code> 列表中的每个字典代表一个搜索结果，通常包含：&lt;/p>
&lt;ul>
&lt;li>&lt;code>title&lt;/code> (str): 搜索结果的标题。&lt;/li>
&lt;li>&lt;code>url&lt;/code> (str): 结果的来源 URL。&lt;/li>
&lt;li>&lt;code>content&lt;/code> (str): Tavily 提取或生成的与查询相关的该页面的内容摘要或片段。这是非常有用的字段，通常比传统的搜索引擎片段更丰富。&lt;/li>
&lt;li>&lt;code>score&lt;/code> (float, 可选): 一个表示结果与查询相关性的分数。分数越高，相关性越强。&lt;/li>
&lt;li>&lt;code>raw_content&lt;/code> (str, 可选): 如果请求了 &lt;code>include_raw_content=True&lt;/code> 并且 Tavily 成功提取，这里会包含来自源 URL 的原始（或接近原始）文本内容。&lt;/li>
&lt;/ul>
&lt;h2 id="7-高级搜索功能-基于-search-方法的参数组合">7. 高级搜索功能 (基于 &lt;code>search&lt;/code> 方法的参数组合)
&lt;/h2>&lt;p>通过组合 &lt;code>search&lt;/code> 方法的不同参数，可以实现更高级的搜索策略。&lt;/p>
&lt;h3 id="获取特定主题信息">获取特定主题信息
&lt;/h3>&lt;p>使用 &lt;code>topic&lt;/code> 参数可以帮助Tavily更好地理解你的意图并返回更相关的结果。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;最新的Python异步编程库有哪些？&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">topic&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;code&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 或者 &amp;#34;tech&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_answer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 处理 response...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="结合-include_domains-和-exclude_domains">结合 &lt;code>include_domains&lt;/code> 和 &lt;code>exclude_domains&lt;/code>
&lt;/h3>&lt;p>这对于从特定权威来源获取信息或排除已知低质量来源非常有用。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;气候变化对农业的影响 site:gov OR site:edu&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 也可以在query中使用高级搜索操作符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">search_depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;advanced&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_domains&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;nasa.gov&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;epa.gov&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;nature.com&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="c1"># 进一步强调优先域名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">exclude_domains&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;personalblog.com&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="c1"># 排除不想要的域名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_answer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 处理 response...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;em>注意&lt;/em>: &lt;code>site:&lt;/code> 操作符在 &lt;code>query&lt;/code> 字符串中是许多搜索引擎支持的标准语法，Tavily 也可能支持。与 &lt;code>include_domains&lt;/code> 结合使用可以增强效果。&lt;/p>
&lt;h2 id="8-错误处理">8. 错误处理
&lt;/h2>&lt;p>在使用 API 时，进行适当的错误处理非常重要。Tavily SDK 可能会因为网络问题、无效的 API 密钥、请求超限等原因抛出异常。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily.errors&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyApiError&lt;/span> &lt;span class="c1"># 可以捕获特定的Tavily错误&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TavilyClient&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;一个可能会失败的查询&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># ...处理响应...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="n">TavilyApiError&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Tavily API 错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 例如，处理API密钥无效、超出配额等特定错误&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="n">requests&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exceptions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">RequestException&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># requests库是底层依赖&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;网络请求错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;发生了未知错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="9-完整示例代码">9. 完整示例代码
&lt;/h2>&lt;p>下面是一个结合了多个特性的完整示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tavily.errors&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TavilyApiError&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">json&lt;/span> &lt;span class="c1"># 用于美化打印JSON&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">perform_tavily_search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">query_text&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">num_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;basic&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">include_ans&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">include_raw&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 执行 Tavily 搜索并打印结果。
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 推荐从环境变量获取 API 密钥&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># api_key = os.getenv(&amp;#34;TAVILY_API_KEY&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># if not api_key:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># print(&amp;#34;错误: TAVILY_API_KEY 环境变量未设置。&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># client = TavilyClient(api_key=api_key)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 或者，如果你在脚本开头设置了全局的 client 实例：&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TavilyClient&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># 确保API密钥已通过某种方式提供&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">正在搜索 (深度: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">depth&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, 结果数: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">num_results&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">): &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">query_text&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response_data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">query_text&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">search_depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">depth&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_answer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">include_ans&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_raw_content&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">include_raw&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">num_results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- API 响应 (JSON 格式) ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dumps&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_data&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">indent&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ensure_ascii&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># 美化打印&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">response_data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- 总结性回答 ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;answer&amp;#34;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- 搜索结果 (&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;results&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[]))&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> 条) ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">enumerate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;results&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[])):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">结果 &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 标题: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;N/A&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; URL: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;url&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;N/A&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; Tavily 内容摘要:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2"> &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;content&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;N/A&amp;#39;&lt;/span>&lt;span class="p">)[:&lt;/span>&lt;span class="mi">300&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 摘要的前300字符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;raw_content&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 原始页面内容 (片段):&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2"> &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;raw_content&amp;#39;&lt;/span>&lt;span class="p">][:&lt;/span>&lt;span class="mi">200&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 原始内容的前200字符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; 相关性分数: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;score&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;N/A&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;=&amp;#34;&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="n">TavilyApiError&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Tavily API 错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;执行搜索时发生意外错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 确保你已经设置了 TAVILY_API_KEY 环境变量，或者在 TavilyClient() 中直接提供&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 例如: TavilyClient(api_key=&amp;#34;YOUR_TAVILY_API_KEY&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getenv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;TAVILY_API_KEY&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="s2">&amp;#34;YOUR_TAVILY_API_KEY&amp;#34;&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;YOUR_TAVILY_API_KEY&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># 检查是否已设置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;请设置 TAVILY_API_KEY 环境变量或在代码中直接提供 API 密钥。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">perform_tavily_search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query_text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Python在数据科学中的应用&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;basic&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_ans&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">perform_tavily_search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query_text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;解释一下Transformer模型的工作原理&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;advanced&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_ans&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_raw&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span> &lt;span class="c1"># 请求原始文本内容&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">perform_tavily_search&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">query_text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;最新发布的宇宙学研究论文&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num_results&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">topic&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;academic&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 尝试使用主题参数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">depth&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;advanced&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">include_ans&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="10-使用技巧">10. 使用技巧
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>明确的查询&lt;/strong>: 查询语句越明确，Tavily 返回的结果就越相关。&lt;/li>
&lt;li>&lt;strong>利用 &lt;code>search_depth&lt;/code>&lt;/strong>: 对于快速概览，&lt;code>&amp;quot;basic&amp;quot;&lt;/code> 可能足够；对于需要深入信息的研究，&lt;code>&amp;quot;advanced&amp;quot;&lt;/code> 更佳。&lt;/li>
&lt;li>&lt;strong>&lt;code>include_answer&lt;/code>&lt;/strong>: 这个参数是 Tavily 的核心优势之一，尽量使用它来获取直接的答案。&lt;/li>
&lt;li>&lt;strong>&lt;code>include_raw_content&lt;/code> 与自定义抓取&lt;/strong>: 如果 &lt;code>include_raw_content=True&lt;/code> 能满足需求，可以减少你自己编写网页抓取逻辑的需要。但如果需要非常特定的元素或有复杂的网站结构，你可能仍需要结合你自己的抓取工具（如教程开头提到的 &lt;code>get_page_content&lt;/code> 函数）。&lt;/li>
&lt;li>&lt;strong>迭代和优化&lt;/strong>: 根据返回结果调整你的查询和参数，以获得最佳效果。&lt;/li>
&lt;li>&lt;strong>查阅官方文档&lt;/strong>: API 和 SDK 可能会更新，定期查阅 &lt;a class="link" href="https://www.google.com/search?q=https://docs.tavily.com/docs/python-sdk/introduction" target="_blank" rel="noopener"
>Tavily 官方文档&lt;/a> 以获取最新信息、参数和最佳实践。&lt;/li>
&lt;li>&lt;strong>管理信用点数&lt;/strong>: 注意不同类型的查询（特别是 &lt;code>search_depth=&amp;quot;advanced&amp;quot;&lt;/code> 或请求大量结果）可能会消耗不同的信用点数。&lt;/li>
&lt;/ul>
&lt;p>希望这篇教程能帮助你有效地使用 Tavily API Python SDK！&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>coze</title><link>https://www.zata.cc/p/coze/</link><pubDate>Tue, 04 Mar 2025 11:46:49 +0800</pubDate><guid>https://www.zata.cc/p/coze/</guid><description>&lt;img src="https://www.zata.cc/p/coze/images/index/index.png" alt="Featured image of post coze" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://www.coze.cn/open/docs/guides/welcome" target="_blank" rel="noopener"
>https://www.coze.cn/open/docs/guides/welcome&lt;/a> &lt;br>
&lt;a class="link" href="https://www.coze.cn/open/docs/guides/quickstart" target="_blank" rel="noopener"
>https://www.coze.cn/open/docs/guides/quickstart&lt;/a>&lt;/p>
&lt;hr>
&lt;h3 id="使用说明">使用说明
&lt;/h3>&lt;ol>
&lt;li>创建一个智能体&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/coze/images/index/index-1.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/coze/images/index/index-1_hu9549748875298603540.png 480w, https://www.zata.cc/p/coze/images/index/index-1_hu1452269760180308711.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/coze/images/index/index-3.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/coze/images/index/index-3_hu18342400152805402960.png 480w, https://www.zata.cc/p/coze/images/index/index-3_hu8913680812167665348.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;ol start="2">
&lt;li>可以设置智能体的行为&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/coze/images/index/index-4.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/coze/images/index/index-4_hu17958632984151858100.png 480w, https://www.zata.cc/p/coze/images/index/index-4_hu17628936805932658056.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;p>效果&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/coze/images/index/index-5.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/coze/images/index/index-5_hu5131084219054494997.png 480w, https://www.zata.cc/p/coze/images/index/index-5_hu11140956575062933646.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;ol start="3">
&lt;li>调用插件&lt;/li>
&lt;/ol>
&lt;p>插件可以调用一些api&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/coze/images/index/index-6.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/coze/images/index/index-6_hu683124536788398373.png 480w, https://www.zata.cc/p/coze/images/index/index-6_hu1664421184630799744.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p></description></item><item><title>flora无限画布</title><link>https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/</link><pubDate>Tue, 04 Mar 2025 11:04:28 +0800</pubDate><guid>https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/</guid><description>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index.png" alt="Featured image of post flora无限画布" />&lt;h3 id="网址">网址
&lt;/h3>&lt;p>&lt;a class="link" href="https://www.florafauna.ai/" target="_blank" rel="noopener"
>https://www.florafauna.ai/&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index.png"
width="1912"
height="990"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index_hu10243901073479220620.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index_hu8261799794381179797.png 1024w"
loading="lazy"
alt="flora示例"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="463px"
>&lt;/p>
&lt;h3 id="使用简介">使用简介
&lt;/h3>&lt;p>当前可以免费使用，可以google账户登录&lt;/p>
&lt;ol>
&lt;li>导入个人的资源文件，由于后续的风格生成&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-2.png"
width="596"
height="604"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-2_hu12986149292569534657.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-2_hu12227843731374198742.png 1024w"
loading="lazy"
alt="导入资源"
class="gallery-image"
data-flex-grow="98"
data-flex-basis="236px"
>&lt;/p>
&lt;ol start="2">
&lt;li>点击加号，设置生成方式并输入提示词&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-3.png"
width="440"
height="508"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-3_hu10098994804169555423.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-3_hu9621853600036843185.png 1024w"
loading="lazy"
alt="右侧加号"
class="gallery-image"
data-flex-grow="86"
data-flex-basis="207px"
>
&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-4.png"
width="871"
height="499"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-4_hu8934937075754528177.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-4_hu1463430125127450366.png 1024w"
loading="lazy"
alt="点击加号并拖拽"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="418px"
>&lt;/p>
&lt;ol start="3">
&lt;li>点击生成按钮，等待生成结果
其中的数字表示同时生成几个（因为往往ai的效果不稳定，可能生成很多个才能找到适合自己的一个）&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-5.png"
width="641"
height="535"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-5_hu6520656260498055143.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-5_hu4124886301594978791.png 1024w"
loading="lazy"
alt="生成内容"
class="gallery-image"
data-flex-grow="119"
data-flex-basis="287px"
>&lt;/p>
&lt;ol start="4">
&lt;li>可以多个生成内容传入一个输入中，不过只支持文本&lt;/li>
&lt;/ol>
&lt;p>可以让它做总结&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-6.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-6_hu16729944767232049411.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-6_hu9628083294743832403.png 1024w"
loading="lazy"
alt="合并内容做总结"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;ol start="5">
&lt;li>总结的内容可以再用于生成视频或图片&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-7.png"
width="1577"
height="629"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-7_hu8106969889492491683.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-7_hu11828716500076219493.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="250"
data-flex-basis="601px"
>&lt;/p>
&lt;h3 id="使用感受">使用感受
&lt;/h3>&lt;p>flora我主要是用于设计方面，可以提供它一些风格的图片，让它学习，然后让它生成，这样就可以快速生成想要的风格。主要使用的方式是工作流的方式，每一个下级的框都会接收上一级的输出，总体来说使用成本比较低，支持文本、图片和视频三种输入和输出。&lt;br>
&lt;img src="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-1.png"
width="779"
height="538"
srcset="https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-1_hu1164645496528929818.png 480w, https://www.zata.cc/p/flora%E6%97%A0%E9%99%90%E7%94%BB%E5%B8%83/images/index/index-1_hu15248332037510851130.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="144"
data-flex-basis="347px"
>&lt;br>
使用简单，基本上效果也还可以。&lt;/p>
&lt;p>缺点：&lt;/p>
&lt;ul>
&lt;li>感觉界面有点卡顿&lt;/li>
&lt;li>可以选择的模型比较少&lt;/li>
&lt;li>提示词还是需要自己写，有现成的提示词的话，就好了&lt;/li>
&lt;/ul></description></item><item><title>百度自由画布</title><link>https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/</link><pubDate>Tue, 04 Mar 2025 10:59:39 +0800</pubDate><guid>https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/</guid><description>&lt;img src="https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/images/index/index.png" alt="Featured image of post 百度自由画布" />&lt;h3 id="百度自由画布">百度自由画布
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/images/index/index.png"
width="1912"
height="954"
srcset="https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/images/index/index_hu3722237666422632432.png 480w, https://www.zata.cc/p/%E7%99%BE%E5%BA%A6%E8%87%AA%E7%94%B1%E7%94%BB%E5%B8%83/images/index/index_hu1185266302450269477.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;p>正在申请内测资格&amp;hellip;&lt;/p></description></item></channel></rss>