<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Xu Kang Blog</title><description>徐康的技术博客 - 分享全栈开发、云原生、AI 应用等技术文章</description><link>https://www.xukangr.com/</link><item><title>Codex App 客户端使用指南：把 AI 编程助手放进本地工作流</title><link>https://www.xukangr.com/blog/codex-app-client-guide/</link><guid isPermaLink="true">https://www.xukangr.com/blog/codex-app-client-guide/</guid><description>介绍 Codex App 桌面客户端的核心能力、适用场景、工作模式、权限边界和下载入口，帮助开发者把 Codex 更自然地接入日常项目。</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Codex App 不是一个单纯的聊天窗口，而是面向开发工作的桌面客户端。它把项目、终端、Git、浏览器预览、自动化和多线程任务放在同一个工作环境里，让 AI 编程助手更接近一个可以持续协作的本地开发伙伴。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Codex App 是什么？&lt;/h2&gt;
&lt;p&gt;Codex App 是 OpenAI Codex 的桌面客户端，适合在本地项目里做代码阅读、功能开发、Bug 修复、代码审查、文档整理和上线验证。&lt;/p&gt;
&lt;p&gt;和普通网页聊天不同，Codex App 更强调“围绕项目工作”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以绑定本地项目目录&lt;/li&gt;
&lt;li&gt;可以在项目里读取文件、修改代码、运行命令&lt;/li&gt;
&lt;li&gt;可以查看 Git diff、提交、推送和创建 PR&lt;/li&gt;
&lt;li&gt;可以通过内置终端验证构建、测试和部署命令&lt;/li&gt;
&lt;li&gt;可以使用独立 worktree 并行处理多个任务&lt;/li&gt;
&lt;li&gt;可以用内置浏览器检查本地页面和线上页面&lt;/li&gt;
&lt;li&gt;可以把长期任务做成自动化或线程唤醒&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，它更像一个带 UI 的 AI 开发工作台，而不是只负责回答问题的聊天工具。&lt;/p&gt;
&lt;h2&gt;适合哪些场景？&lt;/h2&gt;
&lt;p&gt;我认为 Codex App 最适合这几类工作。&lt;/p&gt;
&lt;h3&gt;1. 代码库理解&lt;/h3&gt;
&lt;p&gt;当你接手一个项目，或者隔一段时间回来维护旧项目，可以直接让 Codex 帮你梳理：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;这个项目的入口在哪里？
博客文章是怎么生成的？
部署脚本在哪？
当前还有哪些明显的技术债？
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;它会结合项目文件、终端输出和 Git 状态给出结论，比单纯复制几段代码去问 AI 更高效。&lt;/p&gt;
&lt;h3&gt;2. 小步迭代开发&lt;/h3&gt;
&lt;p&gt;Codex App 适合做边改边验证的任务，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增一篇博客文章&lt;/li&gt;
&lt;li&gt;给页面补 SEO meta&lt;/li&gt;
&lt;li&gt;调整 Nginx 或部署脚本&lt;/li&gt;
&lt;li&gt;修复构建错误&lt;/li&gt;
&lt;li&gt;改一个组件并用浏览器检查效果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它可以先读代码，再改文件，再跑 &lt;code&gt;npm run build&lt;/code&gt;、&lt;code&gt;pnpm test&lt;/code&gt; 或其他验证命令，最后把结果整理给你。&lt;/p&gt;
&lt;h3&gt;3. 本地和远程运维&lt;/h3&gt;
&lt;p&gt;如果你给它明确的服务器信息和权限范围，它也可以帮你做一些运维动作，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查服务是否存活&lt;/li&gt;
&lt;li&gt;查看 Nginx 配置&lt;/li&gt;
&lt;li&gt;调整 webhook 部署脚本&lt;/li&gt;
&lt;li&gt;验证 HTTPS、301 跳转和 sitemap&lt;/li&gt;
&lt;li&gt;排查 GitHub webhook 是否触发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务最重要的是不要只听“理论建议”，而是让它实际检查命令输出和线上响应。&lt;/p&gt;
&lt;h3&gt;4. 多线程并行工作&lt;/h3&gt;
&lt;p&gt;Codex App 支持不同线程，并且可以使用 Git worktree 隔离改动。比如一个线程修 Bug，另一个线程写文档，第三个线程做页面改版。这样可以减少互相污染，也更容易回滚。&lt;/p&gt;
&lt;h2&gt;Local、Worktree、Cloud 怎么选？&lt;/h2&gt;
&lt;p&gt;创建线程时通常会看到不同工作模式。我的理解是：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模式&lt;/th&gt;
&lt;th&gt;适合场景&lt;/th&gt;
&lt;th&gt;特点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local&lt;/td&gt;
&lt;td&gt;小改动、直接操作当前项目&lt;/td&gt;
&lt;td&gt;改动发生在当前目录，最快最直接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worktree&lt;/td&gt;
&lt;td&gt;并行任务、实验性改造&lt;/td&gt;
&lt;td&gt;独立 Git worktree，隔离性更好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;需要远程环境或后台执行&lt;/td&gt;
&lt;td&gt;任务在云环境中运行，适合离线并行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;日常小任务用 Local 就够。如果你担心影响当前工作区，或者想让 Codex 同时做几条线，优先用 Worktree。&lt;/p&gt;
&lt;h2&gt;我常用的工作方式&lt;/h2&gt;
&lt;h3&gt;先让它读项目，不要直接改&lt;/h3&gt;
&lt;p&gt;比较稳的开局是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;先读一下项目结构和部署方式，不要修改文件。告诉我你理解到的入口、构建命令和上线流程。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样可以避免它一上来就按错误假设动手。&lt;/p&gt;
&lt;h3&gt;让它实际验证&lt;/h3&gt;
&lt;p&gt;如果是构建、部署、页面效果这类任务，我会明确要求：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;改完以后跑 build，并用浏览器验证页面和控制台错误。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这比只让它“写完代码”可靠很多。&lt;/p&gt;
&lt;h3&gt;用 Git diff 控制范围&lt;/h3&gt;
&lt;p&gt;Codex App 里可以看到 diff。每次任务完成后，我都会看它到底改了哪些文件。只要发现无关改动，就让它解释或者拆出去。&lt;/p&gt;
&lt;h3&gt;复杂任务用 checklist&lt;/h3&gt;
&lt;p&gt;比如迁移技术栈、改部署链路、上线 HTTPS 这类任务，适合让它维护一个任务列表：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;先列 checklist，然后每完成一步更新状态。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样你可以清楚知道它做到哪一步、卡在哪里。&lt;/p&gt;
&lt;h2&gt;权限和安全边界&lt;/h2&gt;
&lt;p&gt;Codex App 能运行命令、读写文件、访问网络，所以权限边界很重要。&lt;/p&gt;
&lt;p&gt;我的建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要随便给全盘写权限&lt;/li&gt;
&lt;li&gt;删除、重置、覆盖文件前要让它说明影响范围&lt;/li&gt;
&lt;li&gt;生产服务器操作前先备份或确认当前服务状态&lt;/li&gt;
&lt;li&gt;不要把私钥、Token、Cookie 写进文章或代码仓库&lt;/li&gt;
&lt;li&gt;让它做运维时，要求它报告具体命令和结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 开发助手越强，越需要把边界说清楚。好的使用方式不是“完全放手”，而是让它负责执行，你负责判断方向和验收结果。&lt;/p&gt;
&lt;h2&gt;和 CLI、IDE 插件有什么区别？&lt;/h2&gt;
&lt;p&gt;如果你喜欢终端，Codex CLI 很直接；如果你主要在编辑器里写代码，IDE 插件更贴近文件编辑；Codex App 则更适合把项目、线程、终端、浏览器、Git 和自动化集中起来管理。&lt;/p&gt;
&lt;p&gt;我的使用感受是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI：适合命令行重度用户&lt;/li&gt;
&lt;li&gt;IDE 插件：适合围绕当前文件快速改代码&lt;/li&gt;
&lt;li&gt;Codex App：适合完整任务流、并行线程、部署检查和可视化协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们不是互相替代，而是不同入口。真正重要的是选择最贴合当前任务的界面。&lt;/p&gt;
&lt;h2&gt;下载地址&lt;/h2&gt;
&lt;p&gt;我整理了一个 Codex App 客户端下载入口：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pan.quark.cn/s/ea9b32048698#/list/share&quot;&gt;点击下载 Codex App 客户端&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果链接失效，可以回到我的博客或联系我更新。&lt;/p&gt;
&lt;h2&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Codex App 最有价值的地方，不是“让 AI 帮你写几段代码”，而是把 AI 放进真实开发流程里：读项目、改代码、跑命令、看日志、查页面、提交 Git、处理部署。&lt;/p&gt;
&lt;p&gt;当你把任务描述清楚，把权限边界设好，再要求它做真实验证，它就会从一个问答工具变成一个真正能协作的工程助手。&lt;/p&gt;
</content:encoded><category>AI</category><category>Codex</category><category>工具</category></item><item><title>Claude Code 速记表：从入门到精通的完整命令指南</title><link>https://www.xukangr.com/blog/claude-code-cheatsheet/</link><guid isPermaLink="true">https://www.xukangr.com/blog/claude-code-cheatsheet/</guid><description>系统整理 Claude Code 所有命令、快捷键、配置技巧和实用工作流，涵盖斜杠命令、CLAUDE.md 配置、Hooks 自动化、MCP 集成等，开发者必备速查手册。</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Claude Code 是 Anthropic 推出的命令行 AI 编程助手，可以直接在终端中理解你的代码库、编辑文件、运行命令。本文系统整理了所有命令、快捷键和配置技巧，收藏备用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;安装与更新&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

