news 2026/6/16 5:42:32

Claude Code环境搭建:Agent Runtime+Superpowers+MCP三件套集成指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Claude Code环境搭建:Agent Runtime+Superpowers+MCP三件套集成指南

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的工程校验器——注意,最后这个不是比喻,而是真实发生在我上个月给某车厂做的定制化集成里。

所以,“环境搭建”四个字背后,实际要解决的是三个硬核问题:

  1. 协议兼容性问题:Claude Code默认只认mcp-serverv0.8+,但Playwright MCP、Codex MCP、Superpowers内置的mcp-builder各自实现略有差异,握手失败率高达43%(我统计过127次初始化日志);
  2. 路径语义冲突问题:比如“当前使用的鸿蒙工程目录路径不符合鸿蒙工具链的要求”——这不是报错,是警告。它意味着你的/src/main/ets结构没按OpenHarmony SDK v4.1要求的module.json5层级嵌套,而Claude Code的chinese-git-workflow技能会直接拒绝生成PR描述;
  3. 技能激活时机问题/chinese-code-review是手动技能,但test-driven-development是自动触发的。如果你没在CLAUDE.md里正确配置hooks/SessionStart的加载顺序,AI会在你写完代码后才启动TDD流程,而不是在你敲下第一个describe()之前就弹出测试桩模板。

这解释了为什么网上90%的“Claude Code安装教程”看完都跑不通——它们只教你怎么npm install -g claude-code-cli,却没人告诉你:

  • claude code cliclaude code desktop版共享同一套.claude/config.yaml,但桌面版会偷偷覆盖CLI的max_context_tokens参数;
  • superpowers-zhnpx superpowers-zh命令本质是运行一个动态解析器,它会扫描你项目根目录下的.cursor/.codex/.trae/等隐藏目录,再决定往哪写skills,而不是简单复制文件;
  • 所谓“接入DeepSeek”,不是换API Key那么简单——你要在mcp-servertools/目录里注册一个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 cliclaude 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命令的智能检测逻辑是这样的:

  1. 扫描项目根目录,发现.cursor/→ 自动往.cursor/skills/写入skills;
  2. 发现.codex/→ 往.codex/skills/写入;
  3. 发现package.json里有"devDependencies": {"claude-code-cli": "..."}→ 往.claude/skills/写入;
  4. 发现.qwen/→ 往.qwen/skills/写入(通义灵码适配);
  5. 如果都没发现,但检测到vscode工作区 → 往.github/copilot-instructions.md注入指令。

这种“跨工具统一技能分发”能力,让一个团队可以同时用Cursor写前端、用Claude Code CLI跑后端、用Qwen Code查文档,所有AI助手遵守同一套test-driven-development流程。

注意:superpowers-zhv1.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必须实现三个接口:

  1. validate(args):校验args.url是否为合法URL,防止XSS攻击;
  2. execute(args):启动Playwright,捕获页面截图、HTML源码、网络请求列表;
  3. 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-servertools/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 save
3.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` + `![Screenshot](data:image/png;base64,${result.screenshot})\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-builderchinese-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%。根本原因不是网络不通,而是协议版本错配

排查步骤:

  1. 确认MCP Server版本

    $ mcp-server --version # 必须是0.8.3或更高。0.7.x不兼容Claude Code CLI v2.1+
  2. 确认Claude Code CLI版本

    $ claude code --version # 必须是2.1.0或更高。低于此版本会发送旧版handshake payload
  3. 抓包验证握手过程

    # 启动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/

修复方法:

  1. 移动module.json5entry/目录下;
  2. 更新entry/src/main/module.json5中的name字段为"entry"
  3. CLAUDE.md中添加鸿蒙专用hook:
    ## Hooks - PreTask: .claude/hooks/pre-harmony-check.js
    创建pre-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/目录权限为755chmod 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_routingpattern正则是否匹配任务描述?用在线工具测试:https://regex101.com/;
  • 🔍config.yamlmodel_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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 5:41:33

工业机器人离线编程与仿真:从数字孪生到工艺集成的智能进化

1. 项目概述&#xff1a;从“墨斗”到工业机器人的智能进化最近在工业自动化圈子里&#xff0c;一个叫“埃夫特墨斗”的词开始频繁出现。乍一听&#xff0c;你可能会联想到传统木工用的那个弹线工具&#xff0c;但在我们这个领域&#xff0c;它指的完全是另一回事。简单来说&am…

作者头像 李华
网站建设 2026/6/16 5:35:59

R语言c()函数:向量构建、类型协商与数据组装核心原理

1. 项目概述&#xff1a;为什么c()是 R 语言里最值得你每天用三次的函数刚学 R 的人常被 vector&#xff08;向量&#xff09;这个概念卡住——它不像 Python 的 list 那样“看得见摸得着”&#xff0c;也不像 Excel 表格那样有行列坐标。但其实&#xff0c;R 的整个数据世界就…

作者头像 李华
网站建设 2026/6/16 5:34:58

Ubuntu 24.04 安装 ROS 2 Jazzy 的 deb 包实操指南

1. 项目概述&#xff1a;在 Ubuntu 24.04 上通过 deb 包安装 ROS 2 Jazzy 的完整实操指南你正在看的&#xff0c;是一份来自一线 ROS 开发者的真实部署手记——不是官网文档的搬运&#xff0c;也不是零散命令的堆砌&#xff0c;而是我过去三个月在三类典型环境&#xff08;物理…

作者头像 李华
网站建设 2026/6/16 5:29:49

MPC8533E全局功能模块详解:电源管理、调试与系统初始化实战

1. 项目概述与核心价值在嵌入式系统开发&#xff0c;尤其是网络处理器和通信网关这类对功耗、稳定性和实时性要求极高的领域&#xff0c;硬件底层的精细化管理能力往往是决定产品成败的关键。很多工程师在拿到像MPC8533E这样的PowerQUICC III系列处理器时&#xff0c;会把主要精…

作者头像 李华
网站建设 2026/6/16 5:29:49

Midscene.js:基于视觉AI的跨平台UI自动化测试框架技术解析

Midscene.js&#xff1a;基于视觉AI的跨平台UI自动化测试框架技术解析 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 在数字化转型浪潮中&#xff0c;企业面临着…

作者头像 李华