[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-women-ruhe-shiyong-claude-code-nuxt-rust-danticangku":3},{"article":4,"author":63},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":43,"related_articles":44},"d0000000-0000-0000-0000-000000000550","a0000000-0000-0000-0000-000000000036","我们如何使用Claude Code维护Nuxt 4 + Rust单体仓库","women-ruhe-shiyong-claude-code-nuxt-rust-danticangku","深入了解Open Soft如何使用Claude Code作为我们生产单体仓库的日常开发工具。多文件重构、迁移编写、测试生成、代码审查以及使用钩子和MCP服务器的自定义工具的真实工作流。","## 我们的技术栈以及为什么Claude Code适合\n\n在Open Soft，我们的主要产品是一个作为单体仓库构建的网站：使用TypeScript的Nuxt 4前端和由PostgreSQL支持的Rust\u002FAxum后端API。代码库跨越两种语言、两个构建系统、共享数据契约、数据库迁移、10种语言的i18n文件和部署基础设施。更改经常同时触及技术栈的两端。\n\n我们在2025年中期采用了Claude Code，它已成为我们最常用的开发工具。不是因为它为我们编写代码 — 而是因为它以其他工具无法做到的方式推理我们的整个代码库。当您告诉Claude Code\"给articles添加`published_at`字段\"时，它读取Rust迁移，更新处理器中的SQL查询，修改前端的TypeScript类型，调整Nuxt页面组件，更新所有10个语言文件，并运行构建进行验证。这种跨栈意识使它在单体仓库开发中不可或缺。\n\n## CLAUDE.md：教代理您的约定\n\n有效使用Claude Code的基础是`CLAUDE.md`文件。这是一个项目级指令文件，Claude Code在每次会话开始时读取。可以把它看作入职文档，但面向您的AI代理。\n\n我们的`CLAUDE.md`包括：\n\n- **提交约定：** 每次提交必须以`TASK-XXX:`开头并使用祈使语气\n- **架构概述：** 单体仓库结构，哪个目录包含什么\n- **代码风格规则：** TypeScript严格模式，禁止`any`，仅Composition API，`\u003Cscript setup>`语法\n- **i18n规则：** 所有10个语言必须保持同步，键按字母排序，纯英文键\n- **安全规则：** 提交中不能有密钥，参数化SQL，显式CORS源\n- **开发命令：** `npm run dev`、`cargo run`、`make fixtures`等\n\nClaude Code始终如一地遵循这些约定。当它生成提交消息时，使用`TASK-XXX:`前缀。当它添加翻译键时，按字母顺序将其添加到所有10个语言文件中。当它编写SQL时，使用参数化查询。这消除了整个类别的代码审查反馈 — 约定违规。\n\n```markdown\n# CLAUDE.md摘录示例\n## i18n规则\n所有10个语言必须保持同步。添加翻译键时：\n1. 键格式：使用纯英文文本作为键\n2. 字母顺序：每个语言文件中的键必须按A-Z排序\n3. 所有语言必需：en、ru、id、zh、ja、ko、fr、de、es、ar\n```\n\n我们还为后端（`\u002Fserver\u002FCLAUDE.md`）和fixture（`\u002Fserver\u002Ffixtures\u002FCLAUDE.md`）维护每目录的`CLAUDE.md`文件，提供Claude Code在这些目录中工作时激活的上下文特定指令。\n\n## 多文件重构：杀手级用例\n\n为我们节省最多时间的工作流是跨栈重构。以下是我们项目中的真实示例。\n\n**任务：** 给articles系统添加SEO字段（`meta_title`、`meta_description`、`focus_keyword`、`robots_meta`）。\n\n没有Claude Code，这个更改需要：\n1. 编写添加4列的SQL迁移\n2. 更新Rust `Article`模型结构体\n3. 更新Rust `CreateArticle`和`UpdateArticle` DTO\n4. 更新articles处理器中的所有SQL查询（SELECT、INSERT、UPDATE）\n5. 更新前端的TypeScript `Article`类型\n6. 更新管理员编辑器表单以包含新字段\n7. 更新博客文章页面以渲染meta标签\n8. 更新站点地图生成逻辑\n9. 更新所有fixture文件的新字段\n10. 运行迁移、重建、测试\n\n使用Claude Code，我们输入一个命令：\n\n```\n给articles添加SEO字段（meta_title、meta_description、focus_keyword、robots_meta）。\n编写迁移，更新Rust模型和处理器，更新前端类型\n和管理员编辑器，给博客页面添加meta标签，并更新fixture。\n```\n\nClaude Code作为单个代理循环执行：\n- 读取现有迁移文件以理解模式\n- 读取Rust模型以理解当前结构体\n- 读取处理器以找到所有SQL查询\n- 读取前端类型和组件\n- 在12+个文件中进行所有更改\n- 运行`cargo check`验证Rust代码编译\n- 运行`npm run build`验证前端构建\n- 修复错误并迭代直到两者都通过\n\n整个过程大约需要5分钟，而手动操作需要45-60分钟。更重要的是，它捕获了人类遗漏的交叉引用bug — 比如忘记将新列添加到UPDATE查询或遗漏fixture文件。\n\n## 迁移编写\n\n数据库迁移特别适合Claude Code，因为它们需要理解当前模式、期望的最终状态以及两者之间的安全转换路径。\n\n当我们要求Claude Code编写迁移时，它：\n1. 读取所有现有迁移文件以理解当前模式\n2. 读取Rust模型以理解目标状态\n3. 编写带有正确`ALTER TABLE`语句的迁移SQL\n4. 在适当的地方添加`IF NOT EXISTS`保护以确保幂等性\n5. 如果我们使用可逆迁移，创建相应的\"回滚\"迁移\n6. 更新Rust模型和处理器以使用新模式\n\n## 测试生成\n\n我们广泛使用Claude Code来生成测试fixture和SQL种子数据。我们的fixture文件包含真实的长篇内容（1500+字的文章）和适当的SEO元数据，手动编写这些内容既乏味又容易出错。\n\n工作流：\n1. 描述我们需要的文章（主题、角度、技术深度）\n2. Claude Code生成带有完整Markdown内容的SQL INSERT语句\n3. 它遵循我们的UUID约定（`d0000000-...`用于文章，`a0000000-...`用于类别）\n4. 它添加`ON CONFLICT (slug) DO NOTHING`以确保幂等性\n5. 它通过`article_tags`关联表将文章链接到标签\n\n## 使用Claude Code进行代码审查\n\n在打开合并请求之前，我们运行Claude Code作为审查者：\n\n```\n审查此分支上的所有更改，检查bug、安全问题、性能问题\n以及与我们CLAUDE.md约定的一致性。\n```\n\nClaude Code：\n- 运行`git diff main...HEAD`查看所有更改\n- 分析每个文件的潜在问题\n- 检查SQL注入（非参数化查询）\n- 验证i18n键在所有10个语言中存在\n- 检查Rust生产代码中的`.unwrap()`调用\n- 验证错误处理遵循我们的模式\n- 报告带有文件路径和行号的发现\n\n这捕获了大约30%的问题，否则这些问题会在人工代码审查中被发现，让我们的人工审查者专注于架构和业务逻辑。\n\n## 钩子：自动化质量关卡\n\nClaude Code支持钩子 — 在某些操作之前或之后自动运行的脚本。我们使用钩子来强制质量：\n\n**预提交钩子：** 在Claude Code创建提交之前运行`cargo fmt --check`和`cargo clippy`。如果任一失败，Claude Code修复问题并重试。\n\n**编辑后钩子：** 在Claude Code修改`\u002Fi18n\u002Flocales\u002F`中的任何文件后，钩子运行脚本验证所有10个语言文件具有相同的键集。如果缺少键，Claude Code添加它们。\n\n## MCP服务器：扩展Claude Code的能力\n\n模型上下文协议（MCP）服务器让您可以给Claude Code访问外部工具。我们运行两个自定义MCP服务器：\n\n1. **数据库MCP服务器：** 让Claude Code直接查询我们的开发PostgreSQL。调试数据问题时，Claude Code可以运行`SELECT`查询来检查实际数据库状态，理解问题，并编写修复 — 全在一个循环中。\n\n2. **部署状态MCP服务器：** 连接到我们的CI\u002FCD流水线。Claude Code可以检查最新部署是否成功，读取构建日志，并诊断故障，无需我们切换到CI仪表板。\n\n## 1M上下文下大型代码库的技巧\n\nClaude Code的1M token上下文窗口是其在单体仓库工作中最强大的功能。以下是我们如何最大化利用它：\n\n**让Claude Code探索。** 不要试图预先选择要显示的文件。描述您想要什么，让Claude Code使用其工具（`Grep`、`Glob`、`Read`）找到相关代码。\n\n**使用CLAUDE.md作为稳定上下文。** 会话之间不变的信息 — 架构、约定、命令 — 放入CLAUDE.md，这样Claude Code不会浪费上下文重新发现它。\n\n**将大任务分解为阶段。** 即使有1M token，像\"重构整个身份验证系统\"这样的任务也受益于分阶段：首先分析和规划，然后逐模块实施，最后测试。\n\n**信任代理循环。** 当Claude Code进行更改、运行构建、看到错误并修复它时 — 该循环就是功能。不要在中途打断。让它收敛。\n\n## 陷阱和解决方法\n\n**陷阱：Claude Code过度工程化。** 有时它添加不需要的抽象或模式。解决方法：在CLAUDE.md中添加\"KISS — 保持简单。避免过度工程化。\"\n\n**陷阱：长会话中的陈旧上下文。** 多次编辑后，Claude Code对当前文件状态的理解可能偏移。解决方法：为每个主要任务启动新会话。\n\n**陷阱：非确定性输出。** 相同的提示在不同运行中可能产生不同的代码。解决方法：使用具体、详细的提示。\n\n**陷阱：测试数据质量。** AI生成的测试数据可能内部不一致。解决方法：始终审查生成的fixture并运行完整测试套件。\n\n**陷阱：激进的文件更改。** Claude Code有时修改您没有要求它触碰的文件。解决方法：在接受之前仔细审查差异。\n\n## 常见问题\n\n### Claude Code日常使用需要多少费用？\n\n对于我们4名开发者的团队，我们每月在所有项目的Claude Code API使用上花费约$200-300。每月$20\u002F开发者的Max计划是更可预测的替代方案。\n\n### Claude Code可以离线使用吗？\n\n不能。Claude Code需要互联网连接与Anthropic的API通信。所有代码处理在服务器端进行。\n\n### Claude Code会破坏我们的构建吗？\n\n可能，但它自己捕获大多数问题。Claude Code将您的构建命令作为其代理循环的一部分运行。如果`cargo check`失败，它读取错误并修复。根据我们的经验，约90%的构建在第一次通过，99%在Claude Code的自我纠正循环后通过。\n\n### 你们如何处理密钥和环境变量？\n\nClaude Code尊重`.gitignore`并可配置为排除敏感文件。我们从不在仓库中存储密钥。\n\n### Claude Code适合独立开发者吗？\n\n当然。在某些方面它对独立开发者甚至更有价值，因为它作为代码审查的第二双眼睛、记住项目约定的知识库以及乏味任务的力量倍增器。\n\n## 结论\n\nClaude Code不是为您编写应用程序的魔杖。它是一个在跨栈推理、约定执行和乏味的多文件更改方面表现出色的力量倍增器。CLAUDE.md用于持久项目知识、钩子用于质量执行、MCP服务器用于外部工具访问的组合，使其成为我们在单体仓库工作中使用过的最有能力的AI开发工具。\n\n9个月日常使用后的关键洞察：Claude Code最有价值的不是编写新代码，而是维护现有代码 — 重构、迁移、测试和审查。这些任务消耗了开发者70%的时间，最受益于理解整个代码库的代理。","\u003Ch2 id=\"claude-code\">我们的技术栈以及为什么Claude Code适合\u003C\u002Fh2>\n\u003Cp>在Open Soft，我们的主要产品是一个作为单体仓库构建的网站：使用TypeScript的Nuxt 4前端和由PostgreSQL支持的Rust\u002FAxum后端API。代码库跨越两种语言、两个构建系统、共享数据契约、数据库迁移、10种语言的i18n文件和部署基础设施。更改经常同时触及技术栈的两端。\u003C\u002Fp>\n\u003Cp>我们在2025年中期采用了Claude Code，它已成为我们最常用的开发工具。不是因为它为我们编写代码 — 而是因为它以其他工具无法做到的方式推理我们的整个代码库。当您告诉Claude Code“给articles添加\u003Ccode>published_at\u003C\u002Fcode>字段“时，它读取Rust迁移，更新处理器中的SQL查询，修改前端的TypeScript类型，调整Nuxt页面组件，更新所有10个语言文件，并运行构建进行验证。这种跨栈意识使它在单体仓库开发中不可或缺。\u003C\u002Fp>\n\u003Ch2 id=\"claude-md\">CLAUDE.md：教代理您的约定\u003C\u002Fh2>\n\u003Cp>有效使用Claude Code的基础是\u003Ccode>CLAUDE.md\u003C\u002Fcode>文件。这是一个项目级指令文件，Claude Code在每次会话开始时读取。可以把它看作入职文档，但面向您的AI代理。\u003C\u002Fp>\n\u003Cp>我们的\u003Ccode>CLAUDE.md\u003C\u002Fcode>包括：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>提交约定：\u003C\u002Fstrong> 每次提交必须以\u003Ccode>TASK-XXX:\u003C\u002Fcode>开头并使用祈使语气\u003C\u002Fli>\n\u003Cli>\u003Cstrong>架构概述：\u003C\u002Fstrong> 单体仓库结构，哪个目录包含什么\u003C\u002Fli>\n\u003Cli>\u003Cstrong>代码风格规则：\u003C\u002Fstrong> TypeScript严格模式，禁止\u003Ccode>any\u003C\u002Fcode>，仅Composition API，\u003Ccode>&lt;script setup&gt;\u003C\u002Fcode>语法\u003C\u002Fli>\n\u003Cli>\u003Cstrong>i18n规则：\u003C\u002Fstrong> 所有10个语言必须保持同步，键按字母排序，纯英文键\u003C\u002Fli>\n\u003Cli>\u003Cstrong>安全规则：\u003C\u002Fstrong> 提交中不能有密钥，参数化SQL，显式CORS源\u003C\u002Fli>\n\u003Cli>\u003Cstrong>开发命令：\u003C\u002Fstrong> \u003Ccode>npm run dev\u003C\u002Fcode>、\u003Ccode>cargo run\u003C\u002Fcode>、\u003Ccode>make fixtures\u003C\u002Fcode>等\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Claude Code始终如一地遵循这些约定。当它生成提交消息时，使用\u003Ccode>TASK-XXX:\u003C\u002Fcode>前缀。当它添加翻译键时，按字母顺序将其添加到所有10个语言文件中。当它编写SQL时，使用参数化查询。这消除了整个类别的代码审查反馈 — 约定违规。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># CLAUDE.md摘录示例\n## i18n规则\n所有10个语言必须保持同步。添加翻译键时：\n1. 键格式：使用纯英文文本作为键\n2. 字母顺序：每个语言文件中的键必须按A-Z排序\n3. 所有语言必需：en、ru、id、zh、ja、ko、fr、de、es、ar\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>我们还为后端（\u003Ccode>\u002Fserver\u002FCLAUDE.md\u003C\u002Fcode>）和fixture（\u003Ccode>\u002Fserver\u002Ffixtures\u002FCLAUDE.md\u003C\u002Fcode>）维护每目录的\u003Ccode>CLAUDE.md\u003C\u002Fcode>文件，提供Claude Code在这些目录中工作时激活的上下文特定指令。\u003C\u002Fp>\n\u003Ch2 id=\"\">多文件重构：杀手级用例\u003C\u002Fh2>\n\u003Cp>为我们节省最多时间的工作流是跨栈重构。以下是我们项目中的真实示例。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>任务：\u003C\u002Fstrong> 给articles系统添加SEO字段（\u003Ccode>meta_title\u003C\u002Fcode>、\u003Ccode>meta_description\u003C\u002Fcode>、\u003Ccode>focus_keyword\u003C\u002Fcode>、\u003Ccode>robots_meta\u003C\u002Fcode>）。\u003C\u002Fp>\n\u003Cp>没有Claude Code，这个更改需要：\u003C\u002Fp>\n\u003Col>\n\u003Cli>编写添加4列的SQL迁移\u003C\u002Fli>\n\u003Cli>更新Rust \u003Ccode>Article\u003C\u002Fcode>模型结构体\u003C\u002Fli>\n\u003Cli>更新Rust \u003Ccode>CreateArticle\u003C\u002Fcode>和\u003Ccode>UpdateArticle\u003C\u002Fcode> DTO\u003C\u002Fli>\n\u003Cli>更新articles处理器中的所有SQL查询（SELECT、INSERT、UPDATE）\u003C\u002Fli>\n\u003Cli>更新前端的TypeScript \u003Ccode>Article\u003C\u002Fcode>类型\u003C\u002Fli>\n\u003Cli>更新管理员编辑器表单以包含新字段\u003C\u002Fli>\n\u003Cli>更新博客文章页面以渲染meta标签\u003C\u002Fli>\n\u003Cli>更新站点地图生成逻辑\u003C\u002Fli>\n\u003Cli>更新所有fixture文件的新字段\u003C\u002Fli>\n\u003Cli>运行迁移、重建、测试\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>使用Claude Code，我们输入一个命令：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>给articles添加SEO字段（meta_title、meta_description、focus_keyword、robots_meta）。\n编写迁移，更新Rust模型和处理器，更新前端类型\n和管理员编辑器，给博客页面添加meta标签，并更新fixture。\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Code作为单个代理循环执行：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>读取现有迁移文件以理解模式\u003C\u002Fli>\n\u003Cli>读取Rust模型以理解当前结构体\u003C\u002Fli>\n\u003Cli>读取处理器以找到所有SQL查询\u003C\u002Fli>\n\u003Cli>读取前端类型和组件\u003C\u002Fli>\n\u003Cli>在12+个文件中进行所有更改\u003C\u002Fli>\n\u003Cli>运行\u003Ccode>cargo check\u003C\u002Fcode>验证Rust代码编译\u003C\u002Fli>\n\u003Cli>运行\u003Ccode>npm run build\u003C\u002Fcode>验证前端构建\u003C\u002Fli>\n\u003Cli>修复错误并迭代直到两者都通过\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>整个过程大约需要5分钟，而手动操作需要45-60分钟。更重要的是，它捕获了人类遗漏的交叉引用bug — 比如忘记将新列添加到UPDATE查询或遗漏fixture文件。\u003C\u002Fp>\n\u003Ch2 id=\"\">迁移编写\u003C\u002Fh2>\n\u003Cp>数据库迁移特别适合Claude Code，因为它们需要理解当前模式、期望的最终状态以及两者之间的安全转换路径。\u003C\u002Fp>\n\u003Cp>当我们要求Claude Code编写迁移时，它：\u003C\u002Fp>\n\u003Col>\n\u003Cli>读取所有现有迁移文件以理解当前模式\u003C\u002Fli>\n\u003Cli>读取Rust模型以理解目标状态\u003C\u002Fli>\n\u003Cli>编写带有正确\u003Ccode>ALTER TABLE\u003C\u002Fcode>语句的迁移SQL\u003C\u002Fli>\n\u003Cli>在适当的地方添加\u003Ccode>IF NOT EXISTS\u003C\u002Fcode>保护以确保幂等性\u003C\u002Fli>\n\u003Cli>如果我们使用可逆迁移，创建相应的“回滚“迁移\u003C\u002Fli>\n\u003Cli>更新Rust模型和处理器以使用新模式\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">测试生成\u003C\u002Fh2>\n\u003Cp>我们广泛使用Claude Code来生成测试fixture和SQL种子数据。我们的fixture文件包含真实的长篇内容（1500+字的文章）和适当的SEO元数据，手动编写这些内容既乏味又容易出错。\u003C\u002Fp>\n\u003Cp>工作流：\u003C\u002Fp>\n\u003Col>\n\u003Cli>描述我们需要的文章（主题、角度、技术深度）\u003C\u002Fli>\n\u003Cli>Claude Code生成带有完整Markdown内容的SQL INSERT语句\u003C\u002Fli>\n\u003Cli>它遵循我们的UUID约定（\u003Ccode>d0000000-...\u003C\u002Fcode>用于文章，\u003Ccode>a0000000-...\u003C\u002Fcode>用于类别）\u003C\u002Fli>\n\u003Cli>它添加\u003Ccode>ON CONFLICT (slug) DO NOTHING\u003C\u002Fcode>以确保幂等性\u003C\u002Fli>\n\u003Cli>它通过\u003Ccode>article_tags\u003C\u002Fcode>关联表将文章链接到标签\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"claude-code\">使用Claude Code进行代码审查\u003C\u002Fh2>\n\u003Cp>在打开合并请求之前，我们运行Claude Code作为审查者：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>审查此分支上的所有更改，检查bug、安全问题、性能问题\n以及与我们CLAUDE.md约定的一致性。\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Code：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>运行\u003Ccode>git diff main...HEAD\u003C\u002Fcode>查看所有更改\u003C\u002Fli>\n\u003Cli>分析每个文件的潜在问题\u003C\u002Fli>\n\u003Cli>检查SQL注入（非参数化查询）\u003C\u002Fli>\n\u003Cli>验证i18n键在所有10个语言中存在\u003C\u002Fli>\n\u003Cli>检查Rust生产代码中的\u003Ccode>.unwrap()\u003C\u002Fcode>调用\u003C\u002Fli>\n\u003Cli>验证错误处理遵循我们的模式\u003C\u002Fli>\n\u003Cli>报告带有文件路径和行号的发现\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这捕获了大约30%的问题，否则这些问题会在人工代码审查中被发现，让我们的人工审查者专注于架构和业务逻辑。\u003C\u002Fp>\n\u003Ch2 id=\"\">钩子：自动化质量关卡\u003C\u002Fh2>\n\u003Cp>Claude Code支持钩子 — 在某些操作之前或之后自动运行的脚本。我们使用钩子来强制质量：\u003C\u002Fp>\n\u003Cp>\u003Cstrong>预提交钩子：\u003C\u002Fstrong> 在Claude Code创建提交之前运行\u003Ccode>cargo fmt --check\u003C\u002Fcode>和\u003Ccode>cargo clippy\u003C\u002Fcode>。如果任一失败，Claude Code修复问题并重试。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>编辑后钩子：\u003C\u002Fstrong> 在Claude Code修改\u003Ccode>\u002Fi18n\u002Flocales\u002F\u003C\u002Fcode>中的任何文件后，钩子运行脚本验证所有10个语言文件具有相同的键集。如果缺少键，Claude Code添加它们。\u003C\u002Fp>\n\u003Ch2 id=\"mcp-claude-code\">MCP服务器：扩展Claude Code的能力\u003C\u002Fh2>\n\u003Cp>模型上下文协议（MCP）服务器让您可以给Claude Code访问外部工具。我们运行两个自定义MCP服务器：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>数据库MCP服务器：\u003C\u002Fstrong> 让Claude Code直接查询我们的开发PostgreSQL。调试数据问题时，Claude Code可以运行\u003Ccode>SELECT\u003C\u002Fcode>查询来检查实际数据库状态，理解问题，并编写修复 — 全在一个循环中。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>部署状态MCP服务器：\u003C\u002Fstrong> 连接到我们的CI\u002FCD流水线。Claude Code可以检查最新部署是否成功，读取构建日志，并诊断故障，无需我们切换到CI仪表板。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"1m\">1M上下文下大型代码库的技巧\u003C\u002Fh2>\n\u003Cp>Claude Code的1M token上下文窗口是其在单体仓库工作中最强大的功能。以下是我们如何最大化利用它：\u003C\u002Fp>\n\u003Cp>\u003Cstrong>让Claude Code探索。\u003C\u002Fstrong> 不要试图预先选择要显示的文件。描述您想要什么，让Claude Code使用其工具（\u003Ccode>Grep\u003C\u002Fcode>、\u003Ccode>Glob\u003C\u002Fcode>、\u003Ccode>Read\u003C\u002Fcode>）找到相关代码。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>使用CLAUDE.md作为稳定上下文。\u003C\u002Fstrong> 会话之间不变的信息 — 架构、约定、命令 — 放入CLAUDE.md，这样Claude Code不会浪费上下文重新发现它。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>将大任务分解为阶段。\u003C\u002Fstrong> 即使有1M token，像“重构整个身份验证系统“这样的任务也受益于分阶段：首先分析和规划，然后逐模块实施，最后测试。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>信任代理循环。\u003C\u002Fstrong> 当Claude Code进行更改、运行构建、看到错误并修复它时 — 该循环就是功能。不要在中途打断。让它收敛。\u003C\u002Fp>\n\u003Ch2 id=\"\">陷阱和解决方法\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>陷阱：Claude Code过度工程化。\u003C\u002Fstrong> 有时它添加不需要的抽象或模式。解决方法：在CLAUDE.md中添加“KISS — 保持简单。避免过度工程化。“\u003C\u002Fp>\n\u003Cp>\u003Cstrong>陷阱：长会话中的陈旧上下文。\u003C\u002Fstrong> 多次编辑后，Claude Code对当前文件状态的理解可能偏移。解决方法：为每个主要任务启动新会话。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>陷阱：非确定性输出。\u003C\u002Fstrong> 相同的提示在不同运行中可能产生不同的代码。解决方法：使用具体、详细的提示。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>陷阱：测试数据质量。\u003C\u002Fstrong> AI生成的测试数据可能内部不一致。解决方法：始终审查生成的fixture并运行完整测试套件。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>陷阱：激进的文件更改。\u003C\u002Fstrong> Claude Code有时修改您没有要求它触碰的文件。解决方法：在接受之前仔细审查差异。\u003C\u002Fp>\n\u003Ch2 id=\"\">常见问题\u003C\u002Fh2>\n\u003Ch3>Claude Code日常使用需要多少费用？\u003C\u002Fh3>\n\u003Cp>对于我们4名开发者的团队，我们每月在所有项目的Claude Code API使用上花费约\u003Cspan class=\"math math-inline\">200-300。每月\u003C\u002Fspan>20\u002F开发者的Max计划是更可预测的替代方案。\u003C\u002Fp>\n\u003Ch3>Claude Code可以离线使用吗？\u003C\u002Fh3>\n\u003Cp>不能。Claude Code需要互联网连接与Anthropic的API通信。所有代码处理在服务器端进行。\u003C\u002Fp>\n\u003Ch3>Claude Code会破坏我们的构建吗？\u003C\u002Fh3>\n\u003Cp>可能，但它自己捕获大多数问题。Claude Code将您的构建命令作为其代理循环的一部分运行。如果\u003Ccode>cargo check\u003C\u002Fcode>失败，它读取错误并修复。根据我们的经验，约90%的构建在第一次通过，99%在Claude Code的自我纠正循环后通过。\u003C\u002Fp>\n\u003Ch3>你们如何处理密钥和环境变量？\u003C\u002Fh3>\n\u003Cp>Claude Code尊重\u003Ccode>.gitignore\u003C\u002Fcode>并可配置为排除敏感文件。我们从不在仓库中存储密钥。\u003C\u002Fp>\n\u003Ch3>Claude Code适合独立开发者吗？\u003C\u002Fh3>\n\u003Cp>当然。在某些方面它对独立开发者甚至更有价值，因为它作为代码审查的第二双眼睛、记住项目约定的知识库以及乏味任务的力量倍增器。\u003C\u002Fp>\n\u003Ch2 id=\"\">结论\u003C\u002Fh2>\n\u003Cp>Claude Code不是为您编写应用程序的魔杖。它是一个在跨栈推理、约定执行和乏味的多文件更改方面表现出色的力量倍增器。CLAUDE.md用于持久项目知识、钩子用于质量执行、MCP服务器用于外部工具访问的组合，使其成为我们在单体仓库工作中使用过的最有能力的AI开发工具。\u003C\u002Fp>\n\u003Cp>9个月日常使用后的关键洞察：Claude Code最有价值的不是编写新代码，而是维护现有代码 — 重构、迁移、测试和审查。这些任务消耗了开发者70%的时间，最受益于理解整个代码库的代理。\u003C\u002Fp>\n","zh","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:41.525979Z","我们如何使用Claude Code进行Nuxt 4 + Rust单体仓库开发","了解Open Soft如何使用Claude Code进行多文件重构、迁移编写、测试生成和代码审查，在Nuxt 4 + Rust单体仓库中的真实工作流示例。","claude code 单体仓库工作流",null,"index, follow",[22,27,31,35,39],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000008","AI","ai","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000012","DevOps","devops",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000004","Nuxt","nuxt",{"id":36,"name":37,"slug":38,"created_at":26},"c0000000-0000-0000-0000-000000000001","Rust","rust",{"id":40,"name":41,"slug":42,"created_at":26},"c0000000-0000-0000-0000-000000000002","TypeScript","typescript","工程",[45,51,57],{"id":46,"title":47,"slug":48,"excerpt":49,"locale":12,"category_name":43,"published_at":50},"d0000000-0000-0000-0000-000000000668","为什么Bali在2026年正在成为东南亚的影响力科技中心","weishenme-bali-2026-zhengzai-chengwei-dongnanya-yingxiangli-keji-zhongxin","Bali在东南亚创业生态系统中排名第16位。随着Web3构建者、AI可持续发展初创公司和生态旅游科技公司的集中，该岛正在打造区域影响力科技之都的独特定位。","2026-03-28T10:44:48.898750Z",{"id":52,"title":53,"slug":54,"excerpt":55,"locale":12,"category_name":43,"published_at":56},"d0000000-0000-0000-0000-000000000667","ASEAN数据保护拼图：开发者合规清单","asean-shuju-baohu-pintu-kaifazhe-heguiqingdan","七个ASEAN国家现已拥有全面的数据保护法律，各自具有不同的同意模型、本地化要求和处罚结构。这是一份为构建多国应用程序的开发者准备的实用合规清单。","2026-03-28T10:44:48.893467Z",{"id":58,"title":59,"slug":60,"excerpt":61,"locale":12,"category_name":43,"published_at":62},"d0000000-0000-0000-0000-000000000666","Indonesia 290亿美元数字化转型：软件公司的机遇","indonesia-290yi-meiyuan-shuzihua-zhuanxing-ruanjian-gongsi-jiyu","Indonesia IT服务市场预计在2026年达到290.3亿美元，高于2025年的243.7亿美元。云基础设施、AI、电子商务和数据中心正在推动东南亚最快的增长。","2026-03-28T10:44:48.875457Z",{"id":13,"name":64,"slug":65,"bio":66,"photo_url":19,"linkedin":19,"role":67,"created_at":68,"updated_at":68},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]