# 更新到最新版本
claude update

# 检查当前版本
claude --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，在项目目录下运行 &lt;code&gt;claude&lt;/code&gt; 即可启动交互式会话。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.xukangr.com/assets/images/blog/claude-terminal.png&quot; alt=&quot;Claude Code 终端界面&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;启动与会话管理&lt;/h2&gt;
&lt;p&gt;Claude Code 的第一步是掌握如何启动和管理会话。&lt;/p&gt;
&lt;h3&gt;基础启动命令&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启动交互式 REPL&lt;/td&gt;
&lt;td&gt;日常开发，多轮对话&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude &quot;提示词&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;带初始提示启动会话&lt;/td&gt;
&lt;td&gt;快速开始特定任务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -p &quot;提示词&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;单次执行模式（Print Mode）&lt;/td&gt;
&lt;td&gt;脚本调用、管道操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;继续最近一次会话&lt;/td&gt;
&lt;td&gt;恢复中断的工作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -r &amp;lt;session-id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;恢复指定会话&lt;/td&gt;
&lt;td&gt;回到特定历史对话&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;常用启动参数&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 指定模型启动
claude --model claude-sonnet-4

# 单次执行模式，输出 JSON
claude -p &quot;分析这个项目的结构&quot; --output-format json

# 单次执行并输出流式 JSON
claude -p &quot;生成 API 文档&quot; --output-format stream-json

