diff --git a/OSGKeyboard/OSGKeyboard.entitlements b/OSGKeyboard/OSGKeyboard.entitlements index fb3b8f1..f8f1360 100644 --- a/OSGKeyboard/OSGKeyboard.entitlements +++ b/OSGKeyboard/OSGKeyboard.entitlements @@ -2,6 +2,8 @@ + com.apple.developer.ubiquity-kvstore-identifier + $(TeamIdentifierPrefix)com.osgkeyboard.ios com.apple.security.application-groups group.com.osgkeyboard.shared diff --git a/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/manifest.json b/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/manifest.json index ce8bfa5..b748c27 100644 --- a/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/manifest.json +++ b/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/manifest.json @@ -1,21 +1,25 @@ { "version": "v1", "name": "ai-tech-brands", - "generated_at": "2026-07-05T11:34:08.462301+00:00", + "generated_at": "2026-07-06T13:10:52.972532+00:00", "locale": "zh-Hans", - "entry_count": 1259, + "entry_count": 3040, "seed_file": "Scripts/lexicon/seeds/ai_tech_brands_seed.tsv", "license": "MIT (curated seed; OSGKeyboard contributors)", "categories": { - "ai_brand": 169, - "ai_model": 90, - "ai_platform": 53, - "ai_term": 197, - "dev_tool": 283, - "fintech": 7, - "tech_company": 314, - "tech_leader": 37, - "tech_term": 109 + "ai_brand": 284, + "ai_model": 152, + "ai_platform": 116, + "ai_term": 270, + "athlete": 73, + "celebrity": 251, + "consumer_brand": 215, + "dev_tool": 330, + "fintech": 109, + "game_ip": 70, + "tech_company": 601, + "tech_leader": 202, + "tech_term": 367 }, "notes": [ "Curated bilingual AI brands, tech companies, terminology, and hot words.", diff --git a/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv b/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv index 9fe4690..d2ce48f 100644 --- a/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv +++ b/OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv @@ -117,12 +117,18 @@ xiaomi ai_tech_seed tech_company 95 Xiaomi 阿里巴巴 ai_tech_seed tech_company 95 Alibaba claude opus ai_tech_seed ai_model 94 Claude Opus claude sonnet ai_tech_seed ai_model 94 Claude Sonnet +open claw ai_tech_seed ai_brand 94 OpenClaw +Open Claw ai_tech_seed ai_brand 94 OpenClaw +OpenClaw ai_tech_seed ai_brand 94 OpenClaw Opus ai_tech_seed ai_model 94 Claude Opus Opus 4 ai_tech_seed ai_model 94 Claude Opus Opus 4.7 ai_tech_seed ai_model 94 Claude Opus Sonnet ai_tech_seed ai_model 94 Claude Sonnet Sonnet 4 ai_tech_seed ai_model 94 Claude Sonnet Sonnet 4.6 ai_tech_seed ai_model 94 Claude Sonnet +养虾 ai_tech_seed ai_brand 94 OpenClaw +红龙虾 ai_tech_seed ai_brand 94 OpenClaw +龙虾 ai_tech_seed ai_brand 94 OpenClaw agent ai_tech_seed ai_term 92 智能体 Agent ai_tech_seed ai_term 92 智能体 Agent Mode ai_tech_seed ai_term 92 Agent Mode @@ -225,6 +231,10 @@ GLM ai_tech_seed ai_brand 90 GLM glm ai_tech_seed ai_brand 90 GLM GLM-4 ai_tech_seed ai_brand 90 GLM GLM-5 ai_tech_seed ai_brand 90 GLM +Jack Ma ai_tech_seed tech_leader 90 马云 +jack ma ai_tech_seed tech_leader 90 Jack Ma +Jay Chou ai_tech_seed celebrity 90 周杰伦 +jay chou ai_tech_seed celebrity 90 Jay Chou Jensen Huang ai_tech_seed tech_leader 90 Jensen Huang jensen huang ai_tech_seed tech_leader 90 Jensen Huang k8s ai_tech_seed dev_tool 90 Kubernetes @@ -252,30 +262,47 @@ multi agent ai_tech_seed ai_term 90 multi-agent multi-agent ai_tech_seed ai_term 90 multi-agent NIO ai_tech_seed tech_company 90 NIO nio ai_tech_seed tech_company 90 NIO +Pony Ma ai_tech_seed tech_leader 90 马化腾 +pony ma ai_tech_seed tech_leader 90 Pony Ma prompt engineering ai_tech_seed ai_term 90 prompt Qwen Coder ai_tech_seed ai_model 90 Qwen Coder qwen coder ai_tech_seed ai_model 90 Qwen Coder +seed dance ai_tech_seed ai_brand 90 Seedance +Seedance ai_tech_seed ai_brand 90 Seedance SF Custom Language Model Data ai_tech_seed dev_tool 90 SFCustomLanguageModelData SFCustomLanguageModelData ai_tech_seed dev_tool 90 SFCustomLanguageModelData Steve Jobs ai_tech_seed tech_leader 90 乔布斯 steve jobs ai_tech_seed tech_leader 90 Steve Jobs +SU7 ai_tech_seed tech_company 90 Xiaomi SU7 tool calling ai_tech_seed ai_term 90 tool calling tool-calling ai_tech_seed ai_term 90 tool calling TSMC ai_tech_seed tech_company 90 TSMC tsmc ai_tech_seed tech_company 90 TSMC X Peng ai_tech_seed tech_company 90 XPeng +Xiaomi Auto ai_tech_seed tech_company 90 小米汽车 +Xiaomi SU7 ai_tech_seed tech_company 90 小米汽车 +xiaomi su7 ai_tech_seed tech_company 90 Xiaomi SU7 XPeng ai_tech_seed tech_company 90 XPeng xpeng ai_tech_seed tech_company 90 XPeng +Zhang Yiming ai_tech_seed tech_leader 90 张一鸣 +zhang yiming ai_tech_seed tech_leader 90 Zhang Yiming Zhipu ai_tech_seed ai_brand 90 GLM 乔布斯 qiao bu si ai_tech_seed tech_leader 90 乔布斯 低秩适配 ai_tech_seed ai_term 90 LoRA 千问 coder ai_tech_seed ai_model 90 Qwen Coder +即梦视频 ai_tech_seed ai_brand 90 Seedance 台积电 ai_tech_seed tech_company 90 TSMC +周杰伦 zhou jie lun ai_tech_seed celebrity 90 周杰伦 多智能体 ai_tech_seed ai_term 90 multi-agent 大疆 ai_tech_seed tech_company 90 DJI +字节 Seedance ai_tech_seed ai_brand 90 Seedance +小米SU7 ai_tech_seed tech_company 90 Xiaomi SU7 +小米汽车 xiao mi qi che ai_tech_seed tech_company 90 小米汽车 +小马哥 ai_tech_seed tech_leader 90 Pony Ma 小鹏汽车 ai_tech_seed tech_company 90 XPeng 嵌入 ai_tech_seed ai_term 90 embedding 工具调用 ai_tech_seed ai_term 90 tool calling +张一鸣 zhang yi ming ai_tech_seed tech_leader 90 张一鸣 微调 wei tiao ai_tech_seed ai_term 90 微调 抖音 ai_tech_seed tech_company 90 Douyin 文心一言 wen xin yi yan ai_tech_seed ai_brand 90 文心一言 @@ -289,6 +316,8 @@ Zhipu ai_tech_seed ai_brand 90 GLM 通义千问 coder ai_tech_seed ai_model 90 Qwen Coder 通用人工智能 ai_tech_seed ai_term 90 AGI 雷军 lei jun ai_tech_seed tech_leader 90 雷军 +马云 ma yun ai_tech_seed tech_leader 90 马云 +马化腾 ma hua teng ai_tech_seed tech_leader 90 马化腾 黄仁勋 ai_tech_seed tech_leader 90 Jensen Huang agentic AI ai_tech_seed ai_term 88 agentic AIGC ai_tech_seed ai_term 88 AIGC @@ -297,18 +326,25 @@ Alipay ai_tech_seed tech_company 88 Ant Group alipay ai_tech_seed tech_company 88 Alipay AMD ai_tech_seed tech_company 88 AMD amd ai_tech_seed tech_company 88 AMD +Andy Lau ai_tech_seed celebrity 88 刘德华 +andy lau ai_tech_seed celebrity 88 Andy Lau Ant Group ai_tech_seed tech_company 88 Ant Group ant group ai_tech_seed tech_company 88 Ant Group Bilibili ai_tech_seed tech_company 88 Bilibili bilibili ai_tech_seed tech_company 88 Bilibili +Black Myth Wukong ai_tech_seed tech_term 88 黑神话悟空 +black myth wukong ai_tech_seed tech_term 88 Black Myth Wukong B站 ai_tech_seed tech_company 88 Bilibili chain of thought ai_tech_seed ai_term 88 chain of thought chain-of-thought ai_tech_seed ai_term 88 chain of thought +Claude Cowork ai_tech_seed ai_brand 88 Claude Cowork +claude cowork ai_tech_seed ai_brand 88 Claude Cowork Cognition Devin ai_tech_seed dev_tool 88 Devin context window ai_tech_seed ai_term 88 上下文窗口 Core ML ai_tech_seed dev_tool 88 Core ML core ml ai_tech_seed dev_tool 88 Core ML CoreML ai_tech_seed dev_tool 88 Core ML +Cowork ai_tech_seed ai_brand 88 Claude Cowork deep mind ai_tech_seed ai_brand 88 DeepMind DeepMind ai_tech_seed ai_brand 88 DeepMind Devin ai_tech_seed dev_tool 88 Devin @@ -324,19 +360,32 @@ Gemini CLI ai_tech_seed dev_tool 88 Gemini CLI gemini cli ai_tech_seed dev_tool 88 Gemini CLI Gemini Flash ai_tech_seed ai_model 88 Gemini Flash gemini flash ai_tech_seed ai_model 88 Gemini Flash +Gemma ai_tech_seed ai_model 88 Gemma +Gemma AI ai_tech_seed ai_model 88 Gemma +Gemma模型 ai_tech_seed ai_model 88 Gemma gen ai ai_tech_seed ai_term 88 GenAI GenAI ai_tech_seed ai_term 88 GenAI +Genshin Impact ai_tech_seed game_ip 88 原神 +genshin impact ai_tech_seed game_ip 88 Genshin Impact github copilot ai_tech_seed ai_brand 88 GitHub Copilot Google DeepMind ai_tech_seed ai_brand 88 DeepMind +google gemma ai_tech_seed ai_model 88 Gemma GPU ai_tech_seed tech_term 88 GPU gpu ai_tech_seed tech_term 88 GPU Grok ai_tech_seed ai_brand 88 xAI hallucination ai_tech_seed ai_term 88 幻觉 +Harmony OS ai_tech_seed tech_company 88 鸿蒙 +harmony os ai_tech_seed tech_company 88 HarmonyOS +HarmonyOS ai_tech_seed tech_company 88 鸿蒙 he xiao peng ai_tech_seed tech_leader 88 He Xiaopeng He Xiaopeng ai_tech_seed tech_leader 88 何小鹏 +Honor of Kings ai_tech_seed game_ip 88 王者荣耀 +honor of kings ai_tech_seed game_ip 88 Honor of Kings inference ai_tech_seed ai_term 88 推理 Intel ai_tech_seed tech_company 88 Intel intel ai_tech_seed tech_company 88 Intel +Jackie Chan ai_tech_seed celebrity 88 成龙 +jackie chan ai_tech_seed celebrity 88 Jackie Chan JD ai_tech_seed tech_company 88 JD.com JD.com ai_tech_seed tech_company 88 JD.com jd.com ai_tech_seed tech_company 88 JD.com @@ -344,6 +393,12 @@ Kimi Code ai_tech_seed dev_tool 88 Kimi Code kimi code ai_tech_seed dev_tool 88 Kimi Code Lenovo ai_tech_seed tech_company 88 Lenovo lenovo ai_tech_seed tech_company 88 Lenovo +Lionel Messi ai_tech_seed athlete 88 梅西 +lionel messi ai_tech_seed athlete 88 Lionel Messi +Liu Qiangdong ai_tech_seed tech_leader 88 刘强东 +liu qiangdong ai_tech_seed tech_leader 88 Liu Qiangdong +Luo Yonghao ai_tech_seed tech_leader 88 罗永浩 +luo yonghao ai_tech_seed tech_leader 88 Luo Yonghao Meituan ai_tech_seed tech_company 88 Meituan meituan ai_tech_seed tech_company 88 Meituan mid journey ai_tech_seed ai_brand 88 Midjourney @@ -397,12 +452,18 @@ Sora ai_tech_seed ai_brand 88 Sora sora ai ai_tech_seed ai_brand 88 Sora Sora AI ai_tech_seed ai_brand 88 Sora speech language model ai_tech_seed dev_tool 88 SFSpeechLanguageModel +Stephen Chow ai_tech_seed celebrity 88 周星驰 +stephen chow ai_tech_seed celebrity 88 Stephen Chow Stripe ai_tech_seed tech_company 88 Stripe stripe ai_tech_seed tech_company 88 Stripe +Sun Yingsha ai_tech_seed athlete 88 孙颖莎 +sun yingsha ai_tech_seed athlete 88 Sun Yingsha swift data ai_tech_seed dev_tool 88 SwiftData SwiftData ai_tech_seed dev_tool 88 SwiftData Taobao ai_tech_seed tech_company 88 Taobao taobao ai_tech_seed tech_company 88 Taobao +Taylor Swift ai_tech_seed celebrity 88 Taylor Swift +taylor swift ai_tech_seed celebrity 88 Taylor Swift thinking model ai_tech_seed ai_term 88 reasoning model tool use ai_tech_seed ai_term 88 tool use tool-use ai_tech_seed ai_term 88 tool use @@ -410,64 +471,156 @@ Visual Studio Code ai_tech_seed dev_tool 88 VS Code VS Code ai_tech_seed dev_tool 88 VS Code vs code ai_tech_seed dev_tool 88 VS Code VSCode ai_tech_seed dev_tool 88 VS Code +Wang Chuqin ai_tech_seed athlete 88 王楚钦 +wang chuqin ai_tech_seed athlete 88 Wang Chuqin x ai ai_tech_seed ai_brand 88 xAI xAI ai_tech_seed ai_brand 88 xAI +Xiaomi YU7 ai_tech_seed tech_company 88 小米YU7 +YU7 ai_tech_seed tech_company 88 小米YU7 zhipu ai_tech_seed ai_brand 88 Zhipu AI Zhipu AI ai_tech_seed ai_brand 88 智谱 三星 ai_tech_seed tech_company 88 Samsung 上下文窗口 shang xia wen chuang kou ai_tech_seed ai_term 88 上下文窗口 +东哥 ai_tech_seed tech_leader 88 Liu Qiangdong 中芯国际 ai_tech_seed tech_company 88 SMIC 京东 ai_tech_seed tech_company 88 JD.com 何小鹏 he xiao peng ai_tech_seed tech_leader 88 何小鹏 +克劳德协同 ai_tech_seed ai_brand 88 Claude Cowork +刘强东 liu qiang dong ai_tech_seed tech_leader 88 刘强东 +刘德华 liu de hua ai_tech_seed celebrity 88 刘德华 +华为鸿蒙 ai_tech_seed tech_company 88 HarmonyOS +原神 yuan shen ai_tech_seed game_ip 88 原神 +周星驰 zhou xing chi ai_tech_seed celebrity 88 周星驰 哔哩哔哩 ai_tech_seed tech_company 88 Bilibili 多模态 duo mo tai ai_tech_seed ai_term 88 多模态 +奥特曼 ai_tech_seed tech_leader 88 Sam Altman +孙颖莎 sun ying sha ai_tech_seed athlete 88 孙颖莎 +小米YU7 xiao mi YU7 ai_tech_seed tech_company 88 小米YU7 山姆奥特曼 ai_tech_seed tech_leader 88 Sam Altman 工具使用 ai_tech_seed ai_term 88 tool use 幻觉 huan jue ai_tech_seed ai_term 88 幻觉 思维链 ai_tech_seed ai_term 88 chain of thought +成龙 cheng long ai_tech_seed celebrity 88 成龙 拼多多 ai_tech_seed tech_company 88 Pinduoduo 推理 tui li ai_tech_seed ai_term 88 推理 推理模型 ai_tech_seed ai_term 88 reasoning model 支付宝 ai_tech_seed tech_company 88 Alipay +星爷 ai_tech_seed celebrity 88 Stephen Chow +梅西 mei xi ai_tech_seed athlete 88 梅西 +泰勒斯威夫特 ai_tech_seed celebrity 88 Taylor Swift 淘宝 ai_tech_seed tech_company 88 Taobao 混合专家 ai_tech_seed ai_term 88 MoE +王楚钦 wang chu qin ai_tech_seed athlete 88 王楚钦 +王者 ai_tech_seed game_ip 88 Honor of Kings +王者荣耀 wang zhe rong yao ai_tech_seed game_ip 88 王者荣耀 生成式AI ai_tech_seed ai_term 88 GenAI 生成式人工智能 ai_tech_seed ai_term 88 AIGC +罗永浩 luo yong hao ai_tech_seed tech_leader 88 罗永浩 美团 ai_tech_seed tech_company 88 Meituan +老罗 ai_tech_seed tech_leader 88 Luo Yonghao 联想 ai_tech_seed tech_company 88 Lenovo 英特尔 ai_tech_seed tech_company 88 Intel 蚂蚁集团 ai_tech_seed tech_company 88 Ant Group 通义千问 Max ai_tech_seed ai_model 88 Qwen Max +霉霉 ai_tech_seed celebrity 88 Taylor Swift +鸿蒙 hong meng ai_tech_seed tech_company 88 鸿蒙 +黑神话 ai_tech_seed tech_term 88 Black Myth Wukong +黑神话悟空 hei shen hua wu kong ai_tech_seed tech_term 88 黑神话悟空 +AITO ai_tech_seed tech_company 86 问界 +aito ai_tech_seed tech_company 86 AITO +AITO问界 wen jie ai_tech_seed tech_company 86 问界 App Group ai_tech_seed dev_tool 86 App Group app group ai_tech_seed dev_tool 86 App Group App Groups ai_tech_seed dev_tool 86 App Group +Apple Intelligence ai_tech_seed ai_brand 86 Apple Intelligence +apple intelligence ai_tech_seed ai_brand 86 Apple Intelligence +Black Myth ai_tech_seed tech_term 86 黑神话 +claude haiku ai_tech_seed ai_model 86 Haiku +Claude Haiku ai_tech_seed ai_model 86 Haiku +Colin Huang ai_tech_seed tech_leader 86 黄峥 +colin huang ai_tech_seed tech_leader 86 Colin Huang +Coze ai_tech_seed ai_platform 86 Coze +coze ai ai_tech_seed ai_platform 86 Coze +Cristiano Ronaldo ai_tech_seed athlete 86 C罗 +cristiano ronaldo ai_tech_seed athlete 86 Cristiano Ronaldo +C罗 C luo ai_tech_seed athlete 86 C罗 +Eileen Gu ai_tech_seed athlete 86 谷爱凌 +eileen gu ai_tech_seed athlete 86 Eileen Gu evals ai_tech_seed ai_term 86 evals evaluation ai_tech_seed ai_term 86 evals +Fan Zhendong ai_tech_seed athlete 86 樊振东 +fan zhendong ai_tech_seed athlete 86 Fan Zhendong +Game Science ai_tech_seed tech_company 86 游戏科学 +game science ai_tech_seed tech_company 86 Game Science GLM 5 ai_tech_seed ai_model 86 GLM-5 glm five ai_tech_seed ai_model 86 GLM-5 +google jules ai_tech_seed dev_tool 86 Jules Grok 4 ai_tech_seed ai_model 86 Grok 4 Grok 4.3 ai_tech_seed ai_model 86 Grok 4 Grok Build ai_tech_seed ai_model 86 Grok 4 grok four ai_tech_seed ai_model 86 Grok 4 +Haiku ai_tech_seed ai_model 86 Haiku +Harmony Intelligent Mobility ai_tech_seed tech_company 86 鸿蒙智行 +Honkai Star Rail ai_tech_seed game_ip 86 崩坏星穹铁道 +honkai star rail ai_tech_seed game_ip 86 Honkai Star Rail +Hu Ge ai_tech_seed celebrity 86 胡歌 +hu ge ai_tech_seed celebrity 86 Hu Ge +Huang Bo ai_tech_seed celebrity 86 黄渤 +huang bo ai_tech_seed celebrity 86 Huang Bo humanoid ai_tech_seed tech_term 86 人形机器人 humanoid robot ai_tech_seed tech_term 86 人形机器人 +Jackson Yee ai_tech_seed celebrity 86 易烊千玺 +jackson yee ai_tech_seed celebrity 86 Jackson Yee +Jules ai_tech_seed dev_tool 86 Jules +Jules AI ai_tech_seed dev_tool 86 Jules +kai fu lee ai_tech_seed tech_leader 86 Kai-Fu Lee +Kai-Fu Lee ai_tech_seed tech_leader 86 李开复 Kling ai_tech_seed ai_brand 86 可灵 Kling AI ai_tech_seed ai_brand 86 可灵 kling ai ai_tech_seed ai_brand 86 Kling +Lark ai_tech_seed tech_company 86 飞书 +lark ai_tech_seed tech_company 86 Lark +League of Legends ai_tech_seed game_ip 86 英雄联盟 +league of legends ai_tech_seed game_ip 86 League of Legends +LeBron James ai_tech_seed athlete 86 詹姆斯 +lebron james ai_tech_seed athlete 86 LeBron James +Li Xiang ai_tech_seed tech_leader 86 李想 +li xiang ai_tech_seed tech_leader 86 Li Xiang +Liu Yuning ai_tech_seed celebrity 86 刘宇宁 +liu yuning ai_tech_seed celebrity 86 Liu Yuning llama four ai_tech_seed ai_model 86 Llama 4 Llama Maverick ai_tech_seed ai_model 86 Llama 4 Llama Scout ai_tech_seed ai_model 86 Llama 4 +LOL ai_tech_seed game_ip 86 League of Legends +Louis Vuitton ai_tech_seed consumer_brand 86 Louis Vuitton +louis vuitton ai_tech_seed consumer_brand 86 Louis Vuitton +LV ai_tech_seed consumer_brand 86 Louis Vuitton +Ma Long ai_tech_seed athlete 86 马龙 +ma long ai_tech_seed athlete 86 Ma Long Manus ai_tech_seed ai_brand 86 Manus manus ai_tech_seed ai_brand 86 Manus Manus AI ai_tech_seed ai_brand 86 Manus MCP client ai_tech_seed ai_term 86 MCP client mcp client ai_tech_seed ai_term 86 MCP client +miHoYo ai_tech_seed game_ip 86 米哈游 +mihoyo ai_tech_seed game_ip 86 miHoYo +MiMo ai_tech_seed ai_brand 86 MiMo +nano claw ai_tech_seed ai_brand 86 NanoClaw +Nano Claw ai_tech_seed ai_brand 86 NanoClaw +NanoClaw ai_tech_seed ai_brand 86 NanoClaw +PUBG Mobile China ai_tech_seed game_ip 86 和平精英 +Quan Hongchan ai_tech_seed athlete 86 全红婵 +quan hongchan ai_tech_seed athlete 86 Quan Hongchan Qwen Thinking ai_tech_seed ai_model 86 Qwen Thinking qwen thinking ai_tech_seed ai_model 86 Qwen Thinking RedNote ai_tech_seed tech_company 86 小红书 +Shen Teng ai_tech_seed celebrity 86 沈腾 +shen teng ai_tech_seed celebrity 86 Shen Teng speech transcriber ai_tech_seed dev_tool 86 SpeechTranscriber Speech Transcriber ai_tech_seed dev_tool 86 SpeechTranscriber SpeechTranscriber ai_tech_seed dev_tool 86 SpeechTranscriber +Steam ai_tech_seed game_ip 86 Steam +steam平台 ai_tech_seed game_ip 86 Steam structured output ai_tech_seed ai_term 86 structured output structured outputs ai_tech_seed ai_term 86 structured output sub agent ai_tech_seed ai_term 86 subagent @@ -475,20 +628,90 @@ subagent ai_tech_seed ai_term 86 subagent Swift Testing ai_tech_seed dev_tool 86 Swift Testing swift testing ai_tech_seed dev_tool 86 Swift Testing Testing framework ai_tech_seed dev_tool 86 Swift Testing +Unitree ai_tech_seed tech_company 86 宇树科技 +unitree ai_tech_seed tech_company 86 Unitree v zero ai_tech_seed dev_tool 86 v0 v0 ai_tech_seed dev_tool 86 v0 V0 ai_tech_seed dev_tool 86 v0 vercel v0 ai_tech_seed dev_tool 86 v0 +Wang Chuanfu ai_tech_seed tech_leader 86 王传福 +wang chuanfu ai_tech_seed tech_leader 86 Wang Chuanfu +Wang Xing ai_tech_seed tech_leader 86 王兴 +wang xing ai_tech_seed tech_leader 86 Wang Xing +Wang Yibo ai_tech_seed celebrity 86 王一博 +wang yibo ai_tech_seed celebrity 86 Wang Yibo +Xiao Zhan ai_tech_seed celebrity 86 肖战 +xiao zhan ai_tech_seed celebrity 86 Xiao Zhan Xiaohongshu ai_tech_seed tech_company 86 小红书 +xiaomi mimo ai_tech_seed ai_brand 86 MiMo +xiaomi yu7 ai_tech_seed tech_company 86 YU7 +Yang Mi ai_tech_seed celebrity 86 杨幂 +yang mi ai_tech_seed celebrity 86 Yang Mi +Yang Zi ai_tech_seed celebrity 86 杨紫 +Yao Ming ai_tech_seed athlete 86 姚明 +yao ming ai_tech_seed athlete 86 Yao Ming +Yu Minhong ai_tech_seed tech_leader 86 俞敏洪 +Zhao Liying ai_tech_seed celebrity 86 赵丽颖 +zhao liying ai_tech_seed celebrity 86 Zhao Liying +Zheng Qinwen ai_tech_seed athlete 86 郑钦文 +zheng qinwen ai_tech_seed athlete 86 Zheng Qinwen +Zhou Shen ai_tech_seed celebrity 86 周深 +zhou shen ai_tech_seed celebrity 86 Zhou Shen 人形机器人 ren xing ji qi ren ai_tech_seed tech_term 86 人形机器人 +俞敏洪 yu min hong ai_tech_seed tech_leader 86 俞敏洪 +全红婵 quan hong chan ai_tech_seed athlete 86 全红婵 +刘宇宁 liu yu ning ai_tech_seed celebrity 86 刘宇宁 可灵 ke ling ai_tech_seed ai_brand 86 可灵 +周深 zhou shen ai_tech_seed celebrity 86 周深 +和平精英 he ping jing ying ai_tech_seed game_ip 86 和平精英 +四字弟弟 ai_tech_seed celebrity 86 Jackson Yee +姚明 yao ming ai_tech_seed athlete 86 姚明 子智能体 ai_tech_seed ai_term 86 subagent +宇树 ai_tech_seed tech_company 86 Unitree +宇树科技 yu shu ke ji ai_tech_seed tech_company 86 宇树科技 +小米 MiMo ai_tech_seed ai_brand 86 MiMo +小米大模型 ai_tech_seed ai_brand 86 MiMo 小红书 xiao hong shu ai_tech_seed tech_company 86 小红书 +崩坏星穹铁道 beng huai xing qiong tie dao ai_tech_seed game_ip 86 崩坏星穹铁道 +扣子 ai_tech_seed ai_platform 86 Coze +拼多多创始人 ai_tech_seed tech_leader 86 Colin Huang +新东方俞敏洪 yu min hong ai_tech_seed tech_leader 86 俞敏洪 +易烊千玺 yi yang qian xi ai_tech_seed celebrity 86 易烊千玺 +星穹铁道 ai_tech_seed game_ip 86 Honkai Star Rail +李开复 li kai fu ai_tech_seed tech_leader 86 李开复 +李想 li xiang ai_tech_seed tech_leader 86 李想 +杨幂 yang mi ai_tech_seed celebrity 86 杨幂 +杨紫 yang zi ai_tech_seed celebrity 86 杨紫 +樊振东 fan zhen dong ai_tech_seed athlete 86 樊振东 模型上下文协议客户端 ai_tech_seed ai_term 86 MCP client 模型评测 ai_tech_seed ai_term 86 evals +沈腾 shen teng ai_tech_seed celebrity 86 沈腾 +游戏科学 you xi ke xue ai_tech_seed tech_company 86 游戏科学 +王一博 wang yi bo ai_tech_seed celebrity 86 王一博 +王传福 wang chuan fu ai_tech_seed tech_leader 86 王传福 +王兴 wang xing ai_tech_seed tech_leader 86 王兴 +理想李想 li xiang ai_tech_seed tech_leader 86 李想 +米哈游 mi ha you ai_tech_seed game_ip 86 米哈游 结构化输出 ai_tech_seed ai_term 86 structured output +美团王兴 ai_tech_seed tech_leader 86 Wang Xing +肖战 xiao zhan ai_tech_seed celebrity 86 肖战 +胡歌 hu ge ai_tech_seed celebrity 86 胡歌 +英雄联盟 ying xiong lian meng ai_tech_seed game_ip 86 英雄联盟 +苹果智能 ai_tech_seed ai_brand 86 Apple Intelligence +詹姆斯 zhan mu si ai_tech_seed athlete 86 詹姆斯 评测集 ai_tech_seed ai_term 86 evals +谷歌 Jules ai_tech_seed dev_tool 86 Jules +谷爱凌 gu ai ling ai_tech_seed athlete 86 谷爱凌 +赵丽颖 zhao li ying ai_tech_seed celebrity 86 赵丽颖 +路易威登 ai_tech_seed consumer_brand 86 Louis Vuitton 通义千问 thinking ai_tech_seed ai_model 86 Qwen Thinking +郑钦文 zheng qin wen ai_tech_seed athlete 86 郑钦文 +问界 wen jie ai_tech_seed tech_company 86 问界 +飞书 fei shu ai_tech_seed tech_company 86 飞书 +马龙 ma long ai_tech_seed athlete 86 马龙 +鸿蒙智行 hong meng zhi xing ai_tech_seed tech_company 86 鸿蒙智行 +黄峥 huang zheng ai_tech_seed tech_leader 86 黄峥 +黄渤 huang bo ai_tech_seed celebrity 86 黄渤 Adobe ai_tech_seed tech_company 85 Adobe adobe ai_tech_seed tech_company 85 Adobe API ai_tech_seed tech_term 85 API @@ -499,6 +722,10 @@ ARM Holdings ai_tech_seed tech_company 85 Arm ASML ai_tech_seed tech_company 85 ASML asml ai_tech_seed tech_company 85 ASML autonomous driving ai_tech_seed tech_term 85 自动驾驶 +Bill Gates ai_tech_seed tech_leader 85 Bill Gates +bill gates ai_tech_seed tech_leader 85 Bill Gates +Chanel ai_tech_seed consumer_brand 85 Chanel +chanel ai_tech_seed consumer_brand 85 Chanel CUDA ai_tech_seed tech_term 85 CUDA cuda ai_tech_seed tech_term 85 CUDA DALL E ai_tech_seed ai_brand 85 DALL-E @@ -508,6 +735,8 @@ dalle ai_tech_seed ai_brand 85 DALL-E Databricks ai_tech_seed tech_company 85 Databricks databricks ai_tech_seed tech_company 85 Databricks diffusion ai_tech_seed ai_term 85 diffusion +Disney ai_tech_seed consumer_brand 85 Disney +disney ai_tech_seed consumer_brand 85 Disney Figma ai_tech_seed tech_company 85 Figma figma ai_tech_seed tech_company 85 Figma FSD ai_tech_seed tech_term 85 自动驾驶 @@ -543,6 +772,8 @@ next js ai_tech_seed dev_tool 85 Next.js Next.js ai_tech_seed dev_tool 85 Next.js nextjs ai_tech_seed dev_tool 85 Next.js NextJS ai_tech_seed dev_tool 85 Next.js +Nike ai_tech_seed consumer_brand 85 Nike +nike ai_tech_seed consumer_brand 85 Nike Oppo ai_tech_seed tech_company 85 Oppo oppo ai_tech_seed tech_company 85 Oppo OPPO ai_tech_seed tech_company 85 Oppo @@ -606,18 +837,27 @@ zeekr ai_tech_seed tech_company 85 Zeekr 李斌 li bin ai_tech_seed tech_leader 85 李斌 极氪 ai_tech_seed tech_company 85 Zeekr 梁文锋 liang wen feng ai_tech_seed tech_leader 85 梁文锋 +比尔盖茨 ai_tech_seed tech_leader 85 Bill Gates 混元 hun yuan ai_tech_seed ai_brand 85 混元 +盖茨 ai_tech_seed tech_leader 85 Bill Gates 科大讯飞 ai_tech_seed ai_brand 85 讯飞 索尼 ai_tech_seed tech_company 85 Sony 网易 ai_tech_seed tech_company 85 NetEase +耐克 ai_tech_seed consumer_brand 85 Nike 腾讯混元 hun yuan ai_tech_seed ai_brand 85 混元 自动驾驶 zi dong jia shi ai_tech_seed tech_term 85 自动驾驶 荣耀 ai_tech_seed tech_company 85 Honor 讯飞 ai_tech_seed ai_brand 85 讯飞 讯飞星火 xing huo ai_tech_seed ai_brand 85 星火 +迪士尼 ai_tech_seed consumer_brand 85 Disney 量化 liang hua ai_tech_seed ai_term 85 量化 +香奈儿 ai_tech_seed consumer_brand 85 Chanel 高通 ai_tech_seed tech_company 85 Qualcomm +agentic workflow ai_tech_seed ai_term 84 agentic workflow +agentic workflows ai_tech_seed ai_term 84 agentic workflow AI governance ai_tech_seed tech_term 84 AI治理 +AI plus ai_tech_seed tech_term 84 人工智能+ +AI+ ai_tech_seed tech_term 84 人工智能+ AI治理 AI zhi li ai_tech_seed tech_term 84 AI治理 Amazon Kiro ai_tech_seed dev_tool 84 Kiro Amazon Q ai_tech_seed dev_tool 84 Amazon Q @@ -630,43 +870,137 @@ AppIntents ai_tech_seed dev_tool 84 App Intents AppStoreConnect ai_tech_seed dev_tool 84 App Store Connect asset inventory ai_tech_seed dev_tool 84 AssetInventory AssetInventory ai_tech_seed dev_tool 84 AssetInventory +Austin Li ai_tech_seed celebrity 84 李佳琦 +austin li ai_tech_seed celebrity 84 Austin Li av audio engine ai_tech_seed dev_tool 84 AVAudioEngine av audio session ai_tech_seed dev_tool 84 AVAudioSession AVAudioEngine ai_tech_seed dev_tool 84 AVAudioEngine AVAudioSession ai_tech_seed dev_tool 84 AVAudioSession AWS Q ai_tech_seed dev_tool 84 Amazon Q +Bai Lu ai_tech_seed celebrity 84 白鹿 +bai lu ai_tech_seed celebrity 84 Bai Lu +BCI ai_tech_seed tech_term 84 脑机接口 +Bitcoin ai_tech_seed fintech 84 比特币 +bitcoin ai_tech_seed fintech 84 Bitcoin +black forest flux ai_tech_seed ai_model 84 Flux +black pink ai_tech_seed celebrity 84 BLACKPINK +Black Pink ai_tech_seed celebrity 84 BLACKPINK +BLACKPINK ai_tech_seed celebrity 84 BLACKPINK +BMW ai_tech_seed tech_company 84 宝马 +bmw ai_tech_seed tech_company 84 BMW Bolt AI ai_tech_seed dev_tool 84 Bolt.new bolt new ai_tech_seed dev_tool 84 Bolt.new Bolt.new ai_tech_seed dev_tool 84 Bolt.new +brain-computer interface ai_tech_seed tech_term 84 脑机接口 +break out ai_tech_seed tech_term 84 出圈 +Browser Use ai_tech_seed ai_term 84 Browser Use +browser use ai_tech_seed ai_term 84 Browser Use +browser-use ai_tech_seed ai_term 84 Browser Use +BTC ai_tech_seed fintech 84 Bitcoin +BTS ai_tech_seed celebrity 84 BTS +bts ai_tech_seed celebrity 84 BTS cap cut ai_tech_seed tech_company 84 CapCut CapCut ai_tech_seed tech_company 84 剪映 +Cheng Yi ai_tech_seed celebrity 84 成毅 +claude fable ai_tech_seed ai_model 84 Fable +Claude Fable ai_tech_seed ai_model 84 Fable +Codestral ai_tech_seed ai_model 84 Codestral +codestral ai_tech_seed ai_model 84 Codestral +coze ai_tech_seed ai_platform 84 扣子 +Dify ai_tech_seed ai_platform 84 Dify +dify ai ai_tech_seed ai_platform 84 Dify +Dify AI ai_tech_seed ai_platform 84 Dify +Dilraba ai_tech_seed celebrity 84 迪丽热巴 +dilraba ai_tech_seed celebrity 84 Dilraba +DingTalk ai_tech_seed tech_company 84 钉钉 +dingtalk ai_tech_seed tech_company 84 DingTalk +dong ming zhu ai_tech_seed tech_leader 84 Dong Mingzhu +Dong Mingzhu ai_tech_seed tech_leader 84 董明珠 +Dong Yuhui ai_tech_seed celebrity 84 董宇辉 +dong yuhui ai_tech_seed celebrity 84 Dong Yuhui +Eason Chan ai_tech_seed celebrity 84 陈奕迅 +eason chan ai_tech_seed celebrity 84 Eason Chan +Esther Yu ai_tech_seed celebrity 84 虞书欣 +esther yu ai_tech_seed celebrity 84 Esther Yu +Fable ai_tech_seed ai_model 84 Fable +Faye Wong ai_tech_seed celebrity 84 王菲 +Flux ai_tech_seed ai_model 84 Flux +FLUX ai_tech_seed ai_model 84 Flux +Fugu ai_tech_seed ai_brand 84 Fugu +Fugu AI ai_tech_seed ai_brand 84 Fugu GLM 4.6 ai_tech_seed ai_model 84 GLM-4.6 GLM Coding Plan ai_tech_seed dev_tool 84 GLM Coding Plan glm coding plan ai_tech_seed dev_tool 84 GLM Coding Plan glm four six ai_tech_seed ai_model 84 GLM-4.6 GLM-4.6 ai_tech_seed ai_model 84 GLM-4.6 +go viral ai_tech_seed tech_term 84 出圈 +graph rag ai_tech_seed ai_term 84 GraphRAG +Graph RAG ai_tech_seed ai_term 84 GraphRAG +GraphRAG ai_tech_seed ai_term 84 GraphRAG grok build ai_tech_seed dev_tool 84 Grok Build Grok Build CLI ai_tech_seed dev_tool 84 Grok Build +Gucci ai_tech_seed consumer_brand 84 Gucci +gucci ai_tech_seed consumer_brand 84 Gucci Hailuo ai_tech_seed ai_brand 84 海螺AI Hangzhou Six Little Dragons ai_tech_seed tech_term 84 杭州六小龙 +hermes ai_tech_seed consumer_brand 84 Hermès +Hermes ai_tech_seed ai_brand 84 Hermes Agent +Hermes Agent ai_tech_seed ai_brand 84 Hermes Agent +hermes agent ai_tech_seed ai_brand 84 Hermes Agent +Hermès ai_tech_seed consumer_brand 84 Hermès +Jia Ling ai_tech_seed celebrity 84 贾玲 +jia ling ai_tech_seed celebrity 84 Jia Ling Jimeng ai_tech_seed ai_brand 84 即梦 +JJ Lin ai_tech_seed celebrity 84 林俊杰 +jj lin ai_tech_seed celebrity 84 JJ Lin Kiro ai_tech_seed dev_tool 84 Kiro kiro ai_tech_seed dev_tool 84 Kiro +kylian mbappe ai_tech_seed athlete 84 Kylian Mbappé +Kylian Mbappé ai_tech_seed athlete 84 姆巴佩 lang graph ai_tech_seed ai_platform 84 LangGraph LangGraph ai_tech_seed ai_platform 84 LangGraph +Leapmotor ai_tech_seed tech_company 84 零跑 +leapmotor ai_tech_seed tech_company 84 Leapmotor +Li Xian ai_tech_seed celebrity 84 李现 +li xian ai_tech_seed celebrity 84 Li Xian +Li Ziqi ai_tech_seed celebrity 84 李子柒 +li ziqi ai_tech_seed celebrity 84 Li Ziqi +Liu Yifei ai_tech_seed celebrity 84 刘亦菲 +liu yifei ai_tech_seed celebrity 84 Liu Yifei Llama 4 Maverick ai_tech_seed ai_model 84 Llama Maverick llama maverick ai_tech_seed ai_model 84 Llama Maverick local model ai_tech_seed ai_term 84 本地模型 Lovable ai_tech_seed dev_tool 84 Lovable lovable ai_tech_seed dev_tool 84 Lovable Lovable AI ai_tech_seed dev_tool 84 Lovable +Lu Weibing ai_tech_seed tech_leader 84 卢伟冰 +lu weibing ai_tech_seed tech_leader 84 Lu Weibing +Luxeed ai_tech_seed tech_company 84 智界 +luxeed ai_tech_seed tech_company 84 Luxeed +Lynk ai_tech_seed tech_company 84 领克 +Lynk & Co ai_tech_seed tech_company 84 领克 +lynk co ai_tech_seed tech_company 84 Lynk & Co +MCP protocol ai_tech_seed ai_term 84 MCP协议 +MCP协议 MCP xie yi ai_tech_seed ai_term 84 MCP协议 +mercedes benz ai_tech_seed tech_company 84 Mercedes-Benz +Mercedes-Benz ai_tech_seed tech_company 84 奔驰 +meta muse ai_tech_seed ai_model 84 Muse +Michael Jordan ai_tech_seed athlete 84 乔丹 +michael jordan ai_tech_seed athlete 84 Michael Jordan MiniMax Video ai_tech_seed ai_brand 84 海螺AI +mistral codestral ai_tech_seed ai_model 84 Codestral Mistral Large ai_tech_seed ai_model 84 Mistral Large mistral large ai_tech_seed ai_model 84 Mistral Large Mistral Large 3 ai_tech_seed ai_model 84 Mistral Large +Muse ai_tech_seed ai_model 84 Muse +Muse Spark ai_tech_seed ai_model 84 Muse Neon ai_tech_seed tech_company 84 Neon neon database ai_tech_seed tech_company 84 Neon Neon Postgres ai_tech_seed tech_company 84 Neon +Nezha ai_tech_seed tech_term 84 哪吒 +notebook lm ai_tech_seed ai_brand 84 NotebookLM +Notebook LM ai_tech_seed ai_brand 84 NotebookLM +NotebookLM ai_tech_seed ai_brand 84 NotebookLM on-device model ai_tech_seed ai_term 84 端侧模型 open hands ai_tech_seed dev_tool 84 OpenHands open telemetry ai_tech_seed tech_term 84 OpenTelemetry @@ -674,17 +1008,32 @@ OpenHands ai_tech_seed dev_tool 84 OpenHands OpenHands AI ai_tech_seed dev_tool 84 OpenHands OpenTelemetry ai_tech_seed tech_term 84 OpenTelemetry OTel ai_tech_seed tech_term 84 OpenTelemetry +Perplexity Computer ai_tech_seed ai_brand 84 Perplexity Computer +perplexity computer ai_tech_seed ai_brand 84 Perplexity Computer +Personal Computer ai_tech_seed ai_brand 84 Perplexity Computer +Porsche ai_tech_seed tech_company 84 保时捷 +porsche ai_tech_seed tech_company 84 Porsche Prisma ai_tech_seed dev_tool 84 Prisma prisma orm ai_tech_seed dev_tool 84 Prisma Prisma ORM ai_tech_seed dev_tool 84 Prisma prompt cache ai_tech_seed ai_term 84 prompt caching prompt caching ai_tech_seed ai_term 84 prompt caching +PUBG Mobile ai_tech_seed game_ip 84 PUBG Mobile +pubg mobile ai_tech_seed game_ip 84 PUBG Mobile Q Developer ai_tech_seed dev_tool 84 Amazon Q Replit Agent ai_tech_seed dev_tool 84 Replit Agent replit agent ai_tech_seed dev_tool 84 Replit Agent Replit AI ai_tech_seed dev_tool 84 Replit Agent +Robin Zeng ai_tech_seed tech_leader 84 曾毓群 +robin zeng ai_tech_seed tech_leader 84 Robin Zeng +sakana fugu ai_tech_seed ai_brand 84 Fugu +Scale ai_tech_seed tech_company 84 Scale AI +Scale AI ai_tech_seed tech_company 84 Scale AI +scale ai ai_tech_seed tech_company 84 Scale AI semantic retrieval ai_tech_seed ai_term 84 semantic search semantic search ai_tech_seed ai_term 84 semantic search +Seres ai_tech_seed tech_company 84 赛力斯 +seres ai_tech_seed tech_company 84 Seres shad cn ai_tech_seed dev_tool 84 shadcn/ui shadcn ai_tech_seed dev_tool 84 shadcn/ui shadcn ui ai_tech_seed dev_tool 84 shadcn/ui @@ -693,105 +1042,342 @@ Speech AssetInventory ai_tech_seed dev_tool 84 AssetInventory SQLite ai_tech_seed tech_term 84 SQLite sqlite ai_tech_seed tech_term 84 SQLite StackBlitz Bolt ai_tech_seed dev_tool 84 Bolt.new +Stephen Curry ai_tech_seed athlete 84 库里 +stephen curry ai_tech_seed athlete 84 Stephen Curry +Suno ai_tech_seed ai_brand 84 Suno +suno ai ai_tech_seed ai_brand 84 Suno +Suno AI ai_tech_seed ai_brand 84 Suno Tailwind ai_tech_seed dev_tool 84 Tailwind CSS Tailwind CSS ai_tech_seed dev_tool 84 Tailwind CSS tailwind css ai_tech_seed dev_tool 84 Tailwind CSS +Tencent Games ai_tech_seed game_ip 84 腾讯游戏 test flight ai_tech_seed dev_tool 84 TestFlight TestFlight ai_tech_seed dev_tool 84 TestFlight Trae ai_tech_seed dev_tool 84 Trae trae ai_tech_seed dev_tool 84 Trae Trae AI ai_tech_seed dev_tool 84 Trae Trae CN ai_tech_seed dev_tool 84 Trae +Valorant ai_tech_seed game_ip 84 无畏契约 +valorant ai_tech_seed game_ip 84 Valorant vector retrieval ai_tech_seed ai_term 84 vector search vector search ai_tech_seed ai_term 84 vector search +Wang Manyu ai_tech_seed athlete 84 王曼昱 +wang manyu ai_tech_seed athlete 84 Wang Manyu +Wanxiang ai_tech_seed ai_brand 84 通义万相 +WeCom ai_tech_seed tech_company 84 企业微信 +wecom ai_tech_seed tech_company 84 WeCom +William Ding ai_tech_seed tech_leader 84 丁磊 +william ding ai_tech_seed tech_leader 84 William Ding world model ai_tech_seed ai_term 84 世界模型 +Wu Jing ai_tech_seed celebrity 84 吴京 +wu jing ai_tech_seed celebrity 84 Wu Jing xiao hong shu ai_tech_seed tech_company 84 Xiaohongshu +Yang Yang ai_tech_seed celebrity 84 杨洋 +Yangwang ai_tech_seed tech_company 84 仰望 +yangwang ai_tech_seed tech_company 84 Yangwang +yu minhong ai_tech_seed tech_leader 84 Yu Minhong Yuanbao ai_tech_seed ai_brand 84 腾讯元宝 +Zenless Zone Zero ai_tech_seed game_ip 84 绝区零 +zenless zone zero ai_tech_seed game_ip 84 Zenless Zone Zero +Zhang Yimou ai_tech_seed celebrity 84 张艺谋 +zhang yimou ai_tech_seed celebrity 84 Zhang Yimou +ZZZ ai_tech_seed game_ip 84 Zenless Zone Zero +丁磊 ding lei ai_tech_seed tech_leader 84 丁磊 +万相 tong yi wan xiang ai_tech_seed ai_brand 84 通义万相 世界模型 shi jie mo xing ai_tech_seed ai_term 84 世界模型 +乔丹 qiao dan ai_tech_seed athlete 84 乔丹 +人工智能+ ren gong zhi neng jia ai_tech_seed tech_term 84 人工智能+ +仰望 yang wang ai_tech_seed tech_company 84 仰望 +企业微信 qi ye wei xin ai_tech_seed tech_company 84 企业微信 +保时捷 bao shi jie ai_tech_seed tech_company 84 保时捷 +出圈 chu quan ai_tech_seed tech_term 84 出圈 +刘亦菲 liu yi fei ai_tech_seed celebrity 84 刘亦菲 剪映 jian ying ai_tech_seed tech_company 84 剪映 +卢伟冰 lu wei bing ai_tech_seed tech_leader 84 卢伟冰 即梦 ji meng ai_tech_seed ai_brand 84 即梦 即梦AI ji meng ai_tech_seed ai_brand 84 即梦 +古驰 ai_tech_seed consumer_brand 84 Gucci +可灵AI ke ling AI ai_tech_seed ai_brand 84 可灵AI 向量搜索 ai_tech_seed ai_term 84 vector search +吴京 wu jing ai_tech_seed celebrity 84 吴京 +哪吒 na zha ai_tech_seed tech_term 84 哪吒 +哪吒2 na zha ai_tech_seed tech_term 84 哪吒 +奔驰 ben chi ai_tech_seed tech_company 84 奔驰 +姆巴佩 mu ba pei ai_tech_seed athlete 84 姆巴佩 +宝马 bao ma ai_tech_seed tech_company 84 宝马 +库里 ku li ai_tech_seed athlete 84 库里 +张艺谋 zhang yi mou ai_tech_seed celebrity 84 张艺谋 +成毅 cheng yi ai_tech_seed celebrity 84 成毅 提示词缓存 ai_tech_seed ai_term 84 prompt caching +无畏契约 wu wei qi yue ai_tech_seed game_ip 84 无畏契约 +智界 zhi jie ai_tech_seed tech_company 84 智界 智谱 coding plan ai_tech_seed dev_tool 84 GLM Coding Plan +曾毓群 zeng yu qun ai_tech_seed tech_leader 84 曾毓群 本地模型 ben di mo xing ai_tech_seed ai_term 84 本地模型 +李佳琦 li jia qi ai_tech_seed celebrity 84 李佳琦 +李子柒 li zi qi ai_tech_seed celebrity 84 李子柒 +李现 li xian ai_tech_seed celebrity 84 李现 +杨洋 yang yang ai_tech_seed celebrity 84 杨洋 杭州六小龙 hang zhou liu xiao long ai_tech_seed tech_term 84 杭州六小龙 +林俊杰 lin jun jie ai_tech_seed celebrity 84 林俊杰 +比特币 bi te bi ai_tech_seed fintech 84 比特币 海螺AI hai luo AI ai_tech_seed ai_brand 84 海螺AI +深度思考 shen du si kao ai_tech_seed ai_term 84 深度思考 +深度思考模式 shen du si kao ai_tech_seed ai_term 84 深度思考 +热巴 ai_tech_seed celebrity 84 Dilraba +爱马仕 ai_tech_seed consumer_brand 84 Hermès +王曼昱 wang man yu ai_tech_seed athlete 84 王曼昱 +王菲 wang fei ai_tech_seed celebrity 84 王菲 +白鹿 bai lu ai_tech_seed celebrity 84 白鹿 +神仙姐姐 ai_tech_seed celebrity 84 Liu Yifei 端侧模型 duan ce mo xing ai_tech_seed ai_term 84 端侧模型 +绝区零 jue qu ling ai_tech_seed game_ip 84 绝区零 +缪斯 ai_tech_seed ai_model 84 Muse +罗翔 luo xiang ai_tech_seed celebrity 84 罗翔 +罗翔说刑法 luo xiang ai_tech_seed celebrity 84 罗翔 +脑机接口 nao ji jie kou ai_tech_seed tech_term 84 脑机接口 腾讯元宝 teng xun yuan bao ai_tech_seed ai_brand 84 腾讯元宝 +腾讯游戏 teng xun you xi ai_tech_seed game_ip 84 腾讯游戏 +董宇辉 dong yu hui ai_tech_seed celebrity 84 董宇辉 +董明珠 dong ming zhu ai_tech_seed tech_leader 84 董明珠 +虞书欣 yu shu xin ai_tech_seed celebrity 84 虞书欣 语义搜索 ai_tech_seed ai_term 84 semantic search +贾玲 jia ling ai_tech_seed celebrity 84 贾玲 +赛力斯 sai li si ai_tech_seed tech_company 84 赛力斯 +迪丽热巴 di li re ba ai_tech_seed celebrity 84 迪丽热巴 +通义万相 tong yi wan xiang ai_tech_seed ai_brand 84 通义万相 +钉钉 ding ding ai_tech_seed tech_company 84 钉钉 +防弹少年团 ai_tech_seed celebrity 84 BTS +陈奕迅 chen yi xun ai_tech_seed celebrity 84 陈奕迅 +零跑 ling pao ai_tech_seed tech_company 84 零跑 +领克 ling ke ai_tech_seed tech_company 84 领克 01.AI ai_tech_seed ai_brand 82 零一万物 +360周鸿祎 ai_tech_seed tech_leader 82 Zhou Hongyi +a16z ai_tech_seed fintech 82 a16z +A16Z ai_tech_seed fintech 82 a16z +A2A ai_tech_seed ai_term 82 A2A activity kit ai_tech_seed dev_tool 82 ActivityKit ActivityKit ai_tech_seed dev_tool 82 ActivityKit +Adidas ai_tech_seed consumer_brand 82 Adidas +adidas ai_tech_seed consumer_brand 82 Adidas +Agent Skills ai_tech_seed ai_term 82 Agent Skills +agent skills ai_tech_seed ai_term 82 Agent Skills +agent to agent ai_tech_seed ai_term 82 A2A +Agent2Agent ai_tech_seed ai_term 82 A2A +agentic code ai_tech_seed ai_term 82 agentic coding +agentic coding ai_tech_seed ai_term 82 agentic coding +agents a1 ai_tech_seed ai_model 82 Agents-A1 +Agents A1 ai_tech_seed ai_model 82 Agents-A1 +Agents-A1 ai_tech_seed ai_model 82 Agents-A1 +AI fatigue ai_tech_seed tech_term 82 AI疲劳 AI native ai_tech_seed ai_term 82 AI native +AI Studio ai_tech_seed dev_tool 82 Google AI Studio AI video ai_tech_seed tech_term 82 AI视频 AI workflow ai_tech_seed ai_term 82 AI workflow ai workflow ai_tech_seed ai_term 82 AI workflow AI 工作流 ai_tech_seed ai_term 82 AI workflow AI-native ai_tech_seed ai_term 82 AI native +Aion ai_tech_seed tech_company 82 广汽埃安 +aion ai_tech_seed tech_company 82 Aion Airbnb ai_tech_seed tech_company 82 Airbnb airbnb ai_tech_seed tech_company 82 Airbnb AI原生 ai_tech_seed ai_term 82 AI native +AI疲劳 AI pi lao ai_tech_seed tech_term 82 AI疲劳 AI视频 AI shi pin ai_tech_seed tech_term 82 AI视频 +Amazon Bedrock ai_tech_seed ai_platform 82 Bedrock +Amazon Nova ai_tech_seed ai_model 82 Amazon Nova +amazon nova ai_tech_seed ai_model 82 Amazon Nova Amazon Q Developer ai_tech_seed dev_tool 82 Q Developer +andreessen horowitz ai_tech_seed fintech 82 a16z +Andreessen Horowitz ai_tech_seed fintech 82 Andreessen Horowitz +Andrew Ng ai_tech_seed tech_leader 82 Andrew Ng +andrew ng ai_tech_seed tech_leader 82 Andrew Ng +Anta ai_tech_seed consumer_brand 82 安踏 +anta ai_tech_seed consumer_brand 82 Anta Apache Kafka ai_tech_seed tech_term 82 Kafka +apple siri ai_tech_seed ai_brand 82 Siri +Arc'teryx ai_tech_seed consumer_brand 82 始祖鸟 +arcteryx ai_tech_seed consumer_brand 82 Arc'teryx +Ariana Grande ai_tech_seed celebrity 82 Ariana Grande +ariana grande ai_tech_seed celebrity 82 Ariana Grande AutoGen ai_tech_seed ai_platform 82 AutoGen autogen ai_tech_seed ai_platform 82 AutoGen +Avatr ai_tech_seed tech_company 82 阿维塔 +avatr ai_tech_seed tech_company 82 Avatr +aws bedrock ai_tech_seed ai_platform 82 Bedrock bai chuan ai_tech_seed ai_brand 82 百川 Baichuan ai_tech_seed ai_brand 82 百川 baichuan ai_tech_seed ai_brand 82 Baichuan +Balenciaga ai_tech_seed consumer_brand 82 Balenciaga +balenciaga ai_tech_seed consumer_brand 82 Balenciaga +Bedrock ai_tech_seed ai_platform 82 Bedrock +Berkshire Hathaway ai_tech_seed fintech 82 伯克希尔 +berkshire hathaway ai_tech_seed fintech 82 Berkshire Hathaway +beyonce ai_tech_seed celebrity 82 Beyoncé +Beyoncé ai_tech_seed celebrity 82 Beyoncé +BFL ai_tech_seed ai_brand 82 Black Forest Labs +Billie Eilish ai_tech_seed celebrity 82 Billie Eilish +billie eilish ai_tech_seed celebrity 82 Billie Eilish +Black Forest Labs ai_tech_seed ai_brand 82 Black Forest Labs +black forest labs ai_tech_seed ai_brand 82 Black Forest Labs +Blizzard ai_tech_seed game_ip 82 暴雪 +blizzard ai_tech_seed game_ip 82 Blizzard blockchain ai_tech_seed tech_term 82 区块链 +brain computer interface ai_tech_seed tech_term 82 BCI +BrainCo ai_tech_seed tech_company 82 强脑科技 +brainco ai_tech_seed tech_company 82 BrainCo Bun ai_tech_seed dev_tool 82 Bun bun js ai_tech_seed dev_tool 82 Bun Bun runtime ai_tech_seed dev_tool 82 Bun +Cai Xukun ai_tech_seed celebrity 82 蔡徐坤 +cai xukun ai_tech_seed celebrity 82 Cai Xukun +Cartier ai_tech_seed consumer_brand 82 Cartier +cartier ai_tech_seed consumer_brand 82 Cartier +Cascade ai_tech_seed dev_tool 82 Windsurf Cascade +Cerebras ai_tech_seed tech_company 82 Cerebras +cerebras systems ai_tech_seed tech_company 82 Cerebras +Cerebras Systems ai_tech_seed tech_company 82 Cerebras +Claude Mythos ai_tech_seed ai_model 82 Claude Mythos +claude mythos ai_tech_seed ai_model 82 Claude Mythos +Claude Skills ai_tech_seed ai_term 82 Agent Skills Cloudflare ai_tech_seed tech_company 82 Cloudflare cloudflare ai_tech_seed tech_company 82 Cloudflare Codeium Windsurf ai_tech_seed dev_tool 82 Windsurf +Cody ai_tech_seed dev_tool 82 Sourcegraph Cody Cognition ai_tech_seed ai_brand 82 Cognition cognition ai ai_tech_seed ai_brand 82 Cognition Cognition AI ai_tech_seed ai_brand 82 Cognition Coinbase ai_tech_seed tech_company 82 Coinbase coinbase ai_tech_seed tech_company 82 Coinbase context compression ai_tech_seed ai_term 82 上下文压缩 +CoreWeave ai_tech_seed tech_company 82 CoreWeave +coreweave ai_tech_seed tech_company 82 CoreWeave +counter strike 2 ai_tech_seed game_ip 82 CS2 Create ML ai_tech_seed dev_tool 82 Create ML create ml ai_tech_seed dev_tool 82 Create ML CreateML ai_tech_seed dev_tool 82 Create ML crew ai ai_tech_seed ai_platform 82 CrewAI Crew AI ai_tech_seed ai_platform 82 CrewAI CrewAI ai_tech_seed ai_platform 82 CrewAI +CS2 ai_tech_seed game_ip 82 CS2 +CSGO ai_tech_seed game_ip 82 CS2 +deep agent ai_tech_seed ai_term 82 deep agent +deep agents ai_tech_seed ai_term 82 deep agent deep research ai_tech_seed ai_term 82 deep research +Denza ai_tech_seed tech_company 82 腾势 +denza ai_tech_seed tech_company 82 Denza +Devstral ai_tech_seed ai_model 82 Devstral +devstral ai_tech_seed ai_model 82 Devstral +digital human ai_tech_seed ai_term 82 数字人 +Dior ai_tech_seed consumer_brand 82 Dior +dior ai_tech_seed consumer_brand 82 Dior distillation ai_tech_seed ai_term 82 distillation +Donald Trump ai_tech_seed tech_leader 82 特朗普 +donald trump ai_tech_seed tech_leader 82 Donald Trump +dota 2 ai_tech_seed game_ip 82 DOTA2 +Dota 2 ai_tech_seed game_ip 82 DOTA2 +DOTA2 ai_tech_seed game_ip 82 DOTA2 +dota2 ai_tech_seed game_ip 82 Dota 2 +Drake ai_tech_seed celebrity 82 Drake +drake rapper ai_tech_seed celebrity 82 Drake Drizzle ai_tech_seed dev_tool 82 Drizzle drizzle orm ai_tech_seed dev_tool 82 Drizzle Drizzle ORM ai_tech_seed dev_tool 82 Drizzle +Duan Yongping ai_tech_seed tech_leader 82 段永平 +duan yongping ai_tech_seed tech_leader 82 Duan Yongping +Elden Ring ai_tech_seed game_ip 82 艾尔登法环 +elden ring ai_tech_seed game_ip 82 Elden Ring embodied agent ai_tech_seed ai_term 82 具身智能体 embodied AI ai_tech_seed tech_term 82 具身智能 end-to-end ai_tech_seed tech_term 82 端到端 +Erling Haaland ai_tech_seed athlete 82 哈兰德 +erling haaland ai_tech_seed athlete 82 Erling Haaland +ETH ai_tech_seed fintech 82 Ethereum +Ethereum ai_tech_seed fintech 82 以太坊 +ethereum ai_tech_seed fintech 82 Ethereum +Fangchengbao ai_tech_seed tech_company 82 方程豹 +fangchengbao ai_tech_seed tech_company 82 Fangchengbao fast api ai_tech_seed dev_tool 82 FastAPI FastAPI ai_tech_seed dev_tool 82 FastAPI +Federal Reserve ai_tech_seed fintech 82 美联储 +federal reserve ai_tech_seed fintech 82 Federal Reserve +fei fei li ai_tech_seed tech_leader 82 Fei-Fei Li +Fei-Fei Li ai_tech_seed tech_leader 82 李飞飞 +Ferrari ai_tech_seed tech_company 82 法拉利 +ferrari ai_tech_seed tech_company 82 Ferrari +Fireworks ai_tech_seed ai_platform 82 Fireworks AI +Fireworks AI ai_tech_seed ai_platform 82 Fireworks AI +fireworks ai ai_tech_seed ai_platform 82 Fireworks AI +Foxconn ai_tech_seed tech_company 82 富士康 +foxconn ai_tech_seed tech_company 82 Foxconn full self driving ai_tech_seed tech_term 82 FSD +G.E.M. ai_tech_seed celebrity 82 邓紫棋 Geely ai_tech_seed tech_company 82 Geely geely ai_tech_seed tech_company 82 Geely +gem ai_tech_seed celebrity 82 G.E.M. Go ai_tech_seed dev_tool 82 Go golang ai_tech_seed dev_tool 82 Go Golang ai_tech_seed dev_tool 82 Go +Goldman Sachs ai_tech_seed fintech 82 高盛 +goldman sachs ai_tech_seed fintech 82 Goldman Sachs +Gong Li ai_tech_seed celebrity 82 巩俐 +Google AI Studio ai_tech_seed dev_tool 82 Google AI Studio +google ai studio ai_tech_seed dev_tool 82 Google AI Studio +google imagen ai_tech_seed ai_model 82 Imagen +google veo ai_tech_seed ai_model 82 Veo Groq ai_tech_seed ai_brand 82 Groq groq ai_tech_seed ai_brand 82 Groq GROQ ai_tech_seed ai_brand 82 Groq +Haidilao ai_tech_seed consumer_brand 82 海底捞 +haidilao ai_tech_seed consumer_brand 82 Haidilao hailuo ai ai_tech_seed ai_brand 82 Hailuo +harvey ai_tech_seed ai_brand 82 Harvey AI +Harvey ai_tech_seed ai_brand 82 Harvey AI +Harvey AI ai_tech_seed ai_brand 82 Harvey AI horizon ai_tech_seed tech_company 82 Horizon Robotics Horizon Robotics ai_tech_seed tech_company 82 Horizon Robotics +Huang Xiaoming ai_tech_seed celebrity 82 黄晓明 +huang xiaoming ai_tech_seed celebrity 82 Huang Xiaoming hybrid retrieval ai_tech_seed ai_term 82 hybrid search hybrid search ai_tech_seed ai_term 82 hybrid search IBM ai_tech_seed tech_company 82 IBM ibm ai_tech_seed tech_company 82 IBM +IM Motors ai_tech_seed tech_company 82 智己 +im motors ai_tech_seed tech_company 82 IM Motors image-to-video ai_tech_seed tech_term 82 图生视频 +Imagen ai_tech_seed ai_model 82 Imagen +Imagen AI ai_tech_seed ai_model 82 Imagen +Jacky Cheung ai_tech_seed celebrity 82 张学友 +jacky cheung ai_tech_seed celebrity 82 Jacky Cheung Jeff Bezos ai_tech_seed tech_leader 82 Jeff Bezos jeff bezos ai_tech_seed tech_leader 82 Jeff Bezos jimeng ai ai_tech_seed ai_brand 82 Jimeng +Jolin Tsai ai_tech_seed celebrity 82 蔡依林 +jolin tsai ai_tech_seed celebrity 82 Jolin Tsai Kafka ai_tech_seed tech_term 82 Kafka kafka ai_tech_seed tech_term 82 Kafka +Kobe Bryant ai_tech_seed athlete 82 科比 +kobe bryant ai_tech_seed athlete 82 Kobe Bryant +Lady Gaga ai_tech_seed celebrity 82 Lady Gaga +lady gaga ai_tech_seed celebrity 82 Lady Gaga +Lamborghini ai_tech_seed tech_company 82 兰博基尼 +lamborghini ai_tech_seed tech_company 82 Lamborghini +Leonardo DiCaprio ai_tech_seed celebrity 82 Leonardo DiCaprio +leonardo dicaprio ai_tech_seed celebrity 82 Leonardo DiCaprio +Li L9 ai_tech_seed tech_company 82 理想L9 +li l9 ai_tech_seed tech_company 82 Li L9 +Li MEGA ai_tech_seed tech_company 82 理想MEGA +li ning ai_tech_seed consumer_brand 82 Li-Ning +Li-Ning ai_tech_seed consumer_brand 82 李宁 +light rag ai_tech_seed ai_term 82 LightRAG +Light RAG ai_tech_seed ai_term 82 LightRAG +LightRAG ai_tech_seed ai_term 82 LightRAG +lindy ai_tech_seed ai_brand 82 Lindy AI +Lindy ai_tech_seed ai_brand 82 Lindy AI +Lindy AI ai_tech_seed ai_brand 82 Lindy AI ling yi wan wu ai_tech_seed ai_brand 82 零一万物 +Liu Cixin ai_tech_seed celebrity 82 刘慈欣 +liu cixin ai_tech_seed celebrity 82 Liu Cixin Live Activities ai_tech_seed dev_tool 82 Live Activities live activities ai_tech_seed dev_tool 82 Live Activities llama index ai_tech_seed ai_platform 82 LlamaIndex @@ -799,32 +1385,74 @@ LlamaIndex ai_tech_seed ai_platform 82 LlamaIndex LM Studio ai_tech_seed ai_platform 82 LM Studio lm studio ai_tech_seed ai_platform 82 LM Studio LMStudio ai_tech_seed ai_platform 82 LM Studio +long context ai_tech_seed ai_term 82 长上下文 +Lu Han ai_tech_seed celebrity 82 鹿晗 +lu han ai_tech_seed celebrity 82 Lu Han +MAEXTRO ai_tech_seed tech_company 82 尊界 +maextro ai_tech_seed tech_company 82 MAEXTRO +Mao Buyi ai_tech_seed celebrity 82 毛不易 +Masayoshi Son ai_tech_seed tech_leader 82 孙正义 +masayoshi son ai_tech_seed tech_leader 82 Masayoshi Son +McDonald's ai_tech_seed consumer_brand 82 McDonald's +mcdonalds ai_tech_seed consumer_brand 82 McDonald's MCP Inspector ai_tech_seed dev_tool 82 MCP Inspector mcp inspector ai_tech_seed dev_tool 82 MCP Inspector MCP 调试器 ai_tech_seed dev_tool 82 MCP Inspector +MediaTek ai_tech_seed tech_company 82 MediaTek +mediatek ai_tech_seed tech_company 82 MediaTek +MEGA ai_tech_seed tech_company 82 理想MEGA +Meng Ziyi ai_tech_seed celebrity 82 孟子义 +meng ziyi ai_tech_seed celebrity 82 Meng Ziyi +Micron ai_tech_seed tech_company 82 Micron +micron ai_tech_seed tech_company 82 Micron Microsoft AutoGen ai_tech_seed ai_platform 82 AutoGen +Mistral Codestral ai_tech_seed ai_model 82 Mistral Codestral +mistral devstral ai_tech_seed ai_model 82 Devstral +mistral pixtral ai_tech_seed ai_model 82 Pixtral +Momenta ai_tech_seed tech_company 82 Momenta +momenta ai_tech_seed tech_company 82 Momenta Mongo DB ai_tech_seed tech_company 82 MongoDB MongoDB ai_tech_seed tech_company 82 MongoDB mongodb ai_tech_seed tech_company 82 MongoDB +Mythos ai_tech_seed ai_model 82 Claude Mythos +Na Ying ai_tech_seed celebrity 82 那英 +Neil Shen ai_tech_seed tech_leader 82 沈南鹏 +neil shen ai_tech_seed tech_leader 82 Neil Shen +new jeans ai_tech_seed celebrity 82 NewJeans +New Jeans ai_tech_seed celebrity 82 NewJeans new quality productive forces ai_tech_seed tech_term 82 新质生产力 +NewJeans ai_tech_seed celebrity 82 NewJeans +nezha ai_tech_seed tech_term 82 Nezha +Nezha 2 ai_tech_seed tech_term 82 哪吒2 +NIM inference ai_tech_seed ai_platform 82 NVIDIA NIM Nintendo ai_tech_seed tech_company 82 Nintendo nintendo ai_tech_seed tech_company 82 Nintendo node js ai_tech_seed dev_tool 82 Node.js Node.js ai_tech_seed dev_tool 82 Node.js nodejs ai_tech_seed dev_tool 82 Node.js NodeJS ai_tech_seed dev_tool 82 Node.js +Nongfu Spring ai_tech_seed consumer_brand 82 Nongfu Spring +nongfu spring ai_tech_seed consumer_brand 82 Nongfu Spring Notion ai_tech_seed tech_company 82 Notion notion ai_tech_seed tech_company 82 Notion +Nova model ai_tech_seed ai_model 82 Amazon Nova +Novak Djokovic ai_tech_seed athlete 82 德约科维奇 +novak djokovic ai_tech_seed athlete 82 Novak Djokovic NPU ai_tech_seed tech_term 82 NPU npu ai_tech_seed tech_term 82 NPU +NVIDIA NIM ai_tech_seed ai_platform 82 NVIDIA NIM +nvidia nim ai_tech_seed ai_platform 82 NVIDIA NIM Ollama ai_tech_seed ai_platform 82 Ollama ollama ai_tech_seed ai_platform 82 Ollama +open harmony ai_tech_seed tech_company 82 OpenHarmony open router ai_tech_seed ai_platform 82 OpenRouter Open Router ai_tech_seed ai_platform 82 OpenRouter open web ui ai_tech_seed ai_platform 82 Open WebUI Open WebUI ai_tech_seed ai_platform 82 Open WebUI open weight ai_tech_seed ai_term 82 open weight open weights ai_tech_seed ai_term 82 open weight +openai whisper ai_tech_seed ai_model 82 Whisper +OpenHarmony ai_tech_seed tech_company 82 OpenHarmony OpenRouter ai_tech_seed ai_platform 82 OpenRouter OpenWebUI ai_tech_seed ai_platform 82 Open WebUI Optimus ai_tech_seed tech_term 82 人形机器人 @@ -835,24 +1463,43 @@ Palantir ai_tech_seed tech_company 82 Palantir palantir ai_tech_seed tech_company 82 Palantir PayPal ai_tech_seed tech_company 82 PayPal paypal ai_tech_seed tech_company 82 PayPal +perplexity personal computer ai_tech_seed ai_brand 82 Personal Computer +Pixtral ai_tech_seed ai_model 82 Pixtral +pixtral ai_tech_seed ai_model 82 Pixtral planet scale ai_tech_seed tech_company 82 PlanetScale PlanetScale ai_tech_seed tech_company 82 PlanetScale PlanetScale MySQL ai_tech_seed tech_company 82 PlanetScale +PlayStation ai_tech_seed game_ip 82 PlayStation +playstation ai_tech_seed game_ip 82 PlayStation +pony ai ai_tech_seed tech_company 82 Pony.ai +Pony.ai ai_tech_seed tech_company 82 小马智行 +Pop Mart ai_tech_seed consumer_brand 82 泡泡玛特 +pop mart ai_tech_seed consumer_brand 82 Pop Mart pre-training ai_tech_seed ai_term 82 pretraining pretraining ai_tech_seed ai_term 82 pretraining +PS5 ai_tech_seed game_ip 82 PlayStation q developer ai_tech_seed dev_tool 82 Q Developer +rag flow ai_tech_seed ai_platform 82 RAGFlow +RAGFlow ai_tech_seed ai_platform 82 RAGFlow React Server Components ai_tech_seed dev_tool 82 React Server Components react server components ai_tech_seed dev_tool 82 React Server Components red note ai_tech_seed tech_company 82 RedNote Redis ai_tech_seed tech_company 82 Redis redis ai_tech_seed tech_company 82 Redis +Ren Jialun ai_tech_seed celebrity 82 任嘉伦 +ren jialun ai_tech_seed celebrity 82 Ren Jialun rerank ai_tech_seed ai_term 82 reranker reranker ai_tech_seed ai_term 82 reranker +Rihanna ai_tech_seed celebrity 82 Rihanna +rihanna ai_tech_seed celebrity 82 Rihanna RSC ai_tech_seed dev_tool 82 React Server Components Rust ai_tech_seed dev_tool 82 Rust rust ai_tech_seed dev_tool 82 Rust SaaS ai_tech_seed tech_term 82 SaaS saas ai_tech_seed tech_term 82 SaaS +Sakana ai_tech_seed ai_brand 82 Sakana AI +Sakana AI ai_tech_seed ai_brand 82 Sakana AI +sakana ai ai_tech_seed ai_brand 82 Sakana AI Satya Nadella ai_tech_seed tech_leader 82 Satya Nadella satya nadella ai_tech_seed tech_leader 82 Satya Nadella SDK ai_tech_seed tech_term 82 SDK @@ -866,12 +1513,23 @@ sf symbols ai_tech_seed dev_tool 82 SF Symbols SFSymbols ai_tech_seed dev_tool 82 SF Symbols Shopify ai_tech_seed tech_company 82 Shopify shopify ai_tech_seed tech_company 82 Shopify +Siri ai_tech_seed ai_brand 82 Siri +Siri AI ai_tech_seed ai_brand 82 Siri +SK Hynix ai_tech_seed tech_company 82 SK Hynix +sk hynix ai_tech_seed tech_company 82 SK Hynix +Sourcegraph Cody ai_tech_seed dev_tool 82 Sourcegraph Cody +sourcegraph cody ai_tech_seed dev_tool 82 Sourcegraph Cody SPM ai_tech_seed dev_tool 82 Swift Package Manager Spotify ai_tech_seed tech_company 82 Spotify spotify ai_tech_seed tech_company 82 Spotify +Starbucks ai_tech_seed consumer_brand 82 Starbucks +starbucks ai_tech_seed consumer_brand 82 Starbucks +Stelato ai_tech_seed tech_company 82 享界 +stelato ai_tech_seed tech_company 82 Stelato step fun ai_tech_seed ai_brand 82 StepFun StepFun ai_tech_seed ai_brand 82 StepFun streaming ai_tech_seed ai_term 82 流式 +Sun Li ai_tech_seed celebrity 82 孙俪 Sundar Pichai ai_tech_seed tech_leader 82 Sundar Pichai sundar pichai ai_tech_seed tech_leader 82 Sundar Pichai Swift Package Manager ai_tech_seed dev_tool 82 Swift Package Manager @@ -881,88 +1539,285 @@ Swift UI ai_tech_seed dev_tool 82 SwiftUI SwiftUI ai_tech_seed dev_tool 82 SwiftUI text-to-image ai_tech_seed tech_term 82 文生图 text-to-video ai_tech_seed tech_term 82 文生视频 +tf boys ai_tech_seed celebrity 82 TFBOYS +TF Boys ai_tech_seed celebrity 82 TFBOYS +TFBOYS ai_tech_seed celebrity 82 TFBOYS +Together ai_tech_seed ai_platform 82 Together AI +Together AI ai_tech_seed ai_platform 82 Together AI +together ai ai_tech_seed ai_platform 82 Together AI TRAE ai_tech_seed dev_tool 82 TRAE +Udio ai_tech_seed ai_brand 82 Udio +udio ai ai_tech_seed ai_brand 82 Udio +Udio AI ai_tech_seed ai_brand 82 Udio vector database ai_tech_seed ai_term 82 vector database +Veo ai_tech_seed ai_model 82 Veo +Veo AI ai_tech_seed ai_model 82 Veo Vercel ai_tech_seed tech_company 82 Vercel vercel ai_tech_seed tech_company 82 Vercel +video foundation model ai_tech_seed ai_term 82 视频大模型 vision os ai_tech_seed dev_tool 82 visionOS Vision Pro ai_tech_seed dev_tool 82 visionOS visionOS ai_tech_seed dev_tool 82 visionOS +Voyah ai_tech_seed tech_company 82 岚图 +voyah ai_tech_seed tech_company 82 Voyah Vue ai_tech_seed dev_tool 82 Vue vue ai_tech_seed dev_tool 82 Vue Vue.js ai_tech_seed dev_tool 82 Vue Vue3 ai_tech_seed dev_tool 82 Vue +wan xiang ai_tech_seed ai_brand 82 Wanxiang +Wang Leehom ai_tech_seed celebrity 82 王力宏 +Wang Xiaochuan ai_tech_seed tech_leader 82 王小川 +wang xiaochuan ai_tech_seed tech_leader 82 Wang Xiaochuan +Warren Buffett ai_tech_seed tech_leader 82 巴菲特 +warren buffett ai_tech_seed tech_leader 82 Warren Buffett Weibo ai_tech_seed tech_company 82 Weibo weibo ai_tech_seed tech_company 82 Weibo +WeRide ai_tech_seed tech_company 82 文远知行 +weride ai_tech_seed tech_company 82 WeRide +Whisper ai_tech_seed ai_model 82 Whisper +Whisper ASR ai_tech_seed ai_model 82 Whisper widget kit ai_tech_seed dev_tool 82 WidgetKit WidgetKit ai_tech_seed dev_tool 82 WidgetKit Windsurf ai_tech_seed dev_tool 82 Windsurf windsurf ai_tech_seed dev_tool 82 Windsurf +Windsurf Cascade ai_tech_seed dev_tool 82 Windsurf Cascade +windsurf cascade ai_tech_seed dev_tool 82 Windsurf Cascade workflow orchestration ai_tech_seed ai_term 82 工作流编排 +Wu Lei ai_tech_seed celebrity 82 吴磊 +wu lei ai_tech_seed celebrity 82 Wu Lei +Wuthering Waves ai_tech_seed game_ip 82 鸣潮 +wuthering waves ai_tech_seed game_ip 82 Wuthering Waves xcode gen ai_tech_seed dev_tool 82 XcodeGen XcodeGen ai_tech_seed dev_tool 82 XcodeGen Yi ai_tech_seed ai_brand 82 零一万物 +ying shi ju feng tim ai_tech_seed tech_leader 82 影视飓风Tim +Yu Donglai ai_tech_seed tech_leader 82 于东来 +yu donglai ai_tech_seed tech_leader 82 Yu Donglai +zero claw ai_tech_seed ai_brand 82 ZeroClaw +Zero Claw ai_tech_seed ai_brand 82 ZeroClaw +ZeroClaw ai_tech_seed ai_brand 82 ZeroClaw +Zhang Yi actor ai_tech_seed celebrity 82 张译 +Zhang Ziyi ai_tech_seed celebrity 82 章子怡 +zhang ziyi ai_tech_seed celebrity 82 Zhang Ziyi +Zhou Hongyi ai_tech_seed tech_leader 82 周鸿祎 +zhou hongyi ai_tech_seed tech_leader 82 Zhou Hongyi +Zhou Xun ai_tech_seed celebrity 82 周迅 +zi yu ai_tech_seed celebrity 82 Ziyu +Ziyu ai_tech_seed celebrity 82 梓渝 上下文压缩 shang xia wen ya suo ai_tech_seed ai_term 82 上下文压缩 +于东来 yu dong lai ai_tech_seed tech_leader 82 于东来 +享界 xiang jie ai_tech_seed tech_company 82 享界 +以太坊 yi tai fang ai_tech_seed fintech 82 以太坊 +任嘉伦 ren jia lun ai_tech_seed celebrity 82 任嘉伦 任天堂 ai_tech_seed tech_company 82 Nintendo +伯克希尔 bo ke xi er ai_tech_seed fintech 82 伯克希尔 +何同学 he tong xue ai_tech_seed celebrity 82 何同学 +何同学UP主 he tong xue ai_tech_seed celebrity 82 何同学 余承东 yu cheng dong ai_tech_seed tech_leader 82 余承东 元宝 yuan bao ai_tech_seed ai_brand 82 元宝 全自动驾驶 ai_tech_seed tech_term 82 FSD +兰博基尼 lan bo ji ni ai_tech_seed tech_company 82 兰博基尼 具身智能 ju shen zhi neng ai_tech_seed tech_term 82 具身智能 具身智能体 ju shen zhi neng ti ai_tech_seed ai_term 82 具身智能体 +养龙虾 yang long xia ai_tech_seed tech_term 82 养龙虾 +农夫山泉 ai_tech_seed consumer_brand 82 Nongfu Spring +刘慈欣 liu ci xin ai_tech_seed celebrity 82 刘慈欣 区块链 qu kuai lian ai_tech_seed tech_term 82 区块链 +卡地亚 ai_tech_seed consumer_brand 82 Cartier 吉利 ai_tech_seed tech_company 82 Geely 向量数据库 ai_tech_seed ai_term 82 vector database +吴恩达 ai_tech_seed tech_leader 82 Andrew Ng +吴磊 wu lei ai_tech_seed celebrity 82 吴磊 +周迅 zhou xun ai_tech_seed celebrity 82 周迅 +周鸿祎 zhou hong yi ai_tech_seed tech_leader 82 周鸿祎 +哈兰德 ha lan de ai_tech_seed athlete 82 哈兰德 商汤 ai_tech_seed tech_company 82 SenseTime 图生视频 tu sheng shi pin ai_tech_seed tech_term 82 图生视频 地平线 ai_tech_seed tech_company 82 Horizon Robotics +埃安 ai_tech_seed tech_company 82 Aion +奈飞 ai_tech_seed consumer_brand 82 Netflix +始祖鸟 shi zu niao ai_tech_seed consumer_brand 82 始祖鸟 字节 Trae ai_tech_seed dev_tool 82 TRAE +孙俪 sun li ai_tech_seed celebrity 82 孙俪 +孙正义 sun zheng yi ai_tech_seed tech_leader 82 孙正义 +孟子义 meng zi yi ai_tech_seed celebrity 82 孟子义 +安踏 an ta ai_tech_seed consumer_brand 82 安踏 +富士康 fu shi kang ai_tech_seed tech_company 82 富士康 +尊界 zun jie ai_tech_seed tech_company 82 尊界 +小李子 ai_tech_seed celebrity 82 Leonardo DiCaprio +小马智行 xiao ma zhi xing ai_tech_seed tech_company 82 小马智行 +岚图 lan tu ai_tech_seed tech_company 82 岚图 +川普 ai_tech_seed tech_leader 82 Donald Trump 工作流编排 gong zuo liu bian pai ai_tech_seed ai_term 82 工作流编排 +巩俐 gong li ai_tech_seed celebrity 82 巩俐 +巴菲特 ba fei te ai_tech_seed tech_leader 82 巴菲特 +巴黎世家 ai_tech_seed consumer_brand 82 Balenciaga +广汽埃安 guang qi ai an ai_tech_seed tech_company 82 广汽埃安 开放权重 ai_tech_seed ai_term 82 open weight +开源鸿蒙 ai_tech_seed tech_company 82 OpenHarmony +张学友 zhang xue you ai_tech_seed celebrity 82 张学友 +张译 zhang yi yan ai_tech_seed celebrity 82 张译 +强脑科技 qiang nao ke ji ai_tech_seed tech_company 82 强脑科技 +影视飓风 ying shi ju feng ai_tech_seed tech_leader 82 影视飓风 +影视飓风Tim ying shi ju feng ai_tech_seed tech_leader 82 影视飓风 微博 ai_tech_seed tech_company 82 Weibo +德约 ai_tech_seed athlete 82 Novak Djokovic +德约科维奇 de yue ke wei qi ai_tech_seed athlete 82 德约科维奇 +数字人 shu zi ren ai_tech_seed ai_term 82 数字人 文生图 wen sheng tu ai_tech_seed tech_term 82 文生图 文生视频 wen sheng shi pin ai_tech_seed tech_term 82 文生视频 +文远知行 wen yuan zhi xing ai_tech_seed tech_company 82 文远知行 新质生产力 xin zhi sheng chan li ai_tech_seed tech_term 82 新质生产力 +方程豹 fang cheng bao ai_tech_seed tech_company 82 方程豹 +星巴克 ai_tech_seed consumer_brand 82 Starbucks +智己 zhi ji ai_tech_seed tech_company 82 智己 +暴雪 bao xue ai_tech_seed game_ip 82 暴雪 +李宁 li ning ai_tech_seed consumer_brand 82 李宁 +李飞飞 li fei fei ai_tech_seed tech_leader 82 李飞飞 +梓渝 zi yu ai_tech_seed celebrity 82 梓渝 +段永平 duan yong ping ai_tech_seed tech_leader 82 段永平 +毛不易 mao bu yi ai_tech_seed celebrity 82 毛不易 +沃伦巴菲特 ai_tech_seed tech_leader 82 Warren Buffett +沈南鹏 shen nan peng ai_tech_seed tech_leader 82 沈南鹏 +法拉利 fa la li ai_tech_seed tech_company 82 法拉利 +泡泡玛特 pao pao ma te ai_tech_seed consumer_brand 82 泡泡玛特 流式 liu shi ai_tech_seed ai_term 82 流式 +海力士 ai_tech_seed tech_company 82 SK Hynix +海底捞 hai di lao ai_tech_seed consumer_brand 82 海底捞 深度研究 ai_tech_seed ai_term 82 deep research 混合搜索 ai_tech_seed ai_term 82 hybrid search 灵动岛实时活动 ai_tech_seed dev_tool 82 Live Activities +特朗普 te lang pu ai_tech_seed tech_leader 82 特朗普 +王力宏 wang li hong ai_tech_seed celebrity 82 王力宏 +王小川 wang xiao chuan ai_tech_seed tech_leader 82 王小川 +理想L9 li xiang L9 ai_tech_seed tech_company 82 理想L9 +理想MEGA li xiang MEGA ai_tech_seed tech_company 82 理想MEGA 百川 ai_tech_seed ai_brand 82 百川 皮查伊 ai_tech_seed tech_leader 82 Sundar Pichai 知识蒸馏 ai_tech_seed ai_term 82 distillation +碧昂丝 ai_tech_seed celebrity 82 Beyoncé +科比 ke bi ai_tech_seed athlete 82 科比 +章子怡 zhang zi yi ai_tech_seed celebrity 82 章子怡 端到端 duan dao duan ai_tech_seed tech_term 82 端到端 纳德拉 ai_tech_seed tech_leader 82 Satya Nadella +美光 ai_tech_seed tech_company 82 Micron +美联储 mei lian chu ai_tech_seed fintech 82 美联储 +老头环 ai_tech_seed game_ip 82 Elden Ring +联发科 ai_tech_seed tech_company 82 MediaTek +胖东来 ai_tech_seed tech_leader 82 Yu Donglai +腾势 teng shi ai_tech_seed tech_company 82 腾势 +艾尔登法环 ai er deng fa huan ai_tech_seed game_ip 82 艾尔登法环 蒸馏 ai_tech_seed ai_term 82 distillation +蔡依林 cai yi lin ai_tech_seed celebrity 82 蔡依林 +蔡徐坤 cai xu kun ai_tech_seed celebrity 82 蔡徐坤 +蕾哈娜 ai_tech_seed celebrity 82 Rihanna +视频大模型 shi pin da mo xing ai_tech_seed ai_term 82 视频大模型 贝索斯 ai_tech_seed tech_leader 82 Jeff Bezos +迪奥 ai_tech_seed consumer_brand 82 Dior +邓紫棋 deng zi qi ai_tech_seed celebrity 82 邓紫棋 +那英 na ying ai_tech_seed celebrity 82 那英 重排序模型 ai_tech_seed ai_term 82 reranker +长上下文 chang shang xia wen ai_tech_seed ai_term 82 长上下文 阶跃星辰 ai_tech_seed ai_brand 82 StepFun +阿维塔 a wei ta ai_tech_seed tech_company 82 阿维塔 +阿迪达斯 ai_tech_seed consumer_brand 82 Adidas 零一万物 ai_tech_seed ai_brand 82 零一万物 预训练 ai_tech_seed ai_term 82 pretraining +高盛 gao sheng ai_tech_seed fintech 82 高盛 +魔门塔 ai_tech_seed tech_company 82 Momenta +鸣潮 ming chao ai_tech_seed game_ip 82 鸣潮 +鹿晗 lu han ai_tech_seed celebrity 82 鹿晗 +麦当劳 ai_tech_seed consumer_brand 82 McDonald's +黄晓明 huang xiao ming ai_tech_seed celebrity 82 黄晓明 01 ai ai_tech_seed ai_brand 80 01.AI +6G ai_tech_seed tech_term 80 6G +a2a ai_tech_seed ai_term 80 Agent2Agent +Activision ai_tech_seed game_ip 80 动视 +activision ai_tech_seed game_ip 80 Activision +aespa ai_tech_seed celebrity 80 aespa +aespa组合 ai_tech_seed celebrity 80 aespa agent harness ai_tech_seed ai_term 80 LLM harness +agent industrialization ai_tech_seed tech_term 80 智能体产业化 agentic harness ai_tech_seed ai_term 80 agent harness +AI native app ai_tech_seed ai_term 80 AI原生应用 +AI原生应用 AI yuan sheng ying yong ai_tech_seed ai_term 80 AI原生应用 +Anduril ai_tech_seed tech_company 80 Anduril +anduril industries ai_tech_seed tech_company 80 Anduril +ARCFOX ai_tech_seed tech_company 80 极狐 +arcfox ai_tech_seed tech_company 80 ARCFOX +Armani ai_tech_seed consumer_brand 80 Armani +armani ai_tech_seed consumer_brand 80 Armani Astro ai_tech_seed dev_tool 80 Astro astro js ai_tech_seed dev_tool 80 Astro Atlassian ai_tech_seed tech_company 80 Atlassian atlassian ai_tech_seed tech_company 80 Atlassian +Augment ai_tech_seed dev_tool 80 Augment +augment code ai_tech_seed dev_tool 80 Augment +Augment Code ai_tech_seed dev_tool 80 Augment authentically human ai_tech_seed tech_term 80 活人感 +blackpink jennie ai_tech_seed celebrity 80 Jennie +Blackstone ai_tech_seed fintech 80 黑石 +blackstone ai_tech_seed fintech 80 Blackstone +Brad Pitt ai_tech_seed celebrity 80 Brad Pitt +brad pitt ai_tech_seed celebrity 80 Brad Pitt +Bridgewater ai_tech_seed fintech 80 桥水 +bridgewater ai_tech_seed fintech 80 Bridgewater Broadcom ai_tech_seed tech_company 80 Broadcom broadcom ai_tech_seed tech_company 80 Broadcom +Burberry ai_tech_seed consumer_brand 80 Burberry +burberry ai_tech_seed consumer_brand 80 Burberry +B站陈睿 chen rui ai_tech_seed tech_leader 80 陈睿 +Cambricon ai_tech_seed tech_company 80 寒武纪 +cambricon ai_tech_seed tech_company 80 Cambricon Canva ai_tech_seed tech_company 80 Canva canva ai_tech_seed tech_company 80 Canva +Cao Dewang ai_tech_seed tech_leader 80 曹德旺 +cao dewang ai_tech_seed tech_leader 80 Cao Dewang +Charles Zhang ai_tech_seed tech_leader 80 张朝阳 +charles zhang ai_tech_seed tech_leader 80 Charles Zhang +Charlie Munger ai_tech_seed tech_leader 80 芒格 +charlie munger ai_tech_seed tech_leader 80 Charlie Munger +Chen Kun ai_tech_seed celebrity 80 陈坤 +Chen Rui ai_tech_seed tech_leader 80 陈睿 +chen rui ai_tech_seed tech_leader 80 Chen Rui +claude skills ai_tech_seed ai_term 80 Claude Skills Clerk ai_tech_seed dev_tool 80 Clerk clerk auth ai_tech_seed dev_tool 80 Clerk click house ai_tech_seed tech_term 80 ClickHouse ClickHouse ai_tech_seed tech_term 80 ClickHouse +coca cola ai_tech_seed consumer_brand 80 Coca-Cola +Coca-Cola ai_tech_seed consumer_brand 80 Coca-Cola Codeium ai_tech_seed ai_brand 80 Codeium codeium ai_tech_seed ai_brand 80 Codeium Cohere ai_tech_seed ai_brand 80 Cohere cohere ai_tech_seed ai_brand 80 Cohere +cohere command ai_tech_seed ai_model 80 Command R +Command R ai_tech_seed ai_model 80 Command R +command r ai_tech_seed ai_model 80 Command R computer use ai_tech_seed ai_term 80 computer use computer-use ai_tech_seed ai_term 80 computer use Confluence ai_tech_seed tech_company 80 Atlassian Convex ai_tech_seed tech_company 80 Convex Convex database ai_tech_seed tech_company 80 Convex convex dev ai_tech_seed tech_company 80 Convex +Copilot Studio ai_tech_seed ai_platform 80 Copilot Studio +copilot studio ai_tech_seed ai_platform 80 Copilot Studio +Costco ai_tech_seed consumer_brand 80 Costco +costco ai_tech_seed consumer_brand 80 Costco +counter strike ai_tech_seed game_ip 80 Counter-Strike +Counter-Strike ai_tech_seed game_ip 80 Counter-Strike +Dario Amodei ai_tech_seed tech_leader 80 Dario Amodei +dario amodei ai_tech_seed tech_leader 80 Dario Amodei +Decagon ai_tech_seed ai_brand 80 Decagon +decagon ai ai_tech_seed ai_brand 80 Decagon +Decagon AI ai_tech_seed ai_brand 80 Decagon +Deepal ai_tech_seed tech_company 80 深蓝 +deepal ai_tech_seed tech_company 80 Deepal +DeepRobotics ai_tech_seed tech_company 80 云深处科技 +DeepSeek moment ai_tech_seed tech_term 80 DeepSeek时刻 +DeepSeek时刻 DeepSeek shi ke ai_tech_seed tech_term 80 DeepSeek时刻 +Demis Hassabis ai_tech_seed tech_leader 80 Demis Hassabis +demis hassabis ai_tech_seed tech_leader 80 Demis Hassabis Deno ai_tech_seed dev_tool 80 Deno deno ai_tech_seed dev_tool 80 Deno Deno Deploy ai_tech_seed dev_tool 80 Deno @@ -971,33 +1826,135 @@ discord ai_tech_seed tech_company 80 Discord duck db ai_tech_seed tech_term 80 DuckDB Duck DB ai_tech_seed tech_term 80 DuckDB DuckDB ai_tech_seed tech_term 80 DuckDB +East Buy ai_tech_seed tech_company 80 东方甄选 eleven labs ai_tech_seed ai_brand 80 ElevenLabs Eleven Labs ai_tech_seed ai_brand 80 ElevenLabs ElevenLabs ai_tech_seed ai_brand 80 ElevenLabs emotional value ai_tech_seed tech_term 80 情绪价值 +Epic ai_tech_seed game_ip 80 Epic Games +Epic Games ai_tech_seed game_ip 80 Epic Games +epic games ai_tech_seed game_ip 80 Epic Games Firebase ai_tech_seed tech_company 80 Firebase firebase ai_tech_seed tech_company 80 Firebase +Gemini Live ai_tech_seed ai_brand 80 Gemini Live +gemini live ai_tech_seed ai_brand 80 Gemini Live +Geoffrey Hinton ai_tech_seed tech_leader 80 Geoffrey Hinton +geoffrey hinton ai_tech_seed tech_leader 80 Geoffrey Hinton GitLab ai_tech_seed tech_company 80 GitLab gitlab ai_tech_seed tech_company 80 GitLab +Granite ai_tech_seed ai_model 80 Granite +Granite model ai_tech_seed ai_model 80 Granite +Hailuo Video ai_tech_seed ai_brand 80 海螺视频 +Hema ai_tech_seed consumer_brand 80 盒马 +hema ai_tech_seed consumer_brand 80 Hema +Hesai ai_tech_seed tech_company 80 禾赛 +hesai ai_tech_seed tech_company 80 Hesai +Hillhouse ai_tech_seed fintech 80 高瓴 +hillhouse ai_tech_seed fintech 80 Hillhouse +Honkai ai_tech_seed game_ip 80 崩坏 +honkai ai_tech_seed game_ip 80 Honkai Horizon ai_tech_seed tech_company 80 地平线 +Hua Chenyu ai_tech_seed celebrity 80 华晨宇 +Huang Zitao ai_tech_seed celebrity 80 黄子韬 +huang zitao ai_tech_seed celebrity 80 Huang Zitao +ibm granite ai_tech_seed ai_model 80 Granite +Ideogram ai_tech_seed ai_brand 80 Ideogram +ideogram ai ai_tech_seed ai_brand 80 Ideogram +Ideogram AI ai_tech_seed ai_brand 80 Ideogram +IKEA ai_tech_seed consumer_brand 80 宜家 +ikea ai_tech_seed consumer_brand 80 IKEA +Jennie ai_tech_seed celebrity 80 Jennie +Jerome Powell ai_tech_seed tech_leader 80 鲍威尔 +jerome powell ai_tech_seed tech_leader 80 Jerome Powell Jira ai_tech_seed tech_company 80 Atlassian +Joker Xue ai_tech_seed celebrity 80 薛之谦 +joker xue ai_tech_seed celebrity 80 Joker Xue +jp morgan ai_tech_seed fintech 80 JPMorgan +JPMorgan ai_tech_seed fintech 80 摩根大通 +Kanye West ai_tech_seed celebrity 80 Kanye West +kanye west ai_tech_seed celebrity 80 Kanye West +Kendrick Lamar ai_tech_seed celebrity 80 Kendrick Lamar +kendrick lamar ai_tech_seed celebrity 80 Kendrick Lamar +Kunpeng ai_tech_seed tech_company 80 鲲鹏 +kunpeng ai_tech_seed tech_company 80 Kunpeng +KV cache ai_tech_seed ai_term 80 KV cache +kv cache ai_tech_seed ai_term 80 KV cache +KV缓存 ai_tech_seed ai_term 80 KV cache lang chain ai_tech_seed ai_platform 80 LangChain LangChain ai_tech_seed ai_platform 80 LangChain Langchain ai_tech_seed ai_platform 80 LangChain +Lay Zhang ai_tech_seed celebrity 80 张艺兴 +lay zhang ai_tech_seed celebrity 80 Lay Zhang +Lei Jiayin ai_tech_seed celebrity 80 雷佳音 +Leonardo ai_tech_seed ai_brand 80 Leonardo AI +Leonardo AI ai_tech_seed ai_brand 80 Leonardo AI +leonardo ai ai_tech_seed ai_brand 80 Leonardo AI +Li Na tennis ai_tech_seed athlete 80 李娜 libSQL ai_tech_seed tech_company 80 Turso +Lin Shidong ai_tech_seed athlete 80 林诗栋 +Liu Xiang ai_tech_seed athlete 80 刘翔 +livestream commerce ai_tech_seed tech_term 80 直播带货 LLM harness ai_tech_seed ai_term 80 LLM harness llm harness ai_tech_seed ai_term 80 LLM harness +Lotus ai_tech_seed tech_company 80 路特斯 +lotus ai_tech_seed tech_company 80 Lotus low altitude economy ai_tech_seed tech_term 80 低空经济 +Luckin Coffee ai_tech_seed consumer_brand 80 瑞幸咖啡 +luckin coffee ai_tech_seed consumer_brand 80 Luckin Coffee +Ma Li ai_tech_seed celebrity 80 马丽 +Manycore ai_tech_seed tech_company 80 群核科技 +Marvel ai_tech_seed tech_term 80 漫威 +marvel ai_tech_seed tech_term 80 Marvel Megvii ai_tech_seed tech_company 80 Megvii megvii ai_tech_seed tech_company 80 Megvii +mem zero ai_tech_seed ai_platform 80 Mem0 +Mem0 ai_tech_seed ai_platform 80 Mem0 +Mem0 AI ai_tech_seed ai_platform 80 Mem0 +merch economy ai_tech_seed tech_term 80 谷子 Metal ai_tech_seed dev_tool 80 Metal metal ai_tech_seed dev_tool 80 Metal Metal Performance Shaders ai_tech_seed dev_tool 80 Metal Metaso ai_tech_seed ai_brand 80 秘塔AI +Microsoft Copilot Studio ai_tech_seed ai_platform 80 Copilot Studio +million context ai_tech_seed ai_term 80 百万上下文 +Mistral Small ai_tech_seed ai_model 80 Mistral Small +mistral small ai_tech_seed ai_model 80 Mistral Small +Mixue ai_tech_seed consumer_brand 80 蜜雪冰城 +mixue ai_tech_seed consumer_brand 80 Mixue +model distillation ai_tech_seed ai_term 80 模型蒸馏 +MONA ai_tech_seed tech_company 80 小鹏MONA +Moore Threads ai_tech_seed tech_company 80 摩尔线程 +moore threads ai_tech_seed tech_company 80 Moore Threads +Morgan Stanley ai_tech_seed fintech 80 摩根士丹利 +morgan stanley ai_tech_seed fintech 80 Morgan Stanley +multi-agent collaboration ai_tech_seed ai_term 80 多智能体协作 +Nasdaq ai_tech_seed fintech 80 纳斯达克 +nasdaq ai_tech_seed fintech 80 Nasdaq +national subsidy ai_tech_seed tech_term 80 国补 +nemo claw ai_tech_seed ai_brand 80 NemoClaw +Nemo Claw ai_tech_seed ai_brand 80 NemoClaw +NemoClaw ai_tech_seed ai_brand 80 NemoClaw +Neta Auto ai_tech_seed tech_company 80 哪吒汽车 +neta auto ai_tech_seed tech_company 80 Neta Auto +New Balance ai_tech_seed consumer_brand 80 New Balance +new balance ai_tech_seed consumer_brand 80 New Balance +New Oriental ai_tech_seed tech_company 80 New Oriental +new oriental ai_tech_seed tech_company 80 New Oriental on device ai ai_tech_seed ai_term 80 on-device AI on-device AI ai_tech_seed ai_term 80 on-device AI optimus ai_tech_seed tech_term 80 Optimus +Perfect Diary ai_tech_seed consumer_brand 80 完美日记 +perfect diary ai_tech_seed consumer_brand 80 Perfect Diary +pix verse ai_tech_seed ai_brand 80 PixVerse +PixVerse ai_tech_seed ai_brand 80 PixVerse +Pixverse ai_tech_seed ai_brand 80 PixVerse +playstation 5 ai_tech_seed game_ip 80 PS5 +Prada ai_tech_seed consumer_brand 80 Prada +prada ai_tech_seed consumer_brand 80 Prada Quark AI ai_tech_seed ai_brand 80 夸克AI +Rafael Nadal ai_tech_seed athlete 80 纳达尔 +Ray Dalio ai_tech_seed tech_leader 80 达利欧 +ray dalio ai_tech_seed tech_leader 80 Ray Dalio real person vibe ai_tech_seed tech_term 80 活人感 reality kit ai_tech_seed dev_tool 80 RealityKit RealityKit ai_tech_seed dev_tool 80 RealityKit @@ -1005,23 +1962,49 @@ Reddit ai_tech_seed tech_company 80 Reddit reddit ai_tech_seed tech_company 80 Reddit Rivian ai_tech_seed tech_company 80 Rivian rivian ai_tech_seed tech_company 80 Rivian +Robert Downey Jr ai_tech_seed celebrity 80 Robert Downey Jr +robert downey jr ai_tech_seed celebrity 80 Robert Downey Jr +RoboSense ai_tech_seed tech_company 80 速腾聚创 +robosense ai_tech_seed tech_company 80 RoboSense +Roger Federer ai_tech_seed athlete 80 费德勒 +Rolex ai_tech_seed consumer_brand 80 Rolex +rolex ai_tech_seed consumer_brand 80 Rolex Roo Code ai_tech_seed dev_tool 80 Roo Code roo code ai_tech_seed dev_tool 80 Roo Code RooCode ai_tech_seed dev_tool 80 Roo Code Runway ai_tech_seed ai_brand 80 Runway runway ai ai_tech_seed ai_brand 80 Runway Runway ML ai_tech_seed ai_brand 80 Runway +Sam's Club ai_tech_seed consumer_brand 80 山姆会员店 +samba nova ai_tech_seed tech_company 80 SambaNova +Samba Nova ai_tech_seed tech_company 80 SambaNova +SambaNova ai_tech_seed tech_company 80 SambaNova +sams club ai_tech_seed consumer_brand 80 Sam's Club +Semantic Kernel ai_tech_seed ai_platform 80 Semantic Kernel +semantic kernel ai_tech_seed ai_platform 80 Semantic Kernel +Sequoia ai_tech_seed fintech 80 红杉 +sequoia ai_tech_seed fintech 80 Sequoia +Sequoia China ai_tech_seed fintech 80 红杉中国 +sequoia china ai_tech_seed fintech 80 Sequoia China +Shu Qi ai_tech_seed celebrity 80 舒淇 silicon flow ai_tech_seed ai_platform 80 SiliconFlow Silicon Flow ai_tech_seed ai_platform 80 SiliconFlow SiliconFlow ai_tech_seed ai_platform 80 SiliconFlow +six g ai_tech_seed tech_term 80 6G +SK ai_tech_seed ai_platform 80 Semantic Kernel Slack ai_tech_seed tech_company 80 Slack slack ai_tech_seed tech_company 80 Slack SLM ai_tech_seed ai_term 80 SLM slm ai_tech_seed ai_term 80 SLM Snowflake ai_tech_seed tech_company 80 Snowflake snowflake ai_tech_seed tech_company 80 Snowflake +solopreneur ai_tech_seed tech_term 80 超级个体 +spec driven ai_tech_seed ai_term 80 spec driven +spec-driven ai_tech_seed ai_term 80 spec driven +Su Bingtian ai_tech_seed athlete 80 苏炳添 Supabase ai_tech_seed tech_company 80 Supabase supabase ai_tech_seed tech_company 80 Supabase +super individual ai_tech_seed tech_term 80 超级个体 svelte kit ai_tech_seed dev_tool 80 SvelteKit SvelteKit ai_tech_seed dev_tool 80 SvelteKit swe agent ai_tech_seed ai_term 80 SWE-agent @@ -1030,57 +2013,231 @@ swe bench ai_tech_seed ai_term 80 SWE-bench SWE bench ai_tech_seed ai_term 80 SWE-bench SWE-agent ai_tech_seed ai_term 80 SWE-agent SWE-bench ai_tech_seed ai_term 80 SWE-bench +synthetic data ai_tech_seed ai_term 80 合成数据 +tab nine ai_tech_seed dev_tool 80 Tabnine +Tabnine ai_tech_seed dev_tool 80 Tabnine +Tang Wei ai_tech_seed celebrity 80 汤唯 +Teens in Times ai_tech_seed celebrity 80 时代少年团 Terraform ai_tech_seed tech_company 80 Terraform terraform ai_tech_seed tech_company 80 Terraform +Terry Gou ai_tech_seed tech_leader 80 郭台铭 +terry gou ai_tech_seed tech_leader 80 Terry Gou +Three Body Problem ai_tech_seed tech_term 80 三体 +Three-Body ai_tech_seed tech_term 80 三体 +TNT ai_tech_seed celebrity 80 时代少年团 +Tom Hanks ai_tech_seed celebrity 80 Tom Hanks +tom hanks ai_tech_seed celebrity 80 Tom Hanks +Toyota ai_tech_seed tech_company 80 丰田 +toyota ai_tech_seed tech_company 80 Toyota TPU ai_tech_seed tech_term 80 TPU tpu ai_tech_seed tech_term 80 TPU Turso ai_tech_seed tech_company 80 Turso turso ai_tech_seed tech_company 80 Turso +Vidu ai_tech_seed ai_brand 80 Vidu +vidu ai ai_tech_seed ai_brand 80 Vidu +Vidu AI ai_tech_seed ai_brand 80 Vidu vLLM ai_tech_seed ai_platform 80 vLLM vllm ai_tech_seed ai_platform 80 vLLM VLLM ai_tech_seed ai_platform 80 vLLM +Volkswagen ai_tech_seed tech_company 80 大众 +volkswagen ai_tech_seed tech_company 80 Volkswagen +W&B ai_tech_seed dev_tool 80 Weights & Biases +Wang Feng ai_tech_seed celebrity 80 汪峰 +Weights & Biases ai_tech_seed dev_tool 80 Weights & Biases +weights and biases ai_tech_seed dev_tool 80 Weights & Biases +Xbox ai_tech_seed game_ip 80 Xbox +xbox series ai_tech_seed game_ip 80 Xbox +Yann LeCun ai_tech_seed tech_leader 80 Yann LeCun +yann lecun ai_tech_seed tech_leader 80 Yann LeCun +Ye ai_tech_seed celebrity 80 Kanye West +YMTC ai_tech_seed tech_company 80 长江存储 +ymtc ai_tech_seed tech_company 80 YMTC Zed ai_tech_seed dev_tool 80 Zed Zed AI ai_tech_seed dev_tool 80 Zed zed editor ai_tech_seed dev_tool 80 Zed +Zhang Xiaofei ai_tech_seed celebrity 80 张小斐 +Zhong Shanshan ai_tech_seed tech_leader 80 钟睒睒 Zoom ai_tech_seed tech_company 80 Zoom zoom ai_tech_seed tech_company 80 Zoom +三体 san ti ai_tech_seed tech_term 80 三体 +东方甄选 dong fang zhen xuan ai_tech_seed tech_company 80 东方甄选 +丰田 feng tian ai_tech_seed tech_company 80 丰田 +云深处科技 yun shen chu ke ji ai_tech_seed tech_company 80 云深处科技 低空经济 di kong jing ji ai_tech_seed tech_term 80 低空经济 +刘翔 liu xiang ai_tech_seed athlete 80 刘翔 +动视 dong shi ai_tech_seed game_ip 80 动视 +劳力士 ai_tech_seed consumer_brand 80 Rolex +华晨宇 hua chen yu ai_tech_seed celebrity 80 华晨宇 +博柏利 ai_tech_seed consumer_brand 80 Burberry +可口可乐 ai_tech_seed consumer_brand 80 Coca-Cola +合成数据 he cheng shu ju ai_tech_seed ai_term 80 合成数据 +哈萨比斯 ai_tech_seed tech_leader 80 Demis Hassabis +哪吒汽车 na zha qi che ai_tech_seed tech_company 80 哪吒汽车 +国补 guo bu ai_tech_seed tech_term 80 国补 +多智能体协作 duo zhi neng ti xie zuo ai_tech_seed ai_term 80 多智能体协作 +大众 da zhong ai_tech_seed tech_company 80 大众 夸克AI kua ke AI ai_tech_seed ai_brand 80 夸克AI +完美日记 wan mei ri ji ai_tech_seed consumer_brand 80 完美日记 +宜家 yi jia ai_tech_seed consumer_brand 80 宜家 +寒武纪 han wu ji ai_tech_seed tech_company 80 寒武纪 小语言模型 ai_tech_seed ai_term 80 SLM +小鹏MONA xiao peng MONA ai_tech_seed tech_company 80 小鹏MONA +山姆 ai_tech_seed consumer_brand 80 Sam's Club +山姆会员店 shan mu hui yuan dian ai_tech_seed consumer_brand 80 山姆会员店 +崩坏 beng huai ai_tech_seed game_ip 80 崩坏 +开市客 ai_tech_seed consumer_brand 80 Costco +张小斐 zhang xiao fei ai_tech_seed celebrity 80 张小斐 +张朝阳 zhang chao yang ai_tech_seed tech_leader 80 张朝阳 +张艺兴 zhang yi xing ai_tech_seed celebrity 80 张艺兴 情绪价值 qing xu jia zhi ai_tech_seed tech_term 80 情绪价值 +摩尔线程 mo er xian cheng ai_tech_seed tech_company 80 摩尔线程 +摩根士丹利 mo gen shi dan li ai_tech_seed fintech 80 摩根士丹利 +摩根大通 mo gen da tong ai_tech_seed fintech 80 摩根大通 擎天柱 ai_tech_seed tech_term 80 Optimus +新东方 ai_tech_seed tech_company 80 New Oriental +新百伦 ai_tech_seed consumer_brand 80 New Balance +时代少年团 shi dai shao nian tuan ai_tech_seed celebrity 80 时代少年团 旷视 ai_tech_seed tech_company 80 Megvii +普拉达 ai_tech_seed consumer_brand 80 Prada +智能体产业化 zhi neng ti chan ye hua ai_tech_seed tech_term 80 智能体产业化 智能体框架 ai_tech_seed ai_term 80 agent harness +曹德旺 cao de wang ai_tech_seed tech_leader 80 曹德旺 +李娜 li na ai_tech_seed athlete 80 李娜 +杨立昆 ai_tech_seed tech_leader 80 Yann LeCun +杰弗里辛顿 ai_tech_seed tech_leader 80 Geoffrey Hinton +极狐 ji hu ai_tech_seed tech_company 80 极狐 +林诗栋 lin shi dong ai_tech_seed athlete 80 林诗栋 +桥水 qiao shui ai_tech_seed fintech 80 桥水 +桥水基金 ai_tech_seed fintech 80 Bridgewater +模型蒸馏 mo xing zheng liu ai_tech_seed ai_term 80 模型蒸馏 +汤唯 tang wei ai_tech_seed celebrity 80 汤唯 +汪峰 wang feng ai_tech_seed celebrity 80 汪峰 活人感 huo ren gan ai_tech_seed tech_term 80 活人感 +海螺视频 hai luo shi pin ai_tech_seed ai_brand 80 海螺视频 +深蓝 shen lan ai_tech_seed tech_company 80 深蓝 +漫威 man wei ai_tech_seed tech_term 80 漫威 +瑞幸 ai_tech_seed consumer_brand 80 Luckin Coffee +瑞幸咖啡 rui xing ka fei ai_tech_seed consumer_brand 80 瑞幸咖啡 电脑使用 ai_tech_seed ai_term 80 computer use +百万上下文 bai wan shang xia wen ai_tech_seed ai_term 80 百万上下文 +盒马 he ma ai_tech_seed consumer_brand 80 盒马 +盒马鲜生 he ma ai_tech_seed consumer_brand 80 盒马 +直播带货 zhi bo dai huo ai_tech_seed tech_term 80 直播带货 +禾赛 he sai ai_tech_seed tech_company 80 禾赛 秘塔AI mi ta AI ai_tech_seed ai_brand 80 秘塔AI 端侧AI ai_tech_seed ai_term 80 on-device AI +第六代移动通信 ai_tech_seed tech_term 80 6G +红杉 hong shan ai_tech_seed fintech 80 红杉 +红杉中国 hong shan zhong guo ai_tech_seed fintech 80 红杉中国 +红杉资本 ai_tech_seed fintech 80 Sequoia +纳斯达克 na si da ke ai_tech_seed fintech 80 纳斯达克 +纳达尔 na da er ai_tech_seed athlete 80 纳达尔 +群核科技 qun he ke ji ai_tech_seed tech_company 80 群核科技 +老师好我叫何同学 lao shi hao wo jiao he tong xue ai_tech_seed celebrity 80 老师好我叫何同学 +舒淇 shu qi ai_tech_seed celebrity 80 舒淇 +芒格 mang ge ai_tech_seed tech_leader 80 芒格 +苏炳添 su bing tian ai_tech_seed athlete 80 苏炳添 +薛之谦 xue zhi qian ai_tech_seed celebrity 80 薛之谦 +蜜雪冰城 mi xue bing cheng ai_tech_seed consumer_brand 80 蜜雪冰城 +规格驱动 ai_tech_seed ai_term 80 spec driven +谷子 gu zi ai_tech_seed tech_term 80 谷子 +谷子经济 gu zi ai_tech_seed tech_term 80 谷子 +费德勒 fei de le ai_tech_seed athlete 80 费德勒 +超级个体 chao ji ge ti ai_tech_seed tech_term 80 超级个体 +路特斯 lu te si ai_tech_seed tech_company 80 路特斯 +辛顿 ai_tech_seed tech_leader 80 Geoffrey Hinton +达利欧 da li ou ai_tech_seed tech_leader 80 达利欧 +达里奥 ai_tech_seed tech_leader 80 Dario Amodei +速腾聚创 su teng ju chuang ai_tech_seed tech_company 80 速腾聚创 +郭台铭 guo tai ming ai_tech_seed tech_leader 80 郭台铭 +钟睒睒 zhong shan shan ai_tech_seed tech_leader 80 钟睒睒 +钢铁侠 ai_tech_seed celebrity 80 Robert Downey Jr +长江存储 chang jiang cun chu ai_tech_seed tech_company 80 长江存储 +阿玛尼 ai_tech_seed consumer_brand 80 Armani +陈坤 chen kun ai_tech_seed celebrity 80 陈坤 +陈睿 chen rui ai_tech_seed tech_leader 80 陈睿 +雷佳音 lei jia yin ai_tech_seed celebrity 80 雷佳音 +马丽 ma li ai_tech_seed celebrity 80 马丽 +高瓴 gao ling ai_tech_seed fintech 80 高瓴 +高瓴资本 ai_tech_seed fintech 80 Hillhouse +鲍威尔 bao wei er ai_tech_seed tech_leader 80 鲍威尔 +鲲鹏 kun peng ai_tech_seed tech_company 80 鲲鹏 +黄子韬 huang zi tao ai_tech_seed celebrity 80 黄子韬 +黑石 hei shi ai_tech_seed fintech 80 黑石 +黑石集团 ai_tech_seed fintech 80 Blackstone +A2A协议 A2A xie yi ai_tech_seed ai_term 78 A2A协议 +AI app ai_tech_seed ai_term 78 AI应用 +AI companion ai_tech_seed ai_term 78 AI陪伴 +AI应用 AI ying yong ai_tech_seed ai_term 78 AI应用 +AI陪伴 AI pei ban ai_tech_seed ai_term 78 AI陪伴 +Angelina Jolie ai_tech_seed celebrity 78 Angelina Jolie +angelina jolie ai_tech_seed celebrity 78 Angelina Jolie +Anyscale ai_tech_seed tech_company 78 Anyscale +anyscale ai_tech_seed tech_company 78 Anyscale anything llm ai_tech_seed ai_platform 78 AnythingLLM Anything LLM ai_tech_seed ai_platform 78 AnythingLLM AnythingLLM ai_tech_seed ai_platform 78 AnythingLLM auth zero ai_tech_seed dev_tool 78 Auth0 Auth Zero ai_tech_seed dev_tool 78 Auth0 Auth0 ai_tech_seed dev_tool 78 Auth0 +AutoGen Studio ai_tech_seed ai_platform 78 AutoGen Studio +autogen studio ai_tech_seed ai_platform 78 AutoGen Studio benchmark ai_tech_seed ai_term 78 benchmark Biome ai_tech_seed dev_tool 78 Biome biome js ai_tech_seed dev_tool 78 Biome +Biren ai_tech_seed tech_company 78 壁仞 +biren ai_tech_seed tech_company 78 Biren +blackpink jisoo ai_tech_seed celebrity 78 Jisoo +blackpink rose ai_tech_seed celebrity 78 Rosé +Bland ai_tech_seed ai_brand 78 Bland AI +Bland AI ai_tech_seed ai_brand 78 Bland AI +bland ai ai_tech_seed ai_brand 78 Bland AI Block ai_tech_seed fintech 78 Block block ai_tech_seed fintech 78 Block +Bosideng ai_tech_seed consumer_brand 78 波司登 +bosideng ai_tech_seed consumer_brand 78 Bosideng +Bulgari ai_tech_seed consumer_brand 78 Bulgari +bulgari ai_tech_seed consumer_brand 78 Bulgari +Canada Goose ai_tech_seed consumer_brand 78 Canada Goose +canada goose ai_tech_seed consumer_brand 78 Canada Goose +Changan ai_tech_seed tech_company 78 长安 +changan ai_tech_seed tech_company 78 Changan Character AI ai_tech_seed ai_brand 78 Character AI character.ai ai_tech_seed ai_brand 78 Character AI Character.AI ai_tech_seed ai_brand 78 Character AI +Chery ai_tech_seed tech_company 78 奇瑞 +chery ai_tech_seed tech_company 78 Chery +China innovation ai_tech_seed tech_term 78 中国创新 +CICC ai_tech_seed fintech 78 中金 +cicc ai_tech_seed fintech 78 CICC +CITIC ai_tech_seed fintech 78 中信 +citic ai_tech_seed fintech 78 CITIC Clerk Auth ai_tech_seed dev_tool 78 Clerk Auth Cline ai_tech_seed dev_tool 78 Cline cline ai_tech_seed dev_tool 78 Cline Cline AI ai_tech_seed dev_tool 78 Cline +Cloudflare Agents ai_tech_seed ai_platform 78 Cloudflare Agents +cloudflare agents ai_tech_seed ai_platform 78 Cloudflare Agents +Coach ai_tech_seed consumer_brand 78 Coach +coach ai_tech_seed consumer_brand 78 Coach +Cohere Command ai_tech_seed ai_model 78 Cohere Command comfy ui ai_tech_seed ai_platform 78 ComfyUI ComfyUI ai_tech_seed ai_platform 78 ComfyUI +compute democratization ai_tech_seed tech_term 78 算力普惠 Continue ai_tech_seed dev_tool 78 Continue continue dev ai_tech_seed dev_tool 78 Continue Continue.dev ai_tech_seed dev_tool 78 Continue +cost cut efficiency ai_tech_seed tech_term 78 降本增效 +CXMT ai_tech_seed tech_company 78 长鑫 +cxmt ai_tech_seed tech_company 78 CXMT cyber reconciliation ai_tech_seed tech_term 78 赛博对账 +data as factor ai_tech_seed tech_term 78 数据要素 +data flywheel ai_tech_seed ai_term 78 数据飞轮 Datadog ai_tech_seed tech_company 78 Datadog datadog ai_tech_seed tech_company 78 Datadog +deep robotics ai_tech_seed tech_company 78 DeepRobotics +DeepRoute ai_tech_seed tech_company 78 元戎启行 +deeproute ai_tech_seed tech_company 78 DeepRoute digital avatar ai_tech_seed tech_term 78 数字分身 DSPy ai_tech_seed ai_platform 78 DSPy dspy ai_tech_seed ai_platform 78 DSPy @@ -1088,54 +2245,145 @@ DSPy AI ai_tech_seed ai_platform 78 DSPy Elastic ai_tech_seed tech_company 78 Elastic elastic ai_tech_seed tech_company 78 Elastic Elasticsearch ai_tech_seed tech_company 78 Elastic +elder tech ai_tech_seed tech_term 78 银发科技 +estee lauder ai_tech_seed consumer_brand 78 Estée Lauder +Estée Lauder ai_tech_seed consumer_brand 78 Estée Lauder +fast gpt ai_tech_seed ai_platform 78 FastGPT +FastGPT ai_tech_seed ai_platform 78 FastGPT +Florasis ai_tech_seed consumer_brand 78 花西子 +florasis ai_tech_seed consumer_brand 78 Florasis Fly ai_tech_seed tech_company 78 Fly.io fly io ai_tech_seed tech_company 78 Fly.io Fly.io ai_tech_seed tech_company 78 Fly.io +Fu Sheng ai_tech_seed tech_leader 78 傅盛 +fu sheng ai_tech_seed tech_leader 78 Fu Sheng +Galaxy Geely ai_tech_seed tech_company 78 吉利银河 +Gemini Robotics ai_tech_seed ai_brand 78 Gemini Robotics +gemini robotics ai_tech_seed ai_brand 78 Gemini Robotics +George Soros ai_tech_seed tech_leader 78 索罗斯 +george soros ai_tech_seed tech_leader 78 George Soros +GitHub Models ai_tech_seed ai_platform 78 GitHub Models +github models ai_tech_seed ai_platform 78 GitHub Models +GitHub Spark ai_tech_seed dev_tool 78 GitHub Spark +github spark ai_tech_seed dev_tool 78 GitHub Spark go global ai_tech_seed tech_term 78 出海 Grafana ai_tech_seed dev_tool 78 Grafana grafana ai_tech_seed dev_tool 78 Grafana +granite ai_tech_seed ai_model 78 IBM Granite Great Wall ai_tech_seed tech_company 78 Great Wall great wall ai_tech_seed tech_company 78 Great Wall +Grok Imagine ai_tech_seed ai_brand 78 Grok Imagine +grok imagine ai_tech_seed ai_brand 78 Grok Imagine +Groq Cloud ai_tech_seed ai_platform 78 Groq Cloud +groq cloud ai_tech_seed ai_platform 78 Groq Cloud +Honda ai_tech_seed tech_company 78 本田 +honda ai_tech_seed tech_company 78 Honda Hono ai_tech_seed dev_tool 78 Hono hono js ai_tech_seed dev_tool 78 Hono Hugging Face Spaces ai_tech_seed ai_platform 78 Hugging Face Spaces hugging face spaces ai_tech_seed ai_platform 78 Hugging Face Spaces +Hyper ai_tech_seed tech_company 78 昊铂 +hyper ai_tech_seed tech_company 78 Hyper +IBM Granite ai_tech_seed ai_model 78 IBM Granite +Innovation Works ai_tech_seed tech_company 78 创新工场 +innovation works ai_tech_seed tech_company 78 Innovation Works +Iron Man ai_tech_seed celebrity 78 钢铁侠 +IVE ai_tech_seed celebrity 78 IVE +ive组合 ai_tech_seed celebrity 78 IVE +Jennifer Lawrence ai_tech_seed celebrity 78 Jennifer Lawrence +jennifer lawrence ai_tech_seed celebrity 78 Jennifer Lawrence +JetBrains Junie ai_tech_seed dev_tool 78 JetBrains Junie +jetbrains junie ai_tech_seed dev_tool 78 JetBrains Junie +Jin Dong ai_tech_seed celebrity 78 靳东 +Jisoo ai_tech_seed celebrity 78 Jisoo +Junie ai_tech_seed dev_tool 78 JetBrains Junie Jupyter ai_tech_seed dev_tool 78 Jupyter jupyter ai_tech_seed dev_tool 78 Jupyter Jupyter Notebook ai_tech_seed dev_tool 78 Jupyter +Kilo Code ai_tech_seed dev_tool 78 Kilo Code +kilo code ai_tech_seed dev_tool 78 Kilo Code +KiloCode ai_tech_seed dev_tool 78 Kilo Code +L'Oréal ai_tech_seed consumer_brand 78 L'Oréal +Lambda ai_tech_seed tech_company 78 Lambda Labs +Lambda Labs ai_tech_seed tech_company 78 Lambda Labs +lambda labs ai_tech_seed tech_company 78 Lambda Labs +lancome ai_tech_seed consumer_brand 78 Lancôme +Lancôme ai_tech_seed consumer_brand 78 兰蔻 +Langfuse ai_tech_seed dev_tool 78 Langfuse +langfuse ai_tech_seed dev_tool 78 Langfuse +Letta ai_tech_seed ai_platform 78 Letta +letta ai ai_tech_seed ai_platform 78 Letta +Letta AI ai_tech_seed ai_platform 78 Letta lib sql ai_tech_seed tech_term 78 libSQL Linear ai_tech_seed tech_company 78 Linear linear ai_tech_seed dev_tool 78 Linear linear app ai_tech_seed tech_company 78 Linear +live commerce sales ai_tech_seed tech_term 78 带货 +Loongson ai_tech_seed tech_company 78 龙芯 +loongson ai_tech_seed tech_company 78 Loongson +loreal ai_tech_seed consumer_brand 78 L'Oréal Lucid ai_tech_seed tech_company 78 Lucid lucid motors ai_tech_seed tech_company 78 Lucid Lucid Motors ai_tech_seed tech_company 78 Lucid +Lululemon ai_tech_seed consumer_brand 78 Lululemon +lululemon ai_tech_seed consumer_brand 78 Lululemon +LVMH ai_tech_seed consumer_brand 78 LVMH +lvmh ai_tech_seed consumer_brand 78 LVMH +Make Friends Live ai_tech_seed tech_company 78 交个朋友 MCP HTTP ai_tech_seed ai_term 78 Streamable HTTP memory bank ai_tech_seed ai_term 78 memory bank metaso ai_tech_seed ai_brand 78 Metaso metaverse ai_tech_seed tech_term 78 元宇宙 +Microsoft Agent ai_tech_seed ai_platform 78 Microsoft Agent +microsoft agent ai_tech_seed ai_platform 78 Microsoft Agent +microsoft phi ai_tech_seed ai_model 78 Phi MiniCPM ai_tech_seed ai_brand 78 面壁智能 +Miniso ai_tech_seed consumer_brand 78 名创优品 +miniso ai_tech_seed consumer_brand 78 Miniso Modal ai_tech_seed tech_company 78 Modal modal labs ai_tech_seed tech_company 78 Modal +molt worker ai_tech_seed ai_platform 78 Moltworker +Moltworker ai_tech_seed ai_platform 78 Moltworker +Moncler ai_tech_seed consumer_brand 78 Moncler +moncler ai_tech_seed consumer_brand 78 Moncler +MUJI ai_tech_seed consumer_brand 78 MUJI +muji ai_tech_seed consumer_brand 78 MUJI Nami AI ai_tech_seed ai_brand 78 纳米AI Nix ai_tech_seed tech_term 78 Nix nix ai_tech_seed tech_term 78 Nix NixOS ai_tech_seed tech_term 78 Nix +north face ai_tech_seed consumer_brand 78 The North Face Nuxt ai_tech_seed dev_tool 78 Nuxt nuxt ai_tech_seed dev_tool 78 Nuxt Nuxt.js ai_tech_seed dev_tool 78 Nuxt +one person company ai_tech_seed tech_term 78 一人公司 +papi ai_tech_seed celebrity 78 papi酱 +papi酱 papi jiang ai_tech_seed celebrity 78 papi酱 +Phi ai_tech_seed ai_model 78 Phi +phi model ai_tech_seed ai_model 78 Phi +plant grass recommend ai_tech_seed tech_term 78 种草 Postman ai_tech_seed dev_tool 78 Postman postman ai_tech_seed dev_tool 78 Postman +private domain traffic ai_tech_seed tech_term 78 私域 Prometheus ai_tech_seed dev_tool 78 Prometheus prometheus ai_tech_seed dev_tool 78 Prometheus +Puma ai_tech_seed consumer_brand 78 Puma +puma ai_tech_seed consumer_brand 78 Puma Quark ai_tech_seed ai_brand 78 Quark quark ai ai_tech_seed ai_brand 78 Quark RAG pipeline ai_tech_seed ai_term 78 RAG pipeline rag pipeline ai_tech_seed ai_term 78 RAG pipeline Railway ai_tech_seed tech_company 78 Railway railway app ai_tech_seed tech_company 78 Railway +Ray ai_tech_seed tech_company 78 Anyscale React Server Actions ai_tech_seed dev_tool 78 Server Actions reasoning effort ai_tech_seed ai_term 78 reasoning effort +Recraft ai_tech_seed ai_brand 78 Recraft +recraft ai ai_tech_seed ai_brand 78 Recraft +Recraft AI ai_tech_seed ai_brand 78 Recraft +Relevance ai_tech_seed ai_brand 78 Relevance AI +Relevance AI ai_tech_seed ai_brand 78 Relevance AI +relevance ai ai_tech_seed ai_brand 78 Relevance AI Remix ai_tech_seed dev_tool 78 Remix remix run ai_tech_seed dev_tool 78 Remix remote work ai_tech_seed tech_term 78 远程办公 @@ -1146,78 +2394,405 @@ replit ai_tech_seed dev_tool 78 Replit robin hood ai_tech_seed fintech 78 Robinhood Robin Hood ai_tech_seed fintech 78 Robinhood Robinhood ai_tech_seed fintech 78 Robinhood +Rockchip ai_tech_seed tech_company 78 Rockchip +rockchip ai_tech_seed tech_company 78 Rockchip +Rose ai_tech_seed celebrity 78 Rosé +Rosé ai_tech_seed celebrity 78 Rosé +run pod ai_tech_seed tech_company 78 RunPod +RunPod ai_tech_seed tech_company 78 RunPod +s and p 500 ai_tech_seed fintech 78 S&P 500 +S&P 500 ai_tech_seed fintech 78 标普500 +SAIC ai_tech_seed tech_company 78 上汽 +saic ai_tech_seed tech_company 78 SAIC +Scarlett Johansson ai_tech_seed celebrity 78 Scarlett Johansson +scarlett johansson ai_tech_seed celebrity 78 Scarlett Johansson +SenseAuto ai_tech_seed tech_company 78 商汤绝影 Server Actions ai_tech_seed dev_tool 78 Server Actions server actions ai_tech_seed dev_tool 78 Server Actions service now ai_tech_seed tech_company 78 ServiceNow ServiceNow ai_tech_seed tech_company 78 ServiceNow +short video ai_tech_seed tech_term 78 短视频 +silver economy ai_tech_seed tech_term 78 银发经济 +silver tech ai_tech_seed tech_term 78 银发科技 +Simular ai_tech_seed ai_brand 78 Simular +simular ai ai_tech_seed ai_brand 78 Simular +Simular AI ai_tech_seed ai_brand 78 Simular +sk two ai_tech_seed consumer_brand 78 SK-II +SK-II ai_tech_seed consumer_brand 78 SK-II +SK2 ai_tech_seed consumer_brand 78 SK-II +skill ai_tech_seed ai_term 78 skill +skills ai_tech_seed ai_term 78 skill +Skywork ai_tech_seed ai_brand 78 Skywork +skywork ai ai_tech_seed ai_brand 78 Skywork +Sohu ai_tech_seed tech_company 78 搜狐 +sohu ai_tech_seed tech_company 78 Sohu +Solana ai_tech_seed fintech 78 Solana +solana crypto ai_tech_seed fintech 78 Solana Spaces ai_tech_seed ai_platform 78 Hugging Face Spaces Square ai_tech_seed fintech 78 Block square ai_tech_seed fintech 78 Block Streamable HTTP ai_tech_seed ai_term 78 Streamable HTTP streamable http ai_tech_seed ai_term 78 Streamable HTTP +Su Hua ai_tech_seed tech_leader 78 宿华 +su hua ai_tech_seed tech_leader 78 Su Hua +t head ai_tech_seed tech_company 78 T-Head +T-Head ai_tech_seed tech_company 78 平头哥 Tailscale ai_tech_seed tech_company 78 Tailscale tailscale ai_tech_seed tech_company 78 Tailscale test time compute ai_tech_seed ai_term 78 test-time compute test-time compute ai_tech_seed ai_term 78 test-time compute +The North Face ai_tech_seed consumer_brand 78 北面 tiangong ai_tech_seed ai_brand 78 天工 +Tiffany ai_tech_seed consumer_brand 78 Tiffany +tiffany ai_tech_seed consumer_brand 78 Tiffany +trade-in program ai_tech_seed tech_term 78 以旧换新 Tuist ai_tech_seed dev_tool 78 Tuist tuist ai_tech_seed dev_tool 78 Tuist turbo repo ai_tech_seed dev_tool 78 Turborepo Turborepo ai_tech_seed dev_tool 78 Turborepo Twilio ai_tech_seed tech_company 78 Twilio twilio ai_tech_seed tech_company 78 Twilio +Ubisoft ai_tech_seed game_ip 78 育碧 +ubisoft ai_tech_seed game_ip 78 Ubisoft +Uniqlo ai_tech_seed consumer_brand 78 Uniqlo +uniqlo ai_tech_seed consumer_brand 78 Uniqlo +Vellum ai_tech_seed ai_platform 78 Vellum +vellum ai ai_tech_seed ai_platform 78 Vellum +Vellum AI ai_tech_seed ai_platform 78 Vellum +Versace ai_tech_seed consumer_brand 78 Versace +versace ai_tech_seed consumer_brand 78 Versace Visa ai_tech_seed tech_company 78 Visa visa ai_tech_seed tech_company 78 Visa +WAIC ai_tech_seed tech_term 78 世界人工智能大会 +Walmart ai_tech_seed consumer_brand 78 沃尔玛 +walmart ai_tech_seed consumer_brand 78 Walmart +Wang Jianlin ai_tech_seed tech_leader 78 王健林 +wang jianlin ai_tech_seed tech_leader 78 Wang Jianlin Web 3 ai_tech_seed tech_term 78 Web3 Web3 ai_tech_seed tech_term 78 Web3 web3 ai_tech_seed tech_term 78 Web3 +Western Digital ai_tech_seed tech_company 78 Western Digital +western digital ai_tech_seed tech_company 78 Western Digital work os ai_tech_seed dev_tool 78 WorkOS Work OS ai_tech_seed dev_tool 78 WorkOS WorkOS ai_tech_seed dev_tool 78 WorkOS +Xiao Yangge ai_tech_seed celebrity 78 疯狂小杨哥 +Yi Jianlian ai_tech_seed athlete 78 易建联 +YSL ai_tech_seed consumer_brand 78 YSL +ysl ai_tech_seed consumer_brand 78 YSL +Zhu Xiaohu ai_tech_seed tech_leader 78 朱啸虎 +Zong Qinghou ai_tech_seed tech_leader 78 宗庆后 +一人公司 yi ren gong si ai_tech_seed tech_term 78 一人公司 +上汽 shang qi ai_tech_seed tech_company 78 上汽 +世界人工智能大会 shi jie ren gong zhi neng da hui ai_tech_seed tech_term 78 世界人工智能大会 +中信 zhong xin ai_tech_seed fintech 78 中信 +中信证券 ai_tech_seed fintech 78 CITIC +中国创新 zhong guo chuang xin ai_tech_seed tech_term 78 中国创新 +中金 zhong jin ai_tech_seed fintech 78 中金 +中金公司 ai_tech_seed fintech 78 CICC +云深处 ai_tech_seed tech_company 78 DeepRobotics +交个朋友 jiao ge peng you ai_tech_seed tech_company 78 交个朋友 +以旧换新 yi jiu huan xin ai_tech_seed tech_term 78 以旧换新 +优衣库 ai_tech_seed consumer_brand 78 Uniqlo +傅盛 fu sheng ai_tech_seed tech_leader 78 傅盛 元宇宙 yuan yu zhou ai_tech_seed tech_term 78 元宇宙 +元戎启行 yuan rong qi xing ai_tech_seed tech_company 78 元戎启行 全球化 chu hai ai_tech_seed tech_term 78 出海 +兰蔻 lan ke ai_tech_seed consumer_brand 78 兰蔻 出海 chu hai ai_tech_seed tech_term 78 出海 +创新工场 chuang xin gong chang ai_tech_seed tech_company 78 创新工场 +加拿大鹅 ai_tech_seed consumer_brand 78 Canada Goose +北面 bei mian ai_tech_seed consumer_brand 78 北面 +吉利银河 ji li yin he ai_tech_seed tech_company 78 吉利银河 +名创优品 ming chuang you pin ai_tech_seed consumer_brand 78 名创优品 +商汤绝影 shang tang jue ying ai_tech_seed tech_company 78 商汤绝影 +圣罗兰 ai_tech_seed consumer_brand 78 YSL 基准测试 ai_tech_seed ai_term 78 benchmark +壁仞 bi ren ai_tech_seed tech_company 78 壁仞 天工 tian gong ai_tech_seed ai_brand 78 天工 +天工AI tian gong AI ai_tech_seed ai_brand 78 天工AI 夸克 ai_tech_seed ai_brand 78 Quark +奇瑞 qi rui ai_tech_seed tech_company 78 奇瑞 +宗庆后 zong qing hou ai_tech_seed tech_leader 78 宗庆后 +宝格丽 ai_tech_seed consumer_brand 78 Bulgari +宿华 su hua ai_tech_seed tech_leader 78 宿华 +带货 dai huo ai_tech_seed tech_term 78 带货 +平头哥 ping tou ge ai_tech_seed tech_company 78 平头哥 +彪马 ai_tech_seed consumer_brand 78 Puma 推理强度 ai_tech_seed ai_term 78 reasoning effort +搜狐 sou hu ai_tech_seed tech_company 78 搜狐 数字分身 shu zi fen shen ai_tech_seed tech_term 78 数字分身 +数据要素 shu ju yao su ai_tech_seed tech_term 78 数据要素 +数据飞轮 shu ju fei lun ai_tech_seed ai_term 78 数据飞轮 +无印良品 ai_tech_seed consumer_brand 78 MUJI 昆仑万维天工 tian gong ai_tech_seed ai_brand 78 天工 +昊铂 hao bo ai_tech_seed tech_company 78 昊铂 +易建联 yi jian lian ai_tech_seed athlete 78 易建联 +本田 ben tian ai_tech_seed tech_company 78 本田 +朱啸虎 zhu xiao hu ai_tech_seed tech_leader 78 朱啸虎 +标普500 biao pu 500 ai_tech_seed fintech 78 标普500 +欧莱雅 ai_tech_seed consumer_brand 78 L'Oréal +沃尔玛 wo er ma ai_tech_seed consumer_brand 78 沃尔玛 +波司登 bo si deng ai_tech_seed consumer_brand 78 波司登 测试时计算 ai_tech_seed ai_term 78 test-time compute +王健林 wang jian lin ai_tech_seed tech_leader 78 王健林 +瑞芯微 ai_tech_seed tech_company 78 Rockchip +疯狂小杨哥 feng kuang xiao yang ge ai_tech_seed celebrity 78 疯狂小杨哥 +盟可睐 ai_tech_seed consumer_brand 78 Moncler +短视频 duan shi pin ai_tech_seed tech_term 78 短视频 +私域 si yu ai_tech_seed tech_term 78 私域 +种草 zhong cao ai_tech_seed tech_term 78 种草 +算力普惠 suan li pu hui ai_tech_seed tech_term 78 算力普惠 +索罗斯 suo luo si ai_tech_seed tech_leader 78 索罗斯 纳米AI na mi AI ai_tech_seed ai_brand 78 纳米AI +育碧 yu bi ai_tech_seed game_ip 78 育碧 +花西子 hua xi zi ai_tech_seed consumer_brand 78 花西子 +范思哲 ai_tech_seed consumer_brand 78 Versace +蒂芙尼 ai_tech_seed consumer_brand 78 Tiffany +蔻驰 ai_tech_seed consumer_brand 78 Coach +西部数据 ai_tech_seed tech_company 78 Western Digital 记忆库 ai_tech_seed ai_term 78 memory bank 赛博对账 sai bo dui zhang ai_tech_seed tech_term 78 赛博对账 +路威酩轩 ai_tech_seed consumer_brand 78 LVMH 远程办公 yuan cheng ban gong ai_tech_seed tech_term 78 远程办公 +银发科技 yin fa ke ji ai_tech_seed tech_term 78 银发科技 +银发经济 yin fa jing ji ai_tech_seed tech_term 78 银发经济 长城汽车 ai_tech_seed tech_company 78 Great Wall +长安 chang an ai_tech_seed tech_company 78 长安 +长鑫 chang xin ai_tech_seed tech_company 78 长鑫 +长鑫存储 ai_tech_seed tech_company 78 CXMT +降本增效 jiang ben zeng xiao ai_tech_seed tech_term 78 降本增效 +雅诗兰黛 ai_tech_seed consumer_brand 78 Estée Lauder +露露乐蒙 ai_tech_seed consumer_brand 78 Lululemon 面壁智能 mian bi zhi neng ai_tech_seed ai_brand 78 面壁智能 +靳东 jin dong ai_tech_seed celebrity 78 靳东 +龙芯 long xin ai_tech_seed tech_company 78 龙芯 +apple writing tools ai_tech_seed ai_term 76 Writing Tools +atmospheric vibe ai_tech_seed tech_term 76 氛围感 +Baseten ai_tech_seed ai_platform 76 Baseten +baseten ai_tech_seed ai_platform 76 Baseten +Batman ai_tech_seed celebrity 76 蝙蝠侠 +batman ai_tech_seed celebrity 76 Batman +Block Goose ai_tech_seed dev_tool 76 Goose +Braintrust ai_tech_seed dev_tool 76 Braintrust +braintrust ai ai_tech_seed dev_tool 76 Braintrust +buddy partner ai_tech_seed tech_term 76 搭子 +Cheetah Mobile ai_tech_seed tech_company 76 猎豹移动 +Chen Tianqiao ai_tech_seed tech_leader 76 陈天桥 +Cheng Yixiao ai_tech_seed tech_leader 76 程一笑 +cheng yixiao ai_tech_seed tech_leader 76 Cheng Yixiao +Chow Tai Fook ai_tech_seed consumer_brand 76 周大福 +chow tai fook ai_tech_seed consumer_brand 76 Chow Tai Fook +city walk ai_tech_seed tech_term 76 citywalk +City Walk ai_tech_seed tech_term 76 citywalk +citywalk ai_tech_seed tech_term 76 citywalk +Converse ai_tech_seed consumer_brand 76 Converse +converse ai_tech_seed consumer_brand 76 Converse +CSI 300 ai_tech_seed fintech 76 沪深300 cyber ai_tech_seed tech_term 76 赛博 +data assets ai_tech_seed tech_term 76 数据资产 Deepset Haystack ai_tech_seed ai_platform 76 Haystack +Dogecoin ai_tech_seed fintech 76 狗狗币 +dogecoin ai_tech_seed fintech 76 Dogecoin +Dongfeng ai_tech_seed tech_company 76 东风 +dongfeng ai_tech_seed tech_company 76 Dongfeng +Dow Jones ai_tech_seed fintech 76 道琼斯 +dow jones ai_tech_seed fintech 76 Dow Jones +Enflame ai_tech_seed tech_company 76 燧原 +enflame ai_tech_seed tech_company 76 Enflame +Erke ai_tech_seed consumer_brand 76 鸿星尔克 +erke ai_tech_seed consumer_brand 76 Erke +expert routing ai_tech_seed ai_term 76 MoE路由 +FAW ai_tech_seed tech_company 76 一汽 +faw ai_tech_seed tech_company 76 FAW +Flowith ai_tech_seed ai_platform 76 Flowith +flowith ai ai_tech_seed ai_platform 76 Flowith +Flowith AI ai_tech_seed ai_platform 76 Flowith +Focus Media ai_tech_seed tech_company 76 分众传媒 +Fuyao Glass ai_tech_seed tech_company 76 福耀玻璃 +Gemma open ai_tech_seed ai_model 76 Gemma开源 +Gemma开源 gemma kai yuan ai_tech_seed ai_model 76 Gemma开源 +Goose ai_tech_seed dev_tool 76 Goose +goose ai ai_tech_seed dev_tool 76 Goose +grok ipedia ai_tech_seed ai_brand 76 Grokipedia +Grok pedia ai_tech_seed ai_brand 76 Grokipedia +Grokipedia ai_tech_seed ai_brand 76 Grokipedia +Guotai Junan ai_tech_seed fintech 76 国泰君安 +guotai junan ai_tech_seed fintech 76 Guotai Junan +Hang Seng Index ai_tech_seed fintech 76 恒生指数 Haystack ai_tech_seed ai_platform 76 Haystack haystack ai ai_tech_seed ai_platform 76 Haystack +Huatai ai_tech_seed fintech 76 华泰 +huatai ai_tech_seed fintech 76 Huatai +IDG ai_tech_seed fintech 76 IDG +idg capital ai_tech_seed fintech 76 IDG +initial public offering ai_tech_seed tech_term 76 IPO +Innovusion ai_tech_seed tech_company 76 图达通 +innovusion ai_tech_seed tech_company 76 Innovusion +IPO ai_tech_seed tech_term 76 IPO +Jiang Nanchun ai_tech_seed tech_leader 76 江南春 +Kioxia ai_tech_seed tech_company 76 Kioxia +kioxia ai_tech_seed tech_company 76 Kioxia +KKR ai_tech_seed fintech 76 KKR +kkr ai_tech_seed fintech 76 KKR +Krea ai_tech_seed ai_brand 76 Krea +krea ai ai_tech_seed ai_brand 76 Krea +Krea AI ai_tech_seed ai_brand 76 Krea Ktor ai_tech_seed dev_tool 76 Ktor ktor ai_tech_seed dev_tool 76 Ktor Ktor server ai_tech_seed dev_tool 76 Ktor +Kuai Man ai_tech_seed athlete 76 蒯曼 +Laoxiangji ai_tech_seed consumer_brand 76 老乡鸡 +Levi's ai_tech_seed consumer_brand 76 Levi's +levis ai_tech_seed consumer_brand 76 Levi's +Lin Gaoyuan ai_tech_seed athlete 76 林高远 +long-termism ai_tech_seed tech_term 76 长期主义 +low altitude flight ai_tech_seed tech_term 76 低空飞行 +MAC ai_tech_seed consumer_brand 76 MAC +mac cosmetics ai_tech_seed consumer_brand 76 MAC +Matrix Partners ai_tech_seed fintech 76 Matrix Partners +matrix partners ai_tech_seed fintech 76 Matrix Partners +Matrix Partners China ai_tech_seed fintech 76 经纬 +max kb ai_tech_seed ai_platform 76 MaxKB +MaxKB ai_tech_seed ai_platform 76 MaxKB +MBTI ai_tech_seed tech_term 76 MBTI +mbti人格 ai_tech_seed tech_term 76 MBTI +Michael Kors ai_tech_seed consumer_brand 76 Michael Kors +michael kors ai_tech_seed consumer_brand 76 Michael Kors +MK ai_tech_seed consumer_brand 76 Michael Kors Modal Labs ai_tech_seed tech_company 76 Modal Labs +MoE路由 MoE lu you ai_tech_seed ai_term 76 MoE路由 +Nami Search ai_tech_seed ai_brand 76 纳米搜索 Nix OS ai_tech_seed tech_term 76 NixOS nixos ai_tech_seed tech_term 76 NixOS Nx ai_tech_seed dev_tool 76 Nx nx monorepo ai_tech_seed dev_tool 76 Nx +open euler ai_tech_seed tech_company 76 openEuler +openEuler ai_tech_seed tech_company 76 openEuler +patient capital ai_tech_seed tech_term 76 耐心资本 +Phi模型 phi mo xing ai_tech_seed ai_model 76 Phi模型 +Phytium ai_tech_seed tech_company 76 飞腾 +phytium ai_tech_seed tech_company 76 Phytium pnpm ai_tech_seed dev_tool 76 pnpm +product review ai_tech_seed tech_term 76 测评 +Qwen order milk tea ai_tech_seed tech_term 76 千问点奶茶 +rate cut ai_tech_seed fintech 76 降息 +Ray Serve ai_tech_seed dev_tool 76 Ray Serve +ray serve ai_tech_seed dev_tool 76 Ray Serve red panda ai_tech_seed tech_company 76 Redpanda Redpanda ai_tech_seed tech_company 76 Redpanda +relaxed vibe ai_tech_seed tech_term 76 松弛感 Render ai_tech_seed tech_company 76 Render render.com ai_tech_seed tech_company 76 Render +Rising Auto ai_tech_seed tech_company 76 飞凡 SenseChat ai_tech_seed ai_brand 76 商量 Serverless Stack ai_tech_seed dev_tool 76 SST +Shiseido ai_tech_seed consumer_brand 76 Shiseido +shiseido ai_tech_seed consumer_brand 76 Shiseido +Skechers ai_tech_seed consumer_brand 76 Skechers +skechers ai_tech_seed consumer_brand 76 Skechers +speculative decoding ai_tech_seed ai_term 76 投机解码 SST ai_tech_seed dev_tool 76 SST sst ai_tech_seed dev_tool 76 SST stdio transport ai_tech_seed ai_term 76 stdio transport +Supreme ai_tech_seed consumer_brand 76 Supreme +supreme ai_tech_seed consumer_brand 76 Supreme +Supreme潮牌 ai_tech_seed consumer_brand 76 Supreme +ticket stub economy ai_tech_seed tech_term 76 票根经济 +unboxing ai_tech_seed tech_term 76 开箱 +unicorn startup ai_tech_seed tech_term 76 独角兽 +Unigroup ai_tech_seed tech_company 76 紫光 +unigroup ai_tech_seed tech_company 76 Unigroup +Van Cleef ai_tech_seed consumer_brand 76 Van Cleef +van cleef ai_tech_seed consumer_brand 76 Van Cleef +Vans ai_tech_seed consumer_brand 76 Vans +vans ai_tech_seed consumer_brand 76 Vans +vibe marketing ai_tech_seed ai_term 76 vibe marketing +virtual idol ai_tech_seed ai_term 76 虚拟偶像 +Viya ai_tech_seed celebrity 76 薇娅 +viya ai_tech_seed celebrity 76 Viya +wa ic ai_tech_seed tech_term 76 WAIC web dev arena ai_tech_seed ai_term 76 WebDev Arena WebDev Arena ai_tech_seed ai_term 76 WebDev Arena WebDevArena ai_tech_seed ai_term 76 WebDev Arena +Writing Tools ai_tech_seed ai_term 76 Writing Tools +Xibei ai_tech_seed consumer_brand 76 西贝 +Xtep ai_tech_seed consumer_brand 76 特步 +xtep ai_tech_seed consumer_brand 76 Xtep +Xu Xin ai_tech_seed tech_leader 76 徐新 +Zara ai_tech_seed consumer_brand 76 Zara +zara ai_tech_seed consumer_brand 76 Zara +zen coder ai_tech_seed dev_tool 76 Zencoder +Zencoder ai_tech_seed dev_tool 76 Zencoder +Zep ai_tech_seed ai_platform 76 Zep +zep ai ai_tech_seed ai_platform 76 Zep +Zep AI ai_tech_seed ai_platform 76 Zep +zhen fund ai_tech_seed fintech 76 ZhenFund +ZhenFund ai_tech_seed fintech 76 真格 +一汽 yi qi ai_tech_seed tech_company 76 一汽 +上市 ai_tech_seed tech_term 76 IPO +东风 dong feng ai_tech_seed tech_company 76 东风 +交个朋友直播间 jiao ge peng you zhi bo jian ai_tech_seed tech_term 76 交个朋友直播间 +低空飞行 di kong fei xing ai_tech_seed tech_term 76 低空飞行 +分众传媒 fen zhong chuan mei ai_tech_seed tech_company 76 分众传媒 +匡威 ai_tech_seed consumer_brand 76 Converse +千问点奶茶 qian wen dian nai cha ai_tech_seed tech_term 76 千问点奶茶 +华泰 hua tai ai_tech_seed fintech 76 华泰 +华泰证券 ai_tech_seed fintech 76 Huatai +周大福 zhou da fu ai_tech_seed consumer_brand 76 周大福 商量 shang liang ai_tech_seed ai_brand 76 商量 +国泰君安 guo tai jun an ai_tech_seed fintech 76 国泰君安 +图达通 tu da tong ai_tech_seed tech_company 76 图达通 +开箱 kai xiang ai_tech_seed tech_term 76 开箱 +徐新 xu xin ai_tech_seed tech_leader 76 徐新 +恒生指数 heng sheng zhi shu ai_tech_seed fintech 76 恒生指数 +投机解码 tou ji jie ma ai_tech_seed ai_term 76 投机解码 +搭子 da zi ai_tech_seed tech_term 76 搭子 +数据资产 shu ju zi chan ai_tech_seed tech_term 76 数据资产 +斯凯奇 ai_tech_seed consumer_brand 76 Skechers +李维斯 ai_tech_seed consumer_brand 76 Levi's +松弛感 song chi gan ai_tech_seed tech_term 76 松弛感 +林高远 lin gao yuan ai_tech_seed athlete 76 林高远 标准输入输出传输 ai_tech_seed ai_term 76 stdio transport +梵克雅宝 ai_tech_seed consumer_brand 76 Van Cleef +欧拉 ai_tech_seed tech_company 76 openEuler +氛围感 fen wei gan ai_tech_seed tech_term 76 氛围感 +氛围营销 ai_tech_seed ai_term 76 vibe marketing +江南春 jiang nan chun ai_tech_seed tech_leader 76 江南春 +沪深300 hu shen 300 ai_tech_seed fintech 76 沪深300 +测评 ce ping ai_tech_seed tech_term 76 测评 +燧原 sui yuan ai_tech_seed tech_company 76 燧原 +特步 te bu ai_tech_seed consumer_brand 76 特步 +狗狗币 gou gou bi ai_tech_seed fintech 76 狗狗币 +独角兽 du jiao shou ai_tech_seed tech_term 76 独角兽 +猎豹移动 lie bao yi dong ai_tech_seed tech_company 76 猎豹移动 +真格 zhen ge ai_tech_seed fintech 76 真格 +真格基金 ai_tech_seed fintech 76 ZhenFund +票根经济 piao gen jing ji ai_tech_seed tech_term 76 票根经济 +福耀玻璃 fu yao bo li ai_tech_seed tech_company 76 福耀玻璃 +程一笑 cheng yi xiao ai_tech_seed tech_leader 76 程一笑 +紫光 zi guang ai_tech_seed tech_company 76 紫光 +纳米搜索 na mi sou suo ai_tech_seed ai_brand 76 纳米搜索 +经纬 jing wei ai_tech_seed fintech 76 经纬 +经纬创投 ai_tech_seed fintech 76 Matrix Partners +绝影 jue ying ai_tech_seed tech_company 76 绝影 +老乡鸡 lao xiang ji ai_tech_seed consumer_brand 76 老乡鸡 +耐心资本 nai xin zi ben ai_tech_seed tech_term 76 耐心资本 +蒯曼 kuai man ai_tech_seed athlete 76 蒯曼 +薇娅 wei ya ai_tech_seed celebrity 76 薇娅 +虚拟偶像 xu ni ou xiang ai_tech_seed ai_term 76 虚拟偶像 +蝙蝠侠 bian fu xia ai_tech_seed celebrity 76 蝙蝠侠 +西贝 xi bei ai_tech_seed consumer_brand 76 西贝 +资生堂 ai_tech_seed consumer_brand 76 Shiseido 赛博 sai bo ai_tech_seed tech_term 76 赛博 +道琼斯 dao qiong si ai_tech_seed fintech 76 道琼斯 +铠侠 ai_tech_seed tech_company 76 Kioxia +长期主义 chang qi zhu yi ai_tech_seed tech_term 76 长期主义 +陈天桥 chen tian qiao ai_tech_seed tech_leader 76 陈天桥 +降息 jiang xi ai_tech_seed fintech 76 降息 +飞凡 fei fan ai_tech_seed tech_company 76 飞凡 +飞腾 fei teng ai_tech_seed tech_company 76 飞腾 +鸿星尔克 hong xing er ke ai_tech_seed consumer_brand 76 鸿星尔克 Aider ai_tech_seed ai_brand 75 Aider aider ai_tech_seed ai_brand 75 Aider Bitbucket ai_tech_seed tech_company 75 Bitbucket @@ -1246,15 +2821,221 @@ warp terminal ai_tech_seed dev_tool 75 Warp 数字游民 shu zi you min ai_tech_seed tech_term 75 数字游民 越狱 ai_tech_seed ai_term 75 jailbreak 面壁 ai_tech_seed ai_model 75 MiniCPM +Allwinner ai_tech_seed tech_company 74 Allwinner +allwinner ai_tech_seed tech_company 74 Allwinner +Arize ai_tech_seed dev_tool 74 Arize +arize ai ai_tech_seed dev_tool 74 Arize +Arize AI ai_tech_seed dev_tool 74 Arize +avoid pitfall ai_tech_seed tech_term 74 避雷 +Capital Today ai_tech_seed fintech 74 今日资本 +China Gold ai_tech_seed consumer_brand 74 中国黄金 +civil service exam ai_tech_seed tech_term 74 考公 +Crusoe ai_tech_seed tech_company 74 Crusoe +crusoe energy ai_tech_seed tech_company 74 Crusoe +data rights confirmation ai_tech_seed tech_term 74 数据确权 +emotional bluntness ai_tech_seed tech_term 74 钝感力 +emotional spending ai_tech_seed tech_term 74 情绪消费 +emotionally broken ai_tech_seed tech_term 74 破防 +emotionally stable ai_tech_seed tech_term 74 情绪稳定 +extrovert ai_tech_seed tech_term 74 e人 +e人 e ren ai_tech_seed tech_term 74 e人 +flow gpt ai_tech_seed ai_platform 74 FlowGPT +Flow GPT ai_tech_seed ai_platform 74 FlowGPT +FlowGPT ai_tech_seed ai_platform 74 FlowGPT +fundraising ai_tech_seed tech_term 74 融资 +go to market ai_tech_seed tech_term 74 GTM +GTM ai_tech_seed tech_term 74 GTM +Helicone ai_tech_seed dev_tool 74 Helicone +helicone ai_tech_seed dev_tool 74 Helicone +Image Playground ai_tech_seed ai_term 74 Image Playground +image playground ai_tech_seed ai_term 74 Image Playground +immersive ai_tech_seed tech_term 74 沉浸式 +introvert ai_tech_seed tech_term 74 i人 +IPO listing ai_tech_seed tech_term 74 上市 +i人 i ren ai_tech_seed tech_term 74 i人 +Labelbox ai_tech_seed tech_company 74 Labelbox +labelbox ai_tech_seed tech_company 74 Labelbox +Lao Feng Xiang ai_tech_seed consumer_brand 74 老凤祥 +launch economy ai_tech_seed tech_term 74 首发经济 +layoffs ai_tech_seed tech_term 74 裁员 +office vibe ai_tech_seed tech_term 74 班味 +omnichannel operation ai_tech_seed tech_term 74 全域经营 +Omnigent ai_tech_seed dev_tool 74 Omnigent +omnigent ai ai_tech_seed dev_tool 74 Omnigent +paid knowledge ai_tech_seed tech_term 74 知识付费 +pet economy ai_tech_seed tech_term 74 宠物经济 +premium feel ai_tech_seed tech_term 74 高级感 +public domain traffic ai_tech_seed tech_term 74 公域 +quantitative easing ai_tech_seed fintech 74 量化宽松 +rate hike ai_tech_seed fintech 74 加息 +recommend ai_tech_seed tech_term 74 安利 +self-reward spending ai_tech_seed tech_term 74 悦己消费 +Source Code Capital ai_tech_seed fintech 74 源码 +sparse attention ai_tech_seed ai_term 74 稀疏注意力 +unrecommend ai_tech_seed tech_term 74 拔草 +valuation ai_tech_seed tech_term 74 估值 +William Feng ai_tech_seed tech_leader 74 沈晖 +Xu Jiayin ai_tech_seed tech_leader 74 许家印 +xu jiayin ai_tech_seed tech_leader 74 Xu Jiayin +YYDS ai_tech_seed tech_term 74 YYDS +yyds ai_tech_seed tech_term 74 YYDS +中国黄金 zhong guo huang jin ai_tech_seed consumer_brand 74 中国黄金 +今日资本 jin ri zi ben ai_tech_seed fintech 74 今日资本 +估值 gu zhi ai_tech_seed tech_term 74 估值 +全域经营 quan yu jing ying ai_tech_seed tech_term 74 全域经营 +全志 ai_tech_seed tech_company 74 Allwinner +公域 gong yu ai_tech_seed tech_term 74 公域 +加息 jia xi ai_tech_seed fintech 74 加息 +安利 an li ai_tech_seed tech_term 74 安利 +宠物经济 chong wu jing ji ai_tech_seed tech_term 74 宠物经济 +悦己消费 yue ji xiao fei ai_tech_seed tech_term 74 悦己消费 +情绪消费 qing xu xiao fei ai_tech_seed tech_term 74 情绪消费 +情绪稳定 qing xu wen ding ai_tech_seed tech_term 74 情绪稳定 +拔草 ba cao ai_tech_seed tech_term 74 拔草 +数据确权 shu ju que quan ai_tech_seed tech_term 74 数据确权 +永远的神 ai_tech_seed tech_term 74 YYDS +沈晖 shen hui ai_tech_seed tech_leader 74 沈晖 +沉浸式 chen jin shi ai_tech_seed tech_term 74 沉浸式 +源码 yuan ma ai_tech_seed fintech 74 源码 +班味 ban wei ai_tech_seed tech_term 74 班味 +知识付费 zhi shi fu fei ai_tech_seed tech_term 74 知识付费 +破防 po fang ai_tech_seed tech_term 74 破防 +稀疏注意力 xi shu zhu yi li ai_tech_seed ai_term 74 稀疏注意力 +老凤祥 lao feng xiang ai_tech_seed consumer_brand 74 老凤祥 +考公 kao gong ai_tech_seed tech_term 74 考公 +苹果图像游乐场 ai_tech_seed ai_term 74 Image Playground +融资 rong zi ai_tech_seed tech_term 74 融资 +裁员 cai yuan ai_tech_seed tech_term 74 裁员 +许家印 xu jia yin ai_tech_seed tech_leader 74 许家印 +避雷 bi lei ai_tech_seed tech_term 74 避雷 +量化宽松 liang hua kuan song ai_tech_seed fintech 74 量化宽松 +钝感力 dun gan li ai_tech_seed tech_term 74 钝感力 +首发经济 shou fa jing ji ai_tech_seed tech_term 74 首发经济 +高级感 gao ji gan ai_tech_seed tech_term 74 高级感 +35岁危机 35 sui wei ji ai_tech_seed tech_term 72 35岁危机 +absolutely amazing ai_tech_seed tech_term 72 绝绝子 +abstract meme ai_tech_seed tech_term 72 抽象 +age 35 crisis ai_tech_seed tech_term 72 35岁危机 +annual recurring revenue ai_tech_seed tech_term 72 ARR +ARR ai_tech_seed tech_term 72 ARR +attention seeker ai_tech_seed tech_term 72 显眼包 +A轮 A lun ai_tech_seed tech_term 72 A轮 +Carrefour ai_tech_seed consumer_brand 72 家乐福 +cheers to myself ai_tech_seed tech_term 72 敬自己一杯 +Chen Ou ai_tech_seed tech_leader 72 陈欧 +Columbia ai_tech_seed consumer_brand 72 Columbia +columbia sportswear ai_tech_seed consumer_brand 72 Columbia +consumption voucher ai_tech_seed tech_term 72 消费券 +cyber immortality ai_tech_seed tech_term 72 赛博永生 +experience economy ai_tech_seed tech_term 72 体验经济 Focus AI ai_tech_seed ai_platform 72 Fooocus Fooocus ai_tech_seed ai_platform 72 Fooocus fooocus ai_tech_seed ai_platform 72 Fooocus +fortune comes ai_tech_seed tech_term 72 来财 +h and m ai_tech_seed consumer_brand 72 H&M +H&M ai_tech_seed consumer_brand 72 H&M +hard control meme ai_tech_seed tech_term 72 硬控 +heavy office vibe ai_tech_seed tech_term 72 班味很重 +HM ai_tech_seed consumer_brand 72 H&M +ice snow economy ai_tech_seed tech_term 72 冰雪经济 +Jiangsu Super League ai_tech_seed tech_term 72 苏超 Labubu ai_tech_seed tech_term 72 拉布布 labubu ai_tech_seed tech_term 72 Labubu +Langlangshan monster ai_tech_seed tech_term 72 浪浪山小妖怪 +localization ai_tech_seed tech_term 72 本地化 lying flat ai_tech_seed tech_term 72 躺平 +mid-length video ai_tech_seed tech_term 72 中视频 +Patagonia ai_tech_seed consumer_brand 72 Patagonia +patagonia ai_tech_seed consumer_brand 72 Patagonia +PLG ai_tech_seed tech_term 72 PLG +product led growth ai_tech_seed tech_term 72 PLG +public institution exam ai_tech_seed tech_term 72 考编 +Series A ai_tech_seed tech_term 72 A轮 side hustle ai_tech_seed tech_term 72 副业 +special forces travel ai_tech_seed tech_term 72 特种兵旅游 +stealth vibe ai_tech_seed tech_term 72 偷感 +texture quality ai_tech_seed tech_term 72 质感 +value investing ai_tech_seed tech_term 72 价值投资 +value investor ai_tech_seed tech_term 72 价值投资者 village coffee ai_tech_seed tech_term 72 村咖 +Zhou Hang ai_tech_seed tech_leader 72 周航 +中视频 zhong shi pin ai_tech_seed tech_term 72 中视频 +价值投资 jia zhi tou zi ai_tech_seed tech_term 72 价值投资 +价值投资者 jia zhi tou zi zhe ai_tech_seed tech_term 72 价值投资者 +体验经济 ti yan jing ji ai_tech_seed tech_term 72 体验经济 +偷感 tou gan ai_tech_seed tech_term 72 偷感 +冰雪经济 bing xue jing ji ai_tech_seed tech_term 72 冰雪经济 副业 fu ye ai_tech_seed tech_term 72 副业 +周航 zhou hang ai_tech_seed tech_leader 72 周航 +哪吒闹海 na zha nao hai ai_tech_seed tech_term 72 哪吒闹海 +家乐福 jia le fu ai_tech_seed consumer_brand 72 家乐福 +巴塔哥尼亚 ai_tech_seed consumer_brand 72 Patagonia +抽象 chou xiang ai_tech_seed tech_term 72 抽象 拉布布 la bu bu ai_tech_seed tech_term 72 拉布布 +敬自己一杯 jing zi ji yi bei ai_tech_seed tech_term 72 敬自己一杯 +显眼包 xian yan bao ai_tech_seed tech_term 72 显眼包 +本地化 ben di hua ai_tech_seed tech_term 72 本地化 村咖 cun ka ai_tech_seed tech_term 72 村咖 +来财 lai cai ai_tech_seed tech_term 72 来财 +浪浪山小妖怪 lang lang shan xiao yao guai ai_tech_seed tech_term 72 浪浪山小妖怪 +消费券 xiao fei quan ai_tech_seed tech_term 72 消费券 +特种兵旅游 te zhong bing lv you ai_tech_seed tech_term 72 特种兵旅游 +班味很重 ban wei hen zhong ai_tech_seed tech_term 72 班味很重 +硬控 ying kong ai_tech_seed tech_term 72 硬控 +绝绝子 jue jue zi ai_tech_seed tech_term 72 绝绝子 +考编 kao bian ai_tech_seed tech_term 72 考编 +苏超 su chao ai_tech_seed tech_term 72 苏超 +质感 zhi gan ai_tech_seed tech_term 72 质感 +赛博永生 sai bo yong sheng ai_tech_seed tech_term 72 赛博永生 躺平 tang ping ai_tech_seed tech_term 72 躺平 +陈欧 chen ou ai_tech_seed tech_leader 72 陈欧 +addictive hype ai_tech_seed tech_term 70 上头 +B轮 B lun ai_tech_seed tech_term 70 B轮 +CAC ai_tech_seed tech_term 70 CAC +customer acquisition cost ai_tech_seed tech_term 70 CAC +cyber bodhisattva ai_tech_seed tech_term 70 赛博菩萨 +cyber buddha ai_tech_seed tech_term 70 赛博佛祖 +flexible employment ai_tech_seed tech_term 70 灵活就业 +fragile college student ai_tech_seed tech_term 70 脆皮大学生 +fresh and lively ai_tech_seed tech_term 70 水灵灵 +heavy stealth vibe ai_tech_seed tech_term 70 偷感很重 +however what can you do ai_tech_seed tech_term 70 如何又能怎 +Jumei ai_tech_seed tech_company 70 聚美优品 +layoff euphemism ai_tech_seed tech_term 70 优化 +lifetime value ai_tech_seed tech_term 70 LTV +LTV ai_tech_seed tech_term 70 LTV +monthly recurring revenue ai_tech_seed tech_term 70 MRR +MRR ai_tech_seed tech_term 70 MRR +nailed it ai_tech_seed tech_term 70 拿捏 +really or not ai_tech_seed tech_term 70 尊嘟假嘟 +sales led growth ai_tech_seed tech_term 70 SLG +Series B ai_tech_seed tech_term 70 B轮 +SLG ai_tech_seed tech_term 70 SLG +turn off vibe ai_tech_seed tech_term 70 下头 +上头 shang tou ai_tech_seed tech_term 70 上头 +下头 xia tou ai_tech_seed tech_term 70 下头 +优化 you hua ai_tech_seed tech_term 70 优化 +偷感很重 tou gan hen zhong ai_tech_seed tech_term 70 偷感很重 +如何又能怎 ru he you neng zen ai_tech_seed tech_term 70 如何又能怎 +尊嘟假嘟 zun du jia du ai_tech_seed tech_term 70 尊嘟假嘟 +拿捏 na nie ai_tech_seed tech_term 70 拿捏 +水灵灵 shui ling ling ai_tech_seed tech_term 70 水灵灵 +灵活就业 ling huo jiu ye ai_tech_seed tech_term 70 灵活就业 +聚美优品 ju mei you pin ai_tech_seed tech_company 70 聚美优品 +脆皮大学生 cui pi da xue sheng ai_tech_seed tech_term 70 脆皮大学生 +赛博佛祖 sai bo fo zu ai_tech_seed tech_term 70 赛博佛祖 +赛博菩萨 sai bo pu sa ai_tech_seed tech_term 70 赛博菩萨 +barbecue done ai_tech_seed tech_term 68 芭比Q了 +C轮 C lun ai_tech_seed tech_term 68 C轮 +decacorn ai_tech_seed tech_term 68 decacorn +decacorn startup ai_tech_seed tech_term 68 decacorn +finished ai_tech_seed tech_term 68 芭比Q了 +NDR ai_tech_seed tech_term 68 NDR +net dollar retention ai_tech_seed tech_term 68 NDR +pre a round ai_tech_seed tech_term 68 Pre-A +Pre-A ai_tech_seed tech_term 68 Pre-A +Series C ai_tech_seed tech_term 68 C轮 +thank you meme ai_tech_seed tech_term 68 栓Q +栓Q shuan Q ai_tech_seed tech_term 68 栓Q +毕业 bi ye ai_tech_seed tech_term 68 毕业 +芭比Q了 ba bi Q le ai_tech_seed tech_term 68 芭比Q了 diff --git a/OSGKeyboard/Services/FlowSessionManager.swift b/OSGKeyboard/Services/FlowSessionManager.swift index dd5c7e4..fc6a54f 100644 --- a/OSGKeyboard/Services/FlowSessionManager.swift +++ b/OSGKeyboard/Services/FlowSessionManager.swift @@ -39,7 +39,7 @@ final class FlowSessionManager: ObservableObject { private var sessionASRWarmedLocaleID: String? private var asr: ASRService { if let sessionASR { return sessionASR } - let service = ASRServiceFactory.make() + let service = ASRServiceFactory.make(store: store) sessionASR = service return service } @@ -342,7 +342,7 @@ final class FlowSessionManager: ObservableObject { return } sessionASR?.cancel() - sessionASR = ASRServiceFactory.make() + sessionASR = ASRServiceFactory.make(store: store) sessionASREngineMode = engineMode sessionASRWarmedLocaleID = nil } diff --git a/OSGKeyboard/Views/HomeView.swift b/OSGKeyboard/Views/HomeView.swift index 503c27a..e8af33a 100644 --- a/OSGKeyboard/Views/HomeView.swift +++ b/OSGKeyboard/Views/HomeView.swift @@ -140,7 +140,8 @@ struct HomeView: View { } private var headerGradientColors: [Color] { - if sessionIsLive { + // 云端引擎未配置(缺 API Key)时不算就绪,保持中性灰渐变。 + if sessionIsLive, !needsCloudSetup { return [ palette.accent.opacity(0.28), palette.accent.opacity(0.10), @@ -175,7 +176,14 @@ struct HomeView: View { .fill(flowStatusColor) .frame(width: 6, height: 6) - if flowManager.isActive, + if needsCloudSetup { + // 云端引擎缺 API Key:不显示就绪 / 计时 / 结束按钮。 + Text("home.flow.notReady") + .font(TypeStyle.caption2) + .foregroundStyle(palette.warning) + .lineLimit(1) + .minimumScaleFactor(0.85) + } else if flowManager.isActive, let expires = flowManager.sessionExpiresAt { Text("home.flow.label") .font(TypeStyle.caption2) @@ -195,7 +203,10 @@ struct HomeView: View { .minimumScaleFactor(0.85) } - if flowManager.isActive { + if needsCloudSetup { + // 无按钮:引导卡片已提示去设置填 API Key。 + EmptyView() + } else if flowManager.isActive { Button { flowManager.endSession() } label: { @@ -306,6 +317,7 @@ struct HomeView: View { } private var flowStatusColor: Color { + if needsCloudSetup { return palette.warning } if flowManager.isActive { return palette.accent } if flowManager.isStarting { return palette.accent } if needsPermissionSetup { return palette.warning } diff --git a/OSGKeyboard/Views/MainAppRoot.swift b/OSGKeyboard/Views/MainAppRoot.swift index 60353c3..31d7b9d 100644 --- a/OSGKeyboard/Views/MainAppRoot.swift +++ b/OSGKeyboard/Views/MainAppRoot.swift @@ -38,6 +38,10 @@ struct MainAppRoot: View { .onAppear { flowManager.setAppForeground(scenePhase == .active) flowManager.activateOnForeground() + PersonalDictionaryCloudSync.shared.startObservingExternalChanges() + Task { + await PersonalDictionaryCloudSync.shared.pullAndMergeIfEnabled() + } } .onReceive(NotificationCenter.default.publisher(for: .osgKeyboardOpenURL)) { notification in guard let url = notification.userInfo?["url"] as? URL else { return } @@ -50,8 +54,13 @@ struct MainAppRoot: View { } .onChange(of: scenePhase) { _, phase in flowManager.handleScenePhase(phase) - guard phase == .active, config.hasCompletedOnboarding else { return } - flowManager.activateOnForeground() + guard phase == .active else { return } + if config.hasCompletedOnboarding { + flowManager.activateOnForeground() + } + Task { + await PersonalDictionaryCloudSync.shared.pullAndMergeIfEnabled() + } } } diff --git a/OSGKeyboard/Views/PersonalDictionaryICloudSyncRow.swift b/OSGKeyboard/Views/PersonalDictionaryICloudSyncRow.swift new file mode 100644 index 0000000..f6652a5 --- /dev/null +++ b/OSGKeyboard/Views/PersonalDictionaryICloudSyncRow.swift @@ -0,0 +1,99 @@ +// PersonalDictionaryICloudSyncRow.swift +// OSGKeyboard · Main App +// +// Settings-row toggle for mirroring the personal dictionary through +// iCloud Key-Value Store. Lives in Settings → 词库与润色. + +import SwiftUI +import OSGKeyboardShared + +@MainActor +struct PersonalDictionaryICloudSyncRow: View { + @Environment(\.themePalette) private var palette: ThemePalette + + @State private var isEnabled: Bool = AppGroupStore().personalDictionaryICloudSyncEnabled + @State private var syncErrorMessage: String? + @State private var isApplyingToggle = false + + private let store = AppGroupStore() + + var body: some View { + VStack(alignment: .leading, spacing: Spacing.xxs) { + Toggle(isOn: toggleBinding) { + Text("settings.personalDictionary.iCloudSync.settingsTitle") + .font(TypeStyle.body) + .foregroundStyle(palette.textPrimary) + } + .tint(palette.accent) + .disabled(isApplyingToggle) + + if let syncErrorMessage { + Text(syncErrorMessage) + .font(TypeStyle.caption2) + .foregroundStyle(.red) + .fixedSize(horizontal: false, vertical: true) + .padding(.top, Spacing.xxs) + } + } + .padding(.horizontal, Spacing.md) + .padding(.vertical, Spacing.sm) + .frame(minHeight: SettingsListMetrics.singleLineMinHeight, alignment: .leading) + .onAppear { reloadFromStore() } + .onReceive( + NotificationCenter.default.publisher(for: .personalDictionaryDidSyncFromCloud) + ) { _ in + reloadFromStore() + } + } + + private var toggleBinding: Binding { + Binding( + get: { isEnabled }, + set: { newValue in + guard newValue != isEnabled else { return } + if newValue { + enableSync() + } else { + disableSync() + } + } + ) + } + + private func reloadFromStore() { + isEnabled = store.personalDictionaryICloudSyncEnabled + } + + private func enableSync() { + isApplyingToggle = true + syncErrorMessage = nil + Task { + do { + try await PersonalDictionaryCloudSync.shared.enableSync() + reloadFromStore() + } catch let error as PersonalDictionaryCloudSyncError { + isEnabled = false + syncErrorMessage = localizedSyncError(error) + } catch { + isEnabled = false + syncErrorMessage = error.localizedDescription + } + isApplyingToggle = false + } + } + + private func disableSync() { + PersonalDictionaryCloudSync.shared.disableSync() + isEnabled = false + syncErrorMessage = nil + } + + private func localizedSyncError(_ error: PersonalDictionaryCloudSyncError) -> String { + switch error { + case .payloadTooLarge: + return AppL10n.string("settings.personalDictionary.iCloudSync.error.tooLarge") + case .encodeFailed, .decodeFailed: + return AppL10n.string("settings.personalDictionary.iCloudSync.error.generic") + } + } +} diff --git a/OSGKeyboard/Views/PersonalDictionaryView.swift b/OSGKeyboard/Views/PersonalDictionaryView.swift index 543269a..558022c 100644 --- a/OSGKeyboard/Views/PersonalDictionaryView.swift +++ b/OSGKeyboard/Views/PersonalDictionaryView.swift @@ -80,60 +80,48 @@ struct PersonalDictionaryView: View { saveManualEntry(term: term, editingID: editingEntry?.id) } } + .task { + reloadFromStore() + await PersonalDictionaryCloudSync.shared.pullAndMergeIfEnabled() + reloadFromStore() + } + .onReceive( + NotificationCenter.default.publisher(for: .personalDictionaryDidSyncFromCloud) + ) { _ in + reloadFromStore() + } } // MARK: - List private var list: some View { - ScrollView { - LazyVStack(alignment: .leading, spacing: Spacing.lg) { - introBanner - ForEach(filteredSections, id: \.0) { category, items in - section(for: category, items: items) - } - } - .padding(.horizontal, Spacing.lg) - .padding(.vertical, Spacing.md) - .tabBarScrollBottomPadding() - } - .searchable(text: $searchText, prompt: "settings.personalDictionary.search.prompt") - } - - private var introBanner: some View { - VStack(alignment: .leading, spacing: Spacing.sm) { - Text("settings.personalDictionary.intro.title") - .font(TypeStyle.caption) - .foregroundStyle(palette.textPrimary) - Text("settings.personalDictionary.intro.body") - .font(TypeStyle.caption2) - .foregroundStyle(palette.textSecondary) - .fixedSize(horizontal: false, vertical: true) - } - .frame(maxWidth: .infinity, alignment: .leading) - .padding(Spacing.md) - .background(palette.surface, in: RoundedRectangle(cornerRadius: Radius.xl, style: .continuous)) - .overlay( - RoundedRectangle(cornerRadius: Radius.xl, style: .continuous) - .stroke(palette.divider, lineWidth: 0.5) - ) - } - - private func section(for _: PersonalDictionary.Entry.Category, items: [PersonalDictionary.Entry]) -> some View { - VStack(alignment: .leading, spacing: Spacing.sm) { - VStack(spacing: 0) { - ForEach(Array(items.enumerated()), id: \.element.id) { index, entry in - entryRow(entry) - if index < items.count - 1 { - Divider().background(palette.divider) + List { + ForEach(filteredSections, id: \.0) { _, items in + Section { + ForEach(items) { entry in + entryRow(entry) + .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(palette.surface) + .listRowSeparatorTint(palette.divider) + } + .onDelete { offsets in + delete(items: items, at: offsets) } } } - .background(palette.surface, in: RoundedRectangle(cornerRadius: Radius.xl, style: .continuous)) - .overlay( - RoundedRectangle(cornerRadius: Radius.xl, style: .continuous) - .stroke(palette.divider, lineWidth: 0.5) - ) } + .listStyle(.insetGrouped) + .listSectionSpacing(Spacing.lg) + .scrollContentBackground(.hidden) + .background(palette.background) + // 让搜索栏与首个词条之间留出呼吸空间,视觉更透气。 + .contentMargins(.top, Spacing.lg, for: .scrollContent) + .searchable( + text: $searchText, + placement: .navigationBarDrawer(displayMode: .always), + prompt: "settings.personalDictionary.search.prompt" + ) + .tabBarScrollBottomPadding() } private func entryRow(_ entry: PersonalDictionary.Entry) -> some View { @@ -187,18 +175,10 @@ struct PersonalDictionaryView: View { .contentShape(Rectangle()) } .buttonStyle(.plain) - .swipeActions(edge: .trailing, allowsFullSwipe: true) { - Button(role: .destructive) { - delete(entry) - } label: { - Label("common.delete", systemImage: "trash") - } - } } private var emptyState: some View { VStack(spacing: Spacing.sm) { - Spacer() Image(systemName: "square.stack.3d.down.right.fill") .font(.system(size: 36, weight: .regular)) .foregroundStyle(palette.textTertiary.opacity(0.5)) @@ -219,8 +199,11 @@ struct PersonalDictionaryView: View { .buttonStyle(.borderedProminent) .tint(palette.accent) .padding(.top, Spacing.sm) - Spacer() } + // 内容按自身高度居中,再上移抵消 large title 占用的顶部空间, + // 让空状态在整屏视觉上真正垂直居中。 + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) + .padding(.bottom, 72) } // MARK: - Derived data @@ -285,6 +268,12 @@ struct PersonalDictionaryView: View { persist() } + private func delete(items: [PersonalDictionary.Entry], at offsets: IndexSet) { + for index in offsets { + delete(items[index]) + } + } + private func clearAll() { dictionary = .empty generatingAliasEntryIDs = [] @@ -294,6 +283,13 @@ struct PersonalDictionaryView: View { private func persist() { dictionary.version += 1 store.setPersonalDictionary(dictionary) + Task { + try? await PersonalDictionaryCloudSync.shared.pushLocalIfEnabled(dictionary) + } + } + + private func reloadFromStore() { + dictionary = store.personalDictionary } } diff --git a/OSGKeyboard/Views/ProviderPickerSection.swift b/OSGKeyboard/Views/ProviderPickerSection.swift index aead618..586a673 100644 --- a/OSGKeyboard/Views/ProviderPickerSection.swift +++ b/OSGKeyboard/Views/ProviderPickerSection.swift @@ -48,6 +48,10 @@ struct ProviderPickerSection: View { .font(TypeStyle.body) .foregroundStyle(palette.textPrimary) + if provider.supportsPersonalDictionaryCloudASR { + personalDictionaryBadge + } + Spacer(minLength: Spacing.xs) if selected { @@ -80,6 +84,16 @@ struct ProviderPickerSection: View { } } } + + /// 通义千问 / 智谱 GLM 等支持云端 ASR 热词 API 的提供商。 + private var personalDictionaryBadge: some View { + Text("settings.provider.personalDictionaryBadge") + .font(TypeStyle.caption2) + .foregroundStyle(palette.accent) + .padding(.horizontal, Spacing.sm) + .padding(.vertical, 4) + .background(palette.accentMuted, in: Capsule()) + } } enum ProviderLogo { diff --git a/OSGKeyboard/Views/SettingsView.swift b/OSGKeyboard/Views/SettingsView.swift index ae10183..b49b0f8 100644 --- a/OSGKeyboard/Views/SettingsView.swift +++ b/OSGKeyboard/Views/SettingsView.swift @@ -40,6 +40,7 @@ struct SettingsView: View { ScrollView { VStack(spacing: Spacing.md) { languageAndPolishSection + dictionaryAndPolishSection flowSessionSection engineSection // v0.2.1: hide provider/api card when the @@ -180,15 +181,6 @@ struct SettingsView: View { Divider().background(palette.divider) - polishIntensityPreferenceRows - - if config.isTranslationRowVisible { - Divider().background(palette.divider) - TranslationPickerRow(config: config, isVisible: true) - } - - Divider().background(palette.divider) - cursorDragNavigationToggleRow } .background(palette.surface, in: RoundedRectangle(cornerRadius: Radius.xl, style: .continuous)) @@ -220,6 +212,30 @@ struct SettingsView: View { } } + // MARK: - Dictionary & polish + + private var dictionaryAndPolishSection: some View { + VStack(alignment: .leading, spacing: SettingsListMetrics.sectionLabelSpacing) { + sectionHeader("settings.dictionaryAndPolish.title") + VStack(spacing: 0) { + polishIntensityPreferenceRows + + Divider().background(palette.divider) + + TranslationPickerRow(config: config, isVisible: config.isTranslationRowVisible) + + Divider().background(palette.divider) + + PersonalDictionaryICloudSyncRow() + } + .background(palette.surface, in: RoundedRectangle(cornerRadius: Radius.xl, style: .continuous)) + .overlay( + RoundedRectangle(cornerRadius: Radius.xl, style: .continuous) + .stroke(palette.divider, lineWidth: 0.5) + ) + } + } + /// v0.2.1 follow-up: dedicated section for the local engine's /// settings (cloud-polish toggle + translation row). Renders only /// when `engineMode == "local"` so the cloud-engine user doesn't diff --git a/OSGKeyboard/en.lproj/Localizable.strings b/OSGKeyboard/en.lproj/Localizable.strings index a5076e1..a85d4a0 100644 --- a/OSGKeyboard/en.lproj/Localizable.strings +++ b/OSGKeyboard/en.lproj/Localizable.strings @@ -98,8 +98,10 @@ "settings.engine.local.ios26" = "Always on-device, no network."; "settings.engine.local.legacy" = "On-device ASR. Transcription only, no polish."; "settings.engine.cloud.title" = "Cloud recognition & polish"; -"settings.engine.cloud.subtitle" = "On-device ASR + polish via your API. Text is sent to the endpoint you configure."; +"settings.engine.cloud.subtitle" = "Cloud ASR (with your dictionary) + API polish. Audio is sent to your provider."; +"settings.engine.cloud.badge" = "Cloud engine"; "settings.provider.title" = "Provider"; +"settings.provider.personalDictionaryBadge" = "Personal dictionary"; "settings.provider.subtitle" = "Pick the LLM that polishes your dictation."; "provider.openai" = "OpenAI"; "provider.deepseek" = "DeepSeek"; @@ -141,6 +143,7 @@ "settings.systemPrompt.hint" = "Used by the cloud LLM when polishing your dictation. Local engine skips this step."; "settings.about.title" = "About"; "settings.preferences.title" = "Preferences"; +"settings.dictionaryAndPolish.title" = "Dictionary & polish"; "settings.handedness.title" = "Handedness"; "settings.handedness.left" = "Left hand"; "settings.handedness.right" = "Right hand"; @@ -283,6 +286,7 @@ "home.flow.active" = "Voice session active"; "home.flow.label" = "Ready"; "home.flow.inactive" = "Voice session inactive"; +"home.flow.notReady" = "Not ready"; "home.flow.hint" = "Switch to any app and tap the keyboard mic to dictate."; "home.setup.permission.mic" = "Microphone access is off — voice input won't work."; "home.setup.permission.speech" = "Speech recognition is off — voice input won't work."; @@ -346,7 +350,7 @@ "settings.personalDictionary.intro.title" = "About your dictionary"; "settings.personalDictionary.intro.body" = "Add words manually. Common speech-recognition mishearings are generated automatically after you save. Tap a word to edit."; "settings.personalDictionary.empty.title" = "No words yet"; -"settings.personalDictionary.empty.body" = "Add words you want protected during speech correction."; +"settings.personalDictionary.empty.body" = "Add your personal dictionary to improve recognition accuracy\nSyncs across devices via iCloud"; "settings.personalDictionary.search.prompt" = "Search words"; "settings.personalDictionary.usageCount" = "%lld uses"; "settings.personalDictionary.add.title" = "Add word"; @@ -358,6 +362,11 @@ "settings.personalDictionary.clearAll.confirmTitle" = "Clear all dictionary words?"; "settings.personalDictionary.clearAll.message" = "This removes every word the LLM was protecting. This cannot be undone."; "settings.personalDictionary.clearAll.confirm" = "Clear all"; +"settings.personalDictionary.iCloudSync.title" = "Sync via iCloud"; +"settings.personalDictionary.iCloudSync.settingsTitle" = "Personal dictionary iCloud sync"; +"settings.personalDictionary.iCloudSync.subtitle" = "Keep your dictionary in sync across iPhone, iPad, and Mac. Data stays in your private iCloud account and is not used for training."; +"settings.personalDictionary.iCloudSync.error.tooLarge" = "Dictionary is too large to sync via iCloud. Remove some entries and try again."; +"settings.personalDictionary.iCloudSync.error.generic" = "Could not sync your dictionary with iCloud. Try again later."; /* v0.3.0: Polish intensity */ "settings.polishIntensity.title" = "Polish intensity"; diff --git a/OSGKeyboard/zh-Hans.lproj/Localizable.strings b/OSGKeyboard/zh-Hans.lproj/Localizable.strings index ad8d2e1..c1d3f52 100644 --- a/OSGKeyboard/zh-Hans.lproj/Localizable.strings +++ b/OSGKeyboard/zh-Hans.lproj/Localizable.strings @@ -98,8 +98,10 @@ "settings.engine.local.ios26" = "全程在手机本地,不用联网"; "settings.engine.local.legacy" = "端侧 ASR,仅转录,无润色。"; "settings.engine.cloud.title" = "云端识别与润色"; -"settings.engine.cloud.subtitle" = "本地转写 + 你配置的 API 润色,文字发往该第三方服务"; +"settings.engine.cloud.subtitle" = "云端 ASR(含个性词库)+ API 润色,音频将发往第三方服务"; +"settings.engine.cloud.badge" = "云端引擎"; "settings.provider.title" = "云端引擎"; +"settings.provider.personalDictionaryBadge" = "个性词库"; "settings.provider.subtitle" = "选择 LLM 提供商。"; "provider.openai" = "OpenAI"; "provider.deepseek" = "DeepSeek"; @@ -141,6 +143,7 @@ "settings.systemPrompt.hint" = "云端润色时使用。本地识别模式不会用到此提示词。"; "settings.about.title" = "关于"; "settings.preferences.title" = "偏好设置"; +"settings.dictionaryAndPolish.title" = "词库与润色"; "settings.handedness.title" = "握持偏好"; "settings.handedness.left" = "左手"; "settings.handedness.right" = "右手"; @@ -282,6 +285,7 @@ "home.flow.active" = "语音会话进行中"; "home.flow.label" = "就绪"; "home.flow.inactive" = "语音会话未启动"; +"home.flow.notReady" = "未就绪"; "home.flow.hint" = "切到别的 App,点键盘麦克风就能说。"; "home.setup.permission.mic" = "麦克风还没授权,语音输入用不了。"; "home.setup.permission.speech" = "语音识别还没授权,语音输入用不了。"; @@ -345,7 +349,7 @@ "settings.personalDictionary.intro.title" = "关于词库"; "settings.personalDictionary.intro.body" = "手动添加词条;保存后会自动生成常见误识别写法。点击词条可编辑。"; "settings.personalDictionary.empty.title" = "还没有词条"; -"settings.personalDictionary.empty.body" = "添加希望在语音纠错时保护的词汇。"; +"settings.personalDictionary.empty.body" = "添加个性化词库,提升识别准确性\n词库将通过 iCloud 实现跨设备同步"; "settings.personalDictionary.search.prompt" = "搜索词条"; "settings.personalDictionary.usageCount" = "使用 %lld 次"; "settings.personalDictionary.add.title" = "添加词条"; @@ -357,9 +361,14 @@ "settings.personalDictionary.clearAll.confirmTitle" = "清空全部词条?"; "settings.personalDictionary.clearAll.message" = "这会移除所有受保护的词汇,且无法撤销。"; "settings.personalDictionary.clearAll.confirm" = "全部清空"; +"settings.personalDictionary.iCloudSync.title" = "通过 iCloud 同步"; +"settings.personalDictionary.iCloudSync.settingsTitle" = "个性词库 iCloud 同步"; +"settings.personalDictionary.iCloudSync.subtitle" = "在 iPhone、iPad 和 Mac 之间同步词库。数据仅保存在你的私人 iCloud 账户中,不会用于训练。"; +"settings.personalDictionary.iCloudSync.error.tooLarge" = "词库过大,无法通过 iCloud 同步。请删除部分词条后重试。"; +"settings.personalDictionary.iCloudSync.error.generic" = "无法与 iCloud 同步词库,请稍后重试。"; -/* v0.3.0: 润色档位 */ -"settings.polishIntensity.title" = "润色档位"; +/* v0.3.0: 润色强度 */ +"settings.polishIntensity.title" = "润色强度"; /* Flow 会话策略 */ "settings.flow.title" = "语音会话"; diff --git a/OSGKeyboardShared/Models/AppGroupConfiguration.swift b/OSGKeyboardShared/Models/AppGroupConfiguration.swift index b3a01fe..4730a02 100644 --- a/OSGKeyboardShared/Models/AppGroupConfiguration.swift +++ b/OSGKeyboardShared/Models/AppGroupConfiguration.swift @@ -30,6 +30,8 @@ public struct AppGroupConfiguration: Sendable, Equatable { public static let detectedAppContext = "config.detectedAppContext" public static let detectedAppContextAt = "config.detectedAppContextAt" public static let personalDictionary = "config.personalDictionary.v1" + /// When true, the main app mirrors the personal dictionary via iCloud KVS. + public static let personalDictionaryICloudSyncEnabled = "config.personalDictionary.iCloudSyncEnabled" /// When true, the host app auto-returns to the source app after a cold-start handoff. public static let flowSkipAppSwitch = "config.flowSkipAppSwitch" /// Raw `FlowInactivityDuration` value; session expires after this idle window. @@ -53,6 +55,8 @@ public struct AppGroupConfiguration: Sendable, Equatable { public var cursorDragNavigationEnabled: Bool public var polishIntensity: PolishIntensity public var personalDictionary: PersonalDictionary + /// Opt-in iCloud KVS sync for the personal dictionary (main app only). + public var personalDictionaryICloudSyncEnabled: Bool /// Auto-return to the host app after `startflow` cold start (default on). public var flowSkipAppSwitch: Bool /// Idle timeout before the Flow session ends; resets on each utterance. @@ -154,6 +158,12 @@ public struct AppGroupConfiguration: Sendable, Equatable { }(), polishIntensity: resolvePolishIntensity(from: defaults), personalDictionary: decodePersonalDictionary(from: defaults), + personalDictionaryICloudSyncEnabled: { + if defaults.object(forKey: Keys.personalDictionaryICloudSyncEnabled) == nil { + return true + } + return defaults.bool(forKey: Keys.personalDictionaryICloudSyncEnabled) + }(), flowSkipAppSwitch: { if defaults.object(forKey: Keys.flowSkipAppSwitch) == nil { return true @@ -212,6 +222,7 @@ public struct AppGroupConfiguration: Sendable, Equatable { defaults.set(polishIntensity.rawValue, forKey: Keys.polishIntensity) defaults.set(flowSkipAppSwitch, forKey: Keys.flowSkipAppSwitch) defaults.set(flowInactivityDuration.rawValue, forKey: Keys.flowInactivityDuration) + defaults.set(personalDictionaryICloudSyncEnabled, forKey: Keys.personalDictionaryICloudSyncEnabled) Self.encodePersonalDictionary(personalDictionary, to: defaults) } diff --git a/OSGKeyboardShared/Models/CloudASRModels.swift b/OSGKeyboardShared/Models/CloudASRModels.swift new file mode 100644 index 0000000..1f1ba6b --- /dev/null +++ b/OSGKeyboardShared/Models/CloudASRModels.swift @@ -0,0 +1,121 @@ +// CloudASRModels.swift +// OSGKeyboard · Shared +// +// Cloud-engine ASR routing: which provider uses official hotwords / +// vocabulary APIs vs. a transcription prompt bias. + +import Foundation + +/// How a cloud provider applies the user's personal dictionary during ASR. +public enum CloudASRStrategy: String, Sendable, Equatable { + /// 智谱 GLM-ASR — `hotwords` + optional `prompt`. + case zhipuHotwords + /// 阿里百炼 Fun-ASR — managed `vocabulary_id` + context text. + case alibabaVocabulary + /// OpenAI / 小米 MiMo / 自定义端点 — `prompt` on transcription APIs. + case prompt + /// Moonshot 托管 API 暂无音频转写;云端引擎回退端侧 ASR。 + case localFallback +} + +public enum CloudASRError: Error, LocalizedError, Sendable, Equatable { + case noAPIKey + case invalidURL + case http(status: Int, message: String?) + case decoding(String) + case transport(String) + case emptyTranscript + case audioTooLong + case providerUnsupported + + public var errorDescription: String? { + switch self { + case .noAPIKey: + return SharedL10n.string("error.cloudASR.noAPIKey") + case .invalidURL: + return SharedL10n.string("error.cloudASR.invalidURL") + case .http(let status, let message): + if let message, !message.isEmpty { + return SharedL10n.format("error.cloudASR.httpWithMessage", status, message) + } + return SharedL10n.format("error.cloudASR.http", status) + case .decoding(let detail): + return SharedL10n.format("error.cloudASR.decoding", detail) + case .transport(let detail): + return SharedL10n.format("error.cloudASR.transport", detail) + case .emptyTranscript: + return SharedL10n.string("error.cloudASR.emptyTranscript") + case .audioTooLong: + return SharedL10n.string("error.cloudASR.audioTooLong") + case .providerUnsupported: + return SharedL10n.string("error.cloudASR.providerUnsupported") + } + } +} + +public enum CloudASRModelCatalog { + /// Sync Fun-ASR Flash — base64 upload, ≤ 5 min, supports context + vocabulary. + public static let alibabaFunASRFlash = "fun-asr-flash-2026-06-15" + /// Must match the ASR model used at recognition time. + public static let alibabaVocabularyTargetModel = alibabaFunASRFlash + + public static let zhipuGLMASR = "glm-asr-2512" + public static let openAITranscribe = "gpt-4o-mini-transcribe" + public static let openAIWhisper = "whisper-1" + public static let mimoASR = "mimo-v2.5-asr" + + public static let alibabaAPIBase = "https://dashscope.aliyuncs.com/api/v1" + public static let alibabaCustomizationPath = "/services/audio/asr/customization" + public static let alibabaMultimodalPath = "/services/aigc/multimodal-generation/generation" + public static let zhipuTranscriptionPath = "/audio/transcriptions" + + public static func strategy(for providerId: String) -> CloudASRStrategy { + switch providerId { + case "zhipu": + return .zhipuHotwords + case "qwen": + return .alibabaVocabulary + case "moonshot": + return .localFallback + case "openai", "mimo", "custom": + return .prompt + default: + return .prompt + } + } + + public static func defaultModel(for providerId: String) -> String { + switch providerId { + case "zhipu": + return zhipuGLMASR + case "qwen": + return alibabaFunASRFlash + case "mimo": + return mimoASR + case "openai", "custom": + return openAITranscribe + default: + return openAITranscribe + } + } +} + +extension LLMProvider { + public var cloudASRStrategy: CloudASRStrategy { + CloudASRModelCatalog.strategy(for: id) + } + + public var defaultCloudASRModel: String { + CloudASRModelCatalog.defaultModel(for: id) + } + + /// Official hotwords / vocabulary APIs during cloud ASR (not prompt-only bias). + public var supportsPersonalDictionaryCloudASR: Bool { + switch cloudASRStrategy { + case .zhipuHotwords, .alibabaVocabulary: + return true + case .prompt, .localFallback: + return false + } + } +} diff --git a/OSGKeyboardShared/Models/PersonalDictionary+ASRBias.swift b/OSGKeyboardShared/Models/PersonalDictionary+ASRBias.swift new file mode 100644 index 0000000..1a2341d --- /dev/null +++ b/OSGKeyboardShared/Models/PersonalDictionary+ASRBias.swift @@ -0,0 +1,114 @@ +// PersonalDictionary+ASRBias.swift +// OSGKeyboard · Shared +// +// Formats the user dictionary for cloud ASR bias (hotwords, Alibaba +// vocabulary entries, or Whisper-style prompt fragments). + +import Foundation +import CryptoKit + +public struct AlibabaHotwordEntry: Codable, Sendable, Equatable { + public let text: String + public let weight: Int + public let lang: String? + + public init(text: String, weight: Int = 4, lang: String? = nil) { + self.text = text + self.weight = weight + self.lang = lang + } +} + +extension PersonalDictionary { + /// Stable fingerprint used to decide when to refresh Alibaba vocabulary. + public func vocabularySyncFingerprint() -> String { + let payload = effectiveEntries + .sorted { $0.term.localizedCaseInsensitiveCompare($1.term) == .orderedAscending } + .map { entry in + let aliases = entry.aliases + .sorted { $0.localizedCaseInsensitiveCompare($1) == .orderedAscending } + .joined(separator: ",") + return "\(entry.term.lowercased())|\(aliases)" + } + .joined(separator: ";") + let digest = SHA256.hash(data: Data(payload.utf8)) + return digest.map { String(format: "%02x", $0) }.joined() + } + + /// 智谱 `hotwords` — canonical terms only (aliases go to `asrPromptBias`). + public func asrHotwords(maxCount: Int = 100) -> [String] { + var seen = Set() + var words: [String] = [] + for entry in effectiveEntries { + let term = entry.term.trimmingCharacters(in: .whitespacesAndNewlines) + guard !term.isEmpty else { continue } + let key = term.lowercased() + guard seen.insert(key).inserted else { continue } + words.append(term) + if words.count >= maxCount { break } + } + return words + } + + /// 阿里百炼热词表 — `text` + `weight` (+ optional `lang`). + public func alibabaHotwordEntries(maxCount: Int = 500, defaultWeight: Int = 4) -> [AlibabaHotwordEntry] { + var seen = Set() + var entries: [AlibabaHotwordEntry] = [] + for entry in effectiveEntries { + let term = entry.term.trimmingCharacters(in: .whitespacesAndNewlines) + guard !term.isEmpty, term.count <= 15 else { continue } + let key = term.lowercased() + guard seen.insert(key).inserted else { continue } + entries.append( + AlibabaHotwordEntry( + text: term, + weight: defaultWeight, + lang: Self.inferAlibabaLang(for: term) + ) + ) + if entries.count >= maxCount { break } + } + return entries + } + + /// Whisper / OpenAI-style short prompt bias (also used by MiMo text hint). + public func asrPromptBias(maxCharacters: Int = 800) -> String { + let entries = effectiveEntries + guard !entries.isEmpty else { return "" } + + var lines: [String] = [] + for entry in entries { + if entry.aliases.isEmpty { + lines.append(entry.term) + } else { + let aliasHint = entry.aliases.prefix(4).joined(separator: ", ") + lines.append("\(entry.term)(常见误识别:\(aliasHint))") + } + let joined = lines.joined(separator: ";") + if joined.count > maxCharacters { + if lines.count == 1 { + return String(joined.prefix(maxCharacters)) + } + lines.removeLast() + break + } + } + + guard !lines.isEmpty else { return "" } + let body = lines.joined(separator: ";") + return "用户专有词汇,转写时请优先使用以下标准写法:\(body)" + } + + /// Compact domain context for Alibaba Fun-ASR Flash `input_text`. + public func alibabaContextText(maxCharacters: Int = 1200) -> String { + let prompt = asrPromptBias(maxCharacters: maxCharacters) + guard !prompt.isEmpty else { return "" } + return prompt + } + + private static func inferAlibabaLang(for term: String) -> String? { + let hasNonASCII = term.unicodeScalars.contains { !$0.isASCII } + if hasNonASCII { return "zh" } + return "en" + } +} diff --git a/OSGKeyboardShared/Models/PersonalDictionary+Merging.swift b/OSGKeyboardShared/Models/PersonalDictionary+Merging.swift new file mode 100644 index 0000000..f6d558a --- /dev/null +++ b/OSGKeyboardShared/Models/PersonalDictionary+Merging.swift @@ -0,0 +1,91 @@ +// PersonalDictionary+Merging.swift +// OSGKeyboard · Shared +// +// Deterministic merge rules for iCloud KVS sync. Pure logic — no +// NSUbiquitousKeyValueStore dependency so unit tests stay hermetic. + +import Foundation + +extension PersonalDictionary { + /// Merges two dictionary snapshots for cross-device sync. + /// + /// Rules: + /// - Same `id`: keep the entry with the newer `updatedAt`. + /// - Same canonical term (case-insensitive) but different `id`: union + /// aliases, take max `usageCount`, keep the newer entry's fields. + public static func merge(local: PersonalDictionary, remote: PersonalDictionary) -> PersonalDictionary { + var mergedByID: [UUID: Entry] = [:] + var canonicalOwner: [String: UUID] = [:] + + func insertOrMerge(_ candidate: Entry) { + let key = candidate.term.lowercased() + if let existingID = canonicalOwner[key], var existing = mergedByID[existingID] { + if candidate.id == existingID { + mergedByID[existingID] = resolveEntryConflict(existing: existing, incoming: candidate) + return + } + existing = mergeSameTerm(existing: existing, incoming: candidate) + mergedByID[existingID] = existing + return + } + + if let existing = mergedByID[candidate.id] { + mergedByID[candidate.id] = resolveEntryConflict(existing: existing, incoming: candidate) + canonicalOwner[key] = candidate.id + return + } + + mergedByID[candidate.id] = candidate + canonicalOwner[key] = candidate.id + } + + for entry in local.entries { insertOrMerge(entry) } + for entry in remote.entries { insertOrMerge(entry) } + + let mergedEntries = mergedByID.values.sorted { + if $0.updatedAt != $1.updatedAt { + return $0.updatedAt > $1.updatedAt + } + return $0.term.localizedCaseInsensitiveCompare($1.term) == .orderedAscending + } + + let lastSyncedAt = [local.lastSyncedAt, remote.lastSyncedAt] + .compactMap { $0 } + .max() + + return PersonalDictionary( + entries: mergedEntries, + version: max(local.version, remote.version) + 1, + lastSyncedAt: lastSyncedAt + ) + } + + private static func resolveEntryConflict(existing: Entry, incoming: Entry) -> Entry { + incoming.updatedAt >= existing.updatedAt ? incoming : existing + } + + private static func mergeSameTerm(existing: Entry, incoming: Entry) -> Entry { + let winner = incoming.updatedAt >= existing.updatedAt ? incoming : existing + let loser = winner.id == existing.id ? incoming : existing + var merged = winner + merged.aliases = unionAliases( + existing: winner.aliases, + incoming: loser.aliases, + excludingTerm: winner.term + ) + merged.usageCount = max(winner.usageCount, loser.usageCount) + merged.updatedAt = max(winner.updatedAt, loser.updatedAt) + return merged + } + + private static func unionAliases( + existing: [String], + incoming: [String], + excludingTerm: String + ) -> [String] { + let termLower = excludingTerm.lowercased() + return Array( + Set((existing + incoming).filter { $0.lowercased() != termLower }) + ).sorted { $0.localizedCaseInsensitiveCompare($1) == .orderedAscending } + } +} diff --git a/OSGKeyboardShared/Models/PersonalDictionary.swift b/OSGKeyboardShared/Models/PersonalDictionary.swift index 4f28bb7..1df5614 100644 --- a/OSGKeyboardShared/Models/PersonalDictionary.swift +++ b/OSGKeyboardShared/Models/PersonalDictionary.swift @@ -21,10 +21,33 @@ import Foundation public struct PersonalDictionary: Codable, Sendable, Equatable { public var entries: [Entry] public var version: Int + /// When this dictionary blob was last successfully pushed to iCloud KVS. + public var lastSyncedAt: Date? - public init(entries: [Entry] = [], version: Int = 1) { + public init(entries: [Entry] = [], version: Int = 1, lastSyncedAt: Date? = nil) { self.entries = entries self.version = version + self.lastSyncedAt = lastSyncedAt + } + + private enum CodingKeys: String, CodingKey { + case entries + case version + case lastSyncedAt + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + entries = try container.decodeIfPresent([Entry].self, forKey: .entries) ?? [] + version = try container.decodeIfPresent(Int.self, forKey: .version) ?? 1 + lastSyncedAt = try container.decodeIfPresent(Date.self, forKey: .lastSyncedAt) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(entries, forKey: .entries) + try container.encode(version, forKey: .version) + try container.encodeIfPresent(lastSyncedAt, forKey: .lastSyncedAt) } public struct Entry: Codable, Sendable, Equatable, Identifiable { @@ -34,6 +57,8 @@ public struct PersonalDictionary: Codable, Sendable, Equatable { public var category: Category public var source: Source public var createdAt: Date + /// Last mutation time — used for iCloud merge conflict resolution. + public var updatedAt: Date public var usageCount: Int public init( @@ -43,6 +68,7 @@ public struct PersonalDictionary: Codable, Sendable, Equatable { category: Category, source: Source, createdAt: Date = Date(), + updatedAt: Date? = nil, usageCount: Int = 0 ) { self.id = id @@ -51,9 +77,45 @@ public struct PersonalDictionary: Codable, Sendable, Equatable { self.category = category self.source = source self.createdAt = createdAt + self.updatedAt = updatedAt ?? createdAt self.usageCount = usageCount } + private enum CodingKeys: String, CodingKey { + case id + case term + case aliases + case category + case source + case createdAt + case updatedAt + case usageCount + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + id = try container.decode(UUID.self, forKey: .id) + term = try container.decode(String.self, forKey: .term) + aliases = try container.decodeIfPresent([String].self, forKey: .aliases) ?? [] + category = try container.decode(Category.self, forKey: .category) + source = try container.decode(Source.self, forKey: .source) + createdAt = try container.decodeIfPresent(Date.self, forKey: .createdAt) ?? Date() + updatedAt = try container.decodeIfPresent(Date.self, forKey: .updatedAt) ?? createdAt + usageCount = try container.decodeIfPresent(Int.self, forKey: .usageCount) ?? 0 + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(id, forKey: .id) + try container.encode(term, forKey: .term) + try container.encode(aliases, forKey: .aliases) + try container.encode(category, forKey: .category) + try container.encode(source, forKey: .source) + try container.encode(createdAt, forKey: .createdAt) + try container.encode(updatedAt, forKey: .updatedAt) + try container.encode(usageCount, forKey: .usageCount) + } + public enum Category: String, Codable, Sendable, CaseIterable { /// Person / place / brand / organization. case properNoun @@ -140,6 +202,7 @@ extension PersonalDictionary { category: .productName, source: .manual, createdAt: Date(timeIntervalSince1970: 0), + updatedAt: Date(timeIntervalSince1970: 0), usageCount: 0 ), ] @@ -182,6 +245,7 @@ extension PersonalDictionary { if termChanged || regenerateAliases { entry.aliases = [] } + entry.updatedAt = Date() entries[idx] = entry return entry } @@ -193,15 +257,19 @@ extension PersonalDictionary { entry.term = trimmed entry.category = category entry.source = .manual + entry.updatedAt = Date() entries[idx] = entry return entry } + let now = Date() let entry = Entry( term: trimmed, aliases: [], category: category, - source: .manual + source: .manual, + createdAt: now, + updatedAt: now ) entries.append(entry) return entry @@ -216,6 +284,7 @@ extension PersonalDictionary { entries[idx].aliases = Array( Set(cleaned.filter { $0.lowercased() != termLower }) ).sorted { $0.localizedCaseInsensitiveCompare($1) == .orderedAscending } + entries[idx].updatedAt = Date() } /// Renders the entire dictionary as a prompt fragment. Entries diff --git a/OSGKeyboardShared/Models/ProviderConfig.swift b/OSGKeyboardShared/Models/ProviderConfig.swift index dde83f6..a49e571 100644 --- a/OSGKeyboardShared/Models/ProviderConfig.swift +++ b/OSGKeyboardShared/Models/ProviderConfig.swift @@ -64,7 +64,7 @@ public final class ProviderConfig: ObservableObject, @unchecked Sendable { } } /// "local" → on-device ASR + built-in DeepSeek polish. - /// "cloud" → on-device ASR + user's cloud LLM polish. + /// "cloud" → provider cloud ASR (with personal dictionary) + user's cloud LLM polish. @Published public var engineMode: String { didSet { guard !isApplyingConfiguration, engineMode != configuration.engineMode else { return } diff --git a/OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin b/OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin index 26c21f4..dc0cd16 100644 Binary files a/OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin and b/OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin differ diff --git a/OSGKeyboardShared/Resources/CustomLanguageModel/v1/compiled-manifest.json b/OSGKeyboardShared/Resources/CustomLanguageModel/v1/compiled-manifest.json index 108774a..b3d52cd 100644 --- a/OSGKeyboardShared/Resources/CustomLanguageModel/v1/compiled-manifest.json +++ b/OSGKeyboardShared/Resources/CustomLanguageModel/v1/compiled-manifest.json @@ -1,13 +1,13 @@ { - "bin_bytes" : 174285, + "bin_bytes" : 198494, "bin_file" : "OSGKeyboardCLM.bin", - "export_seconds" : 0.029847979545593262, - "generated_at" : "2026-07-05T11:34:09Z", + "export_seconds" : 0.035165071487426758, + "generated_at" : "2026-07-06T13:16:27Z", "identifier" : "com.osgkeyboard.custom-lm.v1", "locale" : "zh_CN", - "phrase_count" : 11550, + "phrase_count" : 13329, "sources" : { - "ai_tech_seed" : 1259, + "ai_tech_seed" : 3040, "computer_terms" : 10300 }, "version" : "1.0.0" diff --git a/OSGKeyboardShared/Services/ASRService.swift b/OSGKeyboardShared/Services/ASRService.swift index 5ffd1ea..8602358 100644 --- a/OSGKeyboardShared/Services/ASRService.swift +++ b/OSGKeyboardShared/Services/ASRService.swift @@ -121,9 +121,13 @@ public enum ASREvent: Sendable, Equatable { // MARK: - Factory public enum ASRServiceFactory { - /// Returns the on-device `SpeechAnalyzer` + `DictationTranscriber` backend. - public static func make() -> ASRService { - SpeechAnalyzerASR() + /// Returns on-device SpeechAnalyzer for `local`, or the user's cloud + /// ASR provider when `engineMode == "cloud"`. + public static func make(store: AppGroupStore = AppGroupStore()) -> ASRService { + if store.engineMode == "cloud" { + return CloudASRService(store: store) + } + return SpeechAnalyzerASR() } } diff --git a/OSGKeyboardShared/Services/AppGroupStore.swift b/OSGKeyboardShared/Services/AppGroupStore.swift index a10f01f..8553c3c 100644 --- a/OSGKeyboardShared/Services/AppGroupStore.swift +++ b/OSGKeyboardShared/Services/AppGroupStore.swift @@ -155,6 +155,16 @@ public struct AppGroupStore: @unchecked Sendable { public func setPersonalDictionary(_ dictionary: PersonalDictionary) { mutateConfiguration { $0.personalDictionary = dictionary } + AppGroupConfigDarwin.postConfigChanged() + } + + public var personalDictionaryICloudSyncEnabled: Bool { + get { configuration.personalDictionaryICloudSyncEnabled } + set { setPersonalDictionaryICloudSyncEnabled(newValue) } + } + + public func setPersonalDictionaryICloudSyncEnabled(_ enabled: Bool) { + mutateConfiguration { $0.personalDictionaryICloudSyncEnabled = enabled } } // MARK: - Client diff --git a/OSGKeyboardShared/Services/CloudASR/AlibabaVocabularySync.swift b/OSGKeyboardShared/Services/CloudASR/AlibabaVocabularySync.swift new file mode 100644 index 0000000..0adfb7b --- /dev/null +++ b/OSGKeyboardShared/Services/CloudASR/AlibabaVocabularySync.swift @@ -0,0 +1,169 @@ +// AlibabaVocabularySync.swift +// OSGKeyboard · Shared +// +// Syncs PersonalDictionary → DashScope custom vocabulary (Fun-ASR Flash). + +import Foundation + +public enum AlibabaVocabularySync { + public enum Keys { + public static let vocabularyId = "config.alibabaASRVocabularyId" + public static let fingerprint = "config.alibabaASRVocabularyFingerprint" + } + + private static let vocabularyPrefix = "osgkb" + + /// Returns a ready `vocabulary_id`, creating or updating the remote list as needed. + public static func ensureVocabularyID( + dictionary: PersonalDictionary, + apiKey: String, + targetModel: String = CloudASRModelCatalog.alibabaVocabularyTargetModel, + defaults: UserDefaults, + session: URLSession = .shared + ) async throws -> String? { + let entries = dictionary.alibabaHotwordEntries() + guard !entries.isEmpty else { + clearCache(defaults: defaults) + return nil + } + + let fingerprint = dictionary.vocabularySyncFingerprint() + if let cachedID = defaults.string(forKey: Keys.vocabularyId), + defaults.string(forKey: Keys.fingerprint) == fingerprint, + !cachedID.isEmpty { + return cachedID + } + + let url = try customizationURL() + if let existingID = defaults.string(forKey: Keys.vocabularyId), !existingID.isEmpty { + try await updateVocabulary( + id: existingID, + entries: entries, + apiKey: apiKey, + url: url, + session: session + ) + cache(id: existingID, fingerprint: fingerprint, defaults: defaults) + return existingID + } + + let createdID = try await createVocabulary( + entries: entries, + targetModel: targetModel, + apiKey: apiKey, + url: url, + session: session + ) + cache(id: createdID, fingerprint: fingerprint, defaults: defaults) + return createdID + } + + public static func clearCache(defaults: UserDefaults) { + defaults.removeObject(forKey: Keys.vocabularyId) + defaults.removeObject(forKey: Keys.fingerprint) + } + + private static func cache(id: String, fingerprint: String, defaults: UserDefaults) { + defaults.set(id, forKey: Keys.vocabularyId) + defaults.set(fingerprint, forKey: Keys.fingerprint) + } + + private static func customizationURL() throws -> URL { + let raw = CloudASRModelCatalog.alibabaAPIBase + CloudASRModelCatalog.alibabaCustomizationPath + guard let url = URL(string: raw) else { throw CloudASRError.invalidURL } + return url + } + + private static func createVocabulary( + entries: [AlibabaHotwordEntry], + targetModel: String, + apiKey: String, + url: URL, + session: URLSession + ) async throws -> String { + let vocabulary = entries.map { entry -> [String: Any] in + var item: [String: Any] = ["text": entry.text, "weight": entry.weight] + if let lang = entry.lang { item["lang"] = lang } + return item + } + let body: [String: Any] = [ + "model": "speech-biasing", + "input": [ + "action": "create_vocabulary", + "target_model": targetModel, + "prefix": vocabularyPrefix, + "vocabulary": vocabulary, + ] as [String: Any], + ] + let data = try await postJSON(body, to: url, apiKey: apiKey, session: session) + guard let id = parseVocabularyID(from: data) else { + throw CloudASRError.decoding("missing vocabulary_id") + } + return id + } + + private static func updateVocabulary( + id: String, + entries: [AlibabaHotwordEntry], + apiKey: String, + url: URL, + session: URLSession + ) async throws { + let vocabulary = entries.map { entry -> [String: Any] in + var item: [String: Any] = ["text": entry.text, "weight": entry.weight] + if let lang = entry.lang { item["lang"] = lang } + return item + } + let body: [String: Any] = [ + "model": "speech-biasing", + "input": [ + "action": "update_vocabulary", + "vocabulary_id": id, + "vocabulary": vocabulary, + ] as [String: Any], + ] + _ = try await postJSON(body, to: url, apiKey: apiKey, session: session) + } + + private static func postJSON( + _ body: [String: Any], + to url: URL, + apiKey: String, + session: URLSession + ) async throws -> [String: Any] { + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + request.httpBody = try JSONSerialization.data(withJSONObject: body) + + let (data, response) = try await session.data(for: request) + guard let http = response as? HTTPURLResponse else { + throw CloudASRError.transport("non-HTTP response") + } + let json = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any] + guard (200..<300).contains(http.statusCode) else { + let message = parseAPIErrorMessage(from: json) + throw CloudASRError.http(status: http.statusCode, message: message) + } + return json ?? [:] + } + + private static func parseVocabularyID(from json: [String: Any]) -> String? { + if let output = json["output"] as? [String: Any], + let id = output["vocabulary_id"] as? String { + return id + } + return nil + } + + private static func parseAPIErrorMessage(from json: [String: Any]?) -> String? { + guard let json else { return nil } + if let message = json["message"] as? String { return message } + if let error = json["error"] as? [String: Any], + let message = error["message"] as? String { + return message + } + return nil + } +} diff --git a/OSGKeyboardShared/Services/CloudASR/CloudASRClients.swift b/OSGKeyboardShared/Services/CloudASR/CloudASRClients.swift new file mode 100644 index 0000000..4151198 --- /dev/null +++ b/OSGKeyboardShared/Services/CloudASR/CloudASRClients.swift @@ -0,0 +1,411 @@ +// CloudASRClients.swift +// OSGKeyboard · Shared +// +// Provider-specific cloud ASR backends with personal-dictionary bias. + +import Foundation + +public protocol CloudASRTranscribing: Sendable { + func prepare(dictionary: PersonalDictionary) async throws + func transcribe( + samples: [Float], + sampleRate: Int, + locale: Locale, + dictionary: PersonalDictionary + ) async throws -> String +} + +public enum CloudASRClientFactory { + public static func make(store: AppGroupStore, session: URLSession = .shared) -> CloudASRTranscribing { + let strategy = CloudASRModelCatalog.strategy(for: store.providerId) + switch strategy { + case .zhipuHotwords: + return ZhipuCloudASRClient( + apiKey: store.apiKey, + model: CloudASRModelCatalog.defaultModel(for: store.providerId), + session: session + ) + case .alibabaVocabulary: + return AlibabaFunASRClient( + apiKey: store.apiKey, + model: CloudASRModelCatalog.defaultModel(for: store.providerId), + store: store, + session: session + ) + case .prompt: + return PromptCloudASRClient( + providerId: store.providerId, + baseURL: store.baseURL, + apiKey: store.apiKey, + model: CloudASRModelCatalog.defaultModel(for: store.providerId), + session: session + ) + case .localFallback: + return UnsupportedCloudASRClient(providerId: store.providerId) + } + } +} + +// MARK: - Zhipu (hotwords + prompt) + +struct ZhipuCloudASRClient: CloudASRTranscribing { + let apiKey: String + let model: String + let session: URLSession + + private static let maxDurationSeconds: TimeInterval = 30 + + func prepare(dictionary: PersonalDictionary) async throws {} + + func transcribe( + samples: [Float], + sampleRate: Int, + locale: Locale, + dictionary: PersonalDictionary + ) async throws -> String { + guard !apiKey.isEmpty else { throw CloudASRError.noAPIKey } + let duration = Double(samples.count) / Double(sampleRate) + guard duration <= Self.maxDurationSeconds else { throw CloudASRError.audioTooLong } + + let wav = PCMSampleWavEncoder.encode(samples: samples, sampleRate: sampleRate) + let urlString = "https://open.bigmodel.cn/api/paas/v4\(CloudASRModelCatalog.zhipuTranscriptionPath)" + guard let url = URL(string: urlString) else { throw CloudASRError.invalidURL } + + let boundary = "Boundary-\(UUID().uuidString)" + var body = Data() + func appendField(_ name: String, _ value: String) { + body.append("--\(boundary)\r\n".data(using: .utf8)!) + body.append("Content-Disposition: form-data; name=\"\(name)\"\r\n\r\n".data(using: .utf8)!) + body.append("\(value)\r\n".data(using: .utf8)!) + } + + appendField("model", model) + appendField("stream", "false") + + let hotwords = dictionary.asrHotwords() + if !hotwords.isEmpty, + let hotwordsJSON = try? JSONSerialization.data(withJSONObject: hotwords), + let hotwordsString = String(data: hotwordsJSON, encoding: .utf8) { + appendField("hotwords", hotwordsString) + } + + let prompt = dictionary.asrPromptBias() + if !prompt.isEmpty { + appendField("prompt", prompt) + } + + body.append("--\(boundary)\r\n".data(using: .utf8)!) + body.append("Content-Disposition: form-data; name=\"file\"; filename=\"chunk.wav\"\r\n".data(using: .utf8)!) + body.append("Content-Type: audio/wav\r\n\r\n".data(using: .utf8)!) + body.append(wav) + body.append("\r\n".data(using: .utf8)!) + body.append("--\(boundary)--\r\n".data(using: .utf8)!) + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") + request.httpBody = body + request.timeoutInterval = 60 + + let (data, response) = try await session.data(for: request) + try Self.validateHTTP(response: response, data: data) + guard let text = Self.parseZhipuText(from: data)?.trimmingCharacters(in: .whitespacesAndNewlines), + !text.isEmpty else { + throw CloudASRError.emptyTranscript + } + return text + } + + private static func parseZhipuText(from data: Data) -> String? { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { + return nil + } + return json["text"] as? String + } + + fileprivate static func validateHTTP(response: URLResponse, data: Data) throws { + guard let http = response as? HTTPURLResponse else { + throw CloudASRError.transport("non-HTTP response") + } + guard (200..<300).contains(http.statusCode) else { + let message = parseErrorMessage(from: data) + throw CloudASRError.http(status: http.statusCode, message: message) + } + } + + fileprivate static func parseErrorMessage(from data: Data) -> String? { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { + return nil + } + if let message = json["message"] as? String { return message } + if let error = json["error"] as? [String: Any], + let message = error["message"] as? String { + return message + } + return nil + } +} + +// MARK: - Alibaba Fun-ASR Flash (vocabulary_id + context) + +struct AlibabaFunASRClient: CloudASRTranscribing { + let apiKey: String + let model: String + // Hold the (@unchecked Sendable) AppGroupStore rather than a raw + // UserDefaults so this struct stays Sendable under strict concurrency. + let store: AppGroupStore + let session: URLSession + + func prepare(dictionary: PersonalDictionary) async throws { + _ = try await AlibabaVocabularySync.ensureVocabularyID( + dictionary: dictionary, + apiKey: apiKey, + targetModel: CloudASRModelCatalog.alibabaVocabularyTargetModel, + defaults: store.defaults, + session: session + ) + } + + func transcribe( + samples: [Float], + sampleRate: Int, + locale: Locale, + dictionary: PersonalDictionary + ) async throws -> String { + guard !apiKey.isEmpty else { throw CloudASRError.noAPIKey } + + let vocabularyID = try await AlibabaVocabularySync.ensureVocabularyID( + dictionary: dictionary, + apiKey: apiKey, + targetModel: CloudASRModelCatalog.alibabaVocabularyTargetModel, + defaults: store.defaults, + session: session + ) + + let dataURI = PCMSampleWavEncoder.dataURI(samples: samples, sampleRate: sampleRate) + let urlString = CloudASRModelCatalog.alibabaAPIBase + CloudASRModelCatalog.alibabaMultimodalPath + guard let url = URL(string: urlString) else { throw CloudASRError.invalidURL } + + var messages: [[String: Any]] = [] + let context = dictionary.alibabaContextText() + if !context.isEmpty { + messages.append([ + "role": "user", + "content": [ + ["type": "input_text", "text": context], + ], + ]) + } + messages.append([ + "role": "user", + "content": [ + [ + "type": "input_audio", + "input_audio": ["data": dataURI], + ], + ], + ]) + + var parameters: [String: Any] = [ + "format": "wav", + "sample_rate": "\(sampleRate)", + ] + if let vocabularyID, !vocabularyID.isEmpty { + parameters["vocabulary_id"] = vocabularyID + } + + let body: [String: Any] = [ + "model": model, + "input": ["messages": messages], + "parameters": parameters, + ] + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + request.setValue("disable", forHTTPHeaderField: "X-DashScope-SSE") + request.httpBody = try JSONSerialization.data(withJSONObject: body) + request.timeoutInterval = 90 + + let (data, response) = try await session.data(for: request) + try ZhipuCloudASRClient.validateHTTP(response: response, data: data) + guard let text = Self.parseText(from: data)?.trimmingCharacters(in: .whitespacesAndNewlines), + !text.isEmpty else { + throw CloudASRError.emptyTranscript + } + return text + } + + private static func parseText(from data: Data) -> String? { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let output = json["output"] as? [String: Any] else { + return nil + } + if let text = output["text"] as? String { return text } + if let sentence = output["sentence"] as? [String: Any], + let text = sentence["text"] as? String { + return text + } + return nil + } +} + +// MARK: - Prompt-biased transcription (OpenAI / MiMo / custom) + +struct PromptCloudASRClient: CloudASRTranscribing { + let providerId: String + let baseURL: String + let apiKey: String + let model: String + let session: URLSession + + func prepare(dictionary: PersonalDictionary) async throws {} + + func transcribe( + samples: [Float], + sampleRate: Int, + locale: Locale, + dictionary: PersonalDictionary + ) async throws -> String { + guard !apiKey.isEmpty else { throw CloudASRError.noAPIKey } + if providerId == "mimo" { + return try await transcribeMiMo( + samples: samples, + sampleRate: sampleRate, + dictionary: dictionary + ) + } + return try await transcribeOpenAIStyle( + samples: samples, + sampleRate: sampleRate, + dictionary: dictionary + ) + } + + private func transcribeOpenAIStyle( + samples: [Float], + sampleRate: Int, + dictionary: PersonalDictionary + ) async throws -> String { + let wav = PCMSampleWavEncoder.encode(samples: samples, sampleRate: sampleRate) + let trimmedBase = baseURL.hasSuffix("/") ? String(baseURL.dropLast()) : baseURL + let urlString = "\(trimmedBase)/audio/transcriptions" + guard let url = URL(string: urlString) else { throw CloudASRError.invalidURL } + + let boundary = "Boundary-\(UUID().uuidString)" + var body = Data() + func appendField(_ name: String, _ value: String) { + body.append("--\(boundary)\r\n".data(using: .utf8)!) + body.append("Content-Disposition: form-data; name=\"\(name)\"\r\n\r\n".data(using: .utf8)!) + body.append("\(value)\r\n".data(using: .utf8)!) + } + + appendField("model", model) + let prompt = dictionary.asrPromptBias(maxCharacters: 600) + if !prompt.isEmpty { + appendField("prompt", prompt) + } + + body.append("--\(boundary)\r\n".data(using: .utf8)!) + body.append("Content-Disposition: form-data; name=\"file\"; filename=\"chunk.wav\"\r\n".data(using: .utf8)!) + body.append("Content-Type: audio/wav\r\n\r\n".data(using: .utf8)!) + body.append(wav) + body.append("\r\n".data(using: .utf8)!) + body.append("--\(boundary)--\r\n".data(using: .utf8)!) + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") + request.httpBody = body + request.timeoutInterval = 90 + + let (data, response) = try await session.data(for: request) + try ZhipuCloudASRClient.validateHTTP(response: response, data: data) + guard let text = Self.parseOpenAIText(from: data)?.trimmingCharacters(in: .whitespacesAndNewlines), + !text.isEmpty else { + throw CloudASRError.emptyTranscript + } + return text + } + + private func transcribeMiMo( + samples: [Float], + sampleRate: Int, + dictionary: PersonalDictionary + ) async throws -> String { + let dataURI = PCMSampleWavEncoder.dataURI(samples: samples, sampleRate: sampleRate) + let trimmedBase = baseURL.hasSuffix("/") ? String(baseURL.dropLast()) : baseURL + let urlString = "\(trimmedBase)/chat/completions" + guard let url = URL(string: urlString) else { throw CloudASRError.invalidURL } + + var userContent: [[String: Any]] = [] + let prompt = dictionary.asrPromptBias() + if !prompt.isEmpty { + userContent.append(["type": "text", "text": prompt]) + } + userContent.append([ + "type": "input_audio", + "input_audio": ["data": dataURI], + ]) + + let body: [String: Any] = [ + "model": model, + "messages": [ + ["role": "user", "content": userContent], + ], + "asr_options": ["language": "auto"], + ] + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.setValue(apiKey, forHTTPHeaderField: "api-key") + request.httpBody = try JSONSerialization.data(withJSONObject: body) + request.timeoutInterval = 90 + + let (data, response) = try await session.data(for: request) + try ZhipuCloudASRClient.validateHTTP(response: response, data: data) + guard let text = Self.parseChatCompletionText(from: data)?.trimmingCharacters(in: .whitespacesAndNewlines), + !text.isEmpty else { + throw CloudASRError.emptyTranscript + } + return text + } + + private static func parseOpenAIText(from data: Data) -> String? { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { + return nil + } + return json["text"] as? String + } + + private static func parseChatCompletionText(from data: Data) -> String? { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let choices = json["choices"] as? [[String: Any]], + let first = choices.first, + let message = first["message"] as? [String: Any] else { + return nil + } + return message["content"] as? String + } +} + +// MARK: - Unsupported hosted ASR (Moonshot) + +struct UnsupportedCloudASRClient: CloudASRTranscribing { + let providerId: String + + func prepare(dictionary: PersonalDictionary) async throws {} + + func transcribe( + samples: [Float], + sampleRate: Int, + locale: Locale, + dictionary: PersonalDictionary + ) async throws -> String { + throw CloudASRError.providerUnsupported + } +} diff --git a/OSGKeyboardShared/Services/CloudASR/CloudASRService.swift b/OSGKeyboardShared/Services/CloudASR/CloudASRService.swift new file mode 100644 index 0000000..151e39f --- /dev/null +++ b/OSGKeyboardShared/Services/CloudASR/CloudASRService.swift @@ -0,0 +1,147 @@ +// CloudASRService.swift +// OSGKeyboard · Shared +// +// Cloud-engine ASR: uploads PCM chunks to the user's configured provider +// with personal-dictionary bias. Moonshot falls back to on-device ASR. + +import Foundation +import os + +public final class CloudASRService: ASRService, @unchecked Sendable { + private let store: AppGroupStore + private let session: URLSession + private let localFallback: ASRService + private let lock = OSAllocatedUnfairLock() + private var client: CloudASRTranscribing? + private var usesLocalFallback = false + private var boundProviderId: String? + private var cancelled = false + + public init( + store: AppGroupStore = AppGroupStore(), + session: URLSession = .shared, + localFallback: ASRService? = nil + ) { + self.store = store + self.session = session + // `SpeechAnalyzerASR` is internal, so it can't appear in a public + // default argument value — resolve the fallback in the body instead. + self.localFallback = localFallback ?? SpeechAnalyzerASR() + } + + public func resetForNewUtterance() { + lock.withLock { cancelled = false } + if usesLocalFallback { + localFallback.resetForNewUtterance() + } + } + + public func warmup(locale: Locale) async { + bindClientIfNeeded() + if usesLocalFallback { + await localFallback.warmup(locale: locale) + return + } + guard let client = lock.withLock({ client }) else { return } + do { + try await client.prepare(dictionary: store.personalDictionary) + } catch { + OSGLog.asr.warning("cloud ASR vocabulary prepare failed: \(error.localizedDescription, privacy: .public)") + } + } + + public func transcribeChunk(samples: [Float], locale: Locale) async -> ASRChunkResult { + guard !samples.isEmpty else { return .success("") } + if Task.isCancelled || lock.withLock({ cancelled }) { return .cancelled } + + bindClientIfNeeded() + if usesLocalFallback { + return await localFallback.transcribeChunk(samples: samples, locale: locale) + } + + guard let client = lock.withLock({ client }) else { + return .failure(CloudASRError.providerUnsupported.localizedDescription) + } + + do { + let text = try await client.transcribe( + samples: samples, + sampleRate: 16_000, + locale: locale, + dictionary: store.personalDictionary + ) + let trimmed = text.trimmingCharacters(in: .whitespacesAndNewlines) + return trimmed.isEmpty ? .success("") : .success(trimmed) + } catch is CancellationError { + return .cancelled + } catch { + return .failure(error.localizedDescription) + } + } + + public func transcribe( + stream: AsyncStream, + locale: Locale + ) -> AsyncStream { + bindClientIfNeeded() + if usesLocalFallback { + return localFallback.transcribe(stream: stream, locale: locale) + } + + return AsyncStream { continuation in + continuation.yield(.capability(onDeviceSupported: false)) + let task = Task { + var samples: [Float] = [] + for await snap in stream { + if Task.isCancelled { break } + samples.append(contentsOf: snap.samples) + } + guard !Task.isCancelled, !self.lock.withLock({ self.cancelled }) else { + continuation.finish() + return + } + guard !samples.isEmpty else { + continuation.yield(.error(SharedL10n.string("error.asr.noSpeech"))) + continuation.finish() + return + } + + switch await self.transcribeChunk(samples: samples, locale: locale) { + case .success(let text): + if text.isEmpty { + continuation.yield(.error(SharedL10n.string("error.asr.noSpeech"))) + } else { + continuation.yield(.final(text)) + } + case .failure(let message): + continuation.yield(.error(message)) + case .cancelled: + break + } + continuation.finish() + } + continuation.onTermination = { @Sendable _ in + task.cancel() + self.cancel() + } + } + } + + public func cancel() { + lock.withLock { cancelled = true } + localFallback.cancel() + } + + private func bindClientIfNeeded() { + let providerId = store.providerId + let strategy = CloudASRModelCatalog.strategy(for: providerId) + lock.withLock { + guard boundProviderId != providerId else { return } + boundProviderId = providerId + usesLocalFallback = strategy == .localFallback + client = usesLocalFallback + ? nil + : CloudASRClientFactory.make(store: store, session: session) + } + } +} diff --git a/OSGKeyboardShared/Services/LiveDictationController.swift b/OSGKeyboardShared/Services/LiveDictationController.swift index 2dd9c4c..8a82692 100644 --- a/OSGKeyboardShared/Services/LiveDictationController.swift +++ b/OSGKeyboardShared/Services/LiveDictationController.swift @@ -115,7 +115,7 @@ public final class LiveDictationController: ObservableObject { private var didInstallTap = false public init(asr: ASRService? = nil) { - self.asr = asr ?? ASRServiceFactory.make() + self.asr = asr ?? ASRServiceFactory.make(store: AppGroupStore()) } /// Start dictation using a persisted settings locale id (`auto`, `zh-Hans`, …). diff --git a/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/PersonalDictionaryCloudSync.swift b/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/PersonalDictionaryCloudSync.swift new file mode 100644 index 0000000..58261ba --- /dev/null +++ b/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/PersonalDictionaryCloudSync.swift @@ -0,0 +1,146 @@ +// PersonalDictionaryCloudSync.swift +// OSGKeyboard · Shared +// +// Mirrors the personal dictionary through iCloud Key-Value Store while +// keeping App Group UserDefaults as the keyboard extension's runtime +// source of truth. Intended for main-app call sites only. + +import Foundation + +public extension Notification.Name { + /// Posted after a remote KVS pull updates the App Group dictionary. + static let personalDictionaryDidSyncFromCloud = Notification.Name( + "com.osgkeyboard.personalDictionary.didSyncFromCloud" + ) +} + +public enum PersonalDictionaryCloudSyncError: Error, Equatable, Sendable { + case payloadTooLarge(byteCount: Int) + case encodeFailed + case decodeFailed +} + +@MainActor +public final class PersonalDictionaryCloudSync { + public static let shared = PersonalDictionaryCloudSync() + + public static let kvsKey = "personalDictionary.v1" + /// Stay below the ~1 MB per-key KVS limit. + public static let maxPayloadBytes = 900_000 + + private let kvs: UbiquitousKeyValueStoreing + private let makeStore: () -> AppGroupStore + private var externalChangeObserver: NSObjectProtocol? + + public init( + kvs: UbiquitousKeyValueStoreing = NSUbiquitousKeyValueStore.default, + makeStore: @escaping () -> AppGroupStore = { AppGroupStore() } + ) { + self.kvs = kvs + self.makeStore = makeStore + } + + // MARK: - Lifecycle + + public func startObservingExternalChanges() { + guard externalChangeObserver == nil else { return } + externalChangeObserver = NotificationCenter.default.addObserver( + forName: NSUbiquitousKeyValueStore.didChangeExternallyNotification, + object: nil, + queue: .main + ) { [weak self] _ in + guard let self else { return } + Task { @MainActor in + await self.pullAndMergeIfEnabled() + } + } + } + + public func stopObservingExternalChanges() { + if let externalChangeObserver { + NotificationCenter.default.removeObserver(externalChangeObserver) + self.externalChangeObserver = nil + } + } + + /// Pull remote changes on launch / foreground when sync is enabled. + public func pullAndMergeIfEnabled() async { + let store = makeStore() + guard store.personalDictionaryICloudSyncEnabled else { return } + await pullAndMerge(store: store) + } + + /// Push the current local dictionary when sync is enabled. + public func pushLocalIfEnabled(_ dictionary: PersonalDictionary) async throws { + let store = makeStore() + guard store.personalDictionaryICloudSyncEnabled else { return } + try push(dictionary) + } + + /// Enable sync: merge local + remote, persist locally, then upload. + public func enableSync() async throws { + let store = makeStore() + store.setPersonalDictionaryICloudSyncEnabled(true) + + let local = store.personalDictionary + let remote = loadRemote() ?? .empty + let merged = PersonalDictionary.merge(local: local, remote: remote) + store.setPersonalDictionary(merged) + try push(merged) + } + + public func disableSync() { + makeStore().setPersonalDictionaryICloudSyncEnabled(false) + } + + // MARK: - Core operations + + public func pullAndMerge(store: AppGroupStore) async { + guard store.personalDictionaryICloudSyncEnabled else { return } + + let local = store.personalDictionary + guard let remote = loadRemote() else { return } + + let merged = PersonalDictionary.merge(local: local, remote: remote) + guard merged != local else { return } + + store.setPersonalDictionary(merged) + NotificationCenter.default.post(name: .personalDictionaryDidSyncFromCloud, object: nil) + } + + public func push(_ dictionary: PersonalDictionary) throws { + var payload = dictionary + payload.lastSyncedAt = Date() + let data = try encode(payload) + kvs.set(data, forKey: Self.kvsKey) + _ = kvs.synchronize() + } + + public func loadRemote() -> PersonalDictionary? { + guard let data = kvs.data(forKey: Self.kvsKey) else { return nil } + return try? decode(data) + } + + // MARK: - Encoding + + public func encode(_ dictionary: PersonalDictionary) throws -> Data { + let encoder = JSONEncoder() + encoder.dateEncodingStrategy = .iso8601 + guard let data = try? encoder.encode(dictionary) else { + throw PersonalDictionaryCloudSyncError.encodeFailed + } + guard data.count <= Self.maxPayloadBytes else { + throw PersonalDictionaryCloudSyncError.payloadTooLarge(byteCount: data.count) + } + return data + } + + public func decode(_ data: Data) throws -> PersonalDictionary { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = .iso8601 + guard let dictionary = try? decoder.decode(PersonalDictionary.self, from: data) else { + throw PersonalDictionaryCloudSyncError.decodeFailed + } + return dictionary + } +} diff --git a/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/UbiquitousKeyValueStoreing.swift b/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/UbiquitousKeyValueStoreing.swift new file mode 100644 index 0000000..0581a78 --- /dev/null +++ b/OSGKeyboardShared/Services/PersonalDictionaryCloudSync/UbiquitousKeyValueStoreing.swift @@ -0,0 +1,15 @@ +// UbiquitousKeyValueStoreing.swift +// OSGKeyboard · Shared +// +// Test seam around `NSUbiquitousKeyValueStore`. + +import Foundation + +public protocol UbiquitousKeyValueStoreing: AnyObject { + func data(forKey key: String) -> Data? + func set(_ value: Data?, forKey key: String) + @discardableResult + func synchronize() -> Bool +} + +extension NSUbiquitousKeyValueStore: UbiquitousKeyValueStoreing {} diff --git a/OSGKeyboardShared/Services/PolishingService.swift b/OSGKeyboardShared/Services/PolishingService.swift index 8ec1bca..9eb000c 100644 --- a/OSGKeyboardShared/Services/PolishingService.swift +++ b/OSGKeyboardShared/Services/PolishingService.swift @@ -10,8 +10,8 @@ // English dictation while halving the network round-trip. // // Engine matrix: -// - `engineMode == "cloud"` → on-device ASR, then user's cloud LLM -// - `engineMode == "local"` → on-device ASR, then built-in DeepSeek +// - `engineMode == "cloud"` → provider cloud ASR + user's cloud LLM +// - `engineMode == "local"` → on-device ASR + built-in DeepSeek // - Ultra-short, structure-free utterances skip the LLM entirely // - Cloud without API key → raw + `.missingAPIKey` warning // - Local without build key → raw + `.missingAPIKey` warning diff --git a/OSGKeyboardShared/Utilities/FlowCaptureTailDrain.swift b/OSGKeyboardShared/Utilities/FlowCaptureTailDrain.swift index a76485d..937673b 100644 --- a/OSGKeyboardShared/Utilities/FlowCaptureTailDrain.swift +++ b/OSGKeyboardShared/Utilities/FlowCaptureTailDrain.swift @@ -6,6 +6,7 @@ // or a safety timeout elapses (symmetric to pre-roll at utterance start). import Foundation +import os /// Tunable tail-drain policy shared by Flow capture and preview dictation. public struct FlowCaptureTailDrainPolicy: Sendable, Equatable { diff --git a/OSGKeyboardShared/Utilities/FlowPipelineDiagnostics.swift b/OSGKeyboardShared/Utilities/FlowPipelineDiagnostics.swift index 5c347e9..bfa58f1 100644 --- a/OSGKeyboardShared/Utilities/FlowPipelineDiagnostics.swift +++ b/OSGKeyboardShared/Utilities/FlowPipelineDiagnostics.swift @@ -9,8 +9,7 @@ import os public enum FlowPipelineDiagnostics { public static func logDrain(_ report: FlowCaptureDrainReport) { OSGLog.flow.info( - "tailDrain duration=\(report.drainDurationSeconds, format: .fixed(precision: 2))s " + - "silenceEnd=\(report.endedBySilence) tailSamples=\(report.tailSampleCount)" + "tailDrain duration=\(report.drainDurationSeconds, format: .fixed(precision: 2))s silenceEnd=\(report.endedBySilence) tailSamples=\(report.tailSampleCount)" ) } @@ -21,8 +20,7 @@ public enum FlowPipelineDiagnostics { chunkWarnings: Int ) { OSGLog.flow.info( - "chunkPipeline chunks=\(chunkCount) lastChunkSamples=\(lastChunkSamples) " + - "stitchedLen=\(stitchedLength) warnings=\(chunkWarnings)" + "chunkPipeline chunks=\(chunkCount) lastChunkSamples=\(lastChunkSamples) stitchedLen=\(stitchedLength) warnings=\(chunkWarnings)" ) } diff --git a/OSGKeyboardShared/Utilities/PCMSampleWavEncoder.swift b/OSGKeyboardShared/Utilities/PCMSampleWavEncoder.swift new file mode 100644 index 0000000..6448b02 --- /dev/null +++ b/OSGKeyboardShared/Utilities/PCMSampleWavEncoder.swift @@ -0,0 +1,67 @@ +// PCMSampleWavEncoder.swift +// OSGKeyboard · Shared +// +// Encodes mono Float32 PCM (@ 16 kHz) into a minimal WAV byte stream for +// cloud ASR multipart / base64 uploads. + +import Foundation + +public enum PCMSampleWavEncoder { + public static func encode(samples: [Float], sampleRate: Int = 16_000) -> Data { + guard !samples.isEmpty else { + return encode(pcm16: [], sampleRate: sampleRate) + } + var pcm16 = [Int16]() + pcm16.reserveCapacity(samples.count) + for sample in samples { + let scaled = sample * 32_767.0 + let clipped = Swift.max(-32_768.0, Swift.min(32_767.0, scaled)) + pcm16.append(Int16(clipped.rounded())) + } + return encode(pcm16: pcm16, sampleRate: sampleRate) + } + + public static func encode(pcm16: [Int16], sampleRate: Int) -> Data { + let byteRate = sampleRate * 2 + let dataSize = pcm16.count * MemoryLayout.size + var data = Data() + data.reserveCapacity(44 + dataSize) + + func appendASCII(_ string: String) { + data.append(contentsOf: string.utf8) + } + func appendLE32(_ value: UInt32) { + var le = value.littleEndian + withUnsafeBytes(of: &le) { data.append(contentsOf: $0) } + } + func appendLE16(_ value: UInt16) { + var le = value.littleEndian + withUnsafeBytes(of: &le) { data.append(contentsOf: $0) } + } + + appendASCII("RIFF") + appendLE32(UInt32(36 + dataSize)) + appendASCII("WAVE") + appendASCII("fmt ") + appendLE32(16) + appendLE16(1) // PCM + appendLE16(1) // mono + appendLE32(UInt32(sampleRate)) + appendLE32(UInt32(byteRate)) + appendLE16(2) // block align + appendLE16(16) // bits per sample + appendASCII("data") + appendLE32(UInt32(dataSize)) + + pcm16.withUnsafeBufferPointer { buffer in + guard let base = buffer.baseAddress else { return } + data.append(UnsafeBufferPointer(start: base, count: buffer.count)) + } + return data + } + + public static func dataURI(samples: [Float], sampleRate: Int = 16_000) -> String { + let wav = encode(samples: samples, sampleRate: sampleRate) + return "data:audio/wav;base64,\(wav.base64EncodedString())" + } +} diff --git a/OSGKeyboardShared/en.lproj/Shared.strings b/OSGKeyboardShared/en.lproj/Shared.strings index f0aa2f6..66d0528 100644 --- a/OSGKeyboardShared/en.lproj/Shared.strings +++ b/OSGKeyboardShared/en.lproj/Shared.strings @@ -33,6 +33,17 @@ "error.asr.noSpeech" = "No speech detected. Please try again."; "error.asr.chunkFailed" = "Segment %lld failed: %@"; +/* Cloud ASR errors */ +"error.cloudASR.noAPIKey" = "API Key is missing."; +"error.cloudASR.invalidURL" = "Invalid cloud ASR endpoint."; +"error.cloudASR.http" = "Cloud ASR returned HTTP %lld."; +"error.cloudASR.httpWithMessage" = "Cloud ASR returned HTTP %lld: %@"; +"error.cloudASR.decoding" = "Failed to parse cloud ASR response: %@"; +"error.cloudASR.transport" = "Cloud ASR network error: %@"; +"error.cloudASR.emptyTranscript" = "Cloud ASR returned an empty transcript."; +"error.cloudASR.audioTooLong" = "Audio segment is too long for this cloud ASR provider."; +"error.cloudASR.providerUnsupported" = "This provider does not support cloud speech recognition yet."; + /* Polish scenarios */ "polishScenario.daily_chat" = "Daily Chat"; "polishScenario.social_lifestyle" = "Social Network"; diff --git a/OSGKeyboardShared/zh-Hans.lproj/Shared.strings b/OSGKeyboardShared/zh-Hans.lproj/Shared.strings index 3bd6fda..a1faf86 100644 --- a/OSGKeyboardShared/zh-Hans.lproj/Shared.strings +++ b/OSGKeyboardShared/zh-Hans.lproj/Shared.strings @@ -33,6 +33,17 @@ "error.asr.noSpeech" = "未识别到语音内容,请重试。"; "error.asr.chunkFailed" = "第 %lld 段识别失败:%@"; +/* Cloud ASR errors */ +"error.cloudASR.noAPIKey" = "未填写 API Key。"; +"error.cloudASR.invalidURL" = "云端识别接口地址无效。"; +"error.cloudASR.http" = "云端识别返回 HTTP %lld。"; +"error.cloudASR.httpWithMessage" = "云端识别返回 HTTP %lld:%@"; +"error.cloudASR.decoding" = "解析云端识别响应失败:%@"; +"error.cloudASR.transport" = "云端识别网络错误:%@"; +"error.cloudASR.emptyTranscript" = "云端识别返回了空文本。"; +"error.cloudASR.audioTooLong" = "音频片段超过该云端识别服务的时长限制。"; +"error.cloudASR.providerUnsupported" = "该服务商暂不支持云端语音识别。"; + /* 润色场景 */ "polishScenario.daily_chat" = "日常聊天"; "polishScenario.social_lifestyle" = "小红书"; diff --git a/OSGKeyboardTests/CloudASRTests.swift b/OSGKeyboardTests/CloudASRTests.swift new file mode 100644 index 0000000..22caed7 --- /dev/null +++ b/OSGKeyboardTests/CloudASRTests.swift @@ -0,0 +1,78 @@ +// CloudASRTests.swift +// OSGKeyboardTests + +import XCTest +@testable import OSGKeyboardShared + +final class CloudASRTests: XCTestCase { + + func testCloudASRStrategyRouting() { + XCTAssertEqual(CloudASRModelCatalog.strategy(for: "zhipu"), .zhipuHotwords) + XCTAssertEqual(CloudASRModelCatalog.strategy(for: "qwen"), .alibabaVocabulary) + XCTAssertEqual(CloudASRModelCatalog.strategy(for: "openai"), .prompt) + XCTAssertEqual(CloudASRModelCatalog.strategy(for: "mimo"), .prompt) + XCTAssertEqual(CloudASRModelCatalog.strategy(for: "moonshot"), .localFallback) + } + + func testCloudASRModelDefaults() { + XCTAssertEqual(CloudASRModelCatalog.defaultModel(for: "qwen"), "fun-asr-flash-2026-06-15") + XCTAssertEqual(CloudASRModelCatalog.defaultModel(for: "zhipu"), "glm-asr-2512") + XCTAssertEqual(CloudASRModelCatalog.defaultModel(for: "mimo"), "mimo-v2.5-asr") + XCTAssertEqual(CloudASRModelCatalog.defaultModel(for: "openai"), "gpt-4o-mini-transcribe") + } + + func testPersonalDictionaryCloudASRBadgeProviders() { + XCTAssertTrue(LLMProvider.provider(id: "zhipu").supportsPersonalDictionaryCloudASR) + XCTAssertTrue(LLMProvider.provider(id: "qwen").supportsPersonalDictionaryCloudASR) + XCTAssertFalse(LLMProvider.provider(id: "openai").supportsPersonalDictionaryCloudASR) + XCTAssertFalse(LLMProvider.provider(id: "moonshot").supportsPersonalDictionaryCloudASR) + } + + func testPersonalDictionaryASRHotwordsDedupesTerms() { + let dict = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "Kubernetes", category: .technical, source: .manual), + PersonalDictionary.Entry(term: "kubernetes", category: .technical, source: .manual), + PersonalDictionary.Entry(term: "OSGKeyboard", category: .productName, source: .manual), + ]) + let hotwords = dict.asrHotwords() + XCTAssertEqual(hotwords.count, 2) + XCTAssertTrue(hotwords.contains("Kubernetes")) + XCTAssertTrue(hotwords.contains("OSGKeyboard")) + } + + func testPersonalDictionaryASRPromptIncludesAliases() { + var dict = PersonalDictionary.empty + _ = dict.upsertManual(term: "Kubernetes") + dict.updateAliases( + for: dict.entries[0].id, + aliases: ["k8s", "库伯内特斯"] + ) + let prompt = dict.asrPromptBias() + XCTAssertTrue(prompt.contains("Kubernetes")) + XCTAssertTrue(prompt.contains("k8s")) + } + + func testPersonalDictionaryAlibabaHotwordEntries() { + let dict = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "Cursor", category: .productName, source: .manual), + ]) + let entries = dict.alibabaHotwordEntries() + XCTAssertEqual(entries.count, 1) + XCTAssertEqual(entries[0].text, "Cursor") + XCTAssertEqual(entries[0].weight, 4) + } + + func testPCMSampleWavEncoderProducesHeader() { + let wav = PCMSampleWavEncoder.encode(samples: [0.0, 0.5, -0.5], sampleRate: 16_000) + XCTAssertGreaterThan(wav.count, 44) + XCTAssertEqual(String(data: wav.prefix(4), encoding: .ascii), "RIFF") + XCTAssertEqual(String(data: wav.dropFirst(8).prefix(4), encoding: .ascii), "WAVE") + } + + func testVocabularyFingerprintChangesWhenDictionaryChanges() { + var dict = PersonalDictionary.empty + let emptyFP = dict.vocabularySyncFingerprint() + _ = dict.upsertManual(term: "OSGKeyboard") + XCTAssertNotEqual(emptyFP, dict.vocabularySyncFingerprint()) + } +} diff --git a/OSGKeyboardTests/PersonalDictionaryCloudSyncTests.swift b/OSGKeyboardTests/PersonalDictionaryCloudSyncTests.swift new file mode 100644 index 0000000..b09fc2e --- /dev/null +++ b/OSGKeyboardTests/PersonalDictionaryCloudSyncTests.swift @@ -0,0 +1,226 @@ +// PersonalDictionaryCloudSyncTests.swift +// OSGKeyboardTests +// +// Hermetic tests for iCloud KVS dictionary merge + sync service. + +import XCTest +@testable import OSGKeyboardShared + +// MARK: - Fake KVS + +private final class FakeUbiquitousKeyValueStore: UbiquitousKeyValueStoreing, @unchecked Sendable { + private var storage: [String: Data] = [:] + + func data(forKey key: String) -> Data? { + storage[key] + } + + func set(_ value: Data?, forKey key: String) { + if let value { + storage[key] = value + } else { + storage.removeValue(forKey: key) + } + } + + func synchronize() -> Bool { true } +} + +// MARK: - Tests + +@MainActor +final class PersonalDictionaryCloudSyncTests: XCTestCase { + + private var suiteName: String! + private var defaults: UserDefaults! + private var store: AppGroupStore! + private var kvs: FakeUbiquitousKeyValueStore! + private var sync: PersonalDictionaryCloudSync! + + override func setUp() { + super.setUp() + suiteName = "group.com.osgkeyboard.shared.tests.sync.\(UUID().uuidString)" + defaults = UserDefaults(suiteName: suiteName)! + defaults.removePersistentDomain(forName: suiteName) + store = AppGroupStore(defaults: defaults) + kvs = FakeUbiquitousKeyValueStore() + sync = PersonalDictionaryCloudSync(kvs: kvs) { [unowned self] in store } + } + + override func tearDown() { + defaults.removePersistentDomain(forName: suiteName) + super.tearDown() + } + + // MARK: - Merge + + func testMergeKeepsNewerEntryForSameID() { + let id = UUID() + let older = PersonalDictionary.Entry( + id: id, + term: "Kubernetes", + category: .technical, + source: .manual, + createdAt: Date(timeIntervalSince1970: 100), + updatedAt: Date(timeIntervalSince1970: 100), + usageCount: 1 + ) + let newer = PersonalDictionary.Entry( + id: id, + term: "Kubernetes", + aliases: ["k8s"], + category: .technical, + source: .manual, + createdAt: Date(timeIntervalSince1970: 100), + updatedAt: Date(timeIntervalSince1970: 200), + usageCount: 3 + ) + + let merged = PersonalDictionary.merge( + local: PersonalDictionary(entries: [older]), + remote: PersonalDictionary(entries: [newer]) + ) + + XCTAssertEqual(merged.entries.count, 1) + XCTAssertEqual(merged.entries[0].aliases, ["k8s"]) + XCTAssertEqual(merged.entries[0].usageCount, 3) + } + + func testMergeUnionsAliasesForSameCanonicalTerm() { + let local = PersonalDictionary.Entry( + term: "Cursor", + aliases: ["cursor ide"], + category: .productName, + source: .manual, + createdAt: Date(timeIntervalSince1970: 100), + updatedAt: Date(timeIntervalSince1970: 150) + ) + let remote = PersonalDictionary.Entry( + term: "cursor", + aliases: ["光标"], + category: .productName, + source: .manual, + createdAt: Date(timeIntervalSince1970: 120), + updatedAt: Date(timeIntervalSince1970: 200) + ) + + let merged = PersonalDictionary.merge( + local: PersonalDictionary(entries: [local]), + remote: PersonalDictionary(entries: [remote]) + ) + + XCTAssertEqual(merged.entries.count, 1) + XCTAssertEqual(Set(merged.entries[0].aliases), Set(["cursor ide", "光标"])) + XCTAssertEqual(merged.entries[0].term, "cursor") + } + + func testMergeCombinesDistinctTerms() { + let local = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "Alpha", category: .custom, source: .manual), + ]) + let remote = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "Beta", category: .custom, source: .manual), + ]) + + let merged = PersonalDictionary.merge(local: local, remote: remote) + XCTAssertEqual(Set(merged.entries.map(\.term)), Set(["Alpha", "Beta"])) + } + + // MARK: - Backward-compatible decode + + func testEntryDecodesWithoutUpdatedAt() throws { + let json = """ + { + "id": "A0000000-0000-4000-8000-000000000099", + "term": "Legacy", + "aliases": [], + "category": "custom", + "source": "manual", + "createdAt": 1_700_000_000, + "usageCount": 2 + } + """.data(using: .utf8)! + + let entry = try JSONDecoder().decode(PersonalDictionary.Entry.self, from: json) + XCTAssertEqual(entry.term, "Legacy") + XCTAssertEqual(entry.updatedAt.timeIntervalSince1970, 1_700_000_000, accuracy: 1) + } + + // MARK: - Sync service + + func testEnableSyncMergesLocalAndRemoteThenUploads() async throws { + let remoteEntry = PersonalDictionary.Entry( + term: "RemoteTerm", + category: .custom, + source: .manual, + updatedAt: Date(timeIntervalSince1970: 500) + ) + let remoteData = try sync.encode(PersonalDictionary(entries: [remoteEntry])) + kvs.set(remoteData, forKey: PersonalDictionaryCloudSync.kvsKey) + + store.personalDictionary = PersonalDictionary(entries: [ + PersonalDictionary.Entry( + term: "LocalTerm", + category: .custom, + source: .manual, + updatedAt: Date(timeIntervalSince1970: 400) + ), + ]) + + try await sync.enableSync() + + XCTAssertTrue(store.personalDictionaryICloudSyncEnabled) + XCTAssertEqual(Set(store.personalDictionary.entries.map(\.term)), Set(["LocalTerm", "RemoteTerm"])) + XCTAssertNotNil(sync.loadRemote()) + } + + func testPushLocalIfEnabledSkipsWhenDisabled() async throws { + store.personalDictionary = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "OnlyLocal", category: .custom, source: .manual), + ]) + store.setPersonalDictionaryICloudSyncEnabled(false) + + try await sync.pushLocalIfEnabled(store.personalDictionary) + + XCTAssertNil(sync.loadRemote()) + } + + func testPullAndMergeWritesMergedDictionaryToAppGroup() async { + store.setPersonalDictionaryICloudSyncEnabled(true) + store.personalDictionary = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: "LocalOnly", category: .custom, source: .manual), + ]) + + let remote = PersonalDictionary(entries: [ + PersonalDictionary.Entry( + term: "CloudOnly", + category: .custom, + source: .manual, + updatedAt: Date(timeIntervalSince1970: 900) + ), + ]) + kvs.set(try! sync.encode(remote), forKey: PersonalDictionaryCloudSync.kvsKey) + + await sync.pullAndMerge(store: store) + + XCTAssertEqual(Set(store.personalDictionary.entries.map(\.term)), Set(["LocalOnly", "CloudOnly"])) + } + + func testEncodeRejectsOversizedPayload() { + let hugeTerm = String(repeating: "x", count: PersonalDictionaryCloudSync.maxPayloadBytes) + let dictionary = PersonalDictionary(entries: [ + PersonalDictionary.Entry(term: hugeTerm, category: .custom, source: .manual), + ]) + + XCTAssertThrowsError(try sync.encode(dictionary)) { error in + guard case .payloadTooLarge = error as? PersonalDictionaryCloudSyncError else { + return XCTFail("Expected payloadTooLarge, got \(error)") + } + } + } + + func testAppGroupConfigurationDefaultsICloudSyncToOn() { + let config = AppGroupConfiguration.load(fromAvailable: defaults) + XCTAssertTrue(config.personalDictionaryICloudSyncEnabled) + } +} diff --git a/Scripts/lexicon/append_expansion_batch2.py b/Scripts/lexicon/append_expansion_batch2.py new file mode 100644 index 0000000..9d11d3d --- /dev/null +++ b/Scripts/lexicon/append_expansion_batch2.py @@ -0,0 +1,896 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +"""Append batch-2 expansion rows to ai_tech_brands_seed.tsv with deduplication.""" + +from __future__ import annotations + +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parents[2] +SEED_PATH = REPO_ROOT / "Scripts/lexicon/seeds/ai_tech_brands_seed.tsv" + +# word, pinyin, aliases (| separated), category, weight +EXPANSION: list[tuple[str, str, str, str, int]] = [ + # --- AI brands / models / agents --- + ("NanoClaw", "", "nano claw|Nano Claw", "ai_brand", 86), + ("ZeroClaw", "", "zero claw|Zero Claw", "ai_brand", 82), + ("Hermes Agent", "", "hermes agent|Hermes", "ai_brand", 84), + ("Fugu", "", "sakana fugu|Fugu AI", "ai_brand", 84), + ("Sakana AI", "", "sakana ai|Sakana", "ai_brand", 82), + ("Agents-A1", "", "agents a1|Agents A1", "ai_model", 82), + ("NemoClaw", "", "nemo claw|Nemo Claw", "ai_brand", 80), + ("Moltworker", "", "molt worker|Moltworker", "ai_platform", 78), + ("Perplexity Computer", "", "perplexity computer|Personal Computer", "ai_brand", 84), + ("Personal Computer", "", "perplexity personal computer", "ai_brand", 82), + ("Simular", "", "simular ai|Simular AI", "ai_brand", 78), + ("Vellum", "", "vellum ai|Vellum AI", "ai_platform", 78), + ("Cloudflare Agents", "", "cloudflare agents", "ai_platform", 78), + ("NVIDIA NIM", "", "nvidia nim|NIM inference", "ai_platform", 82), + ("Fireworks AI", "", "fireworks ai|Fireworks", "ai_platform", 82), + ("Together AI", "", "together ai|Together", "ai_platform", 82), + ("Cerebras", "", "cerebras systems|Cerebras Systems", "tech_company", 82), + ("SambaNova", "", "samba nova|Samba Nova", "tech_company", 80), + ("Grokipedia", "", "grok ipedia|Grok pedia", "ai_brand", 76), + ("Grok Imagine", "", "grok imagine", "ai_brand", 78), + ("Imagen", "", "google imagen|Imagen AI", "ai_model", 82), + ("Veo", "", "google veo|Veo AI", "ai_model", 82), + ("Suno", "", "suno ai|Suno AI", "ai_brand", 84), + ("Udio", "", "udio ai|Udio AI", "ai_brand", 82), + ("Flux", "", "black forest flux|FLUX", "ai_model", 84), + ("Black Forest Labs", "", "black forest labs|BFL", "ai_brand", 82), + ("Ideogram", "", "ideogram ai|Ideogram AI", "ai_brand", 80), + ("Recraft", "", "recraft ai|Recraft AI", "ai_brand", 78), + ("Leonardo AI", "", "leonardo ai|Leonardo", "ai_brand", 80), + ("Krea", "", "krea ai|Krea AI", "ai_brand", 76), + ("PixVerse", "", "pix verse|Pixverse", "ai_brand", 80), + ("Vidu", "", "vidu ai|Vidu AI", "ai_brand", 80), + ("可灵AI", "ke ling AI", "Kling AI|可灵", "ai_brand", 84), + ("通义万相", "tong yi wan xiang", "Wanxiang|万相", "ai_brand", 84), + ("Wanxiang", "", "通义万相|wan xiang", "ai_brand", 82), + ("海螺视频", "hai luo shi pin", "Hailuo Video", "ai_brand", 80), + ("Skywork", "", "skywork ai|Skywork", "ai_brand", 78), + ("天工AI", "tian gong AI", "天工", "ai_brand", 78), + ("纳米搜索", "na mi sou suo", "Nami Search", "ai_brand", 76), + ("Flowith", "", "flowith ai|Flowith AI", "ai_platform", 76), + ("FlowGPT", "", "flow gpt|Flow GPT", "ai_platform", 74), + ("Coze", "", "coze ai|扣子", "ai_platform", 86), + ("扣子", "kou zi", "Coze|coze", "ai_platform", 84), + ("Dify", "", "dify ai|Dify AI", "ai_platform", 84), + ("FastGPT", "", "fast gpt|FastGPT", "ai_platform", 78), + ("MaxKB", "", "max kb|MaxKB", "ai_platform", 76), + ("RAGFlow", "", "rag flow|RAGFlow", "ai_platform", 82), + ("Mem0", "", "mem zero|Mem0 AI", "ai_platform", 80), + ("Letta", "", "letta ai|Letta AI", "ai_platform", 78), + ("Zep", "", "zep ai|Zep AI", "ai_platform", 76), + ("GraphRAG", "", "graph rag|Graph RAG", "ai_term", 84), + ("LightRAG", "", "light rag|Light RAG", "ai_term", 82), + ("Devstral", "", "devstral|mistral devstral", "ai_model", 82), + ("Pixtral", "", "pixtral|mistral pixtral", "ai_model", 82), + ("Mistral Small", "", "mistral small", "ai_model", 80), + ("Mistral Codestral", "", "mistral codestral", "ai_model", 82), + ("Codestral", "", "codestral|mistral codestral", "ai_model", 84), + ("Command R", "", "command r|cohere command", "ai_model", 80), + ("Cohere Command", "", "cohere command|Command R", "ai_model", 78), + ("Phi", "", "phi model|microsoft phi", "ai_model", 78), + ("Phi模型", "phi mo xing", "Phi|microsoft phi", "ai_model", 76), + ("Granite", "", "ibm granite|Granite model", "ai_model", 80), + ("IBM Granite", "", "granite|IBM Granite", "ai_model", 78), + ("Amazon Nova", "", "amazon nova|Nova model", "ai_model", 82), + ("Bedrock", "", "aws bedrock|Amazon Bedrock", "ai_platform", 82), + ("Gemma开源", "gemma kai yuan", "Gemma open", "ai_model", 76), + ("Claude Mythos", "", "claude mythos|Mythos", "ai_model", 82), + ("Whisper", "", "openai whisper|Whisper ASR", "ai_model", 82), + ("NotebookLM", "", "notebook lm|Notebook LM", "ai_brand", 84), + ("Google AI Studio", "", "google ai studio|AI Studio", "dev_tool", 82), + ("AI Studio", "", "google ai studio", "dev_tool", 80), + ("Gemini Live", "", "gemini live", "ai_brand", 80), + ("Gemini Robotics", "", "gemini robotics", "ai_brand", 78), + ("Apple Intelligence", "", "apple intelligence|苹果智能", "ai_brand", 86), + ("苹果智能", "ping guo zhi neng", "Apple Intelligence", "ai_brand", 84), + ("Siri", "", "apple siri|Siri AI", "ai_brand", 82), + ("Writing Tools", "", "apple writing tools", "ai_term", 76), + ("Image Playground", "", "image playground|苹果图像游乐场", "ai_term", 74), + ("Copilot Studio", "", "copilot studio|Microsoft Copilot Studio", "ai_platform", 80), + ("Microsoft Agent", "", "microsoft agent", "ai_platform", 78), + ("Semantic Kernel", "", "semantic kernel|SK", "ai_platform", 80), + ("AutoGen Studio", "", "autogen studio|AutoGen Studio", "ai_platform", 78), + ("Windsurf Cascade", "", "windsurf cascade|Cascade", "dev_tool", 82), + ("Cascade", "", "windsurf cascade", "dev_tool", 80), + ("Tabnine", "", "tab nine|Tabnine", "dev_tool", 80), + ("Sourcegraph Cody", "", "sourcegraph cody|Cody", "dev_tool", 82), + ("Cody", "", "sourcegraph cody", "dev_tool", 78), + ("GitHub Spark", "", "github spark|Spark", "dev_tool", 78), + ("GitHub Models", "", "github models", "ai_platform", 78), + ("Browser Use", "", "browser use|browser-use", "ai_term", 84), + ("Augment", "", "augment code|Augment Code", "dev_tool", 80), + ("JetBrains Junie", "", "jetbrains junie|Junie", "dev_tool", 78), + ("Kilo Code", "", "kilo code|KiloCode", "dev_tool", 78), + ("Zencoder", "", "zen coder|Zencoder", "dev_tool", 76), + ("Goose", "", "goose ai|Block Goose", "dev_tool", 76), + ("Omnigent", "", "omnigent ai|Omnigent", "dev_tool", 74), + # --- Entrepreneurs / internet figures --- + ("俞敏洪", "yu min hong", "Yu Minhong|新东方俞敏洪", "tech_leader", 86), + ("Yu Minhong", "", "yu minhong|俞敏洪", "tech_leader", 84), + ("New Oriental", "", "new oriental|新东方", "tech_company", 80), + ("新东方", "xin dong fang", "New Oriental", "tech_company", 80), + ("卢伟冰", "lu wei bing", "Lu Weibing", "tech_leader", 84), + ("Lu Weibing", "", "lu weibing|卢伟冰", "tech_leader", 84), + ("影视飓风", "ying shi ju feng", "影视飓风Tim", "tech_leader", 82), + ("影视飓风Tim", "", "ying shi ju feng tim|影视飓风", "tech_leader", 82), + ("曹德旺", "cao de wang", "Cao Dewang", "tech_leader", 80), + ("Cao Dewang", "", "cao dewang|曹德旺", "tech_leader", 80), + ("福耀玻璃", "fu yao bo li", "Fuyao Glass", "tech_company", 76), + ("宗庆后", "zong qing hou", "Zong Qinghou", "tech_leader", 78), + ("钟睒睒", "zhong shan shan", "Zhong Shanshan", "tech_leader", 80), + ("Nongfu Spring", "", "nongfu spring|农夫山泉", "consumer_brand", 82), + ("农夫山泉", "nong fu shan quan", "Nongfu Spring", "consumer_brand", 82), + ("王健林", "wang jian lin", "Wang Jianlin", "tech_leader", 78), + ("Wang Jianlin", "", "wang jianlin|王健林", "tech_leader", 78), + ("许家印", "xu jia yin", "Xu Jiayin", "tech_leader", 74), + ("Xu Jiayin", "", "xu jiayin|许家印", "tech_leader", 74), + ("孙正义", "sun zheng yi", "Masayoshi Son", "tech_leader", 82), + ("Masayoshi Son", "", "masayoshi son|孙正义", "tech_leader", 82), + ("张朝阳", "zhang chao yang", "Charles Zhang", "tech_leader", 80), + ("Charles Zhang", "", "charles zhang|张朝阳", "tech_leader", 80), + ("搜狐", "sou hu", "Sohu", "tech_company", 78), + ("Sohu", "", "sohu|搜狐", "tech_company", 78), + ("丁磊", "ding lei", "William Ding", "tech_leader", 84), + ("William Ding", "", "william ding|丁磊", "tech_leader", 84), + ("陈天桥", "chen tian qiao", "Chen Tianqiao", "tech_leader", 76), + ("沈南鹏", "shen nan peng", "Neil Shen", "tech_leader", 82), + ("Neil Shen", "", "neil shen|沈南鹏", "tech_leader", 82), + ("红杉中国", "hong shan zhong guo", "Sequoia China", "fintech", 80), + ("Sequoia China", "", "sequoia china|红杉中国", "fintech", 80), + ("徐新", "xu xin", "Xu Xin", "tech_leader", 76), + ("今日资本", "jin ri zi ben", "Capital Today", "fintech", 74), + ("朱啸虎", "zhu xiao hu", "Zhu Xiaohu", "tech_leader", 78), + ("李开复", "li kai fu", "Kai-Fu Lee", "tech_leader", 86), + ("Kai-Fu Lee", "", "kai fu lee|李开复", "tech_leader", 86), + ("创新工场", "chuang xin gong chang", "Innovation Works", "tech_company", 78), + ("Innovation Works", "", "innovation works|创新工场", "tech_company", 78), + ("傅盛", "fu sheng", "Fu Sheng", "tech_leader", 78), + ("Fu Sheng", "", "fu sheng|傅盛", "tech_leader", 78), + ("猎豹移动", "lie bao yi dong", "Cheetah Mobile", "tech_company", 76), + ("王小川", "wang xiao chuan", "Wang Xiaochuan", "tech_leader", 82), + ("Wang Xiaochuan", "", "wang xiaochuan|王小川", "tech_leader", 82), + ("周航", "zhou hang", "Zhou Hang", "tech_leader", 72), + ("陈睿", "chen rui", "Chen Rui|B站陈睿", "tech_leader", 80), + ("Chen Rui", "", "chen rui|陈睿", "tech_leader", 80), + ("宿华", "su hua", "Su Hua", "tech_leader", 78), + ("Su Hua", "", "su hua|宿华", "tech_leader", 78), + ("程一笑", "cheng yi xiao", "Cheng Yixiao", "tech_leader", 76), + ("Cheng Yixiao", "", "cheng yixiao|程一笑", "tech_leader", 76), + ("陈欧", "chen ou", "Chen Ou", "tech_leader", 72), + ("聚美优品", "ju mei you pin", "Jumei", "tech_company", 70), + ("江南春", "jiang nan chun", "Jiang Nanchun", "tech_leader", 76), + ("分众传媒", "fen zhong chuan mei", "Focus Media", "tech_company", 76), + ("沈晖", "shen hui", "William Feng", "tech_leader", 74), + ("李想", "li xiang", "Li Xiang|理想李想", "tech_leader", 86), + ("Li Xiang", "", "li xiang|李想", "tech_leader", 86), + ("王传福", "wang chuan fu", "Wang Chuanfu", "tech_leader", 86), + ("Wang Chuanfu", "", "wang chuanfu|王传福", "tech_leader", 86), + ("曾毓群", "zeng yu qun", "Robin Zeng", "tech_leader", 84), + ("Robin Zeng", "", "robin zeng|曾毓群", "tech_leader", 84), + ("郭台铭", "guo tai ming", "Terry Gou", "tech_leader", 80), + ("Terry Gou", "", "terry gou|郭台铭", "tech_leader", 80), + ("富士康", "fu shi kang", "Foxconn", "tech_company", 82), + ("Foxconn", "", "foxconn|富士康", "tech_company", 82), + ("刘慈欣", "liu ci xin", "Liu Cixin", "celebrity", 82), + ("Liu Cixin", "", "liu cixin|刘慈欣", "celebrity", 82), + ("三体", "san ti", "Three Body Problem|Three-Body", "tech_term", 80), + # --- Celebrities --- + ("刘宇宁", "liu yu ning", "Liu Yuning", "celebrity", 86), + ("Liu Yuning", "", "liu yuning|刘宇宁", "celebrity", 86), + ("梓渝", "zi yu", "Ziyu", "celebrity", 82), + ("Ziyu", "", "zi yu|梓渝", "celebrity", 82), + ("周深", "zhou shen", "Zhou Shen", "celebrity", 86), + ("Zhou Shen", "", "zhou shen|周深", "celebrity", 86), + ("白鹿", "bai lu", "Bai Lu", "celebrity", 84), + ("Bai Lu", "", "bai lu|白鹿", "celebrity", 84), + ("孟子义", "meng zi yi", "Meng Ziyi", "celebrity", 82), + ("Meng Ziyi", "", "meng ziyi|孟子义", "celebrity", 82), + ("虞书欣", "yu shu xin", "Esther Yu", "celebrity", 84), + ("Esther Yu", "", "esther yu|虞书欣", "celebrity", 84), + ("赵丽颖", "zhao li ying", "Zhao Liying", "celebrity", 86), + ("Zhao Liying", "", "zhao liying|赵丽颖", "celebrity", 86), + ("杨紫", "yang zi", "Yang Zi", "celebrity", 86), + ("成毅", "cheng yi", "Cheng Yi", "celebrity", 84), + ("任嘉伦", "ren jia lun", "Ren Jialun", "celebrity", 82), + ("Ren Jialun", "", "ren jialun|任嘉伦", "celebrity", 82), + ("李现", "li xian", "Li Xian", "celebrity", 84), + ("Li Xian", "", "li xian|李现", "celebrity", 84), + ("杨洋", "yang yang", "Yang Yang", "celebrity", 84), + ("吴磊", "wu lei", "Wu Lei", "celebrity", 82), + ("Wu Lei", "", "wu lei|吴磊", "celebrity", 82), + ("胡歌", "hu ge", "Hu Ge", "celebrity", 86), + ("Hu Ge", "", "hu ge|胡歌", "celebrity", 86), + ("黄晓明", "huang xiao ming", "Huang Xiaoming", "celebrity", 82), + ("Huang Xiaoming", "", "huang xiaoming|黄晓明", "celebrity", 82), + ("陈坤", "chen kun", "Chen Kun", "celebrity", 80), + ("章子怡", "zhang zi yi", "Zhang Ziyi", "celebrity", 82), + ("Zhang Ziyi", "", "zhang ziyi|章子怡", "celebrity", 82), + ("巩俐", "gong li", "Gong Li", "celebrity", 82), + ("周迅", "zhou xun", "Zhou Xun", "celebrity", 82), + ("汤唯", "tang wei", "Tang Wei", "celebrity", 80), + ("舒淇", "shu qi", "Shu Qi", "celebrity", 80), + ("黄渤", "huang bo", "Huang Bo", "celebrity", 86), + ("Huang Bo", "", "huang bo|黄渤", "celebrity", 86), + ("沈腾", "shen teng", "Shen Teng", "celebrity", 86), + ("Shen Teng", "", "shen teng|沈腾", "celebrity", 86), + ("贾玲", "jia ling", "Jia Ling", "celebrity", 84), + ("Jia Ling", "", "jia ling|贾玲", "celebrity", 84), + ("马丽", "ma li", "Ma Li", "celebrity", 80), + ("张小斐", "zhang xiao fei", "Zhang Xiaofei", "celebrity", 80), + ("吴京", "wu jing", "Wu Jing", "celebrity", 84), + ("Wu Jing", "", "wu jing|吴京", "celebrity", 84), + ("张译", "zhang yi yan", "Zhang Yi actor", "celebrity", 82), + ("雷佳音", "lei jia yin", "Lei Jiayin", "celebrity", 80), + ("孙俪", "sun li", "Sun Li", "celebrity", 82), + ("靳东", "jin dong", "Jin Dong", "celebrity", 78), + ("那英", "na ying", "Na Ying", "celebrity", 82), + ("汪峰", "wang feng", "Wang Feng", "celebrity", 80), + ("王菲", "wang fei", "Faye Wong", "celebrity", 84), + ("张学友", "zhang xue you", "Jacky Cheung", "celebrity", 82), + ("Jacky Cheung", "", "jacky cheung|张学友", "celebrity", 82), + ("林俊杰", "lin jun jie", "JJ Lin", "celebrity", 84), + ("JJ Lin", "", "jj lin|林俊杰", "celebrity", 84), + ("蔡依林", "cai yi lin", "Jolin Tsai", "celebrity", 82), + ("Jolin Tsai", "", "jolin tsai|蔡依林", "celebrity", 82), + ("王力宏", "wang li hong", "Wang Leehom", "celebrity", 82), + ("陈奕迅", "chen yi xun", "Eason Chan", "celebrity", 84), + ("Eason Chan", "", "eason chan|陈奕迅", "celebrity", 84), + ("毛不易", "mao bu yi", "Mao Buyi", "celebrity", 82), + ("华晨宇", "hua chen yu", "Hua Chenyu", "celebrity", 80), + ("时代少年团", "shi dai shao nian tuan", "TNT|Teens in Times", "celebrity", 80), + ("TFBOYS", "", "tf boys|TF Boys", "celebrity", 82), + ("蔡徐坤", "cai xu kun", "Cai Xukun", "celebrity", 82), + ("Cai Xukun", "", "cai xukun|蔡徐坤", "celebrity", 82), + ("黄子韬", "huang zi tao", "Huang Zitao", "celebrity", 80), + ("Huang Zitao", "", "huang zitao|黄子韬", "celebrity", 80), + ("BLACKPINK", "", "black pink|Black Pink", "celebrity", 84), + ("Jennie", "", "blackpink jennie", "celebrity", 80), + ("Jisoo", "", "blackpink jisoo", "celebrity", 78), + ("Rosé", "", "blackpink rose|Rose", "celebrity", 78), + ("BTS", "", "bts|防弹少年团", "celebrity", 84), + ("防弹少年团", "fang dan shao nian tuan", "BTS", "celebrity", 84), + ("NewJeans", "", "new jeans|New Jeans", "celebrity", 82), + ("aespa", "", "aespa组合", "celebrity", 80), + ("IVE", "", "ive组合", "celebrity", 78), + ("Rihanna", "", "rihanna|蕾哈娜", "celebrity", 82), + ("蕾哈娜", "lei ha na", "Rihanna", "celebrity", 80), + ("Drake", "", "drake rapper", "celebrity", 82), + ("Kanye West", "", "kanye west|Ye", "celebrity", 80), + ("Kendrick Lamar", "", "kendrick lamar", "celebrity", 80), + ("Billie Eilish", "", "billie eilish", "celebrity", 82), + ("Ariana Grande", "", "ariana grande", "celebrity", 82), + ("Lady Gaga", "", "lady gaga", "celebrity", 82), + ("Tom Hanks", "", "tom hanks", "celebrity", 80), + ("Leonardo DiCaprio", "", "leonardo dicaprio|小李子", "celebrity", 82), + ("小李子", "xiao li zi", "Leonardo DiCaprio", "celebrity", 80), + ("Brad Pitt", "", "brad pitt", "celebrity", 80), + ("Angelina Jolie", "", "angelina jolie", "celebrity", 78), + ("Jennifer Lawrence", "", "jennifer lawrence", "celebrity", 78), + ("Scarlett Johansson", "", "scarlett johansson", "celebrity", 78), + ("Robert Downey Jr", "", "robert downey jr|钢铁侠", "celebrity", 80), + ("钢铁侠", "gang tie xia", "Iron Man|Robert Downey Jr", "celebrity", 78), + ("漫威", "man wei", "Marvel", "tech_term", 80), + ("Marvel", "", "marvel|漫威", "tech_term", 80), + ("蝙蝠侠", "bian fu xia", "Batman", "celebrity", 76), + ("Batman", "", "batman|蝙蝠侠", "celebrity", 76), + # --- Athletes --- + ("王楚钦", "wang chu qin", "Wang Chuqin", "athlete", 88), + ("Wang Chuqin", "", "wang chuqin|王楚钦", "athlete", 88), + ("孙颖莎", "sun ying sha", "Sun Yingsha", "athlete", 88), + ("Sun Yingsha", "", "sun yingsha|孙颖莎", "athlete", 88), + ("樊振东", "fan zhen dong", "Fan Zhendong", "athlete", 86), + ("Fan Zhendong", "", "fan zhendong|樊振东", "athlete", 86), + ("王曼昱", "wang man yu", "Wang Manyu", "athlete", 84), + ("Wang Manyu", "", "wang manyu|王曼昱", "athlete", 84), + ("郑钦文", "zheng qin wen", "Zheng Qinwen", "athlete", 86), + ("Zheng Qinwen", "", "zheng qinwen|郑钦文", "athlete", 86), + ("林诗栋", "lin shi dong", "Lin Shidong", "athlete", 80), + ("马龙", "ma long", "Ma Long", "athlete", 86), + ("Ma Long", "", "ma long|马龙", "athlete", 86), + ("全红婵", "quan hong chan", "Quan Hongchan", "athlete", 86), + ("Quan Hongchan", "", "quan hongchan|全红婵", "athlete", 86), + ("蒯曼", "kuai man", "Kuai Man", "athlete", 76), + ("林高远", "lin gao yuan", "Lin Gaoyuan", "athlete", 76), + ("苏炳添", "su bing tian", "Su Bingtian", "athlete", 80), + ("谷爱凌", "gu ai ling", "Eileen Gu", "athlete", 86), + ("Eileen Gu", "", "eileen gu|谷爱凌", "athlete", 86), + ("姚明", "yao ming", "Yao Ming", "athlete", 86), + ("Yao Ming", "", "yao ming|姚明", "athlete", 86), + ("李娜", "li na", "Li Na tennis", "athlete", 80), + ("刘翔", "liu xiang", "Liu Xiang", "athlete", 80), + ("易建联", "yi jian lian", "Yi Jianlian", "athlete", 78), + ("C罗", "C luo", "Cristiano Ronaldo", "athlete", 86), + ("Cristiano Ronaldo", "", "cristiano ronaldo|C罗", "athlete", 86), + ("梅西", "mei xi", "Lionel Messi", "athlete", 88), + ("Lionel Messi", "", "lionel messi|梅西", "athlete", 88), + ("姆巴佩", "mu ba pei", "Kylian Mbappé", "athlete", 84), + ("Kylian Mbappé", "", "kylian mbappe|姆巴佩", "athlete", 84), + ("哈兰德", "ha lan de", "Erling Haaland", "athlete", 82), + ("Erling Haaland", "", "erling haaland|哈兰德", "athlete", 82), + ("詹姆斯", "zhan mu si", "LeBron James", "athlete", 86), + ("LeBron James", "", "lebron james|詹姆斯", "athlete", 86), + ("库里", "ku li", "Stephen Curry", "athlete", 84), + ("Stephen Curry", "", "stephen curry|库里", "athlete", 84), + ("科比", "ke bi", "Kobe Bryant", "athlete", 82), + ("Kobe Bryant", "", "kobe bryant|科比", "athlete", 82), + ("乔丹", "qiao dan", "Michael Jordan", "athlete", 84), + ("Michael Jordan", "", "michael jordan|乔丹", "athlete", 84), + ("费德勒", "fei de le", "Roger Federer", "athlete", 80), + ("纳达尔", "na da er", "Rafael Nadal", "athlete", 80), + ("德约科维奇", "de yue ke wei qi", "Novak Djokovic", "athlete", 82), + ("Novak Djokovic", "", "novak djokovic|德约", "athlete", 82), + # --- Consumer brands --- + ("Burberry", "", "burberry|博柏利", "consumer_brand", 80), + ("博柏利", "bo bai li", "Burberry", "consumer_brand", 80), + ("Balenciaga", "", "balenciaga|巴黎世家", "consumer_brand", 82), + ("巴黎世家", "ba li shi jia", "Balenciaga", "consumer_brand", 82), + ("Versace", "", "versace|范思哲", "consumer_brand", 78), + ("范思哲", "fan si zhe", "Versace", "consumer_brand", 78), + ("Armani", "", "armani|阿玛尼", "consumer_brand", 80), + ("阿玛尼", "a ma ni", "Armani", "consumer_brand", 80), + ("Cartier", "", "cartier|卡地亚", "consumer_brand", 82), + ("卡地亚", "ka di ya", "Cartier", "consumer_brand", 82), + ("Bulgari", "", "bulgari|宝格丽", "consumer_brand", 78), + ("宝格丽", "bao ge li", "Bulgari", "consumer_brand", 78), + ("Van Cleef", "", "van cleef|梵克雅宝", "consumer_brand", 76), + ("梵克雅宝", "fan ke ya bao", "Van Cleef", "consumer_brand", 76), + ("Moncler", "", "moncler|盟可睐", "consumer_brand", 78), + ("盟可睐", "meng ke lai", "Moncler", "consumer_brand", 78), + ("Canada Goose", "", "canada goose|加拿大鹅", "consumer_brand", 78), + ("加拿大鹅", "jia na da e", "Canada Goose", "consumer_brand", 78), + ("New Balance", "", "new balance|新百伦", "consumer_brand", 80), + ("新百伦", "xin bai lun", "New Balance", "consumer_brand", 80), + ("Puma", "", "puma|彪马", "consumer_brand", 78), + ("彪马", "biao ma", "Puma", "consumer_brand", 78), + ("Converse", "", "converse|匡威", "consumer_brand", 76), + ("匡威", "kuang wei", "Converse", "consumer_brand", 76), + ("Vans", "", "vans", "consumer_brand", 76), + ("Skechers", "", "skechers|斯凯奇", "consumer_brand", 76), + ("斯凯奇", "si kai qi", "Skechers", "consumer_brand", 76), + ("Levi's", "", "levis|李维斯", "consumer_brand", 76), + ("李维斯", "li wei si", "Levi's", "consumer_brand", 76), + ("Coach", "", "coach|蔻驰", "consumer_brand", 78), + ("蔻驰", "kou chi", "Coach", "consumer_brand", 78), + ("Michael Kors", "", "michael kors|MK", "consumer_brand", 76), + ("Estée Lauder", "", "estee lauder|雅诗兰黛", "consumer_brand", 78), + ("雅诗兰黛", "ya shi lan dai", "Estée Lauder", "consumer_brand", 78), + ("L'Oréal", "", "loreal|欧莱雅", "consumer_brand", 78), + ("欧莱雅", "ou lai ya", "L'Oréal", "consumer_brand", 78), + ("Shiseido", "", "shiseido|资生堂", "consumer_brand", 76), + ("资生堂", "zi sheng tang", "Shiseido", "consumer_brand", 76), + ("SK-II", "", "sk two|SK2", "consumer_brand", 78), + ("兰蔻", "lan ke", "Lancôme", "consumer_brand", 78), + ("Lancôme", "", "lancome|兰蔻", "consumer_brand", 78), + ("YSL", "", "ysl|圣罗兰", "consumer_brand", 78), + ("圣罗兰", "sheng luo lan", "YSL", "consumer_brand", 78), + ("MAC", "", "mac cosmetics", "consumer_brand", 76), + ("完美日记", "wan mei ri ji", "Perfect Diary", "consumer_brand", 80), + ("Perfect Diary", "", "perfect diary|完美日记", "consumer_brand", 80), + ("花西子", "hua xi zi", "Florasis", "consumer_brand", 78), + ("Florasis", "", "florasis|花西子", "consumer_brand", 78), + ("名创优品", "ming chuang you pin", "Miniso", "consumer_brand", 78), + ("Miniso", "", "miniso|名创优品", "consumer_brand", 78), + ("海底捞", "hai di lao", "Haidilao", "consumer_brand", 82), + ("Haidilao", "", "haidilao|海底捞", "consumer_brand", 82), + ("西贝", "xi bei", "Xibei", "consumer_brand", 76), + ("老乡鸡", "lao xiang ji", "Laoxiangji", "consumer_brand", 76), + ("盒马", "he ma", "Hema|盒马鲜生", "consumer_brand", 80), + ("Hema", "", "hema|盒马", "consumer_brand", 80), + ("山姆会员店", "shan mu hui yuan dian", "Sam's Club", "consumer_brand", 80), + ("Sam's Club", "", "sams club|山姆", "consumer_brand", 80), + ("Costco", "", "costco|开市客", "consumer_brand", 80), + ("开市客", "kai shi ke", "Costco", "consumer_brand", 80), + ("沃尔玛", "wo er ma", "Walmart", "consumer_brand", 78), + ("Walmart", "", "walmart|沃尔玛", "consumer_brand", 78), + ("家乐福", "jia le fu", "Carrefour", "consumer_brand", 72), + ("宜家", "yi jia", "IKEA", "consumer_brand", 80), + ("IKEA", "", "ikea|宜家", "consumer_brand", 80), + ("MUJI", "", "muji|无印良品", "consumer_brand", 78), + ("无印良品", "wu yin liang pin", "MUJI", "consumer_brand", 78), + ("始祖鸟", "shi zu niao", "Arc'teryx", "consumer_brand", 82), + ("Arc'teryx", "", "arcteryx|始祖鸟", "consumer_brand", 82), + ("北面", "bei mian", "The North Face", "consumer_brand", 78), + ("The North Face", "", "north face|北面", "consumer_brand", 78), + ("Columbia", "", "columbia sportswear", "consumer_brand", 72), + ("李宁", "li ning", "Li-Ning", "consumer_brand", 82), + ("Li-Ning", "", "li ning|李宁", "consumer_brand", 82), + ("安踏", "an ta", "Anta", "consumer_brand", 82), + ("Anta", "", "anta|安踏", "consumer_brand", 82), + ("特步", "te bu", "Xtep", "consumer_brand", 76), + ("Xtep", "", "xtep|特步", "consumer_brand", 76), + ("鸿星尔克", "hong xing er ke", "Erke", "consumer_brand", 76), + ("Erke", "", "erke|鸿星尔克", "consumer_brand", 76), + ("波司登", "bo si deng", "Bosideng", "consumer_brand", 78), + ("Bosideng", "", "bosideng|波司登", "consumer_brand", 78), + ("周大福", "zhou da fu", "Chow Tai Fook", "consumer_brand", 76), + ("Chow Tai Fook", "", "chow tai fook|周大福", "consumer_brand", 76), + ("老凤祥", "lao feng xiang", "Lao Feng Xiang", "consumer_brand", 74), + ("中国黄金", "zhong guo huang jin", "China Gold", "consumer_brand", 74), + # --- Auto / EV --- + ("领克", "ling ke", "Lynk & Co|Lynk", "tech_company", 84), + ("Lynk & Co", "", "lynk co|领克", "tech_company", 84), + ("问界", "wen jie", "AITO|AITO问界", "tech_company", 86), + ("AITO", "", "aito|问界", "tech_company", 86), + ("智界", "zhi jie", "Luxeed", "tech_company", 84), + ("Luxeed", "", "luxeed|智界", "tech_company", 84), + ("享界", "xiang jie", "Stelato", "tech_company", 82), + ("Stelato", "", "stelato|享界", "tech_company", 82), + ("尊界", "zun jie", "MAEXTRO", "tech_company", 82), + ("MAEXTRO", "", "maextro|尊界", "tech_company", 82), + ("小米YU7", "xiao mi YU7", "Xiaomi YU7|YU7", "tech_company", 88), + ("YU7", "", "xiaomi yu7|小米YU7", "tech_company", 86), + ("理想L9", "li xiang L9", "Li L9", "tech_company", 82), + ("Li L9", "", "li l9|理想L9", "tech_company", 82), + ("理想MEGA", "li xiang MEGA", "Li MEGA|MEGA", "tech_company", 82), + ("小鹏MONA", "xiao peng MONA", "MONA", "tech_company", 80), + ("极狐", "ji hu", "ARCFOX", "tech_company", 80), + ("ARCFOX", "", "arcfox|极狐", "tech_company", 80), + ("阿维塔", "a wei ta", "Avatr", "tech_company", 82), + ("Avatr", "", "avatr|阿维塔", "tech_company", 82), + ("深蓝", "shen lan", "Deepal", "tech_company", 80), + ("Deepal", "", "deepal|深蓝", "tech_company", 80), + ("岚图", "lan tu", "Voyah", "tech_company", 82), + ("Voyah", "", "voyah|岚图", "tech_company", 82), + ("腾势", "teng shi", "Denza", "tech_company", 82), + ("Denza", "", "denza|腾势", "tech_company", 82), + ("方程豹", "fang cheng bao", "Fangchengbao", "tech_company", 82), + ("Fangchengbao", "", "fangchengbao|方程豹", "tech_company", 82), + ("仰望", "yang wang", "Yangwang", "tech_company", 84), + ("Yangwang", "", "yangwang|仰望", "tech_company", 84), + ("智己", "zhi ji", "IM Motors", "tech_company", 82), + ("IM Motors", "", "im motors|智己", "tech_company", 82), + ("飞凡", "fei fan", "Rising Auto", "tech_company", 76), + ("昊铂", "hao bo", "Hyper", "tech_company", 78), + ("Hyper", "", "hyper|昊铂", "tech_company", 78), + ("广汽埃安", "guang qi ai an", "Aion", "tech_company", 82), + ("Aion", "", "aion|埃安", "tech_company", 82), + ("哪吒汽车", "na zha qi che", "Neta Auto", "tech_company", 80), + ("Neta Auto", "", "neta auto|哪吒汽车", "tech_company", 80), + ("零跑", "ling pao", "Leapmotor", "tech_company", 84), + ("Leapmotor", "", "leapmotor|零跑", "tech_company", 84), + ("赛力斯", "sai li si", "Seres", "tech_company", 84), + ("Seres", "", "seres|赛力斯", "tech_company", 84), + ("长安", "chang an", "Changan", "tech_company", 78), + ("Changan", "", "changan|长安", "tech_company", 78), + ("上汽", "shang qi", "SAIC", "tech_company", 78), + ("SAIC", "", "saic|上汽", "tech_company", 78), + ("一汽", "yi qi", "FAW", "tech_company", 76), + ("FAW", "", "faw|一汽", "tech_company", 76), + ("东风", "dong feng", "Dongfeng", "tech_company", 76), + ("Dongfeng", "", "dongfeng|东风", "tech_company", 76), + ("奇瑞", "qi rui", "Chery", "tech_company", 78), + ("Chery", "", "chery|奇瑞", "tech_company", 78), + ("吉利银河", "ji li yin he", "Galaxy Geely", "tech_company", 78), + ("路特斯", "lu te si", "Lotus", "tech_company", 80), + ("Lotus", "", "lotus|路特斯", "tech_company", 80), + ("保时捷", "bao shi jie", "Porsche", "tech_company", 84), + ("Porsche", "", "porsche|保时捷", "tech_company", 84), + ("法拉利", "fa la li", "Ferrari", "tech_company", 82), + ("Ferrari", "", "ferrari|法拉利", "tech_company", 82), + ("兰博基尼", "lan bo ji ni", "Lamborghini", "tech_company", 82), + ("Lamborghini", "", "lamborghini|兰博基尼", "tech_company", 82), + ("奔驰", "ben chi", "Mercedes-Benz", "tech_company", 84), + ("Mercedes-Benz", "", "mercedes benz|奔驰", "tech_company", 84), + ("宝马", "bao ma", "BMW", "tech_company", 84), + ("BMW", "", "bmw|宝马", "tech_company", 84), + ("大众", "da zhong", "Volkswagen", "tech_company", 80), + ("Volkswagen", "", "volkswagen|大众", "tech_company", 80), + ("丰田", "feng tian", "Toyota", "tech_company", 80), + ("Toyota", "", "toyota|丰田", "tech_company", 80), + ("本田", "ben tian", "Honda", "tech_company", 78), + ("Honda", "", "honda|本田", "tech_company", 78), + # --- Tech / semicon / cloud --- + ("Anduril", "", "anduril industries", "tech_company", 80), + ("Scale AI", "", "scale ai|Scale", "tech_company", 84), + ("Labelbox", "", "labelbox", "tech_company", 74), + ("Weights & Biases", "", "weights and biases|W&B", "dev_tool", 80), + ("W&B", "", "weights and biases", "dev_tool", 78), + ("Langfuse", "", "langfuse", "dev_tool", 78), + ("Helicone", "", "helicone", "dev_tool", 74), + ("Braintrust", "", "braintrust ai", "dev_tool", 76), + ("Arize", "", "arize ai|Arize AI", "dev_tool", 74), + ("CoreWeave", "", "coreweave", "tech_company", 82), + ("Lambda Labs", "", "lambda labs|Lambda", "tech_company", 78), + ("Crusoe", "", "crusoe energy", "tech_company", 74), + ("RunPod", "", "run pod|RunPod", "tech_company", 78), + ("Groq Cloud", "", "groq cloud", "ai_platform", 78), + ("Baseten", "", "baseten", "ai_platform", 76), + ("Anyscale", "", "anyscale|Ray", "tech_company", 78), + ("Ray Serve", "", "ray serve", "dev_tool", 76), + ("Micron", "", "micron|美光", "tech_company", 82), + ("美光", "mei guang", "Micron", "tech_company", 82), + ("SK Hynix", "", "sk hynix|海力士", "tech_company", 82), + ("海力士", "hai li shi", "SK Hynix", "tech_company", 82), + ("Kioxia", "", "kioxia|铠侠", "tech_company", 76), + ("铠侠", "kai xia", "Kioxia", "tech_company", 76), + ("Western Digital", "", "western digital|西部数据", "tech_company", 78), + ("西部数据", "xi bu shu ju", "Western Digital", "tech_company", 78), + ("MediaTek", "", "mediatek|联发科", "tech_company", 82), + ("联发科", "lian fa ke", "MediaTek", "tech_company", 82), + ("Rockchip", "", "rockchip|瑞芯微", "tech_company", 78), + ("瑞芯微", "rui xin wei", "Rockchip", "tech_company", 78), + ("Allwinner", "", "allwinner|全志", "tech_company", 74), + ("全志", "quan zhi", "Allwinner", "tech_company", 74), + ("寒武纪", "han wu ji", "Cambricon", "tech_company", 80), + ("Cambricon", "", "cambricon|寒武纪", "tech_company", 80), + ("壁仞", "bi ren", "Biren", "tech_company", 78), + ("Biren", "", "biren|壁仞", "tech_company", 78), + ("摩尔线程", "mo er xian cheng", "Moore Threads", "tech_company", 80), + ("Moore Threads", "", "moore threads|摩尔线程", "tech_company", 80), + ("燧原", "sui yuan", "Enflame", "tech_company", 76), + ("Enflame", "", "enflame|燧原", "tech_company", 76), + ("平头哥", "ping tou ge", "T-Head", "tech_company", 78), + ("T-Head", "", "t head|平头哥", "tech_company", 78), + ("紫光", "zi guang", "Unigroup", "tech_company", 76), + ("Unigroup", "", "unigroup|紫光", "tech_company", 76), + ("长鑫", "chang xin", "CXMT", "tech_company", 78), + ("CXMT", "", "cxmt|长鑫存储", "tech_company", 78), + ("长江存储", "chang jiang cun chu", "YMTC", "tech_company", 80), + ("YMTC", "", "ymtc|长江存储", "tech_company", 80), + ("商汤绝影", "shang tang jue ying", "SenseAuto", "tech_company", 78), + ("绝影", "jue ying", "SenseAuto", "tech_company", 76), + ("Momenta", "", "momenta|魔门塔", "tech_company", 82), + ("魔门塔", "mo men ta", "Momenta", "tech_company", 80), + ("文远知行", "wen yuan zhi xing", "WeRide", "tech_company", 82), + ("WeRide", "", "weride|文远知行", "tech_company", 82), + ("小马智行", "xiao ma zhi xing", "Pony.ai", "tech_company", 82), + ("Pony.ai", "", "pony ai|小马智行", "tech_company", 82), + ("元戎启行", "yuan rong qi xing", "DeepRoute", "tech_company", 78), + ("DeepRoute", "", "deeproute|元戎启行", "tech_company", 78), + ("禾赛", "he sai", "Hesai", "tech_company", 80), + ("Hesai", "", "hesai|禾赛", "tech_company", 80), + ("速腾聚创", "su teng ju chuang", "RoboSense", "tech_company", 80), + ("RoboSense", "", "robosense|速腾聚创", "tech_company", 80), + ("图达通", "tu da tong", "Innovusion", "tech_company", 76), + ("Innovusion", "", "innovusion|图达通", "tech_company", 76), + ("OpenHarmony", "", "open harmony|开源鸿蒙", "tech_company", 82), + ("开源鸿蒙", "kai yuan hong meng", "OpenHarmony", "tech_company", 82), + ("openEuler", "", "open euler|欧拉", "tech_company", 76), + ("欧拉", "ou la", "openEuler", "tech_company", 76), + ("龙芯", "long xin", "Loongson", "tech_company", 78), + ("Loongson", "", "loongson|龙芯", "tech_company", 78), + ("飞腾", "fei teng", "Phytium", "tech_company", 76), + ("Phytium", "", "phytium|飞腾", "tech_company", 76), + ("鲲鹏", "kun peng", "Kunpeng", "tech_company", 80), + ("Kunpeng", "", "kunpeng|鲲鹏", "tech_company", 80), + ("飞书", "fei shu", "Lark", "tech_company", 86), + ("Lark", "", "lark|飞书", "tech_company", 86), + ("钉钉", "ding ding", "DingTalk", "tech_company", 84), + ("DingTalk", "", "dingtalk|钉钉", "tech_company", 84), + ("企业微信", "qi ye wei xin", "WeCom", "tech_company", 84), + ("WeCom", "", "wecom|企业微信", "tech_company", 84), + # --- AI / internet hot terms --- + ("skill", "", "skills|Agent Skills", "ai_term", 78), + ("skills", "", "agent skills|Claude Skills", "ai_term", 76), + ("Agent Skills", "", "agent skills|Claude Skills", "ai_term", 82), + ("Claude Skills", "", "claude skills", "ai_term", 80), + ("MCP协议", "MCP xie yi", "MCP protocol", "ai_term", 84), + ("A2A", "", "agent to agent|Agent2Agent", "ai_term", 82), + ("Agent2Agent", "", "a2a|agent to agent", "ai_term", 80), + ("A2A协议", "A2A xie yi", "Agent2Agent", "ai_term", 78), + ("deep agent", "", "deep agents", "ai_term", 82), + ("deep agents", "", "deep agent", "ai_term", 80), + ("agentic workflow", "", "agentic workflows", "ai_term", 84), + ("agentic coding", "", "agentic code", "ai_term", 82), + ("spec driven", "", "spec-driven|规格驱动", "ai_term", 80), + ("spec-driven", "", "spec driven", "ai_term", 80), + ("规格驱动", "gui ge qu dong", "spec-driven", "ai_term", 78), + ("vibe marketing", "", "氛围营销", "ai_term", 76), + ("氛围营销", "fen wei ying xiao", "vibe marketing", "ai_term", 74), + ("AI原生应用", "AI yuan sheng ying yong", "AI native app", "ai_term", 80), + ("AI应用", "AI ying yong", "AI app", "ai_term", 78), + ("模型蒸馏", "mo xing zheng liu", "model distillation", "ai_term", 80), + ("model distillation", "", "模型蒸馏", "ai_term", 78), + ("合成数据", "he cheng shu ju", "synthetic data", "ai_term", 80), + ("synthetic data", "", "合成数据", "ai_term", 78), + ("数据飞轮", "shu ju fei lun", "data flywheel", "ai_term", 78), + ("data flywheel", "", "数据飞轮", "ai_term", 76), + ("长上下文", "chang shang xia wen", "long context", "ai_term", 82), + ("long context", "", "长上下文", "ai_term", 80), + ("百万上下文", "bai wan shang xia wen", "million context", "ai_term", 80), + ("million context", "", "百万上下文", "ai_term", 78), + ("KV cache", "", "kv cache|KV缓存", "ai_term", 80), + ("KV缓存", "KV huan cun", "KV cache", "ai_term", 78), + ("投机解码", "tou ji jie ma", "speculative decoding", "ai_term", 76), + ("speculative decoding", "", "投机解码", "ai_term", 74), + ("MoE路由", "MoE lu you", "expert routing", "ai_term", 76), + ("expert routing", "", "MoE路由", "ai_term", 74), + ("稀疏注意力", "xi shu zhu yi li", "sparse attention", "ai_term", 74), + ("sparse attention", "", "稀疏注意力", "ai_term", 72), + ("视频大模型", "shi pin da mo xing", "video foundation model", "ai_term", 82), + ("video foundation model", "", "视频大模型", "ai_term", 80), + ("多智能体协作", "duo zhi neng ti xie zuo", "multi-agent collaboration", "ai_term", 80), + ("AI陪伴", "AI pei ban", "AI companion", "ai_term", 78), + ("AI companion", "", "AI陪伴", "ai_term", 76), + ("数字人", "shu zi ren", "digital human", "ai_term", 82), + ("digital human", "", "数字人", "ai_term", 80), + ("虚拟偶像", "xu ni ou xiang", "virtual idol", "ai_term", 76), + ("virtual idol", "", "虚拟偶像", "ai_term", 74), + ("赛博永生", "sai bo yong sheng", "cyber immortality", "tech_term", 72), + ("赛博菩萨", "sai bo pu sa", "cyber bodhisattva", "tech_term", 70), + ("赛博佛祖", "sai bo fo zu", "cyber buddha", "tech_term", 70), + ("抽象", "chou xiang", "abstract meme", "tech_term", 72), + ("钝感力", "dun gan li", "emotional bluntness", "tech_term", 74), + ("松弛感", "song chi gan", "relaxed vibe", "tech_term", 76), + ("情绪稳定", "qing xu wen ding", "emotionally stable", "tech_term", 74), + ("搭子", "da zi", "buddy partner", "tech_term", 76), + ("citywalk", "", "city walk|City Walk", "tech_term", 76), + ("City Walk", "", "citywalk", "tech_term", 74), + ("特种兵旅游", "te zhong bing lv you", "special forces travel", "tech_term", 72), + ("显眼包", "xian yan bao", "attention seeker", "tech_term", 72), + ("i人", "i ren", "introvert", "tech_term", 74), + ("e人", "e ren", "extrovert", "tech_term", 74), + ("MBTI", "", "mbti人格", "tech_term", 76), + ("脆皮大学生", "cui pi da xue sheng", "fragile college student", "tech_term", 70), + ("班味", "ban wei", "office vibe", "tech_term", 74), + ("班味很重", "ban wei hen zhong", "heavy office vibe", "tech_term", 72), + ("偷感", "tou gan", "stealth vibe", "tech_term", 72), + ("偷感很重", "tou gan hen zhong", "heavy stealth vibe", "tech_term", 70), + ("水灵灵", "shui ling ling", "fresh and lively", "tech_term", 70), + ("硬控", "ying kong", "hard control meme", "tech_term", 72), + ("绝绝子", "jue jue zi", "absolutely amazing", "tech_term", 72), + ("尊嘟假嘟", "zun du jia du", "really or not", "tech_term", 70), + ("芭比Q了", "ba bi Q le", "barbecue done|finished", "tech_term", 68), + ("栓Q", "shuan Q", "thank you meme", "tech_term", 68), + ("YYDS", "", "yyds|永远的神", "tech_term", 74), + ("永远的神", "yong yuan de shen", "YYDS", "tech_term", 72), + ("破防", "po fang", "emotionally broken", "tech_term", 74), + ("上头", "shang tou", "addictive hype", "tech_term", 70), + ("下头", "xia tou", "turn off vibe", "tech_term", 70), + ("拿捏", "na nie", "nailed it", "tech_term", 70), + ("种草", "zhong cao", "plant grass recommend", "tech_term", 78), + ("拔草", "ba cao", "unrecommend", "tech_term", 74), + ("安利", "an li", "recommend", "tech_term", 74), + ("避雷", "bi lei", "avoid pitfall", "tech_term", 74), + ("测评", "ce ping", "product review", "tech_term", 76), + ("开箱", "kai xiang", "unboxing", "tech_term", 76), + ("沉浸式", "chen jin shi", "immersive", "tech_term", 74), + ("氛围感", "fen wei gan", "atmospheric vibe", "tech_term", 76), + ("高级感", "gao ji gan", "premium feel", "tech_term", 74), + ("质感", "zhi gan", "texture quality", "tech_term", 72), + ("带货", "dai huo", "live commerce sales", "tech_term", 78), + ("直播带货", "zhi bo dai huo", "livestream commerce", "tech_term", 80), + ("短视频", "duan shi pin", "short video", "tech_term", 78), + ("中视频", "zhong shi pin", "mid-length video", "tech_term", 72), + ("知识付费", "zhi shi fu fei", "paid knowledge", "tech_term", 74), + ("私域", "si yu", "private domain traffic", "tech_term", 78), + ("公域", "gong yu", "public domain traffic", "tech_term", 74), + ("全域经营", "quan yu jing ying", "omnichannel operation", "tech_term", 74), + ("本地化", "ben di hua", "localization", "tech_term", 72), + ("GTM", "", "go to market", "tech_term", 74), + ("PLG", "", "product led growth", "tech_term", 72), + ("SLG", "", "sales led growth", "tech_term", 70), + ("ARR", "", "annual recurring revenue", "tech_term", 72), + ("MRR", "", "monthly recurring revenue", "tech_term", 70), + ("NDR", "", "net dollar retention", "tech_term", 68), + ("CAC", "", "customer acquisition cost", "tech_term", 70), + ("LTV", "", "lifetime value", "tech_term", 70), + ("融资", "rong zi", "fundraising", "tech_term", 74), + ("估值", "gu zhi", "valuation", "tech_term", 74), + ("IPO", "", "initial public offering|上市", "tech_term", 76), + ("上市", "shang shi", "IPO listing", "tech_term", 74), + ("独角兽", "du jiao shou", "unicorn startup", "tech_term", 76), + ("decacorn", "", "decacorn startup", "tech_term", 68), + ("A轮", "A lun", "Series A", "tech_term", 72), + ("B轮", "B lun", "Series B", "tech_term", 70), + ("C轮", "C lun", "Series C", "tech_term", 68), + ("Pre-A", "", "pre a round", "tech_term", 68), + ("降本增效", "jiang ben zeng xiao", "cost cut efficiency", "tech_term", 78), + ("裁员", "cai yuan", "layoffs", "tech_term", 74), + ("优化", "you hua", "layoff euphemism", "tech_term", 70), + ("毕业", "bi ye", "layoff euphemism", "tech_term", 68), + ("35岁危机", "35 sui wei ji", "age 35 crisis", "tech_term", 72), + ("考公", "kao gong", "civil service exam", "tech_term", 74), + ("考编", "kao bian", "public institution exam", "tech_term", 72), + ("灵活就业", "ling huo jiu ye", "flexible employment", "tech_term", 70), + ("银发经济", "yin fa jing ji", "silver economy", "tech_term", 78), + ("宠物经济", "chong wu jing ji", "pet economy", "tech_term", 74), + ("悦己消费", "yue ji xiao fei", "self-reward spending", "tech_term", 74), + ("情绪消费", "qing xu xiao fei", "emotional spending", "tech_term", 74), + ("体验经济", "ti yan jing ji", "experience economy", "tech_term", 72), + ("首发经济", "shou fa jing ji", "launch economy", "tech_term", 74), + ("冰雪经济", "bing xue jing ji", "ice snow economy", "tech_term", 72), + ("以旧换新", "yi jiu huan xin", "trade-in program", "tech_term", 78), + ("国补", "guo bu", "national subsidy", "tech_term", 80), + ("消费券", "xiao fei quan", "consumption voucher", "tech_term", 72), + ("数据要素", "shu ju yao su", "data as factor", "tech_term", 78), + ("数据资产", "shu ju zi chan", "data assets", "tech_term", 76), + ("数据确权", "shu ju que quan", "data rights confirmation", "tech_term", 74), + ("耐心资本", "nai xin zi ben", "patient capital", "tech_term", 76), + ("长期主义", "chang qi zhu yi", "long-termism", "tech_term", 76), + ("价值投资者", "jia zhi tou zi zhe", "value investor", "tech_term", 72), + ("价值投资", "jia zhi tou zi", "value investing", "tech_term", 72), + # --- Games / media IP --- + ("米哈游", "mi ha you", "miHoYo", "game_ip", 86), + ("miHoYo", "", "mihoyo|米哈游", "game_ip", 86), + ("原神", "yuan shen", "Genshin Impact", "game_ip", 88), + ("Genshin Impact", "", "genshin impact|原神", "game_ip", 88), + ("崩坏星穹铁道", "beng huai xing qiong tie dao", "Honkai Star Rail", "game_ip", 86), + ("Honkai Star Rail", "", "honkai star rail|星穹铁道", "game_ip", 86), + ("星穹铁道", "xing qiong tie dao", "Honkai Star Rail", "game_ip", 84), + ("崩坏", "beng huai", "Honkai", "game_ip", 80), + ("Honkai", "", "honkai|崩坏", "game_ip", 80), + ("绝区零", "jue qu ling", "Zenless Zone Zero", "game_ip", 84), + ("Zenless Zone Zero", "", "zenless zone zero|ZZZ", "game_ip", 84), + ("鸣潮", "ming chao", "Wuthering Waves", "game_ip", 82), + ("Wuthering Waves", "", "wuthering waves|鸣潮", "game_ip", 82), + ("腾讯游戏", "teng xun you xi", "Tencent Games", "game_ip", 84), + ("王者荣耀", "wang zhe rong yao", "Honor of Kings", "game_ip", 88), + ("Honor of Kings", "", "honor of kings|王者", "game_ip", 88), + ("和平精英", "he ping jing ying", "PUBG Mobile China", "game_ip", 86), + ("PUBG Mobile", "", "pubg mobile|和平精英", "game_ip", 84), + ("英雄联盟", "ying xiong lian meng", "League of Legends", "game_ip", 86), + ("League of Legends", "", "league of legends|LOL", "game_ip", 86), + ("无畏契约", "wu wei qi yue", "Valorant", "game_ip", 84), + ("Valorant", "", "valorant|无畏契约", "game_ip", 84), + ("DOTA2", "", "dota 2|Dota 2", "game_ip", 82), + ("Dota 2", "", "dota2|DOTA2", "game_ip", 82), + ("CS2", "", "counter strike 2|CSGO", "game_ip", 82), + ("Counter-Strike", "", "counter strike|CS2", "game_ip", 80), + ("Steam", "", "steam平台", "game_ip", 86), + ("Epic Games", "", "epic games|Epic", "game_ip", 80), + ("育碧", "yu bi", "Ubisoft", "game_ip", 78), + ("Ubisoft", "", "ubisoft|育碧", "game_ip", 78), + ("暴雪", "bao xue", "Blizzard", "game_ip", 82), + ("Blizzard", "", "blizzard|暴雪", "game_ip", 82), + ("动视", "dong shi", "Activision", "game_ip", 80), + ("Activision", "", "activision|动视", "game_ip", 80), + ("PlayStation", "", "playstation|PS5", "game_ip", 82), + ("PS5", "", "playstation 5", "game_ip", 80), + ("Xbox", "", "xbox series", "game_ip", 80), + ("艾尔登法环", "ai er deng fa huan", "Elden Ring", "game_ip", 82), + ("Elden Ring", "", "elden ring|老头环", "game_ip", 82), + ("老头环", "lao tou huan", "Elden Ring", "game_ip", 80), + ("何同学", "he tong xue", "何同学UP主", "celebrity", 82), + ("老师好我叫何同学", "lao shi hao wo jiao he tong xue", "何同学", "celebrity", 80), + ("罗翔", "luo xiang", "罗翔说刑法", "celebrity", 84), + ("罗翔说刑法", "luo xiang shuo xing fa", "罗翔", "celebrity", 82), + ("papi酱", "papi jiang", "papi", "celebrity", 78), + ("李子柒", "li zi qi", "Li Ziqi", "celebrity", 84), + ("Li Ziqi", "", "li ziqi|李子柒", "celebrity", 84), + ("董宇辉", "dong yu hui", "Dong Yuhui", "celebrity", 84), + ("Dong Yuhui", "", "dong yuhui|董宇辉", "celebrity", 84), + ("东方甄选", "dong fang zhen xuan", "East Buy", "tech_company", 80), + ("疯狂小杨哥", "feng kuang xiao yang ge", "Xiao Yangge", "celebrity", 78), + ("李佳琦", "li jia qi", "Austin Li", "celebrity", 84), + ("Austin Li", "", "austin li|李佳琦", "celebrity", 84), + ("薇娅", "wei ya", "Viya", "celebrity", 76), + ("Viya", "", "viya|薇娅", "celebrity", 76), + ("交个朋友", "jiao ge peng you", "Make Friends Live", "tech_company", 78), + ("交个朋友直播间", "jiao ge peng you zhi bo jian", "交个朋友", "tech_term", 76), + # --- Finance / investment --- + ("伯克希尔", "bo ke xi er", "Berkshire Hathaway", "fintech", 82), + ("Berkshire Hathaway", "", "berkshire hathaway|伯克希尔", "fintech", 82), + ("芒格", "mang ge", "Charlie Munger", "tech_leader", 80), + ("Charlie Munger", "", "charlie munger|芒格", "tech_leader", 80), + ("索罗斯", "suo luo si", "George Soros", "tech_leader", 78), + ("George Soros", "", "george soros|索罗斯", "tech_leader", 78), + ("达利欧", "da li ou", "Ray Dalio", "tech_leader", 80), + ("Ray Dalio", "", "ray dalio|达利欧", "tech_leader", 80), + ("桥水", "qiao shui", "Bridgewater", "fintech", 80), + ("Bridgewater", "", "bridgewater|桥水基金", "fintech", 80), + ("黑石", "hei shi", "Blackstone", "fintech", 80), + ("Blackstone", "", "blackstone|黑石集团", "fintech", 80), + ("KKR", "", "kkr", "fintech", 76), + ("红杉", "hong shan", "Sequoia", "fintech", 80), + ("Sequoia", "", "sequoia|红杉资本", "fintech", 80), + ("a16z", "", "andreessen horowitz|A16Z", "fintech", 82), + ("Andreessen Horowitz", "", "a16z|andreessen horowitz", "fintech", 82), + ("高瓴", "gao ling", "Hillhouse", "fintech", 80), + ("Hillhouse", "", "hillhouse|高瓴资本", "fintech", 80), + ("IDG", "", "idg capital", "fintech", 76), + ("经纬", "jing wei", "Matrix Partners China", "fintech", 76), + ("Matrix Partners", "", "matrix partners|经纬创投", "fintech", 76), + ("真格", "zhen ge", "ZhenFund", "fintech", 76), + ("ZhenFund", "", "zhen fund|真格基金", "fintech", 76), + ("源码", "yuan ma", "Source Code Capital", "fintech", 74), + ("中金", "zhong jin", "CICC", "fintech", 78), + ("CICC", "", "cicc|中金公司", "fintech", 78), + ("中信", "zhong xin", "CITIC", "fintech", 78), + ("CITIC", "", "citic|中信证券", "fintech", 78), + ("华泰", "hua tai", "Huatai", "fintech", 76), + ("Huatai", "", "huatai|华泰证券", "fintech", 76), + ("国泰君安", "guo tai jun an", "Guotai Junan", "fintech", 76), + ("Guotai Junan", "", "guotai junan|国泰君安", "fintech", 76), + ("摩根大通", "mo gen da tong", "JPMorgan", "fintech", 80), + ("JPMorgan", "", "jp morgan|摩根大通", "fintech", 80), + ("高盛", "gao sheng", "Goldman Sachs", "fintech", 82), + ("Goldman Sachs", "", "goldman sachs|高盛", "fintech", 82), + ("摩根士丹利", "mo gen shi dan li", "Morgan Stanley", "fintech", 80), + ("Morgan Stanley", "", "morgan stanley|摩根士丹利", "fintech", 80), + ("纳斯达克", "na si da ke", "Nasdaq", "fintech", 80), + ("Nasdaq", "", "nasdaq|纳斯达克", "fintech", 80), + ("标普500", "biao pu 500", "S&P 500", "fintech", 78), + ("S&P 500", "", "s and p 500|标普500", "fintech", 78), + ("道琼斯", "dao qiong si", "Dow Jones", "fintech", 76), + ("Dow Jones", "", "dow jones|道琼斯", "fintech", 76), + ("恒生指数", "heng sheng zhi shu", "Hang Seng Index", "fintech", 76), + ("沪深300", "hu shen 300", "CSI 300", "fintech", 76), + ("比特币", "bi te bi", "Bitcoin", "fintech", 84), + ("Bitcoin", "", "bitcoin|BTC", "fintech", 84), + ("BTC", "", "bitcoin|比特币", "fintech", 80), + ("以太坊", "yi tai fang", "Ethereum", "fintech", 82), + ("Ethereum", "", "ethereum|ETH", "fintech", 82), + ("ETH", "", "ethereum|以太坊", "fintech", 78), + ("Solana", "", "solana crypto", "fintech", 78), + ("狗狗币", "gou gou bi", "Dogecoin", "fintech", 76), + ("Dogecoin", "", "dogecoin|狗狗币", "fintech", 76), + ("美联储", "mei lian chu", "Federal Reserve", "fintech", 82), + ("Federal Reserve", "", "federal reserve|美联储", "fintech", 82), + ("鲍威尔", "bao wei er", "Jerome Powell", "tech_leader", 80), + ("Jerome Powell", "", "jerome powell|鲍威尔", "tech_leader", 80), + ("加息", "jia xi", "rate hike", "fintech", 74), + ("降息", "jiang xi", "rate cut", "fintech", 76), + ("量化宽松", "liang hua kuan song", "quantitative easing", "fintech", 74), +] + + +def load_existing_terms(seed_path: Path) -> set[str]: + terms: set[str] = set() + with seed_path.open(encoding="utf-8") as handle: + for raw_line in handle: + line = raw_line.strip() + if not line or line.startswith("#"): + continue + parts = line.split("\t") + if not parts: + continue + word = parts[0].strip() + if word: + terms.add(word.lower()) + if len(parts) > 2: + for alias in parts[2].split("|"): + alias = alias.strip() + if alias: + terms.add(alias.lower()) + return terms + + +def format_row(word: str, pinyin: str, aliases: str, category: str, weight: int) -> str: + return f"{word}\t{pinyin}\t{aliases}\t{category}\t{weight}" + + +def main() -> int: + existing = load_existing_terms(SEED_PATH) + seen_in_batch: set[str] = set() + to_append: list[str] = [] + skipped: list[str] = [] + + for word, pinyin, aliases, category, weight in EXPANSION: + key = word.strip().lower() + if not key: + continue + if key in existing or key in seen_in_batch: + skipped.append(word) + continue + seen_in_batch.add(key) + to_append.append(format_row(word, pinyin, aliases, category, weight)) + + original = SEED_PATH.read_text(encoding="utf-8") + if not original.endswith("\n"): + original += "\n" + + block = [ + "", + "# --- Batch 2 expansion (2026-07-06): AI, celebrities, brands, hot terms ---", + *to_append, + "", + ] + SEED_PATH.write_text(original + "\n".join(block), encoding="utf-8") + + print(f"Appended: {len(to_append)} rows") + print(f"Skipped duplicates: {len(skipped)}") + if skipped: + preview = ", ".join(skipped[:40]) + suffix = "..." if len(skipped) > 40 else "" + print(f"Skipped preview: {preview}{suffix}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Scripts/lexicon/seeds/ai_tech_brands_seed.tsv b/Scripts/lexicon/seeds/ai_tech_brands_seed.tsv index 92ca5e1..3181720 100644 --- a/Scripts/lexicon/seeds/ai_tech_brands_seed.tsv +++ b/Scripts/lexicon/seeds/ai_tech_brands_seed.tsv @@ -306,7 +306,7 @@ Great Wall great wall|长城汽车 tech_company 78 # --- Tech leaders (bilingual where useful) --- Elon Musk 马斯克|elon musk tech_leader 92 马斯克 ma si ke Elon Musk tech_leader 92 -Sam Altman sam altman|山姆奥特曼 tech_leader 88 +Sam Altman sam altman|山姆奥特曼|奥特曼 tech_leader 88 Jensen Huang 黄仁勋|jensen huang tech_leader 90 黄仁勋 huang ren xun Jensen Huang tech_leader 90 Tim Cook 库克|tim cook tech_leader 85 @@ -618,3 +618,1008 @@ RedNote red note|Xiaohongshu|小红书 tech_company 82 村咖 cun ka village coffee tech_term 72 拉布布 la bu bu Labubu tech_term 72 Labubu labubu|拉布布 tech_term 72 + +# --- 2026 expansion: AI models & agents (no version numbers) --- +OpenClaw open claw|Open Claw|龙虾|养虾|红龙虾 ai_brand 94 +养虾 yang xia OpenClaw|open claw ai_term 88 +Seedance seed dance|即梦视频|字节 Seedance ai_brand 90 +Gemma google gemma|Gemma AI|Gemma模型 ai_model 88 +Haiku claude haiku|Claude Haiku ai_model 86 +Claude Cowork claude cowork|Cowork|克劳德协同 ai_brand 88 +Jules google jules|Jules AI|谷歌 Jules dev_tool 86 +MiMo xiaomi mimo|小米 MiMo|小米大模型 ai_brand 86 +Muse meta muse|Muse Spark|缪斯 ai_model 84 +Fable claude fable|Claude Fable ai_model 84 +Lindy AI lindy|Lindy ai_brand 82 +Harvey AI harvey|Harvey ai_brand 82 +Decagon decagon ai|Decagon AI ai_brand 80 +Bland AI bland ai|Bland ai_brand 78 +Relevance AI relevance ai|Relevance ai_brand 78 +深度思考 shen du si kao thinking model|深度思考模式 ai_term 84 + +# --- Entrepreneurs & internet figures --- +马云 ma yun Jack Ma tech_leader 90 +Jack Ma jack ma|马云 tech_leader 90 +张一鸣 zhang yi ming Zhang Yiming tech_leader 90 +Zhang Yiming zhang yiming|张一鸣 tech_leader 90 +刘强东 liu qiang dong Liu Qiangdong tech_leader 88 +Liu Qiangdong liu qiangdong|刘强东|东哥 tech_leader 88 +罗永浩 luo yong hao Luo Yonghao tech_leader 88 +Luo Yonghao luo yonghao|罗永浩|老罗 tech_leader 88 +王兴 wang xing Wang Xing tech_leader 86 +Wang Xing wang xing|王兴|美团王兴 tech_leader 86 +黄峥 huang zheng Colin Huang tech_leader 86 +Colin Huang colin huang|黄峥|拼多多创始人 tech_leader 86 +董明珠 dong ming zhu Dong Mingzhu tech_leader 84 +Dong Mingzhu dong ming zhu|董明珠 tech_leader 84 +马化腾 ma hua teng Pony Ma tech_leader 90 +Pony Ma pony ma|马化腾|小马哥 tech_leader 90 +段永平 duan yong ping Duan Yongping tech_leader 82 +Duan Yongping duan yongping|段永平 tech_leader 82 +于东来 yu dong lai Yu Donglai tech_leader 82 +Yu Donglai yu donglai|于东来|胖东来 tech_leader 82 +周鸿祎 zhou hong yi Zhou Hongyi tech_leader 82 +Zhou Hongyi zhou hongyi|周鸿祎|360周鸿祎 tech_leader 82 +Bill Gates bill gates|比尔盖茨|盖茨 tech_leader 85 +巴菲特 ba fei te Warren Buffett tech_leader 82 +Warren Buffett warren buffett|巴菲特|沃伦巴菲特 tech_leader 82 +特朗普 te lang pu Donald Trump tech_leader 82 +Donald Trump donald trump|特朗普|川普 tech_leader 82 +山姆奥特曼 shan mu ao te man Sam Altman tech_leader 86 +Dario Amodei dario amodei|达里奥 tech_leader 80 +Demis Hassabis demis hassabis|哈萨比斯 tech_leader 80 +李飞飞 li fei fei Fei-Fei Li tech_leader 82 +Fei-Fei Li fei fei li|李飞飞 tech_leader 82 +Andrew Ng andrew ng|吴恩达 tech_leader 82 +吴恩达 wu en da Andrew Ng tech_leader 82 +Yann LeCun yann lecun|杨立昆 tech_leader 80 +杨立昆 yang li kun Yann LeCun tech_leader 80 +Geoffrey Hinton geoffrey hinton|辛顿|杰弗里辛顿 tech_leader 80 +辛顿 xin dun Geoffrey Hinton tech_leader 78 + +# --- Celebrities & entertainers --- +Taylor Swift taylor swift|霉霉|泰勒斯威夫特 celebrity 88 +泰勒斯威夫特 tai le si wei fu te Taylor Swift|霉霉 celebrity 86 +霉霉 mei mei Taylor Swift celebrity 84 +Beyoncé beyonce|碧昂丝 celebrity 82 +碧昂丝 bi ang si Beyoncé celebrity 80 +周杰伦 zhou jie lun Jay Chou celebrity 90 +Jay Chou jay chou|周杰伦 celebrity 90 +刘德华 liu de hua Andy Lau celebrity 88 +Andy Lau andy lau|刘德华 celebrity 88 +成龙 cheng long Jackie Chan celebrity 88 +Jackie Chan jackie chan|成龙 celebrity 88 +周星驰 zhou xing chi Stephen Chow celebrity 88 +Stephen Chow stephen chow|周星驰|星爷 celebrity 88 +张艺谋 zhang yi mou Zhang Yimou celebrity 84 +Zhang Yimou zhang yimou|张艺谋 celebrity 84 +刘亦菲 liu yi fei Liu Yifei celebrity 84 +Liu Yifei liu yifei|刘亦菲|神仙姐姐 celebrity 84 +杨幂 yang mi Yang Mi celebrity 86 +Yang Mi yang mi|杨幂 celebrity 86 +迪丽热巴 di li re ba Dilraba celebrity 84 +Dilraba dilraba|迪丽热巴|热巴 celebrity 84 +肖战 xiao zhan Xiao Zhan celebrity 86 +Xiao Zhan xiao zhan|肖战 celebrity 86 +王一博 wang yi bo Wang Yibo celebrity 86 +Wang Yibo wang yibo|王一博 celebrity 86 +易烊千玺 yi yang qian xi Jackson Yee celebrity 86 +Jackson Yee jackson yee|易烊千玺|四字弟弟 celebrity 86 +鹿晗 lu han Lu Han celebrity 82 +Lu Han lu han|鹿晗 celebrity 82 +张艺兴 zhang yi xing Lay Zhang celebrity 80 +Lay Zhang lay zhang|张艺兴 celebrity 80 +邓紫棋 deng zi qi G.E.M. celebrity 82 +G.E.M. gem|邓紫棋|邓紫棋 celebrity 82 +薛之谦 xue zhi qian Joker Xue celebrity 80 +Joker Xue joker xue|薛之谦 celebrity 80 + +# --- Consumer & luxury brands --- +Nike nike|耐克 consumer_brand 85 +耐克 nai ke Nike consumer_brand 85 +Adidas adidas|阿迪达斯 consumer_brand 82 +阿迪达斯 a di da si Adidas consumer_brand 82 +Chanel chanel|香奈儿 consumer_brand 85 +香奈儿 xiang nai er Chanel consumer_brand 85 +Gucci gucci|古驰 consumer_brand 84 +古驰 gu chi Gucci consumer_brand 84 +Louis Vuitton louis vuitton|LV|路易威登 consumer_brand 86 +路易威登 lu yi wei deng Louis Vuitton|LV consumer_brand 84 +LV louis vuitton|路易威登 consumer_brand 84 +Hermès hermes|爱马仕 consumer_brand 84 +爱马仕 ai ma shi Hermès consumer_brand 84 +Prada prada|普拉达 consumer_brand 80 +Dior dior|迪奥 consumer_brand 82 +迪奥 di ao Dior consumer_brand 82 +LVMH lvmh|路威酩轩 consumer_brand 78 +Starbucks starbucks|星巴克 consumer_brand 82 +星巴克 xing ba ke Starbucks consumer_brand 82 +McDonald's mcdonalds|麦当劳 consumer_brand 82 +麦当劳 mai dang lao McDonald's consumer_brand 82 +Coca-Cola coca cola|可口可乐 consumer_brand 80 +可口可乐 ke kou ke le Coca-Cola consumer_brand 80 +Disney disney|迪士尼 consumer_brand 85 +迪士尼 di shi ni Disney consumer_brand 85 +Netflix netflix|奈飞 consumer_brand 82 +奈飞 nai fei Netflix consumer_brand 80 +Uniqlo uniqlo|优衣库 consumer_brand 78 +优衣库 you yi ku Uniqlo consumer_brand 78 +Zara zara consumer_brand 76 +H&M h and m|HM consumer_brand 72 +Lululemon lululemon|露露乐蒙 consumer_brand 78 +Patagonia patagonia|巴塔哥尼亚 consumer_brand 72 +Rolex rolex|劳力士 consumer_brand 80 +劳力士 lao li shi Rolex consumer_brand 80 +Tiffany tiffany|蒂芙尼 consumer_brand 78 +蒂芙尼 di fu ni Tiffany consumer_brand 78 +Supreme supreme|Supreme潮牌 consumer_brand 76 +泡泡玛特 pao pao ma te Pop Mart consumer_brand 82 +Pop Mart pop mart|泡泡玛特 consumer_brand 82 + +# --- China tech & auto (2025–2026 buzz) --- +鸿蒙 hong meng HarmonyOS|Harmony OS tech_company 88 +HarmonyOS harmony os|鸿蒙|华为鸿蒙 tech_company 88 +鸿蒙智行 hong meng zhi xing Harmony Intelligent Mobility tech_company 86 +小米汽车 xiao mi qi che Xiaomi Auto|Xiaomi SU7 tech_company 90 +Xiaomi SU7 xiaomi su7|小米SU7|SU7 tech_company 90 +SU7 xiaomi su7|小米SU7 tech_company 88 +宇树科技 yu shu ke ji Unitree tech_company 86 +Unitree unitree|宇树|宇树科技 tech_company 86 +游戏科学 you xi ke xue Game Science tech_company 86 +Game Science game science|游戏科学|黑神话 tech_company 86 +黑神话悟空 hei shen hua wu kong Black Myth Wukong tech_term 88 +Black Myth Wukong black myth wukong|黑神话|黑神话悟空 tech_term 88 +黑神话 hei shen hua Black Myth|黑神话悟空 tech_term 86 +强脑科技 qiang nao ke ji BrainCo tech_company 82 +BrainCo brainco|强脑科技 tech_company 82 +群核科技 qun he ke ji Manycore tech_company 80 +云深处科技 yun shen chu ke ji DeepRobotics tech_company 80 +DeepRobotics deep robotics|云深处 tech_company 78 +宇树 yu shu unitree|宇树科技 tech_company 84 +胖东来 pang dong lai Yu Donglai consumer_brand 82 +蜜雪冰城 mi xue bing cheng Mixue consumer_brand 80 +Mixue mixue|蜜雪冰城 consumer_brand 80 +瑞幸咖啡 rui xing ka fei Luckin Coffee consumer_brand 80 +Luckin Coffee luckin coffee|瑞幸 consumer_brand 80 + +# --- 2025–2026 hot terms (media, social, tech) --- +出圈 chu quan go viral|break out tech_term 84 +AI疲劳 AI pi lao AI fatigue tech_term 82 +AI fatigue AI疲劳 tech_term 80 +谷子 gu zi merch economy|谷子经济 tech_term 80 +谷子经济 gu zi jing ji merch economy|谷子 tech_term 78 +银发科技 yin fa ke ji silver tech|elder tech tech_term 78 +算力普惠 suan li pu hui compute democratization tech_term 78 +人工智能+ ren gong zhi neng jia AI plus|AI+ tech_term 84 +AI+ AI plus|人工智能+ tech_term 82 +智能体产业化 zhi neng ti chan ye hua agent industrialization tech_term 80 +票根经济 piao gen jing ji ticket stub economy tech_term 76 +苏超 su chao Jiangsu Super League tech_term 72 +敬自己一杯 jing zi ji yi bei cheers to myself tech_term 72 +来财 lai cai fortune comes tech_term 72 +浪浪山小妖怪 lang lang shan xiao yao guai Langlangshan monster tech_term 72 +哪吒 na zha Nezha|哪吒2 tech_term 84 +Nezha nezha|哪吒|哪吒2 tech_term 82 +哪吒2 na zha 2 Nezha 2 tech_term 82 +如何又能怎 ru he you neng zen however what can you do tech_term 70 +超级个体 chao ji ge ti super individual|solopreneur tech_term 80 +一人公司 yi ren gong si one person company|solopreneur tech_term 78 +养龙虾 yang long xia OpenClaw|open claw tech_term 82 +龙虾 long xia OpenClaw|养虾 tech_term 80 +千问点奶茶 qian wen dian nai cha Qwen order milk tea tech_term 76 +脑机接口 nao ji jie kou brain-computer interface|BCI tech_term 84 +BCI brain computer interface|脑机接口 tech_term 82 +6G six g|第六代移动通信 tech_term 80 +低空飞行 di kong fei xing low altitude flight tech_term 76 +世界人工智能大会 shi jie ren gong zhi neng da hui WAIC tech_term 78 +WAIC wa ic|世界人工智能大会 tech_term 76 +DeepSeek时刻 DeepSeek shi ke DeepSeek moment tech_term 80 +中国创新 zhong guo chuang xin China innovation tech_term 78 +哪吒闹海 na zha nao hai Nezha tech_term 72 + +# --- Batch 2 expansion (2026-07-06): AI, celebrities, brands, hot terms --- +NanoClaw nano claw|Nano Claw ai_brand 86 +ZeroClaw zero claw|Zero Claw ai_brand 82 +Hermes Agent hermes agent|Hermes ai_brand 84 +Fugu sakana fugu|Fugu AI ai_brand 84 +Sakana AI sakana ai|Sakana ai_brand 82 +Agents-A1 agents a1|Agents A1 ai_model 82 +NemoClaw nemo claw|Nemo Claw ai_brand 80 +Moltworker molt worker|Moltworker ai_platform 78 +Perplexity Computer perplexity computer|Personal Computer ai_brand 84 +Personal Computer perplexity personal computer ai_brand 82 +Simular simular ai|Simular AI ai_brand 78 +Vellum vellum ai|Vellum AI ai_platform 78 +Cloudflare Agents cloudflare agents ai_platform 78 +NVIDIA NIM nvidia nim|NIM inference ai_platform 82 +Fireworks AI fireworks ai|Fireworks ai_platform 82 +Together AI together ai|Together ai_platform 82 +Cerebras cerebras systems|Cerebras Systems tech_company 82 +SambaNova samba nova|Samba Nova tech_company 80 +Grokipedia grok ipedia|Grok pedia ai_brand 76 +Grok Imagine grok imagine ai_brand 78 +Imagen google imagen|Imagen AI ai_model 82 +Veo google veo|Veo AI ai_model 82 +Suno suno ai|Suno AI ai_brand 84 +Udio udio ai|Udio AI ai_brand 82 +Flux black forest flux|FLUX ai_model 84 +Black Forest Labs black forest labs|BFL ai_brand 82 +Ideogram ideogram ai|Ideogram AI ai_brand 80 +Recraft recraft ai|Recraft AI ai_brand 78 +Leonardo AI leonardo ai|Leonardo ai_brand 80 +Krea krea ai|Krea AI ai_brand 76 +PixVerse pix verse|Pixverse ai_brand 80 +Vidu vidu ai|Vidu AI ai_brand 80 +可灵AI ke ling AI Kling AI|可灵 ai_brand 84 +通义万相 tong yi wan xiang Wanxiang|万相 ai_brand 84 +Wanxiang 通义万相|wan xiang ai_brand 82 +海螺视频 hai luo shi pin Hailuo Video ai_brand 80 +Skywork skywork ai|Skywork ai_brand 78 +天工AI tian gong AI 天工 ai_brand 78 +纳米搜索 na mi sou suo Nami Search ai_brand 76 +Flowith flowith ai|Flowith AI ai_platform 76 +FlowGPT flow gpt|Flow GPT ai_platform 74 +Coze coze ai|扣子 ai_platform 86 +扣子 kou zi Coze|coze ai_platform 84 +Dify dify ai|Dify AI ai_platform 84 +FastGPT fast gpt|FastGPT ai_platform 78 +MaxKB max kb|MaxKB ai_platform 76 +RAGFlow rag flow|RAGFlow ai_platform 82 +Mem0 mem zero|Mem0 AI ai_platform 80 +Letta letta ai|Letta AI ai_platform 78 +Zep zep ai|Zep AI ai_platform 76 +GraphRAG graph rag|Graph RAG ai_term 84 +LightRAG light rag|Light RAG ai_term 82 +Devstral devstral|mistral devstral ai_model 82 +Pixtral pixtral|mistral pixtral ai_model 82 +Mistral Small mistral small ai_model 80 +Mistral Codestral mistral codestral ai_model 82 +Codestral codestral|mistral codestral ai_model 84 +Command R command r|cohere command ai_model 80 +Cohere Command cohere command|Command R ai_model 78 +Phi phi model|microsoft phi ai_model 78 +Phi模型 phi mo xing Phi|microsoft phi ai_model 76 +Granite ibm granite|Granite model ai_model 80 +IBM Granite granite|IBM Granite ai_model 78 +Amazon Nova amazon nova|Nova model ai_model 82 +Bedrock aws bedrock|Amazon Bedrock ai_platform 82 +Gemma开源 gemma kai yuan Gemma open ai_model 76 +Claude Mythos claude mythos|Mythos ai_model 82 +Whisper openai whisper|Whisper ASR ai_model 82 +NotebookLM notebook lm|Notebook LM ai_brand 84 +Google AI Studio google ai studio|AI Studio dev_tool 82 +AI Studio google ai studio dev_tool 80 +Gemini Live gemini live ai_brand 80 +Gemini Robotics gemini robotics ai_brand 78 +Apple Intelligence apple intelligence|苹果智能 ai_brand 86 +苹果智能 ping guo zhi neng Apple Intelligence ai_brand 84 +Siri apple siri|Siri AI ai_brand 82 +Writing Tools apple writing tools ai_term 76 +Image Playground image playground|苹果图像游乐场 ai_term 74 +Copilot Studio copilot studio|Microsoft Copilot Studio ai_platform 80 +Microsoft Agent microsoft agent ai_platform 78 +Semantic Kernel semantic kernel|SK ai_platform 80 +AutoGen Studio autogen studio|AutoGen Studio ai_platform 78 +Windsurf Cascade windsurf cascade|Cascade dev_tool 82 +Cascade windsurf cascade dev_tool 80 +Tabnine tab nine|Tabnine dev_tool 80 +Sourcegraph Cody sourcegraph cody|Cody dev_tool 82 +Cody sourcegraph cody dev_tool 78 +GitHub Spark github spark|Spark dev_tool 78 +GitHub Models github models ai_platform 78 +Browser Use browser use|browser-use ai_term 84 +Augment augment code|Augment Code dev_tool 80 +JetBrains Junie jetbrains junie|Junie dev_tool 78 +Kilo Code kilo code|KiloCode dev_tool 78 +Zencoder zen coder|Zencoder dev_tool 76 +Goose goose ai|Block Goose dev_tool 76 +Omnigent omnigent ai|Omnigent dev_tool 74 +俞敏洪 yu min hong Yu Minhong|新东方俞敏洪 tech_leader 86 +Yu Minhong yu minhong|俞敏洪 tech_leader 84 +New Oriental new oriental|新东方 tech_company 80 +新东方 xin dong fang New Oriental tech_company 80 +卢伟冰 lu wei bing Lu Weibing tech_leader 84 +Lu Weibing lu weibing|卢伟冰 tech_leader 84 +影视飓风 ying shi ju feng 影视飓风Tim tech_leader 82 +影视飓风Tim ying shi ju feng tim|影视飓风 tech_leader 82 +曹德旺 cao de wang Cao Dewang tech_leader 80 +Cao Dewang cao dewang|曹德旺 tech_leader 80 +福耀玻璃 fu yao bo li Fuyao Glass tech_company 76 +宗庆后 zong qing hou Zong Qinghou tech_leader 78 +钟睒睒 zhong shan shan Zhong Shanshan tech_leader 80 +Nongfu Spring nongfu spring|农夫山泉 consumer_brand 82 +农夫山泉 nong fu shan quan Nongfu Spring consumer_brand 82 +王健林 wang jian lin Wang Jianlin tech_leader 78 +Wang Jianlin wang jianlin|王健林 tech_leader 78 +许家印 xu jia yin Xu Jiayin tech_leader 74 +Xu Jiayin xu jiayin|许家印 tech_leader 74 +孙正义 sun zheng yi Masayoshi Son tech_leader 82 +Masayoshi Son masayoshi son|孙正义 tech_leader 82 +张朝阳 zhang chao yang Charles Zhang tech_leader 80 +Charles Zhang charles zhang|张朝阳 tech_leader 80 +搜狐 sou hu Sohu tech_company 78 +Sohu sohu|搜狐 tech_company 78 +丁磊 ding lei William Ding tech_leader 84 +William Ding william ding|丁磊 tech_leader 84 +陈天桥 chen tian qiao Chen Tianqiao tech_leader 76 +沈南鹏 shen nan peng Neil Shen tech_leader 82 +Neil Shen neil shen|沈南鹏 tech_leader 82 +红杉中国 hong shan zhong guo Sequoia China fintech 80 +Sequoia China sequoia china|红杉中国 fintech 80 +徐新 xu xin Xu Xin tech_leader 76 +今日资本 jin ri zi ben Capital Today fintech 74 +朱啸虎 zhu xiao hu Zhu Xiaohu tech_leader 78 +李开复 li kai fu Kai-Fu Lee tech_leader 86 +Kai-Fu Lee kai fu lee|李开复 tech_leader 86 +创新工场 chuang xin gong chang Innovation Works tech_company 78 +Innovation Works innovation works|创新工场 tech_company 78 +傅盛 fu sheng Fu Sheng tech_leader 78 +Fu Sheng fu sheng|傅盛 tech_leader 78 +猎豹移动 lie bao yi dong Cheetah Mobile tech_company 76 +王小川 wang xiao chuan Wang Xiaochuan tech_leader 82 +Wang Xiaochuan wang xiaochuan|王小川 tech_leader 82 +周航 zhou hang Zhou Hang tech_leader 72 +陈睿 chen rui Chen Rui|B站陈睿 tech_leader 80 +Chen Rui chen rui|陈睿 tech_leader 80 +宿华 su hua Su Hua tech_leader 78 +Su Hua su hua|宿华 tech_leader 78 +程一笑 cheng yi xiao Cheng Yixiao tech_leader 76 +Cheng Yixiao cheng yixiao|程一笑 tech_leader 76 +陈欧 chen ou Chen Ou tech_leader 72 +聚美优品 ju mei you pin Jumei tech_company 70 +江南春 jiang nan chun Jiang Nanchun tech_leader 76 +分众传媒 fen zhong chuan mei Focus Media tech_company 76 +沈晖 shen hui William Feng tech_leader 74 +李想 li xiang Li Xiang|理想李想 tech_leader 86 +Li Xiang li xiang|李想 tech_leader 86 +王传福 wang chuan fu Wang Chuanfu tech_leader 86 +Wang Chuanfu wang chuanfu|王传福 tech_leader 86 +曾毓群 zeng yu qun Robin Zeng tech_leader 84 +Robin Zeng robin zeng|曾毓群 tech_leader 84 +郭台铭 guo tai ming Terry Gou tech_leader 80 +Terry Gou terry gou|郭台铭 tech_leader 80 +富士康 fu shi kang Foxconn tech_company 82 +Foxconn foxconn|富士康 tech_company 82 +刘慈欣 liu ci xin Liu Cixin celebrity 82 +Liu Cixin liu cixin|刘慈欣 celebrity 82 +三体 san ti Three Body Problem|Three-Body tech_term 80 +刘宇宁 liu yu ning Liu Yuning celebrity 86 +Liu Yuning liu yuning|刘宇宁 celebrity 86 +梓渝 zi yu Ziyu celebrity 82 +Ziyu zi yu|梓渝 celebrity 82 +周深 zhou shen Zhou Shen celebrity 86 +Zhou Shen zhou shen|周深 celebrity 86 +白鹿 bai lu Bai Lu celebrity 84 +Bai Lu bai lu|白鹿 celebrity 84 +孟子义 meng zi yi Meng Ziyi celebrity 82 +Meng Ziyi meng ziyi|孟子义 celebrity 82 +虞书欣 yu shu xin Esther Yu celebrity 84 +Esther Yu esther yu|虞书欣 celebrity 84 +赵丽颖 zhao li ying Zhao Liying celebrity 86 +Zhao Liying zhao liying|赵丽颖 celebrity 86 +杨紫 yang zi Yang Zi celebrity 86 +成毅 cheng yi Cheng Yi celebrity 84 +任嘉伦 ren jia lun Ren Jialun celebrity 82 +Ren Jialun ren jialun|任嘉伦 celebrity 82 +李现 li xian Li Xian celebrity 84 +Li Xian li xian|李现 celebrity 84 +杨洋 yang yang Yang Yang celebrity 84 +吴磊 wu lei Wu Lei celebrity 82 +Wu Lei wu lei|吴磊 celebrity 82 +胡歌 hu ge Hu Ge celebrity 86 +Hu Ge hu ge|胡歌 celebrity 86 +黄晓明 huang xiao ming Huang Xiaoming celebrity 82 +Huang Xiaoming huang xiaoming|黄晓明 celebrity 82 +陈坤 chen kun Chen Kun celebrity 80 +章子怡 zhang zi yi Zhang Ziyi celebrity 82 +Zhang Ziyi zhang ziyi|章子怡 celebrity 82 +巩俐 gong li Gong Li celebrity 82 +周迅 zhou xun Zhou Xun celebrity 82 +汤唯 tang wei Tang Wei celebrity 80 +舒淇 shu qi Shu Qi celebrity 80 +黄渤 huang bo Huang Bo celebrity 86 +Huang Bo huang bo|黄渤 celebrity 86 +沈腾 shen teng Shen Teng celebrity 86 +Shen Teng shen teng|沈腾 celebrity 86 +贾玲 jia ling Jia Ling celebrity 84 +Jia Ling jia ling|贾玲 celebrity 84 +马丽 ma li Ma Li celebrity 80 +张小斐 zhang xiao fei Zhang Xiaofei celebrity 80 +吴京 wu jing Wu Jing celebrity 84 +Wu Jing wu jing|吴京 celebrity 84 +张译 zhang yi yan Zhang Yi actor celebrity 82 +雷佳音 lei jia yin Lei Jiayin celebrity 80 +孙俪 sun li Sun Li celebrity 82 +靳东 jin dong Jin Dong celebrity 78 +那英 na ying Na Ying celebrity 82 +汪峰 wang feng Wang Feng celebrity 80 +王菲 wang fei Faye Wong celebrity 84 +张学友 zhang xue you Jacky Cheung celebrity 82 +Jacky Cheung jacky cheung|张学友 celebrity 82 +林俊杰 lin jun jie JJ Lin celebrity 84 +JJ Lin jj lin|林俊杰 celebrity 84 +蔡依林 cai yi lin Jolin Tsai celebrity 82 +Jolin Tsai jolin tsai|蔡依林 celebrity 82 +王力宏 wang li hong Wang Leehom celebrity 82 +陈奕迅 chen yi xun Eason Chan celebrity 84 +Eason Chan eason chan|陈奕迅 celebrity 84 +毛不易 mao bu yi Mao Buyi celebrity 82 +华晨宇 hua chen yu Hua Chenyu celebrity 80 +时代少年团 shi dai shao nian tuan TNT|Teens in Times celebrity 80 +TFBOYS tf boys|TF Boys celebrity 82 +蔡徐坤 cai xu kun Cai Xukun celebrity 82 +Cai Xukun cai xukun|蔡徐坤 celebrity 82 +黄子韬 huang zi tao Huang Zitao celebrity 80 +Huang Zitao huang zitao|黄子韬 celebrity 80 +BLACKPINK black pink|Black Pink celebrity 84 +Jennie blackpink jennie celebrity 80 +Jisoo blackpink jisoo celebrity 78 +Rosé blackpink rose|Rose celebrity 78 +BTS bts|防弹少年团 celebrity 84 +防弹少年团 fang dan shao nian tuan BTS celebrity 84 +NewJeans new jeans|New Jeans celebrity 82 +aespa aespa组合 celebrity 80 +IVE ive组合 celebrity 78 +Rihanna rihanna|蕾哈娜 celebrity 82 +蕾哈娜 lei ha na Rihanna celebrity 80 +Drake drake rapper celebrity 82 +Kanye West kanye west|Ye celebrity 80 +Kendrick Lamar kendrick lamar celebrity 80 +Billie Eilish billie eilish celebrity 82 +Ariana Grande ariana grande celebrity 82 +Lady Gaga lady gaga celebrity 82 +Tom Hanks tom hanks celebrity 80 +Leonardo DiCaprio leonardo dicaprio|小李子 celebrity 82 +小李子 xiao li zi Leonardo DiCaprio celebrity 80 +Brad Pitt brad pitt celebrity 80 +Angelina Jolie angelina jolie celebrity 78 +Jennifer Lawrence jennifer lawrence celebrity 78 +Scarlett Johansson scarlett johansson celebrity 78 +Robert Downey Jr robert downey jr|钢铁侠 celebrity 80 +钢铁侠 gang tie xia Iron Man|Robert Downey Jr celebrity 78 +漫威 man wei Marvel tech_term 80 +Marvel marvel|漫威 tech_term 80 +蝙蝠侠 bian fu xia Batman celebrity 76 +Batman batman|蝙蝠侠 celebrity 76 +王楚钦 wang chu qin Wang Chuqin athlete 88 +Wang Chuqin wang chuqin|王楚钦 athlete 88 +孙颖莎 sun ying sha Sun Yingsha athlete 88 +Sun Yingsha sun yingsha|孙颖莎 athlete 88 +樊振东 fan zhen dong Fan Zhendong athlete 86 +Fan Zhendong fan zhendong|樊振东 athlete 86 +王曼昱 wang man yu Wang Manyu athlete 84 +Wang Manyu wang manyu|王曼昱 athlete 84 +郑钦文 zheng qin wen Zheng Qinwen athlete 86 +Zheng Qinwen zheng qinwen|郑钦文 athlete 86 +林诗栋 lin shi dong Lin Shidong athlete 80 +马龙 ma long Ma Long athlete 86 +Ma Long ma long|马龙 athlete 86 +全红婵 quan hong chan Quan Hongchan athlete 86 +Quan Hongchan quan hongchan|全红婵 athlete 86 +蒯曼 kuai man Kuai Man athlete 76 +林高远 lin gao yuan Lin Gaoyuan athlete 76 +苏炳添 su bing tian Su Bingtian athlete 80 +谷爱凌 gu ai ling Eileen Gu athlete 86 +Eileen Gu eileen gu|谷爱凌 athlete 86 +姚明 yao ming Yao Ming athlete 86 +Yao Ming yao ming|姚明 athlete 86 +李娜 li na Li Na tennis athlete 80 +刘翔 liu xiang Liu Xiang athlete 80 +易建联 yi jian lian Yi Jianlian athlete 78 +C罗 C luo Cristiano Ronaldo athlete 86 +Cristiano Ronaldo cristiano ronaldo|C罗 athlete 86 +梅西 mei xi Lionel Messi athlete 88 +Lionel Messi lionel messi|梅西 athlete 88 +姆巴佩 mu ba pei Kylian Mbappé athlete 84 +Kylian Mbappé kylian mbappe|姆巴佩 athlete 84 +哈兰德 ha lan de Erling Haaland athlete 82 +Erling Haaland erling haaland|哈兰德 athlete 82 +詹姆斯 zhan mu si LeBron James athlete 86 +LeBron James lebron james|詹姆斯 athlete 86 +库里 ku li Stephen Curry athlete 84 +Stephen Curry stephen curry|库里 athlete 84 +科比 ke bi Kobe Bryant athlete 82 +Kobe Bryant kobe bryant|科比 athlete 82 +乔丹 qiao dan Michael Jordan athlete 84 +Michael Jordan michael jordan|乔丹 athlete 84 +费德勒 fei de le Roger Federer athlete 80 +纳达尔 na da er Rafael Nadal athlete 80 +德约科维奇 de yue ke wei qi Novak Djokovic athlete 82 +Novak Djokovic novak djokovic|德约 athlete 82 +Burberry burberry|博柏利 consumer_brand 80 +博柏利 bo bai li Burberry consumer_brand 80 +Balenciaga balenciaga|巴黎世家 consumer_brand 82 +巴黎世家 ba li shi jia Balenciaga consumer_brand 82 +Versace versace|范思哲 consumer_brand 78 +范思哲 fan si zhe Versace consumer_brand 78 +Armani armani|阿玛尼 consumer_brand 80 +阿玛尼 a ma ni Armani consumer_brand 80 +Cartier cartier|卡地亚 consumer_brand 82 +卡地亚 ka di ya Cartier consumer_brand 82 +Bulgari bulgari|宝格丽 consumer_brand 78 +宝格丽 bao ge li Bulgari consumer_brand 78 +Van Cleef van cleef|梵克雅宝 consumer_brand 76 +梵克雅宝 fan ke ya bao Van Cleef consumer_brand 76 +Moncler moncler|盟可睐 consumer_brand 78 +盟可睐 meng ke lai Moncler consumer_brand 78 +Canada Goose canada goose|加拿大鹅 consumer_brand 78 +加拿大鹅 jia na da e Canada Goose consumer_brand 78 +New Balance new balance|新百伦 consumer_brand 80 +新百伦 xin bai lun New Balance consumer_brand 80 +Puma puma|彪马 consumer_brand 78 +彪马 biao ma Puma consumer_brand 78 +Converse converse|匡威 consumer_brand 76 +匡威 kuang wei Converse consumer_brand 76 +Vans vans consumer_brand 76 +Skechers skechers|斯凯奇 consumer_brand 76 +斯凯奇 si kai qi Skechers consumer_brand 76 +Levi's levis|李维斯 consumer_brand 76 +李维斯 li wei si Levi's consumer_brand 76 +Coach coach|蔻驰 consumer_brand 78 +蔻驰 kou chi Coach consumer_brand 78 +Michael Kors michael kors|MK consumer_brand 76 +Estée Lauder estee lauder|雅诗兰黛 consumer_brand 78 +雅诗兰黛 ya shi lan dai Estée Lauder consumer_brand 78 +L'Oréal loreal|欧莱雅 consumer_brand 78 +欧莱雅 ou lai ya L'Oréal consumer_brand 78 +Shiseido shiseido|资生堂 consumer_brand 76 +资生堂 zi sheng tang Shiseido consumer_brand 76 +SK-II sk two|SK2 consumer_brand 78 +兰蔻 lan ke Lancôme consumer_brand 78 +Lancôme lancome|兰蔻 consumer_brand 78 +YSL ysl|圣罗兰 consumer_brand 78 +圣罗兰 sheng luo lan YSL consumer_brand 78 +MAC mac cosmetics consumer_brand 76 +完美日记 wan mei ri ji Perfect Diary consumer_brand 80 +Perfect Diary perfect diary|完美日记 consumer_brand 80 +花西子 hua xi zi Florasis consumer_brand 78 +Florasis florasis|花西子 consumer_brand 78 +名创优品 ming chuang you pin Miniso consumer_brand 78 +Miniso miniso|名创优品 consumer_brand 78 +海底捞 hai di lao Haidilao consumer_brand 82 +Haidilao haidilao|海底捞 consumer_brand 82 +西贝 xi bei Xibei consumer_brand 76 +老乡鸡 lao xiang ji Laoxiangji consumer_brand 76 +盒马 he ma Hema|盒马鲜生 consumer_brand 80 +Hema hema|盒马 consumer_brand 80 +山姆会员店 shan mu hui yuan dian Sam's Club consumer_brand 80 +Sam's Club sams club|山姆 consumer_brand 80 +Costco costco|开市客 consumer_brand 80 +开市客 kai shi ke Costco consumer_brand 80 +沃尔玛 wo er ma Walmart consumer_brand 78 +Walmart walmart|沃尔玛 consumer_brand 78 +家乐福 jia le fu Carrefour consumer_brand 72 +宜家 yi jia IKEA consumer_brand 80 +IKEA ikea|宜家 consumer_brand 80 +MUJI muji|无印良品 consumer_brand 78 +无印良品 wu yin liang pin MUJI consumer_brand 78 +始祖鸟 shi zu niao Arc'teryx consumer_brand 82 +Arc'teryx arcteryx|始祖鸟 consumer_brand 82 +北面 bei mian The North Face consumer_brand 78 +The North Face north face|北面 consumer_brand 78 +Columbia columbia sportswear consumer_brand 72 +李宁 li ning Li-Ning consumer_brand 82 +Li-Ning li ning|李宁 consumer_brand 82 +安踏 an ta Anta consumer_brand 82 +Anta anta|安踏 consumer_brand 82 +特步 te bu Xtep consumer_brand 76 +Xtep xtep|特步 consumer_brand 76 +鸿星尔克 hong xing er ke Erke consumer_brand 76 +Erke erke|鸿星尔克 consumer_brand 76 +波司登 bo si deng Bosideng consumer_brand 78 +Bosideng bosideng|波司登 consumer_brand 78 +周大福 zhou da fu Chow Tai Fook consumer_brand 76 +Chow Tai Fook chow tai fook|周大福 consumer_brand 76 +老凤祥 lao feng xiang Lao Feng Xiang consumer_brand 74 +中国黄金 zhong guo huang jin China Gold consumer_brand 74 +领克 ling ke Lynk & Co|Lynk tech_company 84 +Lynk & Co lynk co|领克 tech_company 84 +问界 wen jie AITO|AITO问界 tech_company 86 +AITO aito|问界 tech_company 86 +智界 zhi jie Luxeed tech_company 84 +Luxeed luxeed|智界 tech_company 84 +享界 xiang jie Stelato tech_company 82 +Stelato stelato|享界 tech_company 82 +尊界 zun jie MAEXTRO tech_company 82 +MAEXTRO maextro|尊界 tech_company 82 +小米YU7 xiao mi YU7 Xiaomi YU7|YU7 tech_company 88 +YU7 xiaomi yu7|小米YU7 tech_company 86 +理想L9 li xiang L9 Li L9 tech_company 82 +Li L9 li l9|理想L9 tech_company 82 +理想MEGA li xiang MEGA Li MEGA|MEGA tech_company 82 +小鹏MONA xiao peng MONA MONA tech_company 80 +极狐 ji hu ARCFOX tech_company 80 +ARCFOX arcfox|极狐 tech_company 80 +阿维塔 a wei ta Avatr tech_company 82 +Avatr avatr|阿维塔 tech_company 82 +深蓝 shen lan Deepal tech_company 80 +Deepal deepal|深蓝 tech_company 80 +岚图 lan tu Voyah tech_company 82 +Voyah voyah|岚图 tech_company 82 +腾势 teng shi Denza tech_company 82 +Denza denza|腾势 tech_company 82 +方程豹 fang cheng bao Fangchengbao tech_company 82 +Fangchengbao fangchengbao|方程豹 tech_company 82 +仰望 yang wang Yangwang tech_company 84 +Yangwang yangwang|仰望 tech_company 84 +智己 zhi ji IM Motors tech_company 82 +IM Motors im motors|智己 tech_company 82 +飞凡 fei fan Rising Auto tech_company 76 +昊铂 hao bo Hyper tech_company 78 +Hyper hyper|昊铂 tech_company 78 +广汽埃安 guang qi ai an Aion tech_company 82 +Aion aion|埃安 tech_company 82 +哪吒汽车 na zha qi che Neta Auto tech_company 80 +Neta Auto neta auto|哪吒汽车 tech_company 80 +零跑 ling pao Leapmotor tech_company 84 +Leapmotor leapmotor|零跑 tech_company 84 +赛力斯 sai li si Seres tech_company 84 +Seres seres|赛力斯 tech_company 84 +长安 chang an Changan tech_company 78 +Changan changan|长安 tech_company 78 +上汽 shang qi SAIC tech_company 78 +SAIC saic|上汽 tech_company 78 +一汽 yi qi FAW tech_company 76 +FAW faw|一汽 tech_company 76 +东风 dong feng Dongfeng tech_company 76 +Dongfeng dongfeng|东风 tech_company 76 +奇瑞 qi rui Chery tech_company 78 +Chery chery|奇瑞 tech_company 78 +吉利银河 ji li yin he Galaxy Geely tech_company 78 +路特斯 lu te si Lotus tech_company 80 +Lotus lotus|路特斯 tech_company 80 +保时捷 bao shi jie Porsche tech_company 84 +Porsche porsche|保时捷 tech_company 84 +法拉利 fa la li Ferrari tech_company 82 +Ferrari ferrari|法拉利 tech_company 82 +兰博基尼 lan bo ji ni Lamborghini tech_company 82 +Lamborghini lamborghini|兰博基尼 tech_company 82 +奔驰 ben chi Mercedes-Benz tech_company 84 +Mercedes-Benz mercedes benz|奔驰 tech_company 84 +宝马 bao ma BMW tech_company 84 +BMW bmw|宝马 tech_company 84 +大众 da zhong Volkswagen tech_company 80 +Volkswagen volkswagen|大众 tech_company 80 +丰田 feng tian Toyota tech_company 80 +Toyota toyota|丰田 tech_company 80 +本田 ben tian Honda tech_company 78 +Honda honda|本田 tech_company 78 +Anduril anduril industries tech_company 80 +Scale AI scale ai|Scale tech_company 84 +Labelbox labelbox tech_company 74 +Weights & Biases weights and biases|W&B dev_tool 80 +W&B weights and biases dev_tool 78 +Langfuse langfuse dev_tool 78 +Helicone helicone dev_tool 74 +Braintrust braintrust ai dev_tool 76 +Arize arize ai|Arize AI dev_tool 74 +CoreWeave coreweave tech_company 82 +Lambda Labs lambda labs|Lambda tech_company 78 +Crusoe crusoe energy tech_company 74 +RunPod run pod|RunPod tech_company 78 +Groq Cloud groq cloud ai_platform 78 +Baseten baseten ai_platform 76 +Anyscale anyscale|Ray tech_company 78 +Ray Serve ray serve dev_tool 76 +Micron micron|美光 tech_company 82 +美光 mei guang Micron tech_company 82 +SK Hynix sk hynix|海力士 tech_company 82 +海力士 hai li shi SK Hynix tech_company 82 +Kioxia kioxia|铠侠 tech_company 76 +铠侠 kai xia Kioxia tech_company 76 +Western Digital western digital|西部数据 tech_company 78 +西部数据 xi bu shu ju Western Digital tech_company 78 +MediaTek mediatek|联发科 tech_company 82 +联发科 lian fa ke MediaTek tech_company 82 +Rockchip rockchip|瑞芯微 tech_company 78 +瑞芯微 rui xin wei Rockchip tech_company 78 +Allwinner allwinner|全志 tech_company 74 +全志 quan zhi Allwinner tech_company 74 +寒武纪 han wu ji Cambricon tech_company 80 +Cambricon cambricon|寒武纪 tech_company 80 +壁仞 bi ren Biren tech_company 78 +Biren biren|壁仞 tech_company 78 +摩尔线程 mo er xian cheng Moore Threads tech_company 80 +Moore Threads moore threads|摩尔线程 tech_company 80 +燧原 sui yuan Enflame tech_company 76 +Enflame enflame|燧原 tech_company 76 +平头哥 ping tou ge T-Head tech_company 78 +T-Head t head|平头哥 tech_company 78 +紫光 zi guang Unigroup tech_company 76 +Unigroup unigroup|紫光 tech_company 76 +长鑫 chang xin CXMT tech_company 78 +CXMT cxmt|长鑫存储 tech_company 78 +长江存储 chang jiang cun chu YMTC tech_company 80 +YMTC ymtc|长江存储 tech_company 80 +商汤绝影 shang tang jue ying SenseAuto tech_company 78 +绝影 jue ying SenseAuto tech_company 76 +Momenta momenta|魔门塔 tech_company 82 +魔门塔 mo men ta Momenta tech_company 80 +文远知行 wen yuan zhi xing WeRide tech_company 82 +WeRide weride|文远知行 tech_company 82 +小马智行 xiao ma zhi xing Pony.ai tech_company 82 +Pony.ai pony ai|小马智行 tech_company 82 +元戎启行 yuan rong qi xing DeepRoute tech_company 78 +DeepRoute deeproute|元戎启行 tech_company 78 +禾赛 he sai Hesai tech_company 80 +Hesai hesai|禾赛 tech_company 80 +速腾聚创 su teng ju chuang RoboSense tech_company 80 +RoboSense robosense|速腾聚创 tech_company 80 +图达通 tu da tong Innovusion tech_company 76 +Innovusion innovusion|图达通 tech_company 76 +OpenHarmony open harmony|开源鸿蒙 tech_company 82 +开源鸿蒙 kai yuan hong meng OpenHarmony tech_company 82 +openEuler open euler|欧拉 tech_company 76 +欧拉 ou la openEuler tech_company 76 +龙芯 long xin Loongson tech_company 78 +Loongson loongson|龙芯 tech_company 78 +飞腾 fei teng Phytium tech_company 76 +Phytium phytium|飞腾 tech_company 76 +鲲鹏 kun peng Kunpeng tech_company 80 +Kunpeng kunpeng|鲲鹏 tech_company 80 +飞书 fei shu Lark tech_company 86 +Lark lark|飞书 tech_company 86 +钉钉 ding ding DingTalk tech_company 84 +DingTalk dingtalk|钉钉 tech_company 84 +企业微信 qi ye wei xin WeCom tech_company 84 +WeCom wecom|企业微信 tech_company 84 +skill skills|Agent Skills ai_term 78 +skills agent skills|Claude Skills ai_term 76 +Agent Skills agent skills|Claude Skills ai_term 82 +Claude Skills claude skills ai_term 80 +MCP协议 MCP xie yi MCP protocol ai_term 84 +A2A agent to agent|Agent2Agent ai_term 82 +Agent2Agent a2a|agent to agent ai_term 80 +A2A协议 A2A xie yi Agent2Agent ai_term 78 +deep agent deep agents ai_term 82 +deep agents deep agent ai_term 80 +agentic workflow agentic workflows ai_term 84 +agentic coding agentic code ai_term 82 +spec driven spec-driven|规格驱动 ai_term 80 +spec-driven spec driven ai_term 80 +规格驱动 gui ge qu dong spec-driven ai_term 78 +vibe marketing 氛围营销 ai_term 76 +氛围营销 fen wei ying xiao vibe marketing ai_term 74 +AI原生应用 AI yuan sheng ying yong AI native app ai_term 80 +AI应用 AI ying yong AI app ai_term 78 +模型蒸馏 mo xing zheng liu model distillation ai_term 80 +model distillation 模型蒸馏 ai_term 78 +合成数据 he cheng shu ju synthetic data ai_term 80 +synthetic data 合成数据 ai_term 78 +数据飞轮 shu ju fei lun data flywheel ai_term 78 +data flywheel 数据飞轮 ai_term 76 +长上下文 chang shang xia wen long context ai_term 82 +long context 长上下文 ai_term 80 +百万上下文 bai wan shang xia wen million context ai_term 80 +million context 百万上下文 ai_term 78 +KV cache kv cache|KV缓存 ai_term 80 +KV缓存 KV huan cun KV cache ai_term 78 +投机解码 tou ji jie ma speculative decoding ai_term 76 +speculative decoding 投机解码 ai_term 74 +MoE路由 MoE lu you expert routing ai_term 76 +expert routing MoE路由 ai_term 74 +稀疏注意力 xi shu zhu yi li sparse attention ai_term 74 +sparse attention 稀疏注意力 ai_term 72 +视频大模型 shi pin da mo xing video foundation model ai_term 82 +video foundation model 视频大模型 ai_term 80 +多智能体协作 duo zhi neng ti xie zuo multi-agent collaboration ai_term 80 +AI陪伴 AI pei ban AI companion ai_term 78 +AI companion AI陪伴 ai_term 76 +数字人 shu zi ren digital human ai_term 82 +digital human 数字人 ai_term 80 +虚拟偶像 xu ni ou xiang virtual idol ai_term 76 +virtual idol 虚拟偶像 ai_term 74 +赛博永生 sai bo yong sheng cyber immortality tech_term 72 +赛博菩萨 sai bo pu sa cyber bodhisattva tech_term 70 +赛博佛祖 sai bo fo zu cyber buddha tech_term 70 +抽象 chou xiang abstract meme tech_term 72 +钝感力 dun gan li emotional bluntness tech_term 74 +松弛感 song chi gan relaxed vibe tech_term 76 +情绪稳定 qing xu wen ding emotionally stable tech_term 74 +搭子 da zi buddy partner tech_term 76 +citywalk city walk|City Walk tech_term 76 +City Walk citywalk tech_term 74 +特种兵旅游 te zhong bing lv you special forces travel tech_term 72 +显眼包 xian yan bao attention seeker tech_term 72 +i人 i ren introvert tech_term 74 +e人 e ren extrovert tech_term 74 +MBTI mbti人格 tech_term 76 +脆皮大学生 cui pi da xue sheng fragile college student tech_term 70 +班味 ban wei office vibe tech_term 74 +班味很重 ban wei hen zhong heavy office vibe tech_term 72 +偷感 tou gan stealth vibe tech_term 72 +偷感很重 tou gan hen zhong heavy stealth vibe tech_term 70 +水灵灵 shui ling ling fresh and lively tech_term 70 +硬控 ying kong hard control meme tech_term 72 +绝绝子 jue jue zi absolutely amazing tech_term 72 +尊嘟假嘟 zun du jia du really or not tech_term 70 +芭比Q了 ba bi Q le barbecue done|finished tech_term 68 +栓Q shuan Q thank you meme tech_term 68 +YYDS yyds|永远的神 tech_term 74 +永远的神 yong yuan de shen YYDS tech_term 72 +破防 po fang emotionally broken tech_term 74 +上头 shang tou addictive hype tech_term 70 +下头 xia tou turn off vibe tech_term 70 +拿捏 na nie nailed it tech_term 70 +种草 zhong cao plant grass recommend tech_term 78 +拔草 ba cao unrecommend tech_term 74 +安利 an li recommend tech_term 74 +避雷 bi lei avoid pitfall tech_term 74 +测评 ce ping product review tech_term 76 +开箱 kai xiang unboxing tech_term 76 +沉浸式 chen jin shi immersive tech_term 74 +氛围感 fen wei gan atmospheric vibe tech_term 76 +高级感 gao ji gan premium feel tech_term 74 +质感 zhi gan texture quality tech_term 72 +带货 dai huo live commerce sales tech_term 78 +直播带货 zhi bo dai huo livestream commerce tech_term 80 +短视频 duan shi pin short video tech_term 78 +中视频 zhong shi pin mid-length video tech_term 72 +知识付费 zhi shi fu fei paid knowledge tech_term 74 +私域 si yu private domain traffic tech_term 78 +公域 gong yu public domain traffic tech_term 74 +全域经营 quan yu jing ying omnichannel operation tech_term 74 +本地化 ben di hua localization tech_term 72 +GTM go to market tech_term 74 +PLG product led growth tech_term 72 +SLG sales led growth tech_term 70 +ARR annual recurring revenue tech_term 72 +MRR monthly recurring revenue tech_term 70 +NDR net dollar retention tech_term 68 +CAC customer acquisition cost tech_term 70 +LTV lifetime value tech_term 70 +融资 rong zi fundraising tech_term 74 +估值 gu zhi valuation tech_term 74 +IPO initial public offering|上市 tech_term 76 +上市 shang shi IPO listing tech_term 74 +独角兽 du jiao shou unicorn startup tech_term 76 +decacorn decacorn startup tech_term 68 +A轮 A lun Series A tech_term 72 +B轮 B lun Series B tech_term 70 +C轮 C lun Series C tech_term 68 +Pre-A pre a round tech_term 68 +降本增效 jiang ben zeng xiao cost cut efficiency tech_term 78 +裁员 cai yuan layoffs tech_term 74 +优化 you hua layoff euphemism tech_term 70 +毕业 bi ye layoff euphemism tech_term 68 +35岁危机 35 sui wei ji age 35 crisis tech_term 72 +考公 kao gong civil service exam tech_term 74 +考编 kao bian public institution exam tech_term 72 +灵活就业 ling huo jiu ye flexible employment tech_term 70 +银发经济 yin fa jing ji silver economy tech_term 78 +宠物经济 chong wu jing ji pet economy tech_term 74 +悦己消费 yue ji xiao fei self-reward spending tech_term 74 +情绪消费 qing xu xiao fei emotional spending tech_term 74 +体验经济 ti yan jing ji experience economy tech_term 72 +首发经济 shou fa jing ji launch economy tech_term 74 +冰雪经济 bing xue jing ji ice snow economy tech_term 72 +以旧换新 yi jiu huan xin trade-in program tech_term 78 +国补 guo bu national subsidy tech_term 80 +消费券 xiao fei quan consumption voucher tech_term 72 +数据要素 shu ju yao su data as factor tech_term 78 +数据资产 shu ju zi chan data assets tech_term 76 +数据确权 shu ju que quan data rights confirmation tech_term 74 +耐心资本 nai xin zi ben patient capital tech_term 76 +长期主义 chang qi zhu yi long-termism tech_term 76 +价值投资者 jia zhi tou zi zhe value investor tech_term 72 +价值投资 jia zhi tou zi value investing tech_term 72 +米哈游 mi ha you miHoYo game_ip 86 +miHoYo mihoyo|米哈游 game_ip 86 +原神 yuan shen Genshin Impact game_ip 88 +Genshin Impact genshin impact|原神 game_ip 88 +崩坏星穹铁道 beng huai xing qiong tie dao Honkai Star Rail game_ip 86 +Honkai Star Rail honkai star rail|星穹铁道 game_ip 86 +星穹铁道 xing qiong tie dao Honkai Star Rail game_ip 84 +崩坏 beng huai Honkai game_ip 80 +Honkai honkai|崩坏 game_ip 80 +绝区零 jue qu ling Zenless Zone Zero game_ip 84 +Zenless Zone Zero zenless zone zero|ZZZ game_ip 84 +鸣潮 ming chao Wuthering Waves game_ip 82 +Wuthering Waves wuthering waves|鸣潮 game_ip 82 +腾讯游戏 teng xun you xi Tencent Games game_ip 84 +王者荣耀 wang zhe rong yao Honor of Kings game_ip 88 +Honor of Kings honor of kings|王者 game_ip 88 +和平精英 he ping jing ying PUBG Mobile China game_ip 86 +PUBG Mobile pubg mobile|和平精英 game_ip 84 +英雄联盟 ying xiong lian meng League of Legends game_ip 86 +League of Legends league of legends|LOL game_ip 86 +无畏契约 wu wei qi yue Valorant game_ip 84 +Valorant valorant|无畏契约 game_ip 84 +DOTA2 dota 2|Dota 2 game_ip 82 +Dota 2 dota2|DOTA2 game_ip 82 +CS2 counter strike 2|CSGO game_ip 82 +Counter-Strike counter strike|CS2 game_ip 80 +Steam steam平台 game_ip 86 +Epic Games epic games|Epic game_ip 80 +育碧 yu bi Ubisoft game_ip 78 +Ubisoft ubisoft|育碧 game_ip 78 +暴雪 bao xue Blizzard game_ip 82 +Blizzard blizzard|暴雪 game_ip 82 +动视 dong shi Activision game_ip 80 +Activision activision|动视 game_ip 80 +PlayStation playstation|PS5 game_ip 82 +PS5 playstation 5 game_ip 80 +Xbox xbox series game_ip 80 +艾尔登法环 ai er deng fa huan Elden Ring game_ip 82 +Elden Ring elden ring|老头环 game_ip 82 +老头环 lao tou huan Elden Ring game_ip 80 +何同学 he tong xue 何同学UP主 celebrity 82 +老师好我叫何同学 lao shi hao wo jiao he tong xue 何同学 celebrity 80 +罗翔 luo xiang 罗翔说刑法 celebrity 84 +罗翔说刑法 luo xiang shuo xing fa 罗翔 celebrity 82 +papi酱 papi jiang papi celebrity 78 +李子柒 li zi qi Li Ziqi celebrity 84 +Li Ziqi li ziqi|李子柒 celebrity 84 +董宇辉 dong yu hui Dong Yuhui celebrity 84 +Dong Yuhui dong yuhui|董宇辉 celebrity 84 +东方甄选 dong fang zhen xuan East Buy tech_company 80 +疯狂小杨哥 feng kuang xiao yang ge Xiao Yangge celebrity 78 +李佳琦 li jia qi Austin Li celebrity 84 +Austin Li austin li|李佳琦 celebrity 84 +薇娅 wei ya Viya celebrity 76 +Viya viya|薇娅 celebrity 76 +交个朋友 jiao ge peng you Make Friends Live tech_company 78 +交个朋友直播间 jiao ge peng you zhi bo jian 交个朋友 tech_term 76 +伯克希尔 bo ke xi er Berkshire Hathaway fintech 82 +Berkshire Hathaway berkshire hathaway|伯克希尔 fintech 82 +芒格 mang ge Charlie Munger tech_leader 80 +Charlie Munger charlie munger|芒格 tech_leader 80 +索罗斯 suo luo si George Soros tech_leader 78 +George Soros george soros|索罗斯 tech_leader 78 +达利欧 da li ou Ray Dalio tech_leader 80 +Ray Dalio ray dalio|达利欧 tech_leader 80 +桥水 qiao shui Bridgewater fintech 80 +Bridgewater bridgewater|桥水基金 fintech 80 +黑石 hei shi Blackstone fintech 80 +Blackstone blackstone|黑石集团 fintech 80 +KKR kkr fintech 76 +红杉 hong shan Sequoia fintech 80 +Sequoia sequoia|红杉资本 fintech 80 +a16z andreessen horowitz|A16Z fintech 82 +Andreessen Horowitz a16z|andreessen horowitz fintech 82 +高瓴 gao ling Hillhouse fintech 80 +Hillhouse hillhouse|高瓴资本 fintech 80 +IDG idg capital fintech 76 +经纬 jing wei Matrix Partners China fintech 76 +Matrix Partners matrix partners|经纬创投 fintech 76 +真格 zhen ge ZhenFund fintech 76 +ZhenFund zhen fund|真格基金 fintech 76 +源码 yuan ma Source Code Capital fintech 74 +中金 zhong jin CICC fintech 78 +CICC cicc|中金公司 fintech 78 +中信 zhong xin CITIC fintech 78 +CITIC citic|中信证券 fintech 78 +华泰 hua tai Huatai fintech 76 +Huatai huatai|华泰证券 fintech 76 +国泰君安 guo tai jun an Guotai Junan fintech 76 +Guotai Junan guotai junan|国泰君安 fintech 76 +摩根大通 mo gen da tong JPMorgan fintech 80 +JPMorgan jp morgan|摩根大通 fintech 80 +高盛 gao sheng Goldman Sachs fintech 82 +Goldman Sachs goldman sachs|高盛 fintech 82 +摩根士丹利 mo gen shi dan li Morgan Stanley fintech 80 +Morgan Stanley morgan stanley|摩根士丹利 fintech 80 +纳斯达克 na si da ke Nasdaq fintech 80 +Nasdaq nasdaq|纳斯达克 fintech 80 +标普500 biao pu 500 S&P 500 fintech 78 +S&P 500 s and p 500|标普500 fintech 78 +道琼斯 dao qiong si Dow Jones fintech 76 +Dow Jones dow jones|道琼斯 fintech 76 +恒生指数 heng sheng zhi shu Hang Seng Index fintech 76 +沪深300 hu shen 300 CSI 300 fintech 76 +比特币 bi te bi Bitcoin fintech 84 +Bitcoin bitcoin|BTC fintech 84 +BTC bitcoin|比特币 fintech 80 +以太坊 yi tai fang Ethereum fintech 82 +Ethereum ethereum|ETH fintech 82 +ETH ethereum|以太坊 fintech 78 +Solana solana crypto fintech 78 +狗狗币 gou gou bi Dogecoin fintech 76 +Dogecoin dogecoin|狗狗币 fintech 76 +美联储 mei lian chu Federal Reserve fintech 82 +Federal Reserve federal reserve|美联储 fintech 82 +鲍威尔 bao wei er Jerome Powell tech_leader 80 +Jerome Powell jerome powell|鲍威尔 tech_leader 80 +加息 jia xi rate hike fintech 74 +降息 jiang xi rate cut fintech 76 +量化宽松 liang hua kuan song quantitative easing fintech 74 diff --git a/docs/personal-dictionary-icloud-kvs-checklist.md b/docs/personal-dictionary-icloud-kvs-checklist.md new file mode 100644 index 0000000..74ef92a --- /dev/null +++ b/docs/personal-dictionary-icloud-kvs-checklist.md @@ -0,0 +1,28 @@ +# Personal Dictionary iCloud KVS — Manual Verification Checklist + +Use this on **macOS with Xcode 16+** and at least two devices signed into the **same Apple ID** with iCloud Drive / iCloud enabled. + +## Prerequisites + +1. In Apple Developer Portal, enable **iCloud** → **Key-value storage** for `com.osgkeyboard.ios`. +2. Regenerate provisioning profiles after entitlements change. +3. Run `xcodegen generate` and install a fresh build on each device. + +## Scenarios + +| # | Steps | Expected | +|---|--------|----------| +| 1 | Device A: open Personal Dictionary, enable **Sync via iCloud**, add term `TestWordA` | Toggle stays on; term appears locally | +| 2 | Device B: open app → Personal Dictionary tab | `TestWordA` appears after pull (may take up to ~1 min) | +| 3 | Device B: add `TestWordB` | Device A eventually shows both terms | +| 4 | Both devices: edit same term offline, then go online | Newer edit wins; aliases union when terms match | +| 5 | Device A: delete a term | Term disappears on Device B after sync | +| 6 | Device A: disable iCloud sync | Local dictionary remains; Device B stops receiving new edits from A | +| 7 | Sign out of iCloud on one device | App keeps local dictionary; sync errors may surface in UI | +| 8 | Keyboard extension on Device A | Uses App Group cache immediately after main-app save — no iCloud wait | + +## Notes + +- KVS propagation is **eventual**; force-quit and reopen the app to speed up pulls. +- The keyboard extension never talks to iCloud directly; only the main app syncs. +- Payload limit is ~1 MB per key; very large dictionaries should show the “too large” error. diff --git a/project.yml b/project.yml index 15de46c..3ce7a6e 100644 --- a/project.yml +++ b/project.yml @@ -79,6 +79,12 @@ targets: # specify kSecAttrAccessGroup explicitly. keychain-access-groups: - $(AppIdentifierPrefix)com.osgkeyboard.shared + # iCloud Key-Value Store — personal dictionary sync across + # iPhone / iPad / Mac (Designed for iPad). Main app only. + # NOTE: this entitlement is a single STRING, not an array — an + # array value never matches the profile and breaks automatic + # signing ("doesn't match the entitlements file's value"). + com.apple.developer.ubiquity-kvstore-identifier: $(TeamIdentifierPrefix)com.osgkeyboard.ios resources: - path: OSGKeyboard/Assets.xcassets - path: OSGKeyboard/en.lproj