0、先破后立:别把 Pencil.dev 当"截图生成代码工具",那样一致通道一定断
常见误区三件事:
- 只喂一张设计图:没组件规范、没 token,模型只能猜,出来必漂。
- 只看能不能跑:能跑不代表和设计一致;差 4px、状态少一套,后面返工最贵。
- 让它直接写整页:页面越大越容易混乱;应先组件化,再拼装。
你的目标是:让 Pencil.dev 产出"可验证的一致性",而不是"像"。
1、交付:Windows 上先把"输入物料"做对,通道才通
一句话中心论点:输入统一,输出才可能统一。
建议你把输入分成三层,按顺序喂给 Pencil.dev(或在项目空间里固定下来):
-
A. 设计源(Design Source)
- Figma 链接/文件(如果你们用 Figma)
- 页面只选 1--2 个代表性页面:列表页、表单页最优先
- 重点不是页面多,而是状态全(hover/active/disabled/loading/empty/error)
-
B. 设计规范(Spec)
- 色彩、字号、间距、圆角、阴影、栅格
- 组件清单:Button/Input/Select/Modal/Table/Toast...
- 文案口径:按钮动词、错误提示语气
-
C. 工程目标(Code Target)
- 技术栈:React/Vue/Next.js、Tailwind/Styled-components、组件库(如 MUI/AntD)
- 目录结构与命名:components/、features/、pages/
- 约束:不改现有主题、不新增依赖、TypeScript 必须通过
在 Windows 上的实际动作:把这些内容整理成一个项目根目录的"协作包",例如:
/docs/design-spec.md(文字规范)/docs/ui-tokens.json(token)/docs/pencil-rules.md(给 Pencil 的生成规则:必须用现有组件、输出 diff 等)
2、可控:把 Pencil.dev 的生成变成"组件优先",先锁组件再锁页面
一句话中心论点:一致性来自组件,不来自页面。
推荐工作流(Windows 上也一样适用):
-
先生成/对齐 UI Tokens
- 颜色(primary/secondary/success/warn/danger)
- 字体层级(H1/H2/body/caption)
- spacing(4/8/12/16/24/32...)
- radius、shadow
然后让 Pencil.dev 在生成代码时"只引用 token",不要写死#1677ff、14px这种散弹。
-
再做组件映射(Design Component → Code Component)
- 设计里的 Button = 代码里的
<Button variant="primary" size="md" /> - Input、Select、Modal 同理
你要的是"对照表",有了这个,页面拼起来才不散。
- 设计里的 Button = 代码里的
-
最后才拼页面
- 页面只做布局与数据绑定
- 视觉细节尽量回到组件里改,别在页面里补丁式修样式
3、复现:Windows 上最实用的是"同一条指令,反复生成都不跑偏"
一句话中心论点:能复现的通道,才配叫通道。
你可以用三招把复现做实:
-
固定生成指令模板 (写在
pencil-rules.md里)例:
- 输出必须为 git diff
- 仅修改
src/components与src/pages/xxx - 禁止新增依赖
- 必须通过
npm test与npm run lint - 样式必须使用 tokens + 现有组件,不允许随意新建 class
-
小步提交
一次只让它做一个组件或一个页面区块(Header、Filter bar、Table 区),别让它"一次写完整页"。
-
回归样例页
做一个
UI Playground页面,把所有组件状态都摆出来。之后每次生成/修改,都用它对比。
4、成本:用好 Pencil.dev 的省钱点在"少返工",不是"省几分钟编码"
一句话中心论点:节省的是沟通轮次与 UI 对齐轮次。
Windows 场景里很常见的是:设计师在 Figma,工程师在 VS Code,来回截图标注。你可以把成本压下去:
- 把"对齐"前置成规则:token + 组件映射先做完,后面生成就少扯皮
- 让 Pencil.dev 产出自检清单:改了什么、影响哪些页面、怎么验证
- 把验收变成可执行:给出运行命令、路由入口、测试点,而不是"你看下对不对"
5、安全:Windows 上也要把权限、数据、仓库边界定清
一句话中心论点:设计到代码打通以后,权限要更谨慎,而不是更随意。
建议最少做到:
- Pencil.dev 的仓库权限:优先只读或仅 PR 分支写入
- 禁止把密钥、用户数据样例直接塞进提示词或文档
- 输出默认走 PR,让人类 Review;重要模块加 CODEOWNERS
6、Windows 使用建议(偏操作层):让工具链顺手,产出才稳定
一句话中心论点:顺手的环境配置,会直接影响一致通道能否持续跑。
建议配置组合:
-
Windows Terminal + WSL2(推荐) :在 WSL 跑 node、lint、test,减少环境差异
-
VS Code Remote - WSL:编辑体验顺滑,命令行一致
-
Git 工作流固定:
main只合 PRpencil/*分支专门接 Pencil 输出- 每次生成前先
git status干净,生成后立刻跑lint/test
-
截图与标注工具:Windows 自带截图 + 标注,用于把"差异点"快速喂回规则文档(不是喂到聊天里就完事)
如果你们不想上 WSL,也行,但要统一:Node 版本、包管理器、字体渲染(会影响视觉对比),否则"你机子上对我机子上不对"会反复出现。
快速测评清单(你照着跑一次,就知道是不是"真正打通")
- Token 纯度:生成的样式里,硬编码色值/字号出现次数是否接近 0。
- 组件复用率:页面是否主要由现有组件拼出,而不是大量新建临时样式。
- 状态覆盖:Button/Input/Modal 等是否含 disabled/loading/error/empty 等关键态。
- 差异回灌:每次发现 UI 偏差,是否能回写到 tokens 或组件映射里,下次不再犯。
- 生成稳定性:同一指令跑 3 次,目录结构与实现是否收敛。
- 门禁通过率:lint/test/build 是否一次过;不过的原因是否集中、可规则化。
- PR 可读性:diff 是否小、说明是否清楚、验证步骤是否可执行。
- 验收效率:设计验收从"截图标注多轮"变成"按 checklist 一次过"的比例是否上升。