# 使用 JSON Schema 强制结构化输出
claude -p &quot;列出所有 API 端点&quot; --json-schema &apos;{&quot;type&quot;:&quot;object&quot;,&quot;properties&quot;:{&quot;endpoints&quot;:{&quot;type&quot;:&quot;array&quot;}}}&apos;

# 管道操作：将文件内容传给 Claude
cat error.log | claude -p &quot;分析这个错误日志&quot;

# 组合使用：git diff 传给 Claude 审查
git diff | claude -p &quot;请审查这段代码改动&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;交互式斜杠命令&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.xukangr.com/assets/images/blog/claude-slash-commands.png&quot; alt=&quot;Claude Code 斜杠命令&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在 Claude Code 会话中，输入 &lt;code&gt;/&lt;/code&gt; 即可查看所有可用命令。以下是完整列表：&lt;/p&gt;
&lt;h3&gt;会话控制&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;别名&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/help&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;显示所有可用命令&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/reset&lt;/code&gt;, &lt;code&gt;/new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;清除当前对话历史，开始新对话&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/exit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/quit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;退出当前会话&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/compact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;压缩对话历史，释放上下文空间&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/context&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;可视化当前上下文使用情况&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/cost&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;显示当前会话的 Token 使用量和费用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/branch &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;将当前对话分支为新会话&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;模型与能力&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/model &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;切换 AI 模型（如 sonnet, haiku, opus）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/effort &amp;lt;level&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;调整推理深度：&lt;code&gt;low&lt;/code&gt;、&lt;code&gt;medium&lt;/code&gt;、&lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/plan [描述]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;进入规划模式（只读探索，不执行操作）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;项目与配置&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;初始化项目的 CLAUDE.md 文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;管理 CLAUDE.md 记忆文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/permissions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;查看或修改工具权限设置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;打开配置管理界面&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;检查安装状态、连接和版本信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/logout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;登出 Anthropic 账户&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;工具与集成&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/mcp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;管理 MCP（Model Context Protocol）服务器连接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/hooks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;查看和管理生命周期钩子&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/agents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;列出已配置的子代理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/pr-comments&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;获取并显示 GitHub PR 评论&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/remote-control&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启用从 claude.ai 的远程控制&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;快捷键速记表&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.xukangr.com/assets/images/blog/claude-keyboard-shortcuts.png&quot; alt=&quot;Claude Code 快捷键&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这些快捷键可以大幅提升你的操作效率：&lt;/p&gt;
&lt;h3&gt;输入增强&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;快捷键&lt;/th&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@文件路径&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件引用&lt;/td&gt;
&lt;td&gt;输入 &lt;code&gt;@&lt;/code&gt; 后自动补全，引导 Claude 关注指定文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;!命令&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;直接执行 Shell&lt;/td&gt;
&lt;td&gt;绕过 Claude 直接运行 bash/shell 命令&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + V&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;粘贴图片&lt;/td&gt;
&lt;td&gt;将剪贴板中的图片直接粘贴到终端供分析&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;操作控制&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;快捷键&lt;/th&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;中断&lt;/td&gt;
&lt;td&gt;停止当前输出或操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Esc + Esc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;回退菜单&lt;/td&gt;
&lt;td&gt;撤销最近的更改或对话轮次&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;命令搜索&lt;/td&gt;
&lt;td&gt;搜索历史命令记录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Shift + Tab&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;切换权限模式&lt;/td&gt;
&lt;td&gt;在自动确认/手动确认之间切换&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + C&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;取消输入&lt;/td&gt;
&lt;td&gt;取消当前正在输入的内容&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;CLAUDE.md — 项目上下文配置&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.xukangr.com/assets/images/blog/claude-config-workflow.png&quot; alt=&quot;Claude Code 配置体系&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 中最重要的配置文件之一。它相当于给 AI 的&quot;项目说明书&quot;，帮助 Claude 理解你的项目约定和偏好。&lt;/p&gt;
&lt;h3&gt;快速初始化&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 在项目根目录自动生成 CLAUDE.md
claude /init
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;推荐内容结构&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 项目上下文

