SuperAPI AI 工具集

add-icon-mapping

设计与创作

查看项目

更新于 10-16 07:07

技能介绍

用途:为 lobe-icons 中的服务商(provider)、模型(model)或智能体(agent)添加或修改关键词映射,使 id 字符串能被解析到对应的图标组件。当某服务商在 LobeHub 显示回退图标时,通常意味着映射条目缺失,而不是图标本身缺失;应先检查 src/<Name>/ 是否已有品牌图标。

映射所在位置(需编辑所有适用的文件):react-native 包复制了主包的配置文件,遗漏 RN 包是最常见的错误。服务商枚举位于主包 src/features/providerEnum.ts 与 packages/react-native/src/features/providerEnum.ts;服务商映射位于 src/features/providerConfig.tsx 与 packages/react-native/src/features/providerConfig.tsx;模型映射位于 src/features/modelConfig.ts 与 packages/react-native/src/features/modelConfig.ts;智能体映射位于 src/features/agentConfig.ts(仅主包)。static-* 工作区包(static-svg、static-png、static-webp、static-avatar)由图标组件生成,不含映射逻辑,不要为映射改动编辑它们。

匹配语义(两者不同):ProviderIcon 为精确匹配,keyword.toLowerCase() === provider,如 xai 不会匹配 supergrok,每个 provider id 都需要自己的关键词;ModelIcon / AgentIcon 中每个关键词是按模型 id 做不区分大小写的正则测试,数组中第一个匹配项生效,因此子串会匹配(如 gpt-4 匹配 chatgpt-4o-latest),顺序有意义(更具体的条目应放在更通用的条目之前),正则语法是实时的,^o1、/o1、o1- 等为锚定模式,. 或 + 等字符是正则元字符,需有意转义或锚定。

服务商映射工作流:枚举——在 providerEnum.ts 中按字母顺序加入 ModelProvider,值小写;导入——在 providerConfig.tsx 中按字母顺序导入图标,主包使用 @/ 别名,RN 使用相对路径;映射条目——在 providerMappings 中相近条目附近加入。再在 react-native 包中重复以上步骤,其枚举为 RNModelProvider。

新条目 vs 追加关键词:派生/订阅类服务商有两种既有模式——当新服务商外观应与其父级一致时追加到现有条目;当存在更易识别的品牌图标且与父级区分有助于用户时,使用不同品牌图标建立新条目。优先按 issue/请求者指定,否则依据用户是否受益于区分来选择。

验证:在仓库根与 RN 包分别运行 bun run type-check。若依赖未安装,RN 类型检查会报告既有的 Cannot find module 'react-native' / 'react-native-svg' 错误,属环境问题。类型检查能发现拼写错误但不能发现遗漏的映射,需用 grep 做完整性检查。对于模型/智能体关键词,可用 new RegExp(keyword, 'i').test(modelId) 在隔离环境快速校验正则。仓库没有提交测试,且 vitest.config.ts 别名无法解析传递性 @/ 导入,渲染测试需要带绝对路径别名与 server.deps.inline 的临时配置;通常类型检查加 grep 已足够。

提交注意:.npmrc 设置 lockfile=false,仓库不提交锁文件;运行 pnpm install 会生成 pnpm-lock.yaml 并可能向 pnpm-workspace.yaml 注入占位 allowBuilds 块,提交前应删除锁文件并 git checkout -- pnpm-workspace.yaml。pre-commit 钩子运行 lint-staged,可能把非预期文件卷入提交;提交后用 git show --stat HEAD 检查,映射改动应只涉及 2–4 个配置文件。提交风格为 gitmoji + 约定式提交。

适用场景:品牌图标已存在、需要为其接入 id 映射;新增服务商、模型或智能体映射;修正缺失或错误的映射关键词。限制:不得编辑 static-* 生成包;需同步主包与 RN 包;ProviderIcon 与 ModelIcon/AgentIcon 匹配语义不同;关键词作为正则使用时需注意元字符与顺序。