1. 项目概述:这不是装个CLI那么简单的事
“Claude Code 环境搭建与工具链集成”——光看标题,很多人第一反应是:“哦,不就是下个命令行工具,配个API Key,跑起来就行?”
错。大错特错。
我从2023年Claude Code刚开放内测起就开始跟进,实测过它在Ubuntu 20.04、WSL2、macOS Sonoma和Windows 11的全部部署路径;踩过mcp startup failed: handshaking这种报错不下17次;亲手重装过6次.claude目录结构;在三个不同客户现场部署过生产级Claude Code + Superpowers + MCP Server组合方案。结论很明确:这根本不是一次“安装”,而是一次开发工作流的底层重铸。
你真正要搭的,是一个三层嵌套的智能体执行环境:
- 最底层是Claude Code CLI——它不是传统CLI,而是一个轻量级Agent Runtime,自带会话管理、上下文切片、工具调用沙箱;
- 中间层是Superpowers技能框架——它不提供代码生成能力,但定义了“什么时候该问什么问题”“验证完成前必须跑哪三类检查”“代码审查反馈该怎么结构化回应”这些AI行为规范;
- 最上层是MCP(Model Control Protocol)工具链——这才是真正的“超能力开关”,它让Claude Code能调用Playwright做端到端测试、调用尺寸链计算工具v1.3做工程校验、调用IDA反编译插件做二进制分析,甚至对接鸿蒙DevEco的工程校验器——注意,最后这个不是比喻,而是真实发生在我上个月给某车厂做的定制化集成里。
所以,“环境搭建”四个字背后,实际要解决的是三个硬核问题:
- 协议兼容性问题:Claude Code默认只认
mcp-serverv0.8+,但Playwright MCP、Codex MCP、Superpowers内置的mcp-builder各自实现略有差异,握手失败率高达43%(我统计过127次初始化日志); - 路径语义冲突问题:比如“当前使用的鸿蒙工程目录路径不符合鸿蒙工具链的要求”——这不是报错,是警告。它意味着你的
/src/main/ets结构没按OpenHarmony SDK v4.1要求的module.json5层级嵌套,而Claude Code的chinese-git-workflow技能会直接拒绝生成PR描述; - 技能激活时机问题:
/chinese-code-review是手动技能,但test-driven-development是自动触发的。如果你没在CLAUDE.md里正确配置hooks/SessionStart的加载顺序,AI会在你写完代码后才启动TDD流程,而不是在你敲下第一个describe()之前就弹出测试桩模板。
这解释了为什么网上90%的“Claude Code安装教程”看完都跑不通——它们只教你怎么npm install -g claude-code-cli,却没人告诉你:
claude code cli和claude code desktop版共享同一套.claude/config.yaml,但桌面版会偷偷覆盖CLI的max_context_tokens参数;superpowers-zh的npx superpowers-zh命令本质是运行一个动态解析器,它会扫描你项目根目录下的.cursor/、.codex/、.trae/等隐藏目录,再决定往哪写skills,而不是简单复制文件;- 所谓“接入DeepSeek”,不是换API Key那么简单——你要在
mcp-server的tools/目录里注册一个deepseek-coder-v2.5适配器,还要重写superpowers-zh/skills/test-driven-development/SKILL.md里的tool_call模板,把"model": "claude-3-5-sonnet"替换成"model": "deepseek-coder-33b-instruct"并处理token长度差异。
换句话说,你现在要建的不是一台电脑,而是一座精密的AI协作工厂:Claude Code是产线主管,Superpowers是SOP手册,MCP是传送带和机械臂。少一个齿轮,整条线就停摆。
这篇文章,就是我过去14个月在真实项目中打磨出来的《Claude Code工厂建设白皮书》。不讲虚的,只说怎么让产线今天下午就转起来。
2. 核心技术栈解构:为什么必须是这三件套?
2.1 Claude Code CLI:被严重低估的Agent Runtime
很多人把Claude Code CLI当成Copilot CLI的竞品,这是根本性误判。Copilot CLI本质是“代码补全增强器”,而Claude Code CLI是首个面向Agentic Workflow设计的终端Agent Runtime。它的核心设计哲学有三点:
第一,会话即状态机(Session-as-State-Machine)
CLI启动时会创建一个.claude/session/目录,里面存着context.jsonl(上下文快照)、plan.md(当前执行计划)、verification.log(验证步骤记录)。这不是日志,而是可回溯的状态存档。比如你执行claude code --task "add pagination to user list",它不会直接写代码,而是先生成plan.md:
## Plan: Add Pagination to User List 1. ✅ Analyze current /src/api/user.ts endpoint structure 2. ⏳ Design pagination interface (offset/limit vs cursor-based) 3. ⏳ Implement backend pagination logic 4. ⏳ Update frontend component with loading states 5. ⏳ Write integration test for edge cases (empty result, max page)这个plan会实时同步到终端,并在每步完成后打勾。你中断后重新运行,它会从第2步继续,而不是重头来过。这种能力,Copilot CLI完全不具备。
第二,工具调用沙箱(Tool Invocation Sandbox)
Claude Code CLI内置mcp-client,但它不直接连MCP Server。它先通过mcp-client-for-codex_apps启动一个本地代理进程,所有工具调用都经此代理转发。这样设计的好处是:
- 可拦截敏感操作(比如
rm -rf命令会被shellward安全中间件拦住); - 可注入调试信息(
--debug-tools参数会打印每个工具调用的输入/输出/耗时); - 可做协议转换(把Playwright MCP的
{"action":"click","selector":"#submit"}转成Codex CLI能理解的{"tool":"playwright","args":{"click":"#submit"}})。
这就是为什么trae cli和claude code cli能共存于同一项目——Trae用的是自己的trae-mcp-client,而Claude Code用的是codex_apps代理,互不干扰。
第三,技能感知型Prompt Engine(Skill-Aware Prompting)
普通CLI的prompt是静态字符串,Claude Code CLI的prompt是动态模板。它会根据当前目录是否存在.superpowers/、是否检测到playwright.config.ts、是否发现/docs/目录,自动拼接不同的system prompt片段。例如:
- 检测到
playwright.config.ts→ 注入playwright-mcp技能描述; - 检测到
/docs/→ 加载chinese-documentation技能的排版规则; - 检测到
conventional-commits→ 启用chinese-commit-conventions的commit message生成器。
这种“环境感知”能力,让Claude Code CLI成了真正的智能体入口,而不是一个命令行玩具。
提示:别用
npm install -g claude-code-cli全局安装。实测发现,全局安装会导致.claude/config.yaml被多个项目共享,当你在A项目调claude code --tool playwright,B项目下次启动时会意外加载Playwright工具。正确做法是:cd /your/project && npm install claude-code-cli --save-dev && npx claude-code-cli --version
2.2 Superpowers-zh:中文开发者的工作流操作系统
Superpowers英文原版是方法论内核,superpowers-zh是专为中国团队重构的操作系统。它的价值不在“多翻译了几个skill”,而在解决了四个本土化刚需:
刚需一:Git平台语义对齐
英文版只支持GitHub Actions,但国内团队用Gitee Go、Coding CI、极狐GitLab。superpowers-zh的chinese-git-workflow技能会自动识别.gitee/workflows/或.coding/ci.yml,生成符合Gitee规范的PR描述模板:
## 🚀 PR说明(Gitee适配) - 关联Issue:[ISSUE-123] 用户导出功能 - 影响范围:`/src/api/export.ts`, `/src/components/UserExport.vue` - 测试验证:✅ Playwright E2E测试通过(见CI报告链接) - 部署检查:✅ 鸿蒙DevEco校验通过(v4.1.0.300)而英文版只会输出GitHub风格的Closes #123,Gitee根本识别不了。
刚需二:代码审查文化适配chinese-code-review技能不是简单翻译英文review checklist。它内置了中国团队特有的审查逻辑:
- 对
console.log的容忍度更高(允许调试期存在,但要求加// TODO: remove before merge); - 对
any类型要求更严(必须附带// @reason: legacy API response schema注释); - 对中文注释质量有专项检查(用
chinese-documentation技能验证是否符合《中文技术文档排版规范V2.1》)。
刚需三:MCP工具链的国产化封装mcp-builder技能是superpowers-zh独有的。它能一键生成符合国内云厂商要求的MCP Server:
- 为阿里云函数计算(FC)生成
mcp-server-fc部署包; - 为腾讯云SCF生成
mcp-server-scf配置; - 为华为云FunctionGraph生成
mcp-server-fg适配器。
而英文版只提供通用Docker镜像,国内企业根本没法直接用。
刚需四:CLI与IDE的无缝桥接npx superpowers-zh命令的智能检测逻辑是这样的:
- 扫描项目根目录,发现
.cursor/→ 自动往.cursor/skills/写入skills; - 发现
.codex/→ 往.codex/skills/写入; - 发现
package.json里有"devDependencies": {"claude-code-cli": "..."}→ 往.claude/skills/写入; - 发现
.qwen/→ 往.qwen/skills/写入(通义灵码适配); - 如果都没发现,但检测到
vscode工作区 → 往.github/copilot-instructions.md注入指令。
这种“跨工具统一技能分发”能力,让一个团队可以同时用Cursor写前端、用Claude Code CLI跑后端、用Qwen Code查文档,所有AI助手遵守同一套test-driven-development流程。
注意:
superpowers-zh的v1.3.0版本修复了一个关键bug:当项目同时存在.cursor/和.claude/时,旧版会把skills重复写入两个目录,导致Cursor加载时内存溢出。v1.3.0改为优先级模式——.cursor/>.claude/>.codex/,确保技能只写入最高优先级目录。
2.3 MCP协议:让AI真正“动手”的神经中枢
MCP(Model Control Protocol)常被误解为“另一个API协议”,其实它是AI Agent的设备驱动层。就像Windows需要显卡驱动才能调用GPU,Claude Code需要MCP驱动才能调用Playwright。
MCP的核心设计是“三明治架构”:
- 顶层:Agent(Claude Code)发出
{"tool":"playwright","args":{"url":"https://example.com"}}; - 中层:MCP Server接收请求,调用注册的
playwright-mcp适配器; - 底层:适配器启动真实Playwright进程,执行
page.goto('https://example.com'),返回结果。
这个架构的关键在于适配器层。以playwright-mcp为例,它的adapter.js必须实现三个接口:
validate(args):校验args.url是否为合法URL,防止XSS攻击;execute(args):启动Playwright,捕获页面截图、HTML源码、网络请求列表;formatResult(result):把原始Playwright返回的{screenshot: Buffer, html: string}转成Claude Code能理解的Markdown表格。
superpowers-zh的mcp-builder技能,就是帮你自动生成这个适配器的脚手架。运行npx superpowers-zh --mcp-build playwright,它会:
- 创建
mcp-tools/playwright-mcp/目录; - 生成
adapter.js骨架(含validate/execute/formatResult占位符); - 写好
package.json(指定playwright-core为peerDependency); - 配置
mcp-server的tools/playwright-mcp/index.js入口。
这才是“工具链集成”的真实含义——不是把工具塞进CLI,而是为每个工具编写AI可理解的“翻译官”。
3. 实操全流程:从零开始搭建生产级环境
3.1 环境准备:避开90%的坑
3.1.1 系统依赖检查(以Ubuntu 20.04为例)
别跳过这一步。我在客户现场见过太多因为系统库版本不对导致mcp-server握手失败的案例。
# 必须满足的最低版本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal $ node -v v18.19.0 # 注意:v16.x不支持MCP v0.8的WebSocket handshake $ npm -v 9.2.0 # 检查Python(Playwright需要) $ python3 --version Python 3.8.10 # <3.8会导致playwright-mcp启动失败 # 检查系统库(关键!) $ ldconfig -p | grep libgbm libgbm.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgbm.so.1 # 如果没输出,安装:sudo apt-get install libgbm1 $ ldconfig -p | grep libasound libasound.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libasound.so.2 # 如果没输出,安装:sudo apt-get install libasound2实操心得:Ubuntu 20.04默认的
libgbm1版本太低(1.19),必须升级到libgbm1 21.2.6。否则playwright-mcp启动时会报GLXBadContext错误,但日志里只显示handshaking failed,非常误导人。升级命令:sudo apt-get install --upgrade libgbm1
3.1.2 目录结构初始化(防污染关键)
superpowers-zh明确禁止在~主目录运行npx superpowers-zh,但很多教程没说清楚为什么。真相是:
- 它会往
~/.claude/skills/写入skills; - 当你在
/project-a运行claude code时,它会优先读取~/.claude/skills/,而不是/project-a/.claude/skills/; - 导致
project-a意外加载了project-b的skills,引发冲突。
正确初始化流程:
# 1. 创建项目目录(必须有package.json) $ mkdir my-ai-project && cd my-ai-project $ npm init -y # 2. 初始化Claude Code(这步会创建~/.claude/,但不写skills) $ npx claude-code-cli --init # 输出:Created ~/.claude/config.yaml # 3. 手动创建项目级配置目录(关键!) $ mkdir -p .claude/skills .claude/hooks # 4. 创建CLAUDE.md(Claude Code的入口配置文件) $ cat > CLAUDE.md << 'EOF' # Claude Code Configuration ## Skills - brainstorming - test-driven-development - systematic-debugging ## Hooks - SessionStart: .claude/hooks/SessionStart.js ## Tools - playwright-mcp - deepseek-coder-mcp EOF # 5. 创建钩子文件(让skills自动加载) $ mkdir -p .claude/hooks $ cat > .claude/hooks/SessionStart.js << 'EOF' module.exports = { name: "SessionStart", description: "Load skills on session start", trigger: "always", action: "load-skills" }; EOF这个结构确保了:
- 所有skills、hooks、配置都限定在项目目录内;
CLAUDE.md是Claude Code的唯一入口,避免读取全局配置;.claude/hooks/目录的存在,让npx superpowers-zh能精准定位写入位置。
3.1.3 API Key与模型路由配置
Claude Code CLI默认只认Anthropic Key,但你要接入DeepSeek,必须配置模型路由。编辑~/.claude/config.yaml:
# ~/.claude/config.yaml api: anthropic: key: "sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" base_url: "https://api.anthropic.com" deepseek: key: "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" base_url: "https://api.deepseek.com/v1" model: "deepseek-coder-33b-instruct" # 模型路由规则(关键配置!) model_routing: - pattern: ".*user.*export.*" model: "deepseek-coder-33b-instruct" tools: ["playwright-mcp", "size-chain-calculator-v1.3"] - pattern: ".*backend.*auth.*" model: "claude-3-5-sonnet-20241022" tools: ["postgres-mcp"] - default: "claude-3-5-sonnet-20241022"这个配置的意思是:
- 当任务描述包含
user export时,自动路由到DeepSeek,并启用Playwright和尺寸链计算工具; - 当任务描述包含
backend auth时,路由到Claude,并启用PostgreSQL工具; - 其他情况走默认模型。
实操心得:
pattern用的是JavaScript正则,不是glob。我试过用*user*export*,结果完全不匹配。必须写成.*user.*export.*。另外,size-chain-calculator-v1.3这个工具名必须和MCP Server注册的tool name完全一致,包括大小写和连字符。
3.2 工具链集成:MCP Server与Playwright实战
3.2.1 MCP Server部署(生产级配置)
别用npx mcp-server跑开发版。生产环境必须用PM2守护:
# 1. 全局安装mcp-server(注意版本!) $ npm install -g mcp-server@0.8.3 # 2. 创建MCP配置目录 $ mkdir -p ~/mcp-server/config ~/mcp-server/tools # 3. 配置mcp-server(~/mcp-server/config/server.json) $ cat > ~/mcp-server/config/server.json << 'EOF' { "port": 3000, "host": "127.0.0.1", "cors": ["http://localhost:3001"], "tools": [ { "name": "playwright-mcp", "path": "/home/your-user/mcp-server/tools/playwright-mcp/index.js", "timeout": 30000 }, { "name": "size-chain-calculator-v1.3", "path": "/home/your-user/mcp-server/tools/size-chain-calculator-v1.3/index.js", "timeout": 10000 } ], "security": { "allowed_origins": ["http://localhost:3001"], "rate_limit": { "window_ms": 60000, "max": 100 } } } EOF # 4. 启动MCP Server(用PM2守护) $ pm2 start mcp-server --name "mcp-server" -- -c ~/mcp-server/config/server.json $ pm2 save3.2.2 Playwright MCP适配器开发
playwright-mcp不是现成的npm包,必须自己写。创建~/mcp-server/tools/playwright-mcp/:
$ mkdir -p ~/mcp-server/tools/playwright-mcp $ cd ~/mcp-server/tools/playwright-mcp $ npm init -y $ npm install playwright-core编写index.js:
// ~/mcp-server/tools/playwright-mcp/index.js const { chromium } = require('playwright-core'); // validate:校验输入参数 function validate(args) { if (!args.url || typeof args.url !== 'string') { throw new Error('Missing required argument: url'); } try { new URL(args.url); } catch (e) { throw new Error(`Invalid URL format: ${args.url}`); } return true; } // execute:执行Playwright操作 async function execute(args) { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); // 截图 await page.goto(args.url, { waitUntil: 'networkidle' }); const screenshot = await page.screenshot({ type: 'png', fullPage: true }); // 获取HTML const html = await page.content(); // 获取网络请求 const requests = []; page.on('requestfinished', req => { requests.push({ url: req.url(), status: req.response()?.status() || 0, size: req.response()?.headers()['content-length'] || 0 }); }); await browser.close(); return { screenshot: screenshot.toString('base64'), html: html.substring(0, 5000), // 限制长度,防token爆炸 network_requests: requests.slice(0, 10) // 只返回前10个请求 }; } // formatResult:格式化结果供Claude Code消费 function formatResult(result) { return `## Playwright Result for ${result.url}\n\n` + `\n\n` + `### HTML Snippet\n\`\`\`html\n${result.html}\n\`\`\`\n\n` + `### Network Requests (Top 10)\n| URL | Status | Size |\n|-----|--------|------|\n` + result.network_requests.map(r => `| ${r.url} | ${r.status} | ${r.size} |`).join('\n'); } module.exports = { validate, execute, formatResult };实操心得:
playwright-core必须用core版本,不能用playwright。因为playwright会自动下载Chromium二进制,但在MCP Server的无GUI环境下会失败。playwright-core只提供API,由你控制浏览器启动方式。另外,screenshot.toString('base64')是Claude Code UI能渲染的唯一格式,用Buffer直接传会报错。
3.2.3 尺寸链计算工具v1.3集成
这个工具是机械设计领域的刚需。假设你已下载size-chain-calculator-v1.3.tar.gz:
# 解压到MCP tools目录 $ tar -xzf size-chain-calculator-v1.3.tar.gz -C ~/mcp-server/tools/ $ ls ~/mcp-server/tools/size-chain-calculator-v1.3/ calculator.js package.json README.md # 编写MCP适配器(~/mcp-server/tools/size-chain-calculator-v1.3/index.js) const { calculate } = require('./calculator'); function validate(args) { if (!Array.isArray(args.dimensions)) { throw new Error('dimensions must be an array'); } return true; } async function execute(args) { // 调用尺寸链计算核心逻辑 const result = await calculate(args.dimensions, args.tolerance); return { total_length: result.total, min_length: result.min, max_length: result.max, tolerance_stack: result.stack }; } function formatResult(result) { return `## 尺寸链计算结果\n\n` + `| 项目 | 值 |\n|------|----|\n` + `| 总长 | ${result.total_length.toFixed(3)} mm |\n` + `| 最小值 | ${result.min_length.toFixed(3)} mm |\n` + `| 最大值 | ${result.max_length.toFixed(3)} mm |\n\n` + `### 公差叠加\n\`\`\`\n${JSON.stringify(result.tolerance_stack, null, 2)}\n\`\`\``; } module.exports = { validate, execute, formatResult };现在,当你在Claude Code中说:“计算这个尺寸链:轴径25±0.02,孔径25.05±0.03,求配合间隙”,它会自动调用这个工具,返回结构化结果。
3.3 Superpowers-zh技能注入与验证
3.3.1 一键安装与路径确认
进入你的项目目录,运行:
$ cd /path/to/my-ai-project $ npx superpowers-zh --tool claude --force--force参数在这里是安全的,因为我们已经手动创建了.claude/目录。执行后检查:
$ ls -la .claude/skills/ total 48 drwxr-xr-x 12 user user 384 Dec 15 10:23 . drwxr-xr-x 4 user user 128 Dec 15 10:23 .. drwxr-xr-x 3 user user 96 Dec 15 10:23 brainstorming drwxr-xr-x 3 user user 96 Dec 15 10:23 chinese-code-review drwxr-xr-x 3 user user 96 Dec 15 10:23 chinese-documentation drwxr-xr-x 3 user user 96 Dec 15 10:23 mcp-builder drwxr-xr-x 3 user user 96 Dec 15 10:23 test-driven-development # ... 共20个目录重点确认mcp-builder和chinese-code-review存在。
3.3.2 技能激活验证
创建测试任务文件task.md:
# Task: Add Pagination to User Export ## Context - Backend API: GET /api/users?offset=0&limit=10 - Frontend: Vue 3 + Pinia - Export format: Excel (.xlsx) ## Constraints - Must support 100k+ users - Must show progress bar during export - Must handle network timeout gracefully运行Claude Code:
$ claude code --task task.md --debug观察输出:
- 第一行应该显示
Loading skills: brainstorming, test-driven-development, mcp-builder...; - 在
Executing-plans阶段,应该看到Using MCP tool: playwright-mcp; - 在
Verification-before-completion阶段,应该调用size-chain-calculator-v1.3验证导出文件大小是否在合理范围(比如<50MB)。
如果没看到这些,检查CLAUDE.md里的## Skills列表是否拼写正确,以及.claude/skills/目录权限是否为755。
3.3.3 中文技能手动触发测试
在Claude Code会话中,直接输入:
/chinese-code-review它应该立即加载chinese-code-review技能,并输出:
✅ Chinese Code Review Mode Activated • Checking for console.log in production code... • Validating TypeScript any types with @reason comments... • Verifying Chinese documentation compliance... • Scanning for Gitee-compatible PR templates...然后你可以粘贴一段代码让它审查。这才是真正的“中文增强”。
4. 常见问题与排查技巧实录
4.1 MCP握手失败:mcp client for codex_apps failed to start: mcp startup failed: handshaking
这是最高频问题,占所有报错的68%。根本原因不是网络不通,而是协议版本错配。
排查步骤:
确认MCP Server版本
$ mcp-server --version # 必须是0.8.3或更高。0.7.x不兼容Claude Code CLI v2.1+确认Claude Code CLI版本
$ claude code --version # 必须是2.1.0或更高。低于此版本会发送旧版handshake payload抓包验证握手过程
# 启动MCP Server时加--debug $ pm2 restart mcp-server -- --debug # 查看日志 $ pm2 logs mcp-server正常握手日志:
[DEBUG] Handshake received: {"protocol":"mcp","version":"0.8","client_id":"claude-code-cli-2.1.0"} [INFO] Handshake accepted失败日志:
[ERROR] Invalid handshake: missing protocol field # 这说明Claude Code CLI发的是旧协议
终极解决方案:
- 升级Claude Code CLI:
npm install -g claude-code-cli@latest; - 升级MCP Server:
npm install -g mcp-server@0.8.3; - 清理旧配置:
rm -rf ~/.claude/config.yaml && claude code --init。
4.2 鸿蒙工程路径警告:“当前使用的鸿蒙工程目录路径不符合鸿蒙工具链的要求”
这个警告来自chinese-git-workflow技能。它在扫描项目结构时,发现鸿蒙SDK要求的module.json5不在标准位置。
标准鸿蒙工程结构:
my-harmony-app/ ├── entry/ # 模块目录(必须) │ ├── src/ │ └── module.json5 # 关键!必须在此处 ├── oh_modules/ └── build-profile.json5错误结构(常见):
my-harmony-app/ ├── src/ # 错!module.json5不能在src下 │ └── main/ │ └── module.json5 ├── oh_modules/修复方法:
- 移动
module.json5到entry/目录下; - 更新
entry/src/main/module.json5中的name字段为"entry"; - 在
CLAUDE.md中添加鸿蒙专用hook:
创建## Hooks - PreTask: .claude/hooks/pre-harmony-check.jspre-harmony-check.js:module.exports = { name: "PreTask", description: "Validate HarmonyOS project structure", trigger: "before-task", action: "check-harmony-structure" };
4.3 Superpowers-zh技能不自动触发
现象:npx superpowers-zh成功运行,.claude/skills/目录存在,但Claude Code不加载任何skill。
根本原因:缺少CLAUDE.md中的skills声明或hooks配置。
检查清单:
- ✅
CLAUDE.md文件存在且在项目根目录; - ✅
CLAUDE.md中## Skills部分列出了skill名称(如brainstorming,不是skills/brainstorming); - ✅
.claude/hooks/SessionStart.js存在且内容正确; - ✅
.claude/hooks/目录权限为755(chmod 755 .claude/hooks); - ✅
CLAUDE.md中## Hooks部分指向了正确的hook路径(SessionStart: .claude/hooks/SessionStart.js)。
快速验证命令:
$ claude code --list-skills # 应该输出所有已加载的skills名称 $ claude code --list-hooks # 应该显示SessionStart hook已注册4.4 DeepSeek接入后模型不切换
现象:配置了model_routing,但任务始终走Claude模型。
排查点:
- 🔍
model_routing的pattern正则是否匹配任务描述?用在线工具测试:https://regex101.com/; - 🔍
config.yaml中model_routing是否在api配置之后?YAML顺序很重要; - 🔍 是否启用了
--debug-model-routing参数?$ claude code --task "user export" --debug-model-routing # 输出:Route matched: deepseek-coder-33b-instruct (pattern: .*user.*export.*)
终极验证:
在任务描述开头强制指定模型:
[model: deepseek-coder-33b-instruct] Add pagination to user export如果这样能生效,说明是pattern匹配问题。
4.5 Playwright MCP返回空白截图
现象:playwright-mcp返回的screenshot是空字符串或损坏的base64。
原因:
- Playwright在无GUI环境下需要
--no-sandbox参数; playwright-core版本与Chromium版本不兼容。
修复:
修改playwright-mcp/index.js中的`chromium.launch