## 技术栈
- 前端：React 18 + TypeScript + Vite
- 后端：Go 1.22 + Gin
- 数据库：PostgreSQL 16

## 编码规范
- 使用 ESLint + Prettier 格式化
- 组件采用 PascalCase 命名
- API 接口使用 RESTful 风格

## 项目结构
- `src/components/` — React 组件
- `src/hooks/` — 自定义 Hooks
- `src/api/` — API 接口封装
- `server/` — Go 后端代码

## 重要约定
- 所有 API 请求通过 `src/api/request.ts` 封装
- 组件测试文件与组件同目录，以 `.test.tsx` 结尾
- 禁止直接使用 `console.log`，使用 `logger` 工具
- Git 提交信息遵循 Conventional Commits

## 常见陷阱
- 数据库迁移必须先创建备份
- 部署前必须运行 `npm run typecheck`
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;最佳实践&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;控制长度&lt;/strong&gt;：保持 50-100 行，最多不超过 300 行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用导入&lt;/strong&gt;：用 &lt;code&gt;@path/to/details.md&lt;/code&gt; 引用详细文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;负面指令更有效&lt;/strong&gt;：&lt;code&gt;NEVER use var&lt;/code&gt; 比 &lt;code&gt;always use const/let&lt;/code&gt; 效果更好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续迭代&lt;/strong&gt;：Claude 犯错的地方，就加对应的规范&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;权限管理系统&lt;/h2&gt;
&lt;p&gt;Claude Code 有三级权限控制，确保操作安全：&lt;/p&gt;
&lt;h3&gt;权限类型&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;权限&lt;/th&gt;
&lt;th&gt;行为&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动执行，无需确认&lt;/td&gt;
&lt;td&gt;受信任的安全操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ask&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;弹出确认对话框&lt;/td&gt;
&lt;td&gt;需要人工审核的操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deny&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;完全禁止&lt;/td&gt;
&lt;td&gt;危险操作或受限环境&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置方式&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 在会话中管理权限
/permissions

