[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"navigation_docs":3,"-development-architecture":288,"-development-architecture-surround":874},[4,25,112,165,193,217,246,256],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Introduction","\u002Fintroduction","01.introduction",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"概述","\u002Fintroduction\u002Foverview","01.introduction\u002F1.overview","i-heroicons-home",{"title":15,"path":16,"stem":17,"icon":18},"安装指南","\u002Fintroduction\u002Finstallation","01.introduction\u002F2.installation","i-heroicons-arrow-down-tray",{"title":20,"path":21,"stem":22,"icon":23},"快速开始","\u002Fintroduction\u002Fquickstart","01.introduction\u002F3.quickstart","i-heroicons-rocket-launch",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"User Guide","\u002Fuser-guide","02.user-guide",[30,35,40,45,50,55,60,65,70,74,79,84,88,93,98,103,108],{"title":31,"path":32,"stem":33,"icon":34},"首页与工作台","\u002Fuser-guide\u002Fdashboard","02.user-guide\u002F1.dashboard","i-heroicons-chart-bar",{"title":36,"path":37,"stem":38,"icon":39},"提示词模板","\u002Fuser-guide\u002Fprompts","02.user-guide\u002F10.prompts","i-heroicons-document-text",{"title":41,"path":42,"stem":43,"icon":44},"技能工作流","\u002Fuser-guide\u002Fskills","02.user-guide\u002F11.skills","i-heroicons-sparkles",{"title":46,"path":47,"stem":48,"icon":49},"设置","\u002Fuser-guide\u002Fsettings","02.user-guide\u002F12.settings","i-heroicons-cog-6-tooth",{"title":51,"path":52,"stem":53,"icon":54},"插件中心","\u002Fuser-guide\u002Fplugins","02.user-guide\u002F13.plugins","i-heroicons-puzzle-piece",{"title":56,"path":57,"stem":58,"icon":59},"资源库","\u002Fuser-guide\u002Fresources","02.user-guide\u002F14.resources","i-heroicons-folder-open",{"title":61,"path":62,"stem":63,"icon":64},"图片生成与编辑","\u002Fuser-guide\u002Fimage-generation","02.user-guide\u002F15.image-generation","i-heroicons-photo",{"title":66,"path":67,"stem":68,"icon":69},"Gateway 公共隧道与飞书 Webhook","\u002Fuser-guide\u002Fgateway-tunnel-webhook","02.user-guide\u002F16.gateway-tunnel-webhook","i-heroicons-globe-alt",{"title":71,"path":72,"stem":73,"icon":39},"运行时 AGENTS 规则","\u002Fuser-guide\u002Fruntime-agents","02.user-guide\u002F17.runtime-agents",{"title":75,"path":76,"stem":77,"icon":78},"创作数据与监控","\u002Fuser-guide\u002Fmonitoring","02.user-guide\u002F2.monitoring","i-heroicons-eye",{"title":80,"path":81,"stem":82,"icon":83},"模型连接与账号","\u002Fuser-guide\u002Fcredential-pool","02.user-guide\u002F3.credential-pool","i-heroicons-key",{"title":85,"path":86,"stem":87,"icon":39},"进阶配置示例","\u002Fuser-guide\u002Fconfiguration-example","02.user-guide\u002F4.configuration-example",{"title":89,"path":90,"stem":91,"icon":92},"模型分发规则","\u002Fuser-guide\u002Fsmart-routing","02.user-guide\u002F4.smart-routing","i-heroicons-arrows-right-left",{"title":94,"path":95,"stem":96,"icon":97},"稳定性与容错","\u002Fuser-guide\u002Fresilience","02.user-guide\u002F5.resilience","i-heroicons-shield-check",{"title":99,"path":100,"stem":101,"icon":102},"配置管理与迁移","\u002Fuser-guide\u002Fconfig-management","02.user-guide\u002F6.config-management","i-heroicons-document-duplicate",{"title":104,"path":105,"stem":106,"icon":107},"工作模式切换","\u002Fuser-guide\u002Fconfig-switch","02.user-guide\u002F7.config-switch","i-heroicons-arrows-up-down",{"title":109,"path":110,"stem":111,"icon":54},"MCP 工具扩展","\u002Fuser-guide\u002Fmcp","02.user-guide\u002F9.mcp",{"title":113,"path":114,"stem":115,"children":116,"page":24},"Providers","\u002Fproviders","03.providers",[117,122,127,132,136,141,146,151,156,161],{"title":118,"path":119,"stem":120,"icon":121},"模型连接概览","\u002Fproviders\u002Foverview","03.providers\u002F1.overview","i-heroicons-squares-2x2",{"title":123,"path":124,"stem":125,"icon":126},"Vertex AI","\u002Fproviders\u002Fvertex-ai","03.providers\u002F10.vertex-ai","i-heroicons-cloud",{"title":128,"path":129,"stem":130,"icon":131},"Kiro Claude","\u002Fproviders\u002Fkiro-claude","03.providers\u002F2.kiro-claude","i-heroicons-cpu-chip",{"title":133,"path":134,"stem":135,"icon":44},"Gemini CLI","\u002Fproviders\u002Fgemini-cli","03.providers\u002F3.gemini-cli",{"title":137,"path":138,"stem":139,"icon":140},"Qwen (通义千问)","\u002Fproviders\u002Fqwen","03.providers\u002F4.qwen","i-heroicons-language",{"title":142,"path":143,"stem":144,"icon":145},"OpenAI Custom","\u002Fproviders\u002Fopenai-custom","03.providers\u002F5.openai-custom","i-heroicons-cube",{"title":147,"path":148,"stem":149,"icon":150},"Claude Custom","\u002Fproviders\u002Fclaude-custom","03.providers\u002F6.claude-custom","i-heroicons-beaker",{"title":152,"path":153,"stem":154,"icon":155},"Codex","\u002Fproviders\u002Fcodex","03.providers\u002F7.codex","i-heroicons-code-bracket",{"title":157,"path":158,"stem":159,"icon":160},"iFlow","\u002Fproviders\u002Fiflow","03.providers\u002F8.iflow","i-heroicons-arrow-path",{"title":162,"path":163,"stem":164,"icon":83},"Gemini API Key","\u002Fproviders\u002Fgemini-api-key","03.providers\u002F9.gemini-api-key",{"title":166,"path":167,"stem":168,"children":169,"page":24},"Api Reference","\u002Fapi-reference","04.api-reference",[170,174,179,184,188],{"title":171,"path":172,"stem":173,"icon":155},"API 概览","\u002Fapi-reference\u002Foverview","04.api-reference\u002F1.overview",{"title":175,"path":176,"stem":177,"icon":178},"OpenAI API","\u002Fapi-reference\u002Fopenai-api","04.api-reference\u002F2.openai-api","i-heroicons-chat-bubble-left-right",{"title":180,"path":181,"stem":182,"icon":183},"Claude API","\u002Fapi-reference\u002Fclaude-api","04.api-reference\u002F3.claude-api","i-heroicons-chat-bubble-bottom-center-text",{"title":185,"path":186,"stem":187,"icon":49},"管理 API","\u002Fapi-reference\u002Fmanagement-api","04.api-reference\u002F4.management-api",{"title":189,"path":190,"stem":191,"icon":192},"Amp CLI API","\u002Fapi-reference\u002Famp-cli-api","04.api-reference\u002F5.amp-cli-api","i-heroicons-command-line",{"title":194,"path":195,"stem":196,"children":197,"page":24},"Troubleshooting","\u002Ftroubleshooting","05.troubleshooting",[198,203,207,212],{"title":199,"path":200,"stem":201,"icon":202},"常见问题","\u002Ftroubleshooting\u002Fcommon-issues","05.troubleshooting\u002F1.common-issues","i-heroicons-question-mark-circle",{"title":204,"path":205,"stem":206,"icon":83},"连接鉴权问题","\u002Ftroubleshooting\u002Fcredential-errors","05.troubleshooting\u002F2.credential-errors",{"title":208,"path":209,"stem":210,"icon":211},"网络与连接问题","\u002Ftroubleshooting\u002Fconnection-issues","05.troubleshooting\u002F3.connection-issues","i-heroicons-signal",{"title":213,"path":214,"stem":215,"icon":216},"Windows 启动与安装问题","\u002Ftroubleshooting\u002Fwindows-startup-issues","05.troubleshooting\u002F4.windows-startup-issues","i-heroicons-computer-desktop",{"title":218,"path":219,"stem":220,"children":221,"page":24},"Development","\u002Fdevelopment","06.development",[222,227,232,237,241],{"title":223,"path":224,"stem":225,"icon":226},"架构说明","\u002Fdevelopment\u002Farchitecture","06.development\u002F1.architecture","i-heroicons-cube-transparent",{"title":228,"path":229,"stem":230,"icon":231},"贡献指南","\u002Fdevelopment\u002Fcontributing","06.development\u002F2.contributing","i-heroicons-heart",{"title":233,"path":234,"stem":235,"icon":236},"构建指南","\u002Fdevelopment\u002Fbuilding","06.development\u002F3.building","i-heroicons-wrench-screwdriver",{"title":238,"path":239,"stem":240,"icon":236},"上线运维","\u002Fdevelopment\u002Foperations","06.development\u002F4.operations",{"title":242,"path":243,"stem":244,"icon":245},"插件开发（迁移说明）","\u002Fdevelopment\u002Fplugin-development","06.development\u002F5.plugin-development","i-heroicons-arrow-top-right-on-square",{"title":247,"path":248,"stem":249,"children":250,"page":24},"Legal","\u002Flegal","07.legal",[251],{"title":252,"path":253,"stem":254,"icon":255},"免责声明","\u002Flegal\u002Fdisclaimer","07.legal\u002F1.disclaimer","i-heroicons-scale",{"title":257,"path":258,"stem":259,"children":260,"page":24},"Open Platform","\u002Fopen-platform","08.open-platform",[261,265,269,274,279,283],{"title":262,"path":263,"stem":264,"icon":226},"开放平台概览","\u002Fopen-platform\u002Foverview","08.open-platform\u002F1.overview",{"title":266,"path":267,"stem":268,"icon":54},"开放平台 - 插件中心","\u002Fopen-platform\u002Fplugins","08.open-platform\u002F2.plugins",{"title":270,"path":271,"stem":272,"icon":273},"开放平台 - 插件开发指南","\u002Fopen-platform\u002Fplugin-development","08.open-platform\u002F3.plugin-development","i-heroicons-code-bracket-square",{"title":275,"path":276,"stem":277,"icon":278},"开放平台 - Connect","\u002Fopen-platform\u002Fconnect","08.open-platform\u002F4.connect","i-heroicons-link",{"title":280,"path":281,"stem":282,"icon":236},"开放平台 - Connect 接入指南","\u002Fopen-platform\u002Fconnect-integration","08.open-platform\u002F5.connect-integration",{"title":284,"path":285,"stem":286,"icon":287},"开放平台 - 统计回调（Webhook）","\u002Fopen-platform\u002Fconnect-webhook","08.open-platform\u002F6.connect-webhook","i-heroicons-arrow-path-rounded-square",{"id":289,"title":223,"body":290,"description":867,"extension":868,"links":869,"meta":870,"navigation":871,"path":224,"seo":872,"stem":225,"__hash__":873},"docs\u002F06.development\u002F1.architecture.md",{"type":291,"value":292,"toc":851},"minimark",[293,296,300,304,356,360,364,375,378,381,472,505,509,512,518,521,526,529,586,590,593,622,626,629,671,675,678,693,696,702,705,708,739,742,748,763,847],[294,295,223],"h1",{"id":223},[297,298,299],"p",{},"Lime 是基于 Tauri 2.0 构建的跨平台桌面应用。",[301,302,303],"h2",{"id":303},"技术栈",[305,306,307,320],"table",{},[308,309,310],"thead",{},[311,312,313,317],"tr",{},[314,315,316],"th",{},"层级",[314,318,319],{},"技术",[321,322,323,332,340,348],"tbody",{},[311,324,325,329],{},[326,327,328],"td",{},"前端",[326,330,331],{},"React + TypeScript + Tailwind CSS",[311,333,334,337],{},[326,335,336],{},"后端",[326,338,339],{},"Rust + Tauri 2.0",[311,341,342,345],{},[326,343,344],{},"构建",[326,346,347],{},"Vite",[311,349,350,353],{},[326,351,352],{},"包管理",[326,354,355],{},"pnpm",[301,357,359],{"id":358},"tauri-前后端通信","Tauri 前后端通信",[361,362,363],"h3",{"id":363},"架构图",[365,366,371],"pre",{"className":367,"code":369,"language":370},[368],"language-text","┌─────────────────────────────────────────────────────────┐\n│                    Frontend (React)                      │\n│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐     │\n│  │  Dashboard  │  │  Settings   │  │  Monitoring │     │\n│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘     │\n│         │                │                │             │\n│         └────────────────┼────────────────┘             │\n│                          │                              │\n│                    ┌─────▼─────┐                        │\n│                    │  Tauri    │                        │\n│                    │  Commands │                        │\n│                    └─────┬─────┘                        │\n└──────────────────────────┼──────────────────────────────┘\n                           │ IPC\n┌──────────────────────────┼──────────────────────────────┐\n│                    ┌─────▼─────┐                        │\n│                    │  Command  │                        │\n│                    │  Handler  │                        │\n│                    └─────┬─────┘                        │\n│                          │                              │\n│  ┌───────────────────────┼───────────────────────┐     │\n│  │                       │                       │     │\n│  ▼                       ▼                       ▼     │\n│ ┌─────────┐        ┌─────────┐            ┌─────────┐ │\n│ │Provider │        │Credential│            │  Router │ │\n│ │ Manager │        │  Pool   │            │         │ │\n│ └────┬────┘        └────┬────┘            └────┬────┘ │\n│      │                  │                      │      │\n│      └──────────────────┼──────────────────────┘      │\n│                         │                             │\n│                   ┌─────▼─────┐                       │\n│                   │ API Server│                       │\n│                   │  (Axum)   │                       │\n│                   └───────────┘                       │\n│                    Backend (Rust)                      │\n└───────────────────────────────────────────────────────┘\n","text",[372,373,369],"code",{"__ignoreMap":374},"",[361,376,377],{"id":377},"通信方式",[297,379,380],{},"前端通过 Tauri Commands 调用后端：",[365,382,386],{"className":383,"code":384,"language":385,"meta":374,"style":374},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F 前端调用\nimport { invoke } from '@tauri-apps\u002Fapi\u002Fcore';\n\nconst result = await invoke('get_credentials');\n","typescript",[372,387,388,397,431,438],{"__ignoreMap":374},[389,390,393],"span",{"class":391,"line":392},"line",1,[389,394,396],{"class":395},"sHwdD","\u002F\u002F 前端调用\n",[389,398,400,404,408,412,415,418,421,425,428],{"class":391,"line":399},2,[389,401,403],{"class":402},"s7zQu","import",[389,405,407],{"class":406},"sMK4o"," {",[389,409,411],{"class":410},"sTEyZ"," invoke",[389,413,414],{"class":406}," }",[389,416,417],{"class":402}," from",[389,419,420],{"class":406}," '",[389,422,424],{"class":423},"sfazB","@tauri-apps\u002Fapi\u002Fcore",[389,426,427],{"class":406},"'",[389,429,430],{"class":406},";\n",[389,432,434],{"class":391,"line":433},3,[389,435,437],{"emptyLinePlaceholder":436},true,"\n",[389,439,441,445,448,451,454,457,460,462,465,467,470],{"class":391,"line":440},4,[389,442,444],{"class":443},"spNyl","const",[389,446,447],{"class":410}," result ",[389,449,450],{"class":406},"=",[389,452,453],{"class":402}," await",[389,455,411],{"class":456},"s2Zo4",[389,458,459],{"class":410},"(",[389,461,427],{"class":406},[389,463,464],{"class":423},"get_credentials",[389,466,427],{"class":406},[389,468,469],{"class":410},")",[389,471,430],{"class":406},[365,473,477],{"className":474,"code":475,"language":476,"meta":374,"style":374},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F 后端处理\n#[tauri::command]\nasync fn get_credentials() -> Result\u003CVec\u003CCredential>, String> {\n    \u002F\u002F 处理逻辑\n}\n","rust",[372,478,479,484,489,494,499],{"__ignoreMap":374},[389,480,481],{"class":391,"line":392},[389,482,483],{},"\u002F\u002F 后端处理\n",[389,485,486],{"class":391,"line":399},[389,487,488],{},"#[tauri::command]\n",[389,490,491],{"class":391,"line":433},[389,492,493],{},"async fn get_credentials() -> Result\u003CVec\u003CCredential>, String> {\n",[389,495,496],{"class":391,"line":440},[389,497,498],{},"    \u002F\u002F 处理逻辑\n",[389,500,502],{"class":391,"line":501},5,[389,503,504],{},"}\n",[301,506,508],{"id":507},"rust-后端模块","Rust 后端模块",[361,510,511],{"id":511},"模块结构",[365,513,516],{"className":514,"code":515,"language":370},[368],"src-tauri\u002Fsrc\u002F\n├── main.rs              # 入口\n├── lib.rs               # 库导出\n├── commands\u002F            # Tauri 命令\n│   ├── mod.rs\n│   ├── config_cmd.rs\n│   ├── credential_cmd.rs\n│   └── server_cmd.rs\n├── credential\u002F          # 凭证管理\n│   ├── mod.rs\n│   ├── kiro.rs\n│   ├── gemini.rs\n│   └── qwen.rs\n├── provider\u002F            # Provider 实现\n│   ├── mod.rs\n│   ├── anthropic.rs\n│   ├── openai.rs\n│   └── gemini.rs\n├── router\u002F              # 请求路由\n│   ├── mod.rs\n│   └── rules.rs\n├── converter\u002F           # 协议转换\n│   ├── mod.rs\n│   ├── openai_to_claude.rs\n│   └── claude_to_openai.rs\n├── server\u002F              # API Server\n│   ├── mod.rs\n│   ├── handlers.rs\n│   └── middleware.rs\n└── config\u002F              # 配置管理\n    ├── mod.rs\n    └── yaml.rs\n",[372,517,515],{"__ignoreMap":374},[361,519,520],{"id":520},"核心模块",[522,523,525],"h4",{"id":524},"credential-模块","Credential 模块",[297,527,528],{},"负责凭证的加载、刷新和管理：",[365,530,532],{"className":474,"code":531,"language":476,"meta":374,"style":374},"pub struct CredentialManager {\n    credentials: Vec\u003CCredential>,\n    refresh_scheduler: RefreshScheduler,\n}\n\nimpl CredentialManager {\n    pub async fn load_credentials(&mut self) -> Result\u003C()>;\n    pub async fn refresh_token(&mut self, id: &str) -> Result\u003C()>;\n    pub fn get_available(&self) -> Vec\u003C&Credential>;\n}\n",[372,533,534,539,544,549,553,557,563,569,575,581],{"__ignoreMap":374},[389,535,536],{"class":391,"line":392},[389,537,538],{},"pub struct CredentialManager {\n",[389,540,541],{"class":391,"line":399},[389,542,543],{},"    credentials: Vec\u003CCredential>,\n",[389,545,546],{"class":391,"line":433},[389,547,548],{},"    refresh_scheduler: RefreshScheduler,\n",[389,550,551],{"class":391,"line":440},[389,552,504],{},[389,554,555],{"class":391,"line":501},[389,556,437],{"emptyLinePlaceholder":436},[389,558,560],{"class":391,"line":559},6,[389,561,562],{},"impl CredentialManager {\n",[389,564,566],{"class":391,"line":565},7,[389,567,568],{},"    pub async fn load_credentials(&mut self) -> Result\u003C()>;\n",[389,570,572],{"class":391,"line":571},8,[389,573,574],{},"    pub async fn refresh_token(&mut self, id: &str) -> Result\u003C()>;\n",[389,576,578],{"class":391,"line":577},9,[389,579,580],{},"    pub fn get_available(&self) -> Vec\u003C&Credential>;\n",[389,582,584],{"class":391,"line":583},10,[389,585,504],{},[522,587,589],{"id":588},"provider-模块","Provider 模块",[297,591,592],{},"实现不同 AI 服务的调用：",[365,594,596],{"className":474,"code":595,"language":476,"meta":374,"style":374},"#[async_trait]\npub trait Provider: Send + Sync {\n    async fn chat_completion(&self, request: ChatRequest) -> Result\u003CChatResponse>;\n    async fn stream_completion(&self, request: ChatRequest) -> Result\u003Cimpl Stream\u003CItem = StreamChunk>>;\n}\n",[372,597,598,603,608,613,618],{"__ignoreMap":374},[389,599,600],{"class":391,"line":392},[389,601,602],{},"#[async_trait]\n",[389,604,605],{"class":391,"line":399},[389,606,607],{},"pub trait Provider: Send + Sync {\n",[389,609,610],{"class":391,"line":433},[389,611,612],{},"    async fn chat_completion(&self, request: ChatRequest) -> Result\u003CChatResponse>;\n",[389,614,615],{"class":391,"line":440},[389,616,617],{},"    async fn stream_completion(&self, request: ChatRequest) -> Result\u003Cimpl Stream\u003CItem = StreamChunk>>;\n",[389,619,620],{"class":391,"line":501},[389,621,504],{},[522,623,625],{"id":624},"router-模块","Router 模块",[297,627,628],{},"根据规则路由请求：",[365,630,632],{"className":474,"code":631,"language":476,"meta":374,"style":374},"pub struct Router {\n    rules: Vec\u003CRoutingRule>,\n    default_provider: String,\n}\n\nimpl Router {\n    pub fn route(&self, model: &str) -> RoutingResult;\n}\n",[372,633,634,639,644,649,653,657,662,667],{"__ignoreMap":374},[389,635,636],{"class":391,"line":392},[389,637,638],{},"pub struct Router {\n",[389,640,641],{"class":391,"line":399},[389,642,643],{},"    rules: Vec\u003CRoutingRule>,\n",[389,645,646],{"class":391,"line":433},[389,647,648],{},"    default_provider: String,\n",[389,650,651],{"class":391,"line":440},[389,652,504],{},[389,654,655],{"class":391,"line":501},[389,656,437],{"emptyLinePlaceholder":436},[389,658,659],{"class":391,"line":559},[389,660,661],{},"impl Router {\n",[389,663,664],{"class":391,"line":565},[389,665,666],{},"    pub fn route(&self, model: &str) -> RoutingResult;\n",[389,668,669],{"class":391,"line":571},[389,670,504],{},[522,672,674],{"id":673},"converter-模块","Converter 模块",[297,676,677],{},"在不同 API 格式之间转换：",[365,679,681],{"className":474,"code":680,"language":476,"meta":374,"style":374},"pub fn openai_to_claude(request: OpenAIRequest) -> ClaudeRequest;\npub fn claude_to_openai(response: ClaudeResponse) -> OpenAIResponse;\n",[372,682,683,688],{"__ignoreMap":374},[389,684,685],{"class":391,"line":392},[389,686,687],{},"pub fn openai_to_claude(request: OpenAIRequest) -> ClaudeRequest;\n",[389,689,690],{"class":391,"line":399},[389,691,692],{},"pub fn claude_to_openai(response: ClaudeResponse) -> OpenAIResponse;\n",[301,694,695],{"id":695},"请求处理流程",[365,697,700],{"className":698,"code":699,"language":370},[368],"1. 客户端请求 → API Server (Axum)\n                    │\n2. 认证检查 ────────┤\n                    │\n3. 路由匹配 ────────┤ Router\n                    │\n4. 凭证选择 ────────┤ Credential Pool\n                    │\n5. 协议转换 ────────┤ Converter\n                    │\n6. Provider 调用 ───┤ Provider\n                    │\n7. 响应转换 ────────┤ Converter\n                    │\n8. 返回响应 ────────┘\n",[372,701,699],{"__ignoreMap":374},[301,703,704],{"id":704},"数据流",[361,706,707],{"id":707},"请求流程",[709,710,711,715,718,721,724,727,730,733,736],"ol",{},[712,713,714],"li",{},"前端发起 API 请求",[712,716,717],{},"Axum 服务器接收请求",[712,719,720],{},"中间件进行认证和日志",[712,722,723],{},"Router 根据模型名称选择 Provider",[712,725,726],{},"Credential Pool 选择可用凭证",[712,728,729],{},"Converter 转换请求格式",[712,731,732],{},"Provider 调用实际 AI 服务",[712,734,735],{},"Converter 转换响应格式",[712,737,738],{},"返回响应给客户端",[361,740,741],{"id":741},"事件流程",[365,743,746],{"className":744,"code":745,"language":370},[368],"后端事件 → Tauri Event → 前端监听 → UI 更新\n",[372,747,745],{"__ignoreMap":374},[365,749,751],{"className":474,"code":750,"language":476,"meta":374,"style":374},"\u002F\u002F 后端发送事件\napp.emit(\"credential-updated\", payload)?;\n",[372,752,753,758],{"__ignoreMap":374},[389,754,755],{"class":391,"line":392},[389,756,757],{},"\u002F\u002F 后端发送事件\n",[389,759,760],{"class":391,"line":399},[389,761,762],{},"app.emit(\"credential-updated\", payload)?;\n",[365,764,766],{"className":383,"code":765,"language":385,"meta":374,"style":374},"\u002F\u002F 前端监听\nimport { listen } from '@tauri-apps\u002Fapi\u002Fevent';\n\nawait listen('credential-updated', (event) => {\n  \u002F\u002F 更新 UI\n});\n",[372,767,768,773,795,799,833,838],{"__ignoreMap":374},[389,769,770],{"class":391,"line":392},[389,771,772],{"class":395},"\u002F\u002F 前端监听\n",[389,774,775,777,779,782,784,786,788,791,793],{"class":391,"line":399},[389,776,403],{"class":402},[389,778,407],{"class":406},[389,780,781],{"class":410}," listen",[389,783,414],{"class":406},[389,785,417],{"class":402},[389,787,420],{"class":406},[389,789,790],{"class":423},"@tauri-apps\u002Fapi\u002Fevent",[389,792,427],{"class":406},[389,794,430],{"class":406},[389,796,797],{"class":391,"line":433},[389,798,437],{"emptyLinePlaceholder":436},[389,800,801,804,806,808,810,813,815,818,821,825,827,830],{"class":391,"line":440},[389,802,803],{"class":402},"await",[389,805,781],{"class":456},[389,807,459],{"class":410},[389,809,427],{"class":406},[389,811,812],{"class":423},"credential-updated",[389,814,427],{"class":406},[389,816,817],{"class":406},",",[389,819,820],{"class":406}," (",[389,822,824],{"class":823},"sHdIc","event",[389,826,469],{"class":406},[389,828,829],{"class":443}," =>",[389,831,832],{"class":406}," {\n",[389,834,835],{"class":391,"line":501},[389,836,837],{"class":395},"  \u002F\u002F 更新 UI\n",[389,839,840,843,845],{"class":391,"line":559},[389,841,842],{"class":406},"}",[389,844,469],{"class":410},[389,846,430],{"class":406},[848,849,850],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":374,"searchDepth":399,"depth":399,"links":852},[853,854,858,862,863],{"id":303,"depth":399,"text":303},{"id":358,"depth":399,"text":359,"children":855},[856,857],{"id":363,"depth":433,"text":363},{"id":377,"depth":433,"text":377},{"id":507,"depth":399,"text":508,"children":859},[860,861],{"id":511,"depth":433,"text":511},{"id":520,"depth":433,"text":520},{"id":695,"depth":399,"text":695},{"id":704,"depth":399,"text":704,"children":864},[865,866],{"id":707,"depth":433,"text":707},{"id":741,"depth":433,"text":741},"Lime 技术架构","md",null,{},{"icon":226},{"title":223,"description":867},"w9x7YZlApyk6osB8tZSlsvlzQ9pGy0m1aF9tfoQF5j0",[875,877],{"title":213,"path":214,"stem":215,"description":876,"icon":216,"children":-1},"处理打不开、白屏、缺少运行时与目录权限问题",{"title":228,"path":229,"stem":230,"description":878,"icon":231,"children":-1},"如何为 Lime 做贡献",1775487311993]