[{"data":1,"prerenderedAt":348},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fguides\u002Ffim-completion":3,"doc-surround-\u002Fdocs\u002Fguides\u002Ffim-completion":256,"doc-nav-zh":265},{"id":4,"title":5,"body":6,"description":246,"extension":247,"meta":248,"navigation":249,"order":250,"path":251,"section":252,"seo":253,"stem":254,"__hash__":255},"docs_zh\u002Fdocs\u002F02.guides\u002F07.fim-completion.md","FIM 代码补全",{"type":7,"value":8,"toc":237},"minimark",[9,13,26,30,51,54,57,106,112,115,118,138,141,144,151,154,157,164,200,209,219],[10,11,5],"h1",{"id":12},"fim-代码补全",[14,15,16,17,21,22,25],"p",{},"FIM（Fill-In-the-Middle）补全会同时读取光标",[18,19,20],"strong",{},"前后","的代码上下文，以灰色 Ghost Text 在光标处给出续写建议，",[18,23,24],{},"首字延迟低于 50ms","，输入过程零打扰。与整块代码生成不同，FIM 专为「在已有代码中间插入片段」的场景设计。",[27,28,29],"h2",{"id":29},"触发方式",[31,32,33,45],"ul",{},[34,35,36,39,40,44],"li",{},[18,37,38],{},"自动触发","：输入停顿约 150ms 后自动发起请求（防抖间隔可通过 ",[41,42,43],"code",{},"ide.completion_debounce_ms"," 调整），连续输入不会被打断。",[34,46,47,50],{},[18,48,49],{},"手动触发","：在光标处主动唤起补全，适合需要立即获取建议的场景。",[14,52,53],{},"每个请求都会标记触发类型（自动 \u002F 手动），并携带当前文件路径与语言信息，模型据此给出符合语法与项目风格的建议。补全使用当前选中模型的凭据发起请求，每次最多返回 3 条候选，按评分排序后展示最优建议。",[27,55,56],{"id":56},"接受与拒绝",[58,59,60,73],"table",{},[61,62,63],"thead",{},[64,65,66,70],"tr",{},[67,68,69],"th",{},"按键",[67,71,72],{},"行为",[74,75,76,88,98],"tbody",{},[64,77,78,85],{},[79,80,81],"td",{},[82,83,84],"kbd",{},"Tab",[79,86,87],{},"接受当前建议（无建议时保持默认缩进行为）",[64,89,90,95],{},[79,91,92],{},[82,93,94],{},"Esc",[79,96,97],{},"拒绝并关闭建议",[64,99,100,103],{},[79,101,102],{},"继续输入",[79,104,105],{},"自动忽略当前建议",[14,107,108,109,111],{},"候选建议区分行内与多行两种形态，多行建议同样通过 ",[82,110,84],{}," 一次性接受。",[14,113,114],{},"接受后的代码与手动输入无异，可以正常撤销。",[27,116,117],{"id":117},"工作原理",[119,120,121,132,135],"ol",{},[34,122,123,124,127,128,131],{},"编辑器提取光标处的 ",[41,125,126],{},"prefix","（前文）与 ",[41,129,130],{},"suffix","（后文），连同文件路径、语言一起发送给内核补全接口。",[34,133,134],{},"内核先查询项目级缓存；未命中时按配置顺序逐个调用声明了 FIM 能力的模型服务，直到拿到候选结果。",[34,136,137],{},"候选结果带回延迟与评分信息，最优建议以 Ghost Text 渲染在光标之后。",[14,139,140],{},"光标移动或继续输入时，未完成的请求会被立即中止，避免无效开销。",[27,142,143],{"id":143},"提供方与模型",[14,145,146,147,150],{},"FIM 引擎支持配置多个模型服务作为补全提供方，每个提供方都带有 ",[41,148,149],{},"supports_fim"," 能力标记——只有声明支持 FIM 的模型才会被用于补全。提供方配置包含名称、接口地址、模型与单次补全的最大 Token 数，多个提供方互不影响。请求按配置顺序逐个尝试，任一提供方成功即返回结果，失败自动降级到下一个。",[14,152,153],{},"提供方的 API Key 由内核按供应商配置在服务端解析，前端不持有明文。",[27,155,156],{"id":156},"性能与缓存",[14,158,159,160,163],{},"每个项目拥有独立的本地补全缓存（",[41,161,162],{},".lxz\u002Fcache\u002Ffim_cache.db","）：",[31,165,166,172,178,184,194],{},[34,167,168,171],{},[18,169,170],{},"双层结构","：SQLite 持久化存储 + 内存 LRU 索引，启动时自动预热最多 500 条高频记录。",[34,173,174,177],{},[18,175,176],{},"命中零成本","：缓存命中的补全不消耗任何 Token，几乎瞬时返回。",[34,179,180,183],{},[18,181,182],{},"按频排序","：缓存记录使用频率与最近使用时间，高频补全优先保留。",[34,185,186,189,190,193],{},[18,187,188],{},"用量可见","：每次补全请求都会返回延迟与 Token 用量，便于观察不同模型的实际表现；缓存命中的结果来源标记为 ",[41,191,192],{},"cache","。",[34,195,196,199],{},[18,197,198],{},"自动回写","：模型返回的新结果会自动写入缓存，相同情境下次直接命中。",[14,201,202,203,208],{},"除自动补全外，",[204,205,207],"a",{"href":206},"\u002Fdocs\u002Fguides\u002Fai-chat","内联编辑","在不选中代码时也会以 Ghost Text 形式给出续写建议，接受与拒绝的按键完全一致。",[210,211,213],"callout",{"type":212},"tip",[14,214,215,218],{},[18,216,217],{},"凭据安全","：模型 API Key 由内核代理下发，前端仅做 60 秒内存缓存，永不持久化到磁盘。",[14,220,221,222,226,227,231,232,236],{},"补全质量与所选模型直接相关，详见",[204,223,225],{"href":224},"\u002Fdocs\u002Fmodels-billing\u002Fmodels","模型与上下文","；防抖等参数见",[204,228,230],{"href":229},"\u002Fdocs\u002Freference\u002Fconfiguration","配置项","，完整的按键清单见",[204,233,235],{"href":234},"\u002Fdocs\u002Freference\u002Fshortcuts","快捷键","。FIM 补全属于编辑器基础能力，不占用每日 Agent 运行次数。",{"title":238,"searchDepth":239,"depth":239,"links":240},"",2,[241,242,243,244,245],{"id":29,"depth":239,"text":29},{"id":56,"depth":239,"text":56},{"id":117,"depth":239,"text":117},{"id":143,"depth":239,"text":143},{"id":156,"depth":239,"text":156},"基于光标前后上下文的 FIM 行内补全，Tab 接受、Esc 拒绝，首字延迟低于 50ms","md",{},true,7,"\u002Fdocs\u002Fguides\u002Ffim-completion","功能指南",{"title":5,"description":246},"docs\u002F02.guides\u002F07.fim-completion","ut4IwdoNC2XVpx_R7GC9wyygsdOJikrOyG9Lfakbn0A",[257,261],{"title":258,"path":259,"stem":260,"children":-1},"RUSH 深度任务","\u002Fdocs\u002Fguides\u002Frush","docs\u002F02.guides\u002F06.rush",{"title":262,"path":263,"stem":264,"children":-1},"语义代码图谱","\u002Fdocs\u002Fguides\u002Fcode-graph","docs\u002F02.guides\u002F08.code-graph",[266],{"title":267,"path":268,"stem":269,"children":270,"page":292},"Docs","\u002Fdocs","docs",[271,293,315,331],{"title":272,"path":273,"stem":274,"children":275,"page":292},"快速上手","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",[276,280,284,288],{"title":277,"path":278,"stem":279},"安装与下载","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F01.getting-started\u002F01.installation",{"title":281,"path":282,"stem":283},"注册与登录","\u002Fdocs\u002Fgetting-started\u002Fregister-login","docs\u002F01.getting-started\u002F02.register-login",{"title":285,"path":286,"stem":287},"首次配置","\u002Fdocs\u002Fgetting-started\u002Ffirst-setup","docs\u002F01.getting-started\u002F03.first-setup",{"title":289,"path":290,"stem":291},"从 VS Code 迁移","\u002Fdocs\u002Fgetting-started\u002Fmigrate-from-vscode","docs\u002F01.getting-started\u002F04.migrate-from-vscode",false,{"title":252,"path":294,"stem":295,"children":296,"page":292},"\u002Fdocs\u002Fguides","docs\u002F02.guides",[297,300,301,302,303,307,311],{"title":298,"path":206,"stem":299},"AI 对话与内联编辑","docs\u002F02.guides\u002F05.ai-chat",{"title":258,"path":259,"stem":260},{"title":5,"path":251,"stem":254},{"title":262,"path":263,"stem":264},{"title":304,"path":305,"stem":306},"MCP 工具与市场","\u002Fdocs\u002Fguides\u002Fmcp","docs\u002F02.guides\u002F09.mcp",{"title":308,"path":309,"stem":310},"调试与 DAP","\u002Fdocs\u002Fguides\u002Fdebugging","docs\u002F02.guides\u002F10.debugging",{"title":312,"path":313,"stem":314},"集成终端","\u002Fdocs\u002Fguides\u002Fterminal","docs\u002F02.guides\u002F11.terminal",{"title":316,"path":317,"stem":318,"children":319,"page":292},"模型与计费","\u002Fdocs\u002Fmodels-billing","docs\u002F03.models-billing",[320,323,327],{"title":321,"path":224,"stem":322},"支持的模型","docs\u002F03.models-billing\u002F12.models",{"title":324,"path":325,"stem":326},"套餐与配额","\u002Fdocs\u002Fmodels-billing\u002Fplans-quota","docs\u002F03.models-billing\u002F13.plans-quota",{"title":328,"path":329,"stem":330},"自带 API Key（BYOK）","\u002Fdocs\u002Fmodels-billing\u002Fbyok","docs\u002F03.models-billing\u002F14.byok",{"title":332,"path":333,"stem":334,"children":335,"page":292},"参考与 FAQ","\u002Fdocs\u002Freference","docs\u002F04.reference",[336,338,340,344],{"title":235,"path":234,"stem":337},"docs\u002F04.reference\u002F15.shortcuts",{"title":230,"path":229,"stem":339},"docs\u002F04.reference\u002F16.configuration",{"title":341,"path":342,"stem":343},"内核 API","\u002Fdocs\u002Freference\u002Fkernel-api","docs\u002F04.reference\u002F17.kernel-api",{"title":345,"path":346,"stem":347},"常见问题","\u002Fdocs\u002Freference\u002Ffaq","docs\u002F04.reference\u002F18.faq",1786077825607]