# 或直接编辑配置文件
# 全局：~/.claude/settings.json
# 项目：.claude/settings.json
# 本地：.claude/settings.local.json（Git 忽略）
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;settings.json 示例&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;permissions&quot;: {
    &quot;allow&quot;: [
      &quot;Read&quot;,
      &quot;Grep&quot;,
      &quot;Glob&quot;,
      &quot;LS&quot;
    ],
    &quot;deny&quot;: [
      &quot;Bash(rm -rf *)&quot;,
      &quot;Bash(sudo *)&quot;
    ]
  },
  &quot;env&quot;: {
    &quot;CLAUDE_MODEL&quot;: &quot;claude-sonnet-4&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;安全提示&lt;/strong&gt;：Deny 规则优先级最高。在团队项目中，使用项目级 &lt;code&gt;settings.json&lt;/code&gt; 统一安全策略。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;Hooks — 生命周期钩子&lt;/h2&gt;
&lt;p&gt;Hooks 允许你在 Claude 执行特定操作前后自动运行脚本，实现自动化工作流。&lt;/p&gt;
&lt;h3&gt;钩子类型&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;钩子事件&lt;/th&gt;
&lt;th&gt;触发时机&lt;/th&gt;
&lt;th&gt;常见用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;工具执行前&lt;/td&gt;
&lt;td&gt;拦截危险操作、参数校验&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;工具执行后&lt;/td&gt;
&lt;td&gt;自动格式化、运行 Lint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;发送通知时&lt;/td&gt;
&lt;td&gt;自定义通知渠道&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置示例&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;hooks&quot;: {
    &quot;PostToolUse&quot;: [
      {
        &quot;matcher&quot;: &quot;Write|Edit&quot;,
        &quot;command&quot;: &quot;npx prettier --write $CLAUDE_FILE_PATH&quot;
      }
    ],
    &quot;PreToolUse&quot;: [
      {
        &quot;matcher&quot;: &quot;Bash&quot;,
        &quot;command&quot;: &quot;echo $CLAUDE_TOOL_INPUT | jq -r &apos;.command&apos; | grep -q &apos;rm -rf&apos; &amp;amp;&amp;amp; exit 1 || exit 0&quot;
      }
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安全注意事项&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Hooks 以&lt;strong&gt;当前用户的完整权限&lt;/strong&gt;运行，没有沙箱&lt;/li&gt;
&lt;li&gt;务必对 Claude 的 JSON 输入进行验证和清理&lt;/li&gt;
&lt;li&gt;Shell 变量必须加引号防止注入&lt;/li&gt;
&lt;li&gt;使用绝对路径，如 &lt;code&gt;$CLAUDE_PROJECT_DIR&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;MCP 服务器配置&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.xukangr.com/assets/images/blog/claude-mcp-integration.png&quot; alt=&quot;MCP 集成架构&quot; /&gt;&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）让 Claude Code 可以连接外部工具和数据源。&lt;/p&gt;
&lt;h3&gt;添加 MCP 服务器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 添加到项目级配置
claude mcp add-json my-server &apos;{&quot;command&quot;:&quot;npx&quot;,&quot;args&quot;:[&quot;-y&quot;,&quot;@my/mcp-server&quot;]}&apos; --scope project

# 添加到用户级配置
claude mcp add-json my-server &apos;{&quot;command&quot;:&quot;npx&quot;,&quot;args&quot;:[&quot;-y&quot;,&quot;@my/mcp-server&quot;]}&apos; --scope user

# 列出已配置的 MCP 服务器
claude mcp list
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;常用 MCP 服务器推荐&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;服务器&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@anthropic-ai/mcp-server-filesystem&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件系统操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@anthropic-ai/mcp-server-github&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GitHub API 交互&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@anthropic-ai/mcp-server-postgres&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;PostgreSQL 查询&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@anthropic-ai/mcp-server-fetch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HTTP 请求&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;context7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;实时库文档查询&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置文件位置&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;作用域&lt;/th&gt;
&lt;th&gt;路径&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.claude/mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;个人常用工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Project&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.mcp.json&lt;/code&gt;（项目根目录）&lt;/td&gt;
&lt;td&gt;团队共享配置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;Skills 自定义技能&lt;/h2&gt;
&lt;p&gt;Skills 允许你创建可复用的指令集，就像给 Claude 定义&quot;技能&quot;。&lt;/p&gt;
&lt;h3&gt;创建 Skill&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- .claude/skills/deploy/SKILL.md --&amp;gt;
---
name: deploy
description: 部署项目到生产环境
---

## 部署步骤

1. 运行测试：`npm run test`
2. 构建项目：`npm run build`
3. 检查构建产物
4. 部署到服务器：`rsync -avz dist/ user@server:/var/www/`
5. 验证部署状态
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用方式&lt;/h3&gt;
&lt;p&gt;在对话中引用 Skill 文件路径，Claude 会自动读取并执行其中的步骤。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;实用工作流示例&lt;/h2&gt;
&lt;h3&gt;1. 代码审查工作流&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 审查最近的提交
git diff HEAD~1 | claude -p &quot;审查这次提交的代码改动，关注安全性和性能问题&quot;

# 审查 PR
claude -p &quot;查看并审查当前分支与 main 的差异&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. Debug 工作流&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 传入错误日志
cat app.log | claude -p &quot;分析最近的错误，找出根本原因&quot;

# 直接在会话中 Debug
claude &quot;项目运行报错 TypeError: Cannot read property &apos;map&apos; of undefined，帮我排查&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 文档生成工作流&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 生成 API 文档
claude -p &quot;为 src/api/ 目录下的所有接口生成 Markdown 文档&quot;

# 生成 README
claude -p &quot;基于项目结构和 package.json 生成 README.md&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. 重构工作流&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 启动会话进行重构
claude &quot;我想将 src/utils.js 拆分为多个模块文件，每个功能独立&quot;

# 批量重命名
claude &quot;将项目中所有使用 camelCase 的 CSS 类名改为 kebab-case&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;环境变量参考&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;变量&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;th&gt;示例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;API 密钥&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sk-ant-...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_MODEL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;默认模型&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-sonnet-4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_USE_BEDROCK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使用 AWS Bedrock&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_USE_VERTEX&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使用 Google Vertex AI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_PROJECT_DIR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;当前项目目录（Hooks 中使用）&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_FILE_PATH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;当前操作的文件路径（Hooks 中使用）&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;常见问题排查&lt;/h2&gt;
&lt;h3&gt;1. &quot;上下文太长&quot;怎么办？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 使用 /compact 压缩对话
/compact

# 查看上下文使用情况
/context

# 或直接清除开始新对话
/clear
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 如何在企业环境中使用？&lt;/h3&gt;
&lt;p&gt;Claude Code 支持通过 AWS Bedrock 或 Google Vertex AI 访问，无需直接连接 Anthropic API：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 配置 AWS Bedrock
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1

# 配置 Google Vertex AI
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=us-east5
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Claude 不遵守我的 CLAUDE.md？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;检查文件位置是否在项目根目录&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;/memory&lt;/code&gt; 命令确认是否正确加载&lt;/li&gt;
&lt;li&gt;精简内容，超过 300 行效果会下降&lt;/li&gt;
&lt;li&gt;用更明确的否定指令（&lt;code&gt;NEVER&lt;/code&gt;、&lt;code&gt;DO NOT&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 权限经常弹窗确认太烦？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 在会话中切换到自动模式
Shift + Tab

# 或在 settings.json 中预设 Allow 列表
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;一图速记&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────── Claude Code 速记 ───────────────────┐
│                                                         │
│  启动      claude / claude &quot;任务&quot; / claude -p &quot;查询&quot;      │
│  继续      claude -c（最近）/ claude -r &amp;lt;id&amp;gt;（指定）       │
│                                                         │
│  会话      /clear  /compact  /cost  /context  /exit      │
│  模型      /model  /effort  /plan                        │
│  配置      /init  /memory  /permissions  /config         │
│  工具      /mcp  /hooks  /agents  /pr-comments           │
│                                                         │
│  快捷键    @文件  !命令  Esc中断  Esc×2回退               │
│           Ctrl+R搜索  Ctrl+V图片  Shift+Tab权限          │
│                                                         │
│  配置文件  CLAUDE.md       → 项目上下文/规范              │
│           settings.json   → 权限和环境配置               │
│           .mcp.json       → MCP 服务器配置               │
│           hooks/          → 生命周期自动化               │
│           skills/         → 自定义技能指令               │
│                                                         │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;Claude Code 不只是一个&quot;AI 聊天框&quot;，它是一个完整的开发环境增强工具。掌握以上命令和配置后，你可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;提升效率&lt;/strong&gt;：用斜杠命令快速控制会话&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保障安全&lt;/strong&gt;：通过权限系统和 Hooks 防护危险操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队协作&lt;/strong&gt;：用 &lt;code&gt;CLAUDE.md&lt;/code&gt; 和项目配置统一开发规范&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无限拓展&lt;/strong&gt;：通过 MCP 和 Skills 连接任何外部工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议把本文收藏为书签，在日常使用中随时查阅。也可以打印出来贴在显示器旁边 📌&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：Claude Code 更新频率很高，建议定期运行 &lt;code&gt;claude update&lt;/code&gt; 保持最新版本，使用 &lt;code&gt;/help&lt;/code&gt; 查看最新命令列表。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded><category>AI</category><category>工具</category><category>Claude</category></item><item><title>Golang 交叉编译完全指南：一次编写，多平台运行</title><link>https://www.xukangr.com/blog/golang-cross-compilation/</link><guid isPermaLink="true">https://www.xukangr.com/blog/golang-cross-compilation/</guid><description>系统梳理 Go 语言交叉编译的完整用法，涵盖各平台编译命令、参数详解、多平台构建脚本和 CI/CD 自动发布实战。</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Go 语言天生支持交叉编译，只需设置几个环境变量，就能在一台机器上构建出多个平台的可执行文件。本文将系统梳理交叉编译的完整用法，包括常见场景、参数详解和实战技巧。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;什么是交叉编译？&lt;/h2&gt;
&lt;p&gt;交叉编译（Cross Compilation）是指在一个平台上编译生成另一个平台的可执行程序。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;strong&gt;macOS&lt;/strong&gt; 上编译出 Linux 服务器可运行的二进制文件&lt;/li&gt;
&lt;li&gt;在 &lt;strong&gt;Windows&lt;/strong&gt; 开发机上编译出 Linux Docker 容器可运行的程序&lt;/li&gt;
&lt;li&gt;在 &lt;strong&gt;Linux CI/CD&lt;/strong&gt; 环境中同时构建 macOS 和 Windows 的发行版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Go 语言的编译器原生支持交叉编译，&lt;strong&gt;不需要安装任何第三方工具&lt;/strong&gt;，这是 Go 相比许多其他语言的巨大优势。&lt;/p&gt;
&lt;h2&gt;核心环境变量&lt;/h2&gt;
&lt;p&gt;交叉编译的关键在于三个环境变量：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;变量&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;th&gt;常用值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CGO_ENABLED&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;是否启用 CGO&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;（禁用，交叉编译时必须）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GOOS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;目标操作系统&lt;/td&gt;
&lt;td&gt;&lt;code&gt;linux&lt;/code&gt;, &lt;code&gt;darwin&lt;/code&gt;, &lt;code&gt;windows&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GOARCH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;目标 CPU 架构&lt;/td&gt;
&lt;td&gt;&lt;code&gt;amd64&lt;/code&gt;, &lt;code&gt;arm64&lt;/code&gt;, &lt;code&gt;386&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;CGO_ENABLED 为什么要设为 0？&lt;/h3&gt;
&lt;p&gt;交叉编译时必须禁用 CGO（&lt;code&gt;CGO_ENABLED=0&lt;/code&gt;），因为 CGO 需要目标平台的 C 编译器和链接库，而这些在当前平台上通常不可用。禁用 CGO 后，Go 会使用纯 Go 实现的标准库，确保编译产物的可移植性。&lt;/p&gt;
&lt;h3&gt;GOOS 平台对照表&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GOOS 值&lt;/th&gt;
&lt;th&gt;对应平台&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;linux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;darwin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;windows&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;freebsd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;FreeBSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;android&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Android&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ios&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;iOS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;GOARCH 架构对照表&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GOARCH 值&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;th&gt;典型设备&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amd64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64 位 x86&lt;/td&gt;
&lt;td&gt;大多数 PC 和服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;386&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32 位 x86&lt;/td&gt;
&lt;td&gt;老旧 PC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64 位 ARM&lt;/td&gt;
&lt;td&gt;Apple M 系列、树莓派 4、AWS Graviton&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;arm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32 位 ARM&lt;/td&gt;
&lt;td&gt;树莓派 3、嵌入式设备&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;各平台交叉编译命令&lt;/h2&gt;
&lt;h3&gt;在 macOS 上编译&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 编译 Linux amd64 版本（最常见：部署到服务器）
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux main.go

# 编译 Linux arm64 版本（部署到 ARM 服务器，如 AWS Graviton）
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o myapp-linux-arm64 main.go

# 编译 Windows 版本
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;在 Linux 上编译&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 编译 macOS 版本（Intel Mac）
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp-darwin main.go

# 编译 macOS 版本（Apple Silicon M1/M2/M3/M4）
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o myapp-darwin-arm64 main.go

# 编译 Windows 版本
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;在 Windows 上编译&lt;/h3&gt;
&lt;p&gt;Windows 的 CMD 和 PowerShell 设置环境变量的方式不同：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMD（命令提示符）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o myapp main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;PowerShell：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$env:CGO_ENABLED=&quot;0&quot;
$env:GOOS=&quot;linux&quot;
$env:GOARCH=&quot;amd64&quot;
go build -o myapp main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;PowerShell 一行写法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$env:CGO_ENABLED=&quot;0&quot;; $env:GOOS=&quot;linux&quot;; $env:GOARCH=&quot;amd64&quot;; go build -o myapp main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;实战：一键构建多平台版本&lt;/h2&gt;
&lt;p&gt;在项目根目录创建一个构建脚本，一次性编译所有平台的版本：&lt;/p&gt;
&lt;h3&gt;build.sh（macOS / Linux）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
APP_NAME=&quot;myapp&quot;
VERSION=&quot;1.0.0&quot;
BUILD_DIR=&quot;build&quot;

# 清理
rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR

# 定义目标平台
PLATFORMS=(
    &quot;linux/amd64&quot;
    &quot;linux/arm64&quot;
    &quot;darwin/amd64&quot;
    &quot;darwin/arm64&quot;
    &quot;windows/amd64&quot;
)

for PLATFORM in &quot;${PLATFORMS[@]}&quot;; do
    GOOS=${PLATFORM%/*}
    GOARCH=${PLATFORM#*/}
    OUTPUT=&quot;$BUILD_DIR/${APP_NAME}-${GOOS}-${GOARCH}&quot;

    # Windows 需要 .exe 后缀
    if [ &quot;$GOOS&quot; = &quot;windows&quot; ]; then
        OUTPUT=&quot;${OUTPUT}.exe&quot;
    fi

    echo &quot;Building $OUTPUT...&quot;
    CGO_ENABLED=0 GOOS=$GOOS GOARCH=$GOARCH go build \
        -ldflags=&quot;-s -w -X main.Version=$VERSION&quot; \
        -o $OUTPUT main.go
done

echo &quot;✅ Build complete!&quot;
ls -lh $BUILD_DIR/
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;编译参数说明&lt;/h3&gt;
&lt;p&gt;上面脚本中使用的 &lt;code&gt;-ldflags&lt;/code&gt; 参数也值得了解：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;参数&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;去掉符号表，减小体积&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-w&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;去掉 DWARF 调试信息，进一步减小体积&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-X main.Version=$VERSION&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;编译时注入版本号变量&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;使用 &lt;code&gt;-ldflags=&quot;-s -w&quot;&lt;/code&gt; 通常可以减少 &lt;strong&gt;20%-30%&lt;/strong&gt; 的二进制体积。&lt;/p&gt;
&lt;h2&gt;查看支持的平台列表&lt;/h2&gt;
&lt;p&gt;想知道 Go 支持编译哪些平台？运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go tool dist list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出会列出所有支持的 &lt;code&gt;GOOS/GOARCH&lt;/code&gt; 组合，截至 Go 1.22+，已支持超过 40 种组合。&lt;/p&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;1. 编译报错：&lt;code&gt;xxx requires cgo&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;某些包（如 &lt;code&gt;github.com/mattn/go-sqlite3&lt;/code&gt;）依赖 CGO，无法直接交叉编译。解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寻找纯 Go 替代库（如用 &lt;code&gt;modernc.org/sqlite&lt;/code&gt; 替代 &lt;code&gt;go-sqlite3&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;使用 Docker 进行交叉编译&lt;/li&gt;
&lt;li&gt;安装目标平台的交叉编译工具链&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 编译出的文件无法执行&lt;/h3&gt;
&lt;p&gt;检查文件权限（Linux/macOS 需要添加执行权限）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x myapp-linux
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Windows 编译的文件没有 .exe 后缀&lt;/h3&gt;
&lt;p&gt;当 &lt;code&gt;GOOS=windows&lt;/code&gt; 时，Go 会自动添加 &lt;code&gt;.exe&lt;/code&gt; 后缀，但如果你用 &lt;code&gt;-o&lt;/code&gt; 手动指定了输出文件名，需要自己加上 &lt;code&gt;.exe&lt;/code&gt;。&lt;/p&gt;
&lt;h2&gt;在 CI/CD 中的应用&lt;/h2&gt;
&lt;p&gt;在 GitHub Actions 中利用交叉编译自动构建多平台发行版：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# .github/workflows/release.yml
name: Release
on:
  push:
    tags: [&apos;v*&apos;]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - goos: linux
            goarch: amd64
          - goos: linux
            goarch: arm64
          - goos: darwin
            goarch: amd64
          - goos: darwin
            goarch: arm64
          - goos: windows
            goarch: amd64
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: &apos;1.22&apos;
      - name: Build
        env:
          CGO_ENABLED: 0
          GOOS: ${{ matrix.goos }}
          GOARCH: ${{ matrix.goarch }}
        run: |
          EXT=&quot;&quot;
          if [ &quot;$GOOS&quot; = &quot;windows&quot; ]; then EXT=&quot;.exe&quot;; fi
          go build -ldflags=&quot;-s -w&quot; -o myapp-$GOOS-$GOARCH$EXT main.go
      - uses: softprops/action-gh-release@v1
        with:
          files: myapp-*
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mac → Linux 服务器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mac → Windows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux → Mac (M芯片)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Win → Linux&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$env:CGO_ENABLED=&quot;0&quot;; $env:GOOS=&quot;linux&quot;; $env:GOARCH=&quot;amd64&quot;; go build&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Go 的交叉编译是其工具链中最实用的特性之一。掌握了这几个环境变量，你就能轻松实现&quot;一次编写，到处运行&quot;——而且不需要 JVM 😄&lt;/p&gt;
</content:encoded><category>Go</category><category>DevOps</category></item><item><title>Hello World - 我的第一篇博客</title><link>https://www.xukangr.com/blog/hello-world/</link><guid isPermaLink="true">https://www.xukangr.com/blog/hello-world/</guid><description>这是我的个人博客的第一篇文章，分享一下建站的初衷和技术选型。</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;万事开头难，但最重要的是迈出第一步。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;为什么要写博客？&lt;/h2&gt;
&lt;p&gt;作为一名全栈开发工程师，我一直相信「输出是最好的学习方式」。通过写博客，我可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;系统化知识&lt;/strong&gt;：将碎片化的经验整理成完整的知识体系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回顾与反思&lt;/strong&gt;：记录踩过的坑，避免重复犯错&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分享与交流&lt;/strong&gt;：与社区中的开发者们互相学习&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;技术选型&lt;/h2&gt;
&lt;p&gt;这个博客系统采用了极简的技术方案：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Blog System
├── Markdown       # 文章编写格式
├── marked.js      # Markdown 渲染引擎
├── Vanilla JS     # 零依赖前端逻辑
└── GitHub Pages   # 静态托管
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;为什么选择纯静态方案？&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;零服务器成本&lt;/strong&gt; — 完全托管在 GitHub Pages 上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;极快的加载速度&lt;/strong&gt; — 没有服务端渲染延迟&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown 友好&lt;/strong&gt; — 专注于内容创作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 友好&lt;/strong&gt; — Claude Code 可以直接写 Markdown 并发布&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;未来的计划&lt;/h2&gt;
&lt;p&gt;接下来我会在这里分享：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💻 &lt;strong&gt;技术教程&lt;/strong&gt; — Web 开发、云原生、AI 应用&lt;/li&gt;
&lt;li&gt;🛠 &lt;strong&gt;项目实战&lt;/strong&gt; — 真实项目的架构设计与踩坑记录&lt;/li&gt;
&lt;li&gt;🤔 &lt;strong&gt;技术思考&lt;/strong&gt; — 对行业趋势和技术选型的思考&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;学习笔记&lt;/strong&gt; — 阅读和学习的心得体会&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;写在最后&lt;/h2&gt;
&lt;p&gt;感谢你来到这里！如果你对我的文章感兴趣，欢迎关注我的 &lt;a href=&quot;https://github.com/7836246&quot;&gt;GitHub&lt;/a&gt;，也可以通过 &lt;a href=&quot;mailto:7836246@qq.com&quot;&gt;邮件&lt;/a&gt; 与我交流。&lt;/p&gt;
&lt;p&gt;让我们一起在技术的海洋里探索吧 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;发布于 2026年3月31日&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>随笔</category><category>建站</category></item></channel></rss>