第三方 Harness 品牌标识的合规打包与运行时图标管线Buzz 桌面端 harness-logos 溯源体系解析【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz本篇技术指南围绕 Buzz 桌面端desktop/public/harness-logos/CREDITS.md溯源清单展开系统讲解它如何为运行画廊runtime gallery中出现的第三方预设 Harness 品牌标识Devin、Grok、Kimi、Goose、Cursor 等建立来源—提交—许可证—修改记录四要素档案并结合 RuntimeIcon.tsx、HarnessMarks.tsx、presetLogos.test.mjs 与后端 presets.rs 还原完整的文件型标识 内联单色标识 兜底字形三层渲染管线以及防止跨语言漂移的自动化覆盖测试。读完你将掌握如何在产品中合规地打包第三方商标、如何用currentColor实现深浅主题自适应的单色标识、以及如何用测试守护资产清单与磁盘文件的一致性。一、背景与定位运行时画廊里的第二梯队标识从何而来Buzz 桌面端允许用户接入多种 ACPAgent Client Protocol运行时作为 Harness。除了内置builtin运行时与用户自定义 Harness 之外还有一批**预置tier-2 preset**Harness——由后端静态注册、前端内置标识。它们出现在设置页Your runtimes列表与引导流程的运行时选择界面中。由于这些标识logo/mark是第三方厂商的商标Buzz 不能像对待自研 UI 素材一样随意打包必须满足两个前提仅在指名使用nominative use范围内使用——每个标识只用于指代其所属厂商自己的 Harness例如 Devin 的标识只出现在 Devin 行上不暗示背书或关联只打包上游许可证明确允许再分发redistribution的标识——这直接决定了哪些标识能随应用分发、哪些必须放弃。CREDITS.md正是这一策略的落地档案它逐行记录每个被打包标识的上游来源、提交版本/获取日期、许可证、源文件路径、本地修改并明确约定新增一个预设标识时必须在此加一行Add a row here when adding a preset logo。这份文件与 RuntimeIcon.tsx 中定义的PRESET_LOGOS一一对应构成资产清单的单一事实来源。二、两条资产管线文件型标识与内联单色标识从源码看运行时图标的渲染并不只有一个数据源而是分为两个互补的注册表CREDITS.md也按此分两节记录。2.1 文件型预设标识public/harness-logos/下的位图/SVG 文件RuntimeIcon.tsx中通过公共路径引用这些文件键名与后端PRESET_HARNESSES发射的预设id保持一致export const PRESET_LOGOS: Recordstring, string { devin: /harness-logos/devin.svg, omp: /harness-logos/omp.svg, pi: /harness-logos/pi.svg, grok: /harness-logos/grok.svg, opencode: /harness-logos/opencode.svg, kimi: /harness-logos/kimi.png, amp: /harness-logos/amp.png, hermes: /harness-logos/hermes.png, openclaw: /harness-logos/openclaw.svg, };CREDITS.md第一张表记录了其中 7 个可溯源文件的完整档案amp.png、opencode.svg因早于本文件存在、溯源缺失单独说明见后文文件上游提交许可证源路径修改devin.svgCognition Devin 官方文档获取于 2026-07-27Cognition 商标指名使用以标识 Devin Harness官方文档logo/favicon.svg将官方黑色标识放入白色方形画布保证在深浅两种主题下均可读hermes.pngNousResearch/hermes-agent6ad632bMIT © 2025 Nous Researchwebsite/static/img/logo.png裁掉自带的边框、补白为方形、缩放到 64×64、量化到 16 色调色板openclaw.svgopenclaw/openclawb06f40aMIT © 2026 OpenClaw Foundationui/public/favicon.svg移除 SMIL 动画元素静态渲染上游静止姿态并验证与上游 t0 帧逐像素一致压缩路径omp.svgcan1357/oh-my-pi667111575ebba136dadfd6989379e7f67e0d40d9MIT © 2025 Mario Zechner© 2025–2026 Can Bölükassets/icon.svg无pi.svgearendil-works/pi-website2f5e410b97474d0a34ec2500aa1aa58d6c3f992cMIT © 2026 Earendil Inc. and contributorssrc/favicon.svg无kimi.pngMoonshotAI/kimi-cli4a550effdfcb29a25a5d325bf935296cc50cd417Apache-2.0NOTICE: Kimi Code CLI © 2025 Moonshot AIweb/public/logo.png无grok.svgSpaceXAI 品牌指南获取于 2026-07-25xAI 品牌指南标识可用于准确指代 xAI 或其服务必须原样使用SpaceXAI_Grok_Assets.zip→Grok_Logomark_Dark.svg无从该表可以提炼出三个可复用的操作规范锁定提交而非最新版除商标类素材Devin、Grok 按官方文档/品牌指南获取并记录日期外每个 MIT/Apache 资产都记录到具体 commit 哈希保证可复现、可审计修改必须可验证openclaw.svg移除 SMIL 动画后标注与上游 t0 帧逐像素一致说明任何修改都不是随意的视觉加工而是有验证手段的工程决策特殊配色单独兜底在渲染端RuntimeIcon.tsx对omp和grok两个深色标识分别加了bg-[#0d0d0d] p-1与bg-white p-1的背景/内边距处理让深色 logo 在浅色/深色主题下都有正确的观感——这与devin.svg的白底方形画布修改异曲同工。2.2 内联单色标识RUNTIME_MARKS第二张表记录的是以currentColor路径内联在 HarnessMarks.tsx 中的单色标识不占用public/目录、不需要请求文件标识上游版本/提交许可证源路径修改Gooseblock/goose305849b71709b95b86ed9f11bd3bc939899c0aabApache-2.0 © Block, Inc.documentation/static/img/goose.svgfill#101010→currentColor去掉冗余的 clipPath 包裹Cursorsimple-icons16.27.1slugcursorCC0-1.0路径数据指名使用 Cursor 标识以指代 Cursor 的 Harnessicons/cursor.svgfill→currentColorcurrentColor的妙处在于内联 SVG 的填充色跟随 CSScolor因此深浅主题切换时无需位图滤镜brightness/invert就能自动适配——这正是 HarnessMarks.tsx 顶部注释所强调的设计动机也解释了为什么 Goose/Cursor 选择内联路径而非 PNG 文件。渲染优先级上RuntimeIcon先查RUNTIME_MARKS取到即渲染内联 SVG再回落到位图映射表。2.3 Codex 的刻意缺席CREDITS.md特别说明Codex 有意不打包任何标识。原因是 OpenAI 的花形标识blossom已在厂商要求下从 simple-icons v16 中移除因此 Buzz 不随应用分发该标识Codex 在画廊中渲染的是RuntimeIcon的中性终端字形兜底TerminalSquare。这是一个值得注意的合规姿态厂商撤回分发的标识宁可显示通用兜底也不重新打包。该决策同时被测试固化为硬性断言见第五节。三、三层渲染管线从后端静态注册到前端兜底字形要理解CREDITS.md记录的资产如何被真正使用需要看完整的分发链路后端注册desktop/src-tauri/src/managed_agents/discovery/presets.rs中的PRESET_HARNESSES静态数组定义了 10 个预置 Harnesspi、devin、cursor、omp、grok、opencode、kimi、amp、hermes、openclaw每个都带有id、label、command、args、安装提示与安装指引 URL并由preset_catalog_entry结合 PATH 探测生成运行时目录条目AcpRuntimeCatalogEntry。值得注意的是预置条目的avatar_url被显式置空No remote URL — all preset icons are bundled assets。前端查表RuntimeIcon按runtime.id依次解析——Buzz 自身运行时渲染BuzzMark命中RUNTIME_MARKS渲染内联单色标识命中PRESET_LOGOS/RUNTIME_LOGOSclaude走内联 base64渲染img全部未命中则回落到TerminalSquare通用字形。安全红线RuntimeIcon.tsx注释明确写着——only use bundled logo maps — never render user-supplied avatar URLs for custom/preset entries。这意味着图标管线绝不加载用户提供的头像 URL从根源上杜绝了利用运行时头像做追踪像素或仿冒标识的攻击向量。设置页 HarnessRow.tsx 中的RuntimeLogo也复用同一RuntimeIcon注释强调RuntimeIcon owns every runtime asset保证医生页与目录页图标永不漂移。四、自动化守护presetLogos.test.mjs如何防住跨语言漂移资产清单的双方分别住在不同语言里——Rust 侧的PRESET_HARNESSES与 TS 侧的PRESET_LOGOS编译器无法发现二者不同步而RuntimeIcon的onError回退又会在运行时悄悄掩盖缺失文件。为此 presetLogos.test.mjs 采用把 Rust 源码当文本读的技巧与项目内motion.test.mjs处理 CSS 的思路一致从presets.rs中正则提取PRESET_HARNESSES的全部id然后做四类断言解析守卫先断言至少解析出 8 个预置 id防止正则本身因结构重命名而静默失效、导致后续断言空洞通过覆盖断言每个预置 id 必须有RUNTIME_MARKS或PRESET_LOGOS条目——取不到就断言失败并提示应在desktop/public/harness-logos/下补文件、在RuntimeIcon.tsx中注册映射磁盘存在性PRESET_LOGOS[id]指向的路径必须真实存在于desktop/public下existsSync否则onError会静默回退列表里就会出现一个真实标识旁边混着通用字形的观感缺陷未知 id 与 Codex 守卫PRESET_LOGOS不得出现后端未发射的 id且RUNTIME_MARKS.codex、PRESET_LOGOS.codex都必须为undefinedassert.equal(..., undefined)把Codex 不带标识从口头约定固化为 CI 级硬约束。五、历史清理与演进原则不可溯源的资产一律移除CREDITS.md后半部分记录了一次合规清仓是理解这份文件价值的点睛之笔amp.png与opencode.svg早于本文件存在溯源未被记录文件如实标注这一缺口未作追溯性编造Cursor 此前因自身品牌页不授予再分发权而一直显示通用终端兜底后来借助 simple-icons 的 CC0-1.0 路径数据解决与 Grok 的指名使用先例保持一致此前无证明来源的cursor.png被移除未获证明的chatgpt.png、goose.png内置运行时位图也被移除分别由内联标识替代。由此可以归纳出本项目的资产治理原则许可证可再分发 溯源可记录缺一不可历史遗留的未溯源资产宁可删除也不在档案缺失的状态下继续分发。六、给贡献者新增一个预设标识的标准操作综合CREDITS.md的约定与源码、测试的约束为 Buzz 新增一个预设 Harness 标识需要走完以下流程确认许可先确认上游许可证允许再分发仅此一条不满足就应放弃打包参考 Codex 的处理方式登记档案在 CREDITS.md 表格中追加一行完整填写 File、Upstream、Commit或获取日期、License、Source path、Modifications 六列——这是文件开头明确写死的流程要求Add a row here when adding a preset logo落地资产把处理好的文件放入desktop/public/harness-logos/单色标识则内联进 HarnessMarks.tsx 并加入RUNTIME_MARKS注册映射在 RuntimeIcon.tsx 的PRESET_LOGOS中按后端id键登记公共路径验证通过确保 presetLogos.test.mjs 的全部断言通过覆盖、磁盘存在、无未知 id且不触碰 Codex 守卫。结语CREDITS.md表面上只是一张出处表实际承载的是一套完整的第三方商标资产治理方法论指名使用的边界、按提交锁定的可复现性、可验证的修改记录、currentColor驱动的主题自适应、测试固化的防漂移护栏以及宁可兜底也不越权分发的合规底线。对于任何需要在产品中内置第三方品牌标识的团队这份文件连同 RuntimeIcon.tsx、presetLogos.test.mjs 构成的组合是一份可直接借鉴的工程范本。【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考