1. 为什么 Agent 需要一双“设计师之眼”
如果你最近在 Claude Code 里让 Agent 帮忙做页面或者 PPT,大概率遇到过这种场景:代码逻辑没问题,但出来的东西一股“AI 味”——配色是那种说不上来的紫蓝渐变,字体大小全靠猜,间距忽大忽小,PPT 更是直接把网页截图贴上去,改一个字都得重来。这不是模型能力不行,而是它缺少一套“设计上下文”的约束。
huashu-design 这个开源 Skill 想解决的就是这件事。它本质上不是组件库,而是一套让 Claude Code 这类 Agent 具备真实设计交付能力的协议:先强制做品牌资产验证,再动手画;产出物不是一张死图,而是可编辑的 HTML 和原生 PPTX。换句话说,它给 Agent 装上了一双“设计师之眼”,让它知道什么叫“从已有设计上下文长出来”,而不是凭空捏造。
这篇文章面向的是已经在用 Claude Code、想让 Agent 产出高保真页面或演示文稿的开发者。我会把环境准备、Skill 接入、可复制的配置片段、验证请求和常见报错排查都拆开讲,你跟着做就能复现一套“终端里出设计稿”的工作流。核心检索词就三个:huashu-design、Claude Code、HTML 与 PPTX 生成。适合谁?适合那些宁愿待在终端里、也不想为了改一个按钮颜色去打开图形界面的人。
先说清楚它和普通绘图 Skill 的区别。普通 Skill 是你给指令它画图,画完就完了;huashu-design 在动笔前会先问品牌指南、搜官网资产、抓色值、生成一份brand-spec.md作为唯一真理来源,最后交付前还会用 Playwright 自己点一遍。这套“事实验证先于假设”的流程,才是它和 65 分平庸作品的分水岭。下面从接入开始。
2. 前置准备:把 huashu-design 接进 Claude Code
在讲配置之前,先明确一个前提:Claude Code 要调用外部模型或 Skill 生态,需要一个稳定的 API 入口。我这边用的是 TaoToken 的 API 地址https://taotoken.net/api,它兼容 Anthropic 的接口格式,Claude Code 可以直接指过去。官网在https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,需要看文档的话从那里进。
第一步是拿到 API Key。进控制台创建密钥,地址是https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite。创建完复制那串sk-开头的字符串,后面配置里要用。注意别把它提交到 Git 仓库,我一般放在本地环境变量或者~/.claude/settings.json里。
第二步是确认 Claude Code 版本。huashu-design 依赖 Skill 机制和 Playwright 自动化,建议 Claude Code 用较新的版本。终端里跑claude --version看一眼,太旧的话先升级。Node 环境建议 18 以上,因为html2pptx.js里用到了PptxGenJS,对 Node 版本有要求。
第三步是拉取 huashu-design 仓库。它是个开源项目,直接 clone 到本地一个固定目录,比如~/skills/huashu-design。目录结构里你会看到SKILL.md、scripts/html2pptx.js、assets/animations.jsx这几个关键文件,后面排障会反复提到它们。
第四步是把 Skill 注册给 Claude Code。Claude Code 读取 Skill 的方式是扫描指定目录下的SKILL.md,所以你要么把 huashu-design 放进它默认的 skills 路径,要么在配置里显式声明路径。我选后者,因为路径可控,出问题好排查。
这里有个容易踩的坑:很多人以为把仓库 clone 下来就完事了,其实 Claude Code 根本不知道这个 Skill 存在。必须让它在启动时能读到SKILL.md的元信息,否则你在对话里说“用 huashu-design 生成 PPT”,Agent 只会一脸茫然地自己瞎画。所以下一步的配置文件才是关键。
另外提醒一句,huashu-design 的SKILL.md里定义了“位置四问”和 5 步品牌资产协议,这些是它区别于普通绘图 Skill 的核心。接入后不要急着改这些流程,先按原样跑通一遍,理解它的设计规划逻辑,再考虑定制。
3. 可复制配置:settings.json 与 Skill 声明片段
这一节给你可以直接抄的配置。Claude Code 的配置分两层:一层是模型接入(Base URL + Key + Model ID 三件套),一层是 Skill 路径声明。两样都要配对,缺一个都跑不起来。
先看模型接入。Claude Code 支持通过settings.json指定 API 端点。文件位置通常在~/.claude/settings.json,没有就新建。下面这段是完整可用的片段,注意把sk-你的密钥换成上一步创建的真实 Key:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "skills": { "paths": [ "/Users/yourname/skills/huashu-design" ] } }这里三个字段对应三件套:ANTHROPIC_BASE_URL是接口地址,ANTHROPIC_API_KEY是密钥,ANTHROPIC_MODEL是模型 ID。Model ID 按你实际能用的填,不同账号可选的模型可能不一样,填错会直接报模型不存在。skills.paths指向你 clone 下来的 huashu-design 目录,Claude Code 启动时会去这个目录找SKILL.md。
如果你用的是 Codex 或者 Cline 这类工具,配置形式不同但三件套逻辑一样。比如 Codex 的auth.json里要写base_url和api_key,Cline 的 MCP 配置里要写baseUrl、apiKey、model。不管哪个工具,记住 Base URL 用https://taotoken.net/api,不要带 UTM 参数,那是给网页链接用的,接口地址保持干净。
Skill 声明还有一种方式是在项目根目录放.claude/skills软链接,但我不推荐,因为项目一多路径就乱。统一放全局settings.json里最省心。
配置改完记得重启 Claude Code,它只在启动时读一次配置。重启后在对话里输入/skills之类的命令(具体命令看版本),应该能看到 huashu-design 被加载。如果看不到,先检查 JSON 有没有语法错误——多一个逗号都会导致整个配置静默失效,这是最常见的坑。
还有一点,skills.paths里写的是绝对路径,别用~简写,某些版本不解析波浪号。Windows 用户注意路径分隔符用正斜杠或者双反斜杠,单反斜杠会被当转义符。
4. 验证请求:从一句话到 HTML 与 PPTX 产出
配置好了,怎么确认它真的在工作?我给你一条最小验证路径,从对话到产出物一步步看结果。
启动 Claude Code,进入一个空目录,输入类似这样的话:“用 huashu-design 帮我做一个产品介绍页,品牌主色用 #1A73E8,输出 HTML,再转一份可编辑 PPTX。” 注意这里我故意给了品牌色,因为 huashu-design 的 Step 1 就是问品牌指南,你给了它就不用再搜。如果你想测试它的资产抓取能力,可以只说品牌名,让它自己去搜官网。
正常流程下,Agent 会先输出一段设计规划,包括叙事角色、观众距离、视觉温度、容量估算这“位置四问”的答案。这一步很关键,如果它跳过规划直接写代码,说明 Skill 没被正确加载,回去检查上一节的配置。
规划确认后,它会生成 HTML 文件。你会在当前目录看到类似index.html和brand-spec.md两个文件。打开brand-spec.md,里面应该是从你的品牌色或官网抓取结果里提取的 Hex 色值、字体栈、间距规范。这份文件就是“唯一真理来源”,后续所有样式都引用它。
接着是 PPTX 转换。huashu-design 调用scripts/html2pptx.js,把 DOM 元素逐个翻译成 PptxGenJS 对象。核心逻辑是这样的:
// 源码位置:scripts/html2pptx.js async function translateDomToPpt(element) { const style = window.getComputedStyle(element); const rect = element.getBoundingClientRect(); pptx.addText(element.innerText, { x: rect.left / scale, y: rect.top / scale, color: rgbToHex(style.color), fontSize: parseFloat(style.fontSize) * 0.75 }); }注意它不是截图贴图,而是把每个div、span映射成 PowerPoint 里的原生形状和文本框。所以你拿到 PPTX 后,双击文字就能改,颜色也能在 PowerPoint 里调。这是它和“网页截图塞进 PPT”最本质的区别。
验证成功的标志有三个:一是目录里同时出现 HTML、brand-spec.md和 PPTX;二是打开 PPTX 能选中单个文本框并编辑;三是 HTML 在浏览器里打开,配色和brand-spec.md里定义的一致。三个都满足,说明整条链路通了。
如果你想测它的自动化点击验证,可以做一个带按钮的原型,它会用 Playwright 跑一遍点击测试,按钮点不动会自我修正后再交付。这一步耗时稍长,但能省掉你手动检查的功夫。
5. 常见报错排查:401、local proxy failed 与 reading choices
跑不通的时候别慌,huashu-design 这条链路的报错其实就那几类,对着下面这张表基本能定位。
| 报错信息 | 大概率原因 | 处理方式 |
|---|---|---|
| 401 Unauthorized | API Key 错误或未生效 | 检查settings.json里 Key 是否完整、是否重启 |
| local proxy failed | Base URL 写错或网络不通 | 确认地址是https://taotoken.net/api,不带多余路径 |
| reading choices 报错 | 模型返回格式异常 | 换 Model ID,或检查是否触发了内容过滤 |
| OAuth 相关报错 | 误用了需要 OAuth 的端点 | 改用 API Key 方式,别走 OAuth 流程 |
| Skill not found | skills.paths路径不对 | 用绝对路径,确认目录下有SKILL.md |
| PPTX 空白 | Playwright 未安装 | 在项目目录跑npx playwright install |
401 是最常见的。很多人 Key 复制的时候漏了尾部字符,或者配置里多了空格。还有一种情况是 Key 创建后没生效,去控制台确认状态是启用。改完配置一定要重启 Claude Code,它不热加载。
local proxy failed这个报错名字有点误导,其实多数时候不是代理问题,而是 Base URL 写成了带路径的形式,比如https://taotoken.net/api/v1这种。接口地址就保持https://taotoken.net/api,后面的路径由 SDK 自己拼。另外确认你的网络能正常访问这个域名,公司内网有时候会拦。
reading choices这类报错通常出现在模型返回结构不符合预期时。可能是 Model ID 填了一个不支持当前接口格式的模型,换一个再试。也可能是输入内容触发了安全过滤,把请求精简一下重发。
OAuth 报错一般是你混用了两种认证方式。Claude Code 支持 OAuth 登录,但走 API Key 的时候不要同时开 OAuth,两者会打架。在配置里只保留ANTHROPIC_API_KEY就行。
如果 Skill 加载了但 PPTX 是空白,八成是 Playwright 的浏览器没装。html2pptx.js依赖它做渲染和点击测试,在项目目录跑一次npx playwright install chromium就好。
最后提醒,排障时优先看 Claude Code 的日志输出,它会打印实际请求的 URL 和状态码。对照上面的表,基本五分钟内能定位。搞不定的时候,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有接口格式和常见问题。
6. 把设计生产力留在终端里
跑通这套流程之后,我最大的感受是:Agent 做设计这件事,瓶颈从来不是画得好不好看,而是它有没有“约束”。huashu-design 的价值就在于把品牌资产协议、位置四问、自动化点击验证这些约束固化成了 Skill,让 Claude Code 从“随手画”变成“带着品牌手册入场的设计师”。
如果你要长期做这类工作流,比如批量生成不同风格的 PPT、给多个产品做落地页,建议把模型调用走 Coding Plan,地址是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,适合高频、长时间的 Agent 编码场景。只是想先验证模型对话效果,用模型对话入口https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite试几句也行。
一个实用技巧:把brand-spec.md纳入版本管理。每次 Agent 生成新页面,先让它读这份文件,配色和字体就不会漂。另一个技巧是并行跑多个 Agent 试不同风格方向,huashu-design 支持一次推荐 4 个差异化方向,你只做最后决策,规模化产出的效率比手动改稿高得多。
至于那些再也没点开过的图形界面图标,就让它们安静待着吧。终端里一句话能拿到 80 分交付物的时候,工作流自然就绕开了。