perf(asr): speed up local Flow dictation and land CLM/keyboard refactor

Reduce perceived latency from key release to final text:
- Adaptive chunking: 2.5s first chunk + 5s follow-ups so short
  utterances start on-device recognition while still recording.
- Session-level ASR warmup and audio-format cache reuse to remove
  per-utterance cold-start of SpeechAnalyzer.
- Mirror live pipelined partials to the keyboard transcript line via
  a new flow.transcriptionPartial App Group key + Darwin ping.

Also commits the accumulated custom language model, Flow session,
keyboard extension restructure, and Xiaomi MiMo provider work in
progress on this branch.
This commit is contained in:
Rocky
2026-07-06 00:00:19 +08:00
parent cfbfb542cc
commit 537a68552a
76 changed files with 3456 additions and 121086 deletions
+41 -95
View File
@@ -1,15 +1,19 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Build OSGKeyboard custom ASR lexicon v1 from Sogou-derived sources.
"""Build OSGKeyboard domain ASR lexicon v1 from the computer-terms scel source.
Sources (experimentation only — Sogou data is non-commercial):
1. ASC8384/SogouPopularDict accumulated pinyin TSV
2. Local 计算机词汇大全【官方推荐】.scel
3. Local 网络流行新词.scel
Sources:
Local 计算机词汇大全【官方推荐】.scel (IT / computer vocabulary only)
Casual network slang and Sogou popular-word dumps are intentionally excluded —
they dilute custom LM phrase biasing without improving domain ASR accuracy.
Output:
OSGKeyboard/Resources/CustomLanguageModel/v1/phrases.tsv
OSGKeyboard/Resources/CustomLanguageModel/v1/manifest.json
The compiled .bin asset is exported separately to
OSGKeyboardShared/Resources/CustomLanguageModel/v1/ via export_clm.swift.
"""
from __future__ import annotations
@@ -17,43 +21,19 @@ from __future__ import annotations
import argparse
import json
import sys
import urllib.request
from collections import Counter
from dataclasses import dataclass
from datetime import datetime, timezone
from pathlib import Path
from scel_parser import get_scel_info, load_pinyin_tsv, parse_scel_file
from scel_parser import get_scel_info, parse_scel_file
REPO_ROOT = Path(__file__).resolve().parents[2]
DEFAULT_OUTPUT_DIR = REPO_ROOT / "OSGKeyboard/Resources/CustomLanguageModel/v1"
SOGOU_ACCUMULATED_URL = (
"https://raw.githubusercontent.com/ASC8384/SogouPopularDict/main/"
"data/sogou_network_words_accumulated_pinyin.tsv"
)
DEFAULT_COMPUTER_SCEL = Path("/Users/rocky/Downloads/计算机词汇大全【官方推荐】.scel")
DEFAULT_NETWORK_SCEL = Path("/Users/rocky/Downloads/网络流行新词.scel")
@dataclass(frozen=True)
class SourceSpec:
key: str
label: str
weight: int
SOURCES = [
SourceSpec("computer_terms", "计算机词汇大全【官方推荐】", weight=5),
SourceSpec("network_slang_local", "网络流行新词.scel", weight=3),
SourceSpec("sogou_popular_accumulated", "SogouPopularDict accumulated", weight=1),
]
def download_accumulated_tsv(destination: Path) -> None:
destination.parent.mkdir(parents=True, exist_ok=True)
with urllib.request.urlopen(SOGOU_ACCUMULATED_URL, timeout=120) as response:
destination.write_bytes(response.read())
SOURCE_KEY = "computer_terms"
SOURCE_LABEL = "计算机词汇大全【官方推荐】"
SOURCE_WEIGHT = 5
@dataclass
@@ -64,24 +44,26 @@ class LexiconEntry:
weight: int
def merge_entries(sources: list[tuple[SourceSpec, list[tuple[str, str]]]]) -> list[LexiconEntry]:
def merge_entries(entries: list[tuple[str, str]]) -> list[LexiconEntry]:
merged: dict[str, LexiconEntry] = {}
source_counts: Counter[str] = Counter()
for spec, entries in sources:
for word, pinyin in entries:
source_counts[spec.key] += 1
current = merged.get(word)
candidate = LexiconEntry(word=word, pinyin=pinyin, source=spec.key, weight=spec.weight)
if current is None or candidate.weight > current.weight:
merged[word] = candidate
elif current.weight == candidate.weight and not current.pinyin and pinyin:
merged[word] = candidate
for word, pinyin in entries:
current = merged.get(word)
candidate = LexiconEntry(
word=word,
pinyin=pinyin,
source=SOURCE_KEY,
weight=SOURCE_WEIGHT,
)
if current is None:
merged[word] = candidate
elif not current.pinyin and pinyin:
merged[word] = candidate
return sorted(merged.values(), key=lambda item: (item.weight * -1, item.word))
return sorted(merged.values(), key=lambda item: item.word)
def write_outputs(entries: list[LexiconEntry], output_dir: Path, source_stats: dict[str, int]) -> None:
def write_outputs(entries: list[LexiconEntry], output_dir: Path, raw_count: int) -> None:
output_dir.mkdir(parents=True, exist_ok=True)
phrases_path = output_dir / "phrases.tsv"
@@ -97,17 +79,16 @@ def write_outputs(entries: list[LexiconEntry], output_dir: Path, source_stats: d
"entry_count": len(entries),
"sources": [
{
"key": spec.key,
"label": spec.label,
"weight": spec.weight,
"raw_count": source_stats.get(spec.key, 0),
"key": SOURCE_KEY,
"label": SOURCE_LABEL,
"weight": SOURCE_WEIGHT,
"raw_count": raw_count,
}
for spec in SOURCES
],
"notes": [
"Sogou-derived data is for internal ASR experimentation only.",
"Domain-specific computer/IT vocabulary only; casual network slang removed.",
"PhraseCount weights map to SFCustomLanguageModelData relative frequencies.",
"Higher source weight wins on duplicate words.",
"Merged with ai-tech-brands seed at export time for the final .bin asset.",
],
"files": {
"phrases": phrases_path.name,
@@ -118,47 +99,19 @@ def write_outputs(entries: list[LexiconEntry], output_dir: Path, source_stats: d
manifest_path.write_text(json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
def build(
*,
computer_scel: Path,
network_scel: Path,
output_dir: Path,
skip_download: bool,
) -> int:
cache_dir = REPO_ROOT / ".cache/lexicon"
cache_dir.mkdir(parents=True, exist_ok=True)
accumulated_tsv = cache_dir / "sogou_network_words_accumulated_pinyin.tsv"
if not skip_download and not accumulated_tsv.exists():
print(f"Downloading {SOGOU_ACCUMULATED_URL}")
download_accumulated_tsv(accumulated_tsv)
elif not accumulated_tsv.exists():
print(f"Missing accumulated TSV: {accumulated_tsv}", file=sys.stderr)
return 1
def build(*, computer_scel: Path, output_dir: Path) -> int:
if not computer_scel.exists():
print(f"Missing computer scel: {computer_scel}", file=sys.stderr)
return 1
if not network_scel.exists():
print(f"Missing network scel: {network_scel}", file=sys.stderr)
return 1
computer_info = get_scel_info(computer_scel)
network_info = get_scel_info(network_scel)
print(f"Computer dict: {computer_info.name} ({computer_info.word_count} header count)")
print(f"Network dict: {network_info.name} ({network_info.word_count} header count)")
loaded_sources: list[tuple[SourceSpec, list[tuple[str, str]]]] = [
(SOURCES[0], parse_scel_file(computer_scel)),
(SOURCES[1], parse_scel_file(network_scel)),
(SOURCES[2], load_pinyin_tsv(accumulated_tsv)),
]
raw_entries = parse_scel_file(computer_scel)
merged = merge_entries(raw_entries)
write_outputs(merged, output_dir, raw_count=len(raw_entries))
source_stats = {spec.key: len(entries) for spec, entries in loaded_sources}
merged = merge_entries(loaded_sources)
write_outputs(merged, output_dir, source_stats)
print(f"Raw counts: {source_stats}")
print(f"Raw count: {len(raw_entries)}")
print(f"Merged unique entries: {len(merged)}")
print(f"Wrote {output_dir / 'phrases.tsv'}")
print(f"Wrote {output_dir / 'manifest.json'}")
@@ -166,18 +119,11 @@ def build(
def main() -> int:
parser = argparse.ArgumentParser(description="Build OSGKeyboard custom ASR lexicon v1")
parser = argparse.ArgumentParser(description="Build OSGKeyboard domain ASR lexicon v1")
parser.add_argument("--computer-scel", type=Path, default=DEFAULT_COMPUTER_SCEL)
parser.add_argument("--network-scel", type=Path, default=DEFAULT_NETWORK_SCEL)
parser.add_argument("--output-dir", type=Path, default=DEFAULT_OUTPUT_DIR)
parser.add_argument("--skip-download", action="store_true")
args = parser.parse_args()
return build(
computer_scel=args.computer_scel,
network_scel=args.network_scel,
output_dir=args.output_dir,
skip_download=args.skip_download,
)
return build(computer_scel=args.computer_scel, output_dir=args.output_dir)
if __name__ == "__main__":
+14 -14
View File
@@ -15,7 +15,7 @@ import Speech
// MARK: - CLI
struct CLIOptions {
var sogouTSV: URL
var domainTSV: URL
var aiTechTSV: URL
var outputBin: URL
var localeID: String
@@ -29,14 +29,14 @@ struct CLIOptions {
.deletingLastPathComponent()
.deletingLastPathComponent()
var sogou = repoRoot.appendingPathComponent(
var domain = repoRoot.appendingPathComponent(
"OSGKeyboard/Resources/CustomLanguageModel/v1/phrases.tsv"
)
var aiTech = repoRoot.appendingPathComponent(
"OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv"
)
var output = repoRoot.appendingPathComponent(
"OSGKeyboard/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
"OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
)
var localeID = "zh_CN"
var modelID = "com.osgkeyboard.custom-lm.v1"
@@ -46,8 +46,8 @@ struct CLIOptions {
var iterator = CommandLine.arguments.dropFirst().makeIterator()
while let flag = iterator.next() {
switch flag {
case "--sogou-tsv":
sogou = URL(fileURLWithPath: iterator.next() ?? "")
case "--domain-tsv", "--sogou-tsv":
domain = URL(fileURLWithPath: iterator.next() ?? "")
case "--ai-tech-tsv":
aiTech = URL(fileURLWithPath: iterator.next() ?? "")
case "--output":
@@ -71,7 +71,7 @@ struct CLIOptions {
}
return CLIOptions(
sogouTSV: sogou,
domainTSV: domain,
aiTechTSV: aiTech,
outputBin: output,
localeID: localeID,
@@ -86,7 +86,7 @@ struct CLIOptions {
export_clm.swift — build SFCustomLanguageModelData .bin on macOS
Options:
--sogou-tsv <path> Sogou merged phrases TSV
--domain-tsv <path> Domain phrases TSV (computer/IT terms)
--ai-tech-tsv <path> AI/tech seed phrases TSV
--output <path> Output .bin path
--locale <id> Locale identifier (default: zh_CN)
@@ -126,7 +126,7 @@ enum TSVLoader {
}
// Formats:
// sogou: word, pinyin, source, weight
// domain: word, pinyin, source, weight
// ai-tech: word, pinyin, source, category, weight, canonical
let weight: Int
if parts.count >= 6, let parsed = Int(parts[4]) {
@@ -171,17 +171,17 @@ enum ExportCLM {
let options = CLIOptions.parse()
let fm = FileManager.default
guard fm.fileExists(atPath: options.sogouTSV.path) else {
throw ExportError.missingInput(options.sogouTSV.path)
guard fm.fileExists(atPath: options.domainTSV.path) else {
throw ExportError.missingInput(options.domainTSV.path)
}
guard fm.fileExists(atPath: options.aiTechTSV.path) else {
throw ExportError.missingInput(options.aiTechTSV.path)
}
fputs("Loading phrases…\n", stderr)
let sogou = try TSVLoader.load(from: options.sogouTSV, sourceLabel: "sogou_v1")
let domain = try TSVLoader.load(from: options.domainTSV, sourceLabel: "computer_terms")
let aiTech = try TSVLoader.load(from: options.aiTechTSV, sourceLabel: "ai_tech_seed")
var merged = TSVLoader.merge([sogou, aiTech])
var merged = TSVLoader.merge([domain, aiTech])
if let cap = options.maxEntries, merged.count > cap {
merged = Array(merged.prefix(cap))
@@ -189,7 +189,7 @@ enum ExportCLM {
}
fputs(
"Merged \(merged.count) unique phrases (sogou=\(sogou.count), ai-tech=\(aiTech.count))\n",
"Merged \(merged.count) unique phrases (domain=\(domain.count), ai-tech=\(aiTech.count))\n",
stderr
)
fputs("Locale=\(options.localeID) identifier=\(options.modelID) version=\(options.modelVersion)\n", stderr)
@@ -236,7 +236,7 @@ enum ExportCLM {
"version": options.modelVersion,
"phrase_count": merged.count,
"sources": [
"sogou_v1": sogou.count,
"computer_terms": domain.count,
"ai_tech_seed": aiTech.count,
],
"bin_file": outputURL.lastPathComponent,
+1 -1
View File
@@ -29,7 +29,7 @@ struct PrepareOptions {
.deletingLastPathComponent()
var input = repoRoot.appendingPathComponent(
"OSGKeyboard/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
"OSGKeyboardShared/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
)
var output = repoRoot.appendingPathComponent(
"OSGKeyboard/Resources/CustomLanguageModel/v1/compiled"
@@ -379,3 +379,242 @@ embodied AI 具身智能 tech_term 80
数字游民 shu zi you min digital nomad tech_term 75
远程办公 yuan cheng ban gong remote work tech_term 78
副业 fu ye side hustle tech_term 72
# --- 2026 AI models, agents & coding tools ---
GPT-5 gpt five|GPT five|ChatGPT 5 ai_model 98
GPT-5.5 gpt five five|GPT five point five|gpt-5.5 ai_model 98
GPT-4o gpt four o|GPT four oh|gpt4o ai_model 92
Claude Code claude code|ClaudeCode|克劳德代码 dev_tool 96
Claude Sonnet claude sonnet|Sonnet|Sonnet 4|Sonnet 4.6 ai_model 94
Claude Opus claude opus|Opus|Opus 4|Opus 4.7 ai_model 94
Composer cursor composer|Composer 2|Composer 2.5 dev_tool 92
Cursor Composer cursor composer|Composer dev_tool 92
OpenAI Codex openai codex|Codex|codex cli dev_tool 92
Codex CLI codex cli|OpenAI Codex dev_tool 90
Gemini CLI gemini cli dev_tool 88
Gemini 2.5 Pro gemini two five pro|Gemini Pro ai_model 90
Gemini 3 Pro gemini three pro|Gemini Pro ai_model 92
Gemini Flash gemini flash|Gemini 3 Flash|Gemini 2.5 Flash ai_model 88
DeepSeek V3 deepseek v three|DeepSeek-V3 ai_model 92
DeepSeek R1 deepseek r one|DeepSeek-R1 ai_model 95
DeepSeek V4 deepseek v four|DeepSeek-V4|DeepSeek V4 Pro ai_model 92
Qwen Coder qwen coder|千问 coder|通义千问 coder ai_model 90
Qwen Max qwen max|Qwen3 Max|通义千问 Max ai_model 88
Qwen Thinking qwen thinking|通义千问 thinking ai_model 86
Kimi K2 kimi k two|Kimi K2.6|Kimi K2.5 ai_model 90
Kimi Code kimi code|Moonshot Kimi Code dev_tool 88
GLM Coding Plan glm coding plan|智谱 coding plan dev_tool 84
GLM-4.6 glm four six|GLM 4.6 ai_model 84
GLM-5 glm five|GLM 5 ai_model 86
Grok 4 grok four|Grok 4.3|Grok Build ai_model 86
Grok Build grok build|Grok Build CLI dev_tool 84
Llama 4 llama four|Llama Maverick|Llama Scout ai_model 86
Llama Maverick llama maverick|Llama 4 Maverick ai_model 84
Mistral Large mistral large|Mistral Large 3 ai_model 84
Devin devin|Cognition Devin dev_tool 88
Cognition cognition ai|Cognition AI ai_brand 82
Kiro kiro|Amazon Kiro dev_tool 84
Amazon Q amazon q|AWS Q|Q Developer dev_tool 84
Q Developer q developer|Amazon Q Developer dev_tool 82
OpenCode open code|opencode|OpenCode AI dev_tool 88
OpenHands open hands|OpenHands AI dev_tool 84
Roo Code roo code|RooCode dev_tool 80
Continue continue dev|Continue.dev dev_tool 78
Zed zed editor|Zed AI dev_tool 80
Trae trae|Trae AI|Trae CN dev_tool 84
TRAE trae|字节 Trae dev_tool 82
Lovable lovable|Lovable AI dev_tool 84
Bolt.new bolt new|Bolt AI|StackBlitz Bolt dev_tool 84
v0 vercel v0|v zero|V0 dev_tool 86
Replit Agent replit agent|Replit AI dev_tool 84
Manus manus|Manus AI ai_brand 86
AutoGen autogen|Microsoft AutoGen ai_platform 82
CrewAI crew ai|Crew AI ai_platform 82
LangGraph lang graph|LangGraph ai_platform 84
DSPy dspy|DSPy AI ai_platform 78
LlamaIndex llama index|LlamaIndex ai_platform 82
Haystack haystack ai|Deepset Haystack ai_platform 76
ComfyUI comfy ui|ComfyUI ai_platform 78
Fooocus fooocus|Focus AI ai_platform 72
LM Studio lm studio|LMStudio ai_platform 82
Open WebUI open web ui|OpenWebUI ai_platform 82
AnythingLLM anything llm|Anything LLM ai_platform 78
# --- Agent, MCP & AI engineering terms ---
Agent Mode agent mode|代理模式|智能体模式 ai_term 92
智能体模式 zhi neng ti mo shi Agent Mode ai_term 90
multi-agent multi agent|多智能体 ai_term 90
多智能体 duo zhi neng ti multi-agent ai_term 88
subagent sub agent|子智能体 ai_term 86
子智能体 zi zhi neng ti subagent ai_term 84
tool use tool-use|工具使用 ai_term 88
tool calling tool-calling|工具调用 ai_term 90
structured output structured outputs|结构化输出 ai_term 86
结构化输出 jie gou hua shu chu structured output ai_term 84
context engineering context engineering|上下文工程 ai_term 92
上下文工程 shang xia wen gong cheng context engineering ai_term 90
prompt caching prompt cache|提示词缓存 ai_term 84
提示词缓存 ti shi ci huan cun prompt caching ai_term 82
semantic search 语义搜索|semantic retrieval ai_term 84
语义搜索 yu yi sou suo semantic search ai_term 82
vector search 向量搜索|vector retrieval ai_term 84
向量搜索 xiang liang sou suo vector search ai_term 82
hybrid search 混合搜索|hybrid retrieval ai_term 82
reranker rerank|重排序模型 ai_term 82
重排序模型 chong pai xu mo xing reranker ai_term 80
evals evaluation|模型评测|评测集 ai_term 86
模型评测 mo xing ping ce evals ai_term 84
SWE-agent swe agent|SWE Agent ai_term 80
WebDev Arena web dev arena|WebDevArena ai_term 76
LLM harness llm harness|agent harness ai_term 80
agent harness agentic harness|智能体框架 ai_term 80
reasoning effort reasoning effort|推理强度 ai_term 78
推理强度 tui li qiang du reasoning effort ai_term 76
test-time compute test time compute|测试时计算 ai_term 78
上下文压缩 shang xia wen ya suo context compression ai_term 82
context compression 上下文压缩 ai_term 80
memory bank memory bank|记忆库 ai_term 78
AI workflow ai workflow|AI 工作流 ai_term 82
工作流编排 gong zuo liu bian pai workflow orchestration ai_term 82
workflow orchestration 工作流编排 ai_term 80
MCP server mcp server|模型上下文协议服务器 ai_term 90
MCP client mcp client|模型上下文协议客户端 ai_term 86
MCP Inspector mcp inspector|MCP 调试器 dev_tool 82
Streamable HTTP streamable http|MCP HTTP ai_term 78
stdio transport stdio transport|标准输入输出传输 ai_term 76
# --- Developer platforms, databases & infra ---
Neon neon database|Neon Postgres tech_company 84
PlanetScale planet scale|PlanetScale MySQL tech_company 82
Turso turso|libSQL tech_company 80
libSQL lib sql|Turso tech_term 78
Convex convex dev|Convex database tech_company 80
Clerk clerk auth|Clerk dev_tool 80
Auth0 auth zero|Auth Zero dev_tool 78
WorkOS work os|Work OS dev_tool 78
Clerk Auth clerk auth|Clerk dev_tool 78
Drizzle drizzle orm|Drizzle ORM dev_tool 82
Prisma prisma orm|Prisma ORM dev_tool 84
Drizzle ORM drizzle orm|Drizzle dev_tool 82
Prisma ORM prisma orm|Prisma dev_tool 82
Postgres postgres|PostgreSQL|postgre sql tech_term 88
PostgreSQL postgresql|Postgres|postgre sql tech_term 88
SQLite sqlite|SQLite tech_term 84
DuckDB duck db|Duck DB tech_term 80
ClickHouse click house|ClickHouse tech_term 80
Kafka kafka|Apache Kafka tech_term 82
Redpanda red panda|Redpanda tech_company 76
OpenTelemetry open telemetry|OTel tech_term 84
OTel otel|OpenTelemetry tech_term 82
Grafana grafana dev_tool 78
Prometheus prometheus dev_tool 78
Sentry sentry dev_tool 82
SST sst|Serverless Stack dev_tool 76
Tailscale tailscale tech_company 78
Fly.io fly io|Fly tech_company 78
Render render.com|Render tech_company 76
Railway railway app|Railway tech_company 78
Modal modal labs|Modal tech_company 78
Modal Labs modal labs|Modal tech_company 76
Hugging Face Spaces hugging face spaces|Spaces ai_platform 78
Nix nix|NixOS tech_term 78
NixOS nixos|Nix OS tech_term 76
Bun bun js|Bun runtime dev_tool 82
Deno deno|Deno Deploy dev_tool 80
Biome biome js|Biome dev_tool 78
Turborepo turbo repo|Turborepo dev_tool 78
Nx nx monorepo|Nx dev_tool 76
pnpm pnpm dev_tool 76
shadcn/ui shadcn ui|shadcn|shad cn dev_tool 84
Tailwind CSS tailwind css|Tailwind dev_tool 84
React Server Components react server components|RSC dev_tool 82
RSC react server components dev_tool 80
Server Actions server actions|React Server Actions dev_tool 78
Astro astro js|Astro dev_tool 80
SvelteKit svelte kit|SvelteKit dev_tool 80
Remix remix run|Remix dev_tool 78
Nuxt nuxt|Nuxt.js dev_tool 78
Hono hono js|Hono dev_tool 78
FastAPI fast api|FastAPI dev_tool 82
Ktor ktor|Ktor server dev_tool 76
# --- Apple, Swift & on-device speech stack ---
SwiftData swift data|SwiftData dev_tool 88
Swift Testing swift testing|Testing framework dev_tool 86
App Intents app intents|AppIntents dev_tool 84
WidgetKit widget kit|WidgetKit dev_tool 82
ActivityKit activity kit|ActivityKit dev_tool 82
Live Activities live activities|灵动岛实时活动 dev_tool 82
App Group app group|App Groups dev_tool 86
Core ML core ml|CoreML dev_tool 88
Create ML create ml|CreateML dev_tool 82
SpeechAnalyzer speech analyzer|Speech Analyzer dev_tool 92
DictationTranscriber dictation transcriber|Dictation Transcriber dev_tool 92
SpeechTranscriber speech transcriber|Speech Transcriber dev_tool 86
SFCustomLanguageModelData custom language model data|SF Custom Language Model Data dev_tool 90
SFSpeechLanguageModel speech language model|SF Speech Language Model dev_tool 88
AssetInventory asset inventory|Speech AssetInventory dev_tool 84
AVAudioEngine av audio engine|AVAudioEngine dev_tool 84
AVAudioSession av audio session|AVAudioSession dev_tool 84
TestFlight test flight|TestFlight dev_tool 84
App Store Connect app store connect|AppStoreConnect dev_tool 84
XcodeGen xcode gen|XcodeGen dev_tool 82
Tuist tuist dev_tool 78
Swift Package Manager swift package manager|SPM dev_tool 82
SPM swift package manager dev_tool 80
SF Symbols sf symbols|SFSymbols dev_tool 82
visionOS vision os|Vision Pro dev_tool 82
RealityKit reality kit|RealityKit dev_tool 80
Metal metal|Metal Performance Shaders dev_tool 80
# --- China AI, creator tools & current tech buzzwords ---
可灵 ke ling Kling|Kling AI ai_brand 86
Kling kling ai|可灵 ai_brand 86
海螺AI hai luo AI Hailuo|MiniMax Video ai_brand 84
Hailuo hailuo ai|海螺AI ai_brand 82
即梦 ji meng Jimeng|即梦AI ai_brand 84
Jimeng jimeng ai|即梦 ai_brand 82
剪映 jian ying CapCut tech_company 84
CapCut cap cut|剪映 tech_company 84
腾讯元宝 teng xun yuan bao Yuanbao ai_brand 84
元宝 yuan bao 腾讯元宝|Yuanbao ai_brand 82
纳米AI na mi AI Nami AI ai_brand 78
秘塔AI mi ta AI Metaso ai_brand 80
Metaso metaso|秘塔AI ai_brand 78
夸克AI kua ke AI Quark AI ai_brand 80
Quark quark ai|夸克 ai_brand 78
天工 tian gong tiangong|昆仑万维天工 ai_brand 78
商量 shang liang SenseChat ai_brand 76
杭州六小龙 hang zhou liu xiao long Hangzhou Six Little Dragons tech_term 84
AI治理 AI zhi li AI governance tech_term 84
AI governance AI治理 tech_term 82
世界模型 shi jie mo xing world model ai_term 84
world model 世界模型 ai_term 82
端到端 duan dao duan end-to-end tech_term 82
end-to-end 端到端 tech_term 80
端侧模型 duan ce mo xing on-device model ai_term 84
on-device model 端侧模型 ai_term 82
本地模型 ben di mo xing local model ai_term 84
local model 本地模型 ai_term 82
具身智能体 ju shen zhi neng ti embodied agent ai_term 82
embodied agent 具身智能体 ai_term 80
人形机器人 ren xing ji qi ren humanoid robot|humanoid tech_term 86
humanoid robot 人形机器人 tech_term 84
新质生产力 xin zhi sheng chan li new quality productive forces tech_term 82
数字分身 shu zi fen shen digital avatar tech_term 78
digital avatar 数字分身 tech_term 76
AI视频 AI shi pin AI video tech_term 82
AI video AI视频 tech_term 80
文生图 wen sheng tu text-to-image tech_term 82
图生视频 tu sheng shi pin image-to-video tech_term 82
文生视频 wen sheng shi pin text-to-video tech_term 82
小红书 xiao hong shu Xiaohongshu|RedNote tech_company 86
Xiaohongshu xiao hong shu|小红书|RedNote tech_company 84
RedNote red note|Xiaohongshu|小红书 tech_company 82
活人感 huo ren gan authentically human|real person vibe tech_term 80
情绪价值 qing xu jia zhi emotional value tech_term 80
赛博对账 sai bo dui zhang cyber reconciliation tech_term 78
赛博 sai bo cyber tech_term 76
村咖 cun ka village coffee tech_term 72
拉布布 la bu bu Labubu tech_term 72
Labubu labubu|拉布布 tech_term 72
1 # OSGKeyboard · AI / Tech / Brand seed lexicon (curated, permissive sources only)
379 数字游民
380 远程办公
381 副业
382 # --- 2026 AI models, agents & coding tools ---
383 GPT-5
384 GPT-5.5
385 GPT-4o
386 Claude Code
387 Claude Sonnet
388 Claude Opus
389 Composer
390 Cursor Composer
391 OpenAI Codex
392 Codex CLI
393 Gemini CLI
394 Gemini 2.5 Pro
395 Gemini 3 Pro
396 Gemini Flash
397 DeepSeek V3
398 DeepSeek R1
399 DeepSeek V4
400 Qwen Coder
401 Qwen Max
402 Qwen Thinking
403 Kimi K2
404 Kimi Code
405 GLM Coding Plan
406 GLM-4.6
407 GLM-5
408 Grok 4
409 Grok Build
410 Llama 4
411 Llama Maverick
412 Mistral Large
413 Devin
414 Cognition
415 Kiro
416 Amazon Q
417 Q Developer
418 OpenCode
419 OpenHands
420 Roo Code
421 Continue
422 Zed
423 Trae
424 TRAE
425 Lovable
426 Bolt.new
427 v0
428 Replit Agent
429 Manus
430 AutoGen
431 CrewAI
432 LangGraph
433 DSPy
434 LlamaIndex
435 Haystack
436 ComfyUI
437 Fooocus
438 LM Studio
439 Open WebUI
440 AnythingLLM
441 # --- Agent, MCP & AI engineering terms ---
442 Agent Mode
443 智能体模式
444 multi-agent
445 多智能体
446 subagent
447 子智能体
448 tool use
449 tool calling
450 structured output
451 结构化输出
452 context engineering
453 上下文工程
454 prompt caching
455 提示词缓存
456 semantic search
457 语义搜索
458 vector search
459 向量搜索
460 hybrid search
461 reranker
462 重排序模型
463 evals
464 模型评测
465 SWE-agent
466 WebDev Arena
467 LLM harness
468 agent harness
469 reasoning effort
470 推理强度
471 test-time compute
472 上下文压缩
473 context compression
474 memory bank
475 AI workflow
476 工作流编排
477 workflow orchestration
478 MCP server
479 MCP client
480 MCP Inspector
481 Streamable HTTP
482 stdio transport
483 # --- Developer platforms, databases & infra ---
484 Neon
485 PlanetScale
486 Turso
487 libSQL
488 Convex
489 Clerk
490 Auth0
491 WorkOS
492 Clerk Auth
493 Drizzle
494 Prisma
495 Drizzle ORM
496 Prisma ORM
497 Postgres
498 PostgreSQL
499 SQLite
500 DuckDB
501 ClickHouse
502 Kafka
503 Redpanda
504 OpenTelemetry
505 OTel
506 Grafana
507 Prometheus
508 Sentry
509 SST
510 Tailscale
511 Fly.io
512 Render
513 Railway
514 Modal
515 Modal Labs
516 Hugging Face Spaces
517 Nix
518 NixOS
519 Bun
520 Deno
521 Biome
522 Turborepo
523 Nx
524 pnpm
525 shadcn/ui
526 Tailwind CSS
527 React Server Components
528 RSC
529 Server Actions
530 Astro
531 SvelteKit
532 Remix
533 Nuxt
534 Hono
535 FastAPI
536 Ktor
537 # --- Apple, Swift & on-device speech stack ---
538 SwiftData
539 Swift Testing
540 App Intents
541 WidgetKit
542 ActivityKit
543 Live Activities
544 App Group
545 Core ML
546 Create ML
547 SpeechAnalyzer
548 DictationTranscriber
549 SpeechTranscriber
550 SFCustomLanguageModelData
551 SFSpeechLanguageModel
552 AssetInventory
553 AVAudioEngine
554 AVAudioSession
555 TestFlight
556 App Store Connect
557 XcodeGen
558 Tuist
559 Swift Package Manager
560 SPM
561 SF Symbols
562 visionOS
563 RealityKit
564 Metal
565 # --- China AI, creator tools & current tech buzzwords ---
566 可灵
567 Kling
568 海螺AI
569 Hailuo
570 即梦
571 Jimeng
572 剪映
573 CapCut
574 腾讯元宝
575 元宝
576 纳米AI
577 秘塔AI
578 Metaso
579 夸克AI
580 Quark
581 天工
582 商量
583 杭州六小龙
584 AI治理
585 AI governance
586 世界模型
587 world model
588 端到端
589 end-to-end
590 端侧模型
591 on-device model
592 本地模型
593 local model
594 具身智能体
595 embodied agent
596 人形机器人
597 humanoid robot
598 新质生产力
599 数字分身
600 digital avatar
601 AI视频
602 AI video
603 文生图
604 图生视频
605 文生视频
606 小红书
607 Xiaohongshu
608 RedNote
609 活人感
610 情绪价值
611 赛博对账
612 赛博
613 村咖
614 拉布布
615 Labubu
616
617
618
619
620