公司动态
Hallmark 如何让连续生成的AI页面不重样:.hallmark/log.json 项目记忆完整机制
Hallmark 如何让连续生成的AI页面不重样.hallmark/log.json 项目记忆完整机制【免费下载链接】hallmarkAnti-AI-slop design skill for Claude Code, Cursor, and Codex.项目地址: https://gitcode.com/GitHub_Trending/hal/hallmarkHallmark 是一款面向 Claude Code、Cursor、Codex 等 AI 编码工具的防 AI 味anti-AI-slop设计技能。它会在项目根目录维护一个.hallmark/log.json项目记忆文件记录每次生成的页面结构与主题每次生成前先读取这份记忆、自动排除最近用过的组合让连续运行十次产出的页面也各不相同。本文拆解这套记忆机制的完整运转逻辑。为什么 AI 连续生成的页面总是一样先问一个问题AI 生成的页面最大的毛病是什么是长得都一样——顶部大标题 hero、中间三张功能卡片、CTA 按钮、四栏页脚同一套字体、同一种版式节奏换皮也认得出是同一个模板。根源在于两点其一AI 在两次运行之间是无状态的它不记得上次生成过什么其二模型被海量同构页面训练过一旦没人约束它就会退回到训练数据里出现频率最高的默认答案。Hallmark 的对策分两层换结构而不只是换色——每次生成前必须从 21 种命名宏观结构页面骨架和 22 种命名主题字体 配色里各挑一个把记忆外置——把每次选择写进项目里的.hallmark/log.json下次生成前先读这个文件知道最近用过什么并主动排除。前者给它不同的能力后者让不同成为硬规则。项目记忆机制如何运转读历史 → 排除重复 → 留记录整套机制可以概括为三步循环全程自动发生不需要任何手动维护。① 生成前先读历史当 Hallmark 接到设计任务时如果发现项目根目录存在.hallmark/log.json会先读取再挑选宏观结构和主题。文件是一个 JSON 数组最新的生成记录排在最前面每条包含 5 个字段示例摘自 skills/hallmark/SKILL.md[ { date: 2026-04-30, macrostructure: Bento Grid, theme: Linen, enrichment: E1 clipped-edge, brief: Tracejam · SaaS observability }, { date: 2026-04-28, macrostructure: Long Document, theme: Linen, enrichment: E5 hand-built SVG, brief: Maple Street Bread · bakery }, { date: 2026-04-25, macrostructure: Manifesto, theme: Manifesto, enrichment: none, brief: Meridian · studio manifesto } ]字段含义date生成日期macrostructure使用的页面骨架21 种之一如 Bento Grid、Manifesto、Lettertheme使用的主题22 种之一或 custom 定制主题enrichment首屏视觉增强方式E1–E8或 none 纯排版brief需求的一句话摘要② 挑选结构时执行排除光读历史还不够规则规定了挑选时的三条不许见 SKILL.md Step 2.5结构不重复宏观结构不得与最近 3 条记录中的任何一个相同主题三轴不同连续两次的主题必须在 ① 纸张明度带暗 / 中 / 亮② 展示字体风格斜体衬线 / 等宽 / 几何无衬线……③ 强调色相暖 / 冷 / 中性……中至少有一个轴不同首屏增强不重复enrichment 原型不得与上一次相同——连用两次同样的首屏处理即使内容不同也会读起来像模板。导航和页脚原型同样纳入轮换连续两次输出不得共享同一个导航原型或页脚原型见 SKILL.md。③ 生成后留下记录写完 CSS 文件后Hallmark 把新记录追加到数组最前面并把文件裁剪到最近20条最老的被移出规则见 SKILL.md Step 6。这个文件正是下一次运行 Step 2.5 要读的东西——形成闭环。文件不存在第一次生成时自动创建.hallmark/目录和文件用户不想把它提交进仓库加进.gitignore即可机制完全尊重用户选择。为什么 AI 必须把挑选说出来机制还要求 Hallmark 在挑选前用文字公开轮换过程例如最近 5 次构建Bento GridTracejam· Bento GridFoundry· Long DocumentMaple· ManifestoMeridian· Quote-LedTide。Bento Grid 用了 2/5 —— 这次从 {Marquee Hero, Stat-Led, Workbench, Letter} 里挑我选 Marquee Hero。这是给用户的问责线如果 AI 跳过这段声明你一眼就能看出它是否在敷衍差异化规则。三种典型形态各有处理方式——首次运行无 log.json不声明、直接挑结构成熟项目5 条以上记录按频率统计 排除清单 选择完整声明用户明确要求再来一次同样的结构时Hallmark 会保留结构但更换内部参数旋钮做到同骨架、不同指纹。真实轮换案例Tide 播客页面两次生成的变化仓库里有一个可直接阅读的实例同一个需求给我的独立播客 Tide 做个落地页生成了两次完整记录见 site/_tests/01-tide-podcast/brief.md。维度第一次v1第二次v2宏观结构Quote-Led引言先行Letter信件先行主题AtelierSalon主题三轴亮 / 斜体衬线 / 暖亮 / 等宽展示 / 暖微交互无仅光标闪烁一处同一个需求产出了两个气质完全不同的页面v1 用听众的引言来框定播客v2 由主播第一人称写给听众的信主题轮换在展示字体风格轴上不同斜体衬线 → 等宽展示顺利通过差异化门槛。官方测试报告还确认八个不同需求在一次轮换会话中连跑没有任何两个页面共享宏观结构或主题——见 site/_tests/README.md。下面是官方示例集中的两个需求产出一明一暗、骨架不同、首屏不同值得知道的细节什么时候写、什么时候不写几个边界情况 组件范围不写记忆只让 AI 设计一个按钮、卡片、输入框时页面级装置宏观结构、页脚、项目记忆整体不适用log.json不会写入任何条目——组件不参与轮换定制主题条目多两个字段theme_axes三轴的具体取值和可选vibe4–8 个词的氛围描述格式见 custom-theme.md § F。差异化规则是主题路由无关的——定制主题对比目录主题执行完全相同的检查没有豁免通道只有 CSS 戳记、没有 log.jsonHallmark 会从 CSS 戳记推断出一条记录照常轮换多页面重设计只写一条带scope: app标记而不是每页一条见 redesign.md。项目记忆规则在哪里定义模块路径内容路径主规则文件Step 2.5 读取 Step 6 写入skills/hallmark/SKILL.md读历史与排除规则Step 2.5skills/hallmark/SKILL.md#L292-L327主题三轴定义明度带 / 字体风格 / 色相skills/hallmark/SKILL.md#L272-L274写入 log.json、裁剪至 20 条Step 6skills/hallmark/SKILL.md#L457定制主题条目格式skills/hallmark/references/custom-theme.md#L202-L21822 个主题的三轴取值来源site/css/tokens.css真实轮换记录site/_tests/01-tide-podcast/brief.md同一配方跑两次应产出不同结构docs/recipes.md#L185一句话总结.hallmark/log.json是 Hallmark 的生成台账每次生成写一行每次生成前读一遍只保留最近 20 行。它把别和上次一样从一句口号变成了可执行、可检查、可追溯的硬规则 ✅——这正是设计技能让连续 AI 生成页面像做出来的而非像生成的的关键所在。【免费下载链接】hallmarkAnti-AI-slop design skill for Claude Code, Cursor, and Codex.项目地址: https://gitcode.com/GitHub_Trending/hal/hallmark创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考