ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Zed Edit Prediction 深度指南:Zeta、Copilot、Codestral 与本地模型的 AI 代码补全配置

Zed Edit Prediction 深度指南:Zeta、Copilot、Codestral 与本地模型的 AI 代码补全配置 Zed Edit Prediction 深度指南Zeta、Copilot、Codestral 与本地模型的 AI 代码补全配置【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zedEdit Prediction编辑预测是 Zed 内置的 AI 代码补全机制当你输入代码时Zed 会向配置好的 edit prediction provider 请求预测并以灰色内联文本展示单行或多行建议按tab或alt-tab即可接受。本文基于 Zed 官方文档 docs/src/ai/edit-prediction.md 展开结合仓库中的设置解析源码、默认键位配置和编辑器动作定义完整讲解如何启用默认的 Zeta 模型、切换 eager/subtle 显示模式、定制补全快捷键、调整预测防抖debounce、按语言/目录/全局禁用补全以及接入 GitHub Copilot、Mercury Coder、Codestral、Ollama 和任意 OpenAI 兼容服务器含完整的prompt_format格式表与请求体格式。1. 什么是 Edit Prediction底层由哪些模块支撑官方定义Edit Prediction 即“LLM 预测你想写的代码”。Zed 默认使用 Zed 自研的开源模型 Zeta也可切换为 GitHub Copilot、Mercury Coder、Codestral、Ollama 或任何实现 OpenAI/v1/completions接口的自托管服务。从源码结构看整个机制的核心位于 crates/edit_predictionedit_prediction.rs 声明了各 provider 对应的委托实现与格式模块zedZed 云端、copilot、codestral、mercury、ollama、open_ai_compatible等子模块其中zed_edit_prediction_delegate.rs统一处理 Zed、Mercury、Ollama 与 OpenAI 兼容这组走同一委托链路的 providerfim.rs、sweep_prompt.rs、udiff.rs 分别负责 FIMfill-in-middle提示构造、Sweep 风格改写窗提示与 diff 处理对应下文prompt_format配置项的多种取值edit_prediction_tests.rs 中包含大量预测触发、防抖与接受流程的单元测试可用来验证行为是否符合预期。设置项的定义与解析分别在 crates/settings_content/src/language.rs面向settings.json的字段与默认值和 crates/language/src/language_settings.rs合并后的运行时设置结构EditPredictionSettings。UI 侧的 “Configure Providers” 页面实现在 crates/settings_ui/src/pages/edit_prediction_provider_setup.rs。2. 配置默认 providerZeta使用 Zeta 需要先在 Zed 中登录账号登录要求见 docs/src/authentication.md 的 “What features require signing in”。登录后预测会随输入自动出现。验证 Zeta 是否配置正确有两种方式打开 Settings EditormacOS 为Cmd,Linux/Windows 为Ctrl,或命令zed://settings/edit_predictions.providers搜索edit_predictions确认provider字段为Zed AI直接在settings.json中查看/设置{ edit_predictions: { provider: zed } }状态栏中的 Z 图标也表示 Zeta 当前处于激活状态。用量与套餐免费套餐每月包含 2,000 次 Zeta 预测Pro 套餐移除该限制定价细节以官方定价页为准。注意provider: zed是默认值之一但如果你显式配置了其他 provider此处会被覆盖。所有 provider 均可配合下文的显示模式与快捷键使用。3. 两种显示模式eager 与 subtleEdit Prediction 有两种展示模式eager默认只要不与语言服务器LSP补全冲突预测就直接内联显示subtle只有按住修饰键默认为alt时预测才内联显示。通过mode键切换{ edit_predictions: { mode: eager // 或 subtle } }也可以直接通过状态栏菜单切换显示模式。注意两种模式对任何 provider 都生效与是否使用 Zeta 无关。从源码看mode影响编辑器键位上下文edit_prediction_mode见第 5 节默认键位中的edit_prediction_mode eager条件并决定tab何时用于接受预测、何时保留给插入空白。4. 默认键位一览以下为各平台默认键位来源assets/keymaps/default-linux.json、assets/keymaps/default-macos.json、assets/keymaps/default-windows.json操作macOSLinux / Windows说明接受预测alt-tabalt-tab/alt-l所有平台都绑定alt-tab因 Linux/Windows 的alt-tab常被系统用于窗口切换额外提供alt-l接受整词—alt-keditor::AcceptNextWordEditPrediction接受到下一个词边界接受整行—alt-jeditor::AcceptNextLineEditPrediction接受到换行边界eager 模式下接受tabtab仅当补全菜单未打开时若菜单打开tab接受 LSP 补全手动触发预测alt-tab特定上下文alt-\editor::ShowEditPrediction切换多个预测alt-tab/alt-shift-tab特定上下文alt-]/alt-[editor::NextEditPrediction/editor::PreviousEditPredictionCopilot 等多候选 provider 使用关键细节与官方文档一致在eager模式下tab用于接受 edit prediction除非补全菜单处于打开状态此时tab会接受 LSP 补全。若想在有预测时仍用tab输入空白需先按editor::Cancel取消预测默认tab接受预测的生效上下文是Editor edit_prediction edit_prediction_mode eager !showing_completions这正是“菜单打开时 tab 不触发预测”这一行为的源码级依据见 assets/keymaps/default-linux.json各动作在 crates/editor/src/actions.rs 中定义AcceptEditPredictionL413、AcceptNextWordEditPredictionL416、AcceptNextLineEditPredictionL417以及 NextEditPrediction、PreviousEditPrediction、ShowEditPrediction。5. 定制补全快捷键keymap.json 实战5.1 让 tab 始终接受预测无论 LSP 补全菜单是否打开都想用tab接受预测时可在 keymap 编辑器zed::OpenKeymap动作中搜索AcceptEditPrediction右键tab绑定选择 “Edit”把上下文改为Editor edit_prediction后保存或直接在keymap.json中写入[ { context: Editor edit_prediction, bindings: { tab: editor::AcceptEditPrediction } } ]之后仍可用editor::ComposeCompletion接受 LSP 补全。5.2 停用 tab只用 alt-tab在 keymap 编辑器中删除tab的默认绑定或在keymap.json中使用unbind[ { context: Editor edit_prediction, unbind: { tab: editor::AcceptEditPrediction } } ]之后alt-tab以及 Linux/Windows 上的alt-l除非同样解除绑定继续负责接受预测。5.3 同时重绑 tab 和 alt-tab先解除两个默认绑定再绑定新键[ { context: Editor edit_prediction, unbind: { alt-tab: editor::AcceptEditPrediction, // Windows/Linux 上还需要加这一行 // alt-l: editor::AcceptEditPrediction, tab: editor::AcceptEditPrediction }, bindings: { ctrl-enter: editor::AcceptEditPrediction } } ]注意因为该绑定包含修饰键ctrl在 subtle 模式下或补全菜单打开时它会用于预览预测而非直接接受——这是对带修饰键绑定的默认行为值得在自定义键位时留意。5.4 清理旧版本遗留的键位条目如果你是在 Zedv0.229.0之前配置过 edit prediction 键位keymap.json中可能存在冗余项旧版 tab 变通方案unbind出现之前防止tab接受预测的唯一办法是把所有默认的非预测tab绑定复制进自己的 keymap同时挂一个自定义AcceptEditPrediction。如果 keymap 中还有这些复制粘贴的条目删除它们改用上面示例中单一的unbind条目即可上下文重命名edit_prediction_conflict上下文已被edit_prediction (showing_completions || in_leading_whitespace)取代。Zed 会自动迁移使用过edit_prediction_conflict的绑定无需手动改动。6. 配置预测防抖prediction_debounceprediction_debounce控制“停止输入后Zed 等待多少毫秒再自动请求一次预测”单位为毫秒配置在你所选 provider 的子节下。例如针对 OpenAI 兼容服务器{ edit_predictions: { provider: open_ai_compatible_api, open_ai_compatible_api: { prediction_debounce: 500 } } }各 provider 的默认值与 crates/settings_content/src/language.rs 中的文档注释一致Provider默认防抖GitHub Copilot75 msL243Codestral150 msL265Zed (Zeta)0 msMercury0 msOllama0 msOpenAI-compatible API0 ms设为0表示取消额外延迟、停止打字后立即请求但常规的请求节流throttling仍可能生效。显式执行editor::ShowEditPrediction手动请求会绕过防抖。源码层面防抖时长按 provider 解析的逻辑在 EditPredictionSettings::debounce_for它对copilot/codestral读取各自固定的DelayMs对 Ollama 与 OpenAI 兼容 provider 读取对应子节设置缺省回落到DelayMs::default()Noneprovider 返回默认值委托名到延时的映射见 debounce_for_delegate。7. 禁用 Edit Prediction 的四个层级如果预测干扰写作可以分层关闭当然也可以先考虑 subtle 模式。7.1 按缓冲区全局关闭自动预测在设置文件中设置文件的编辑方式见 docs/src/configuring-zed.md 的 Settings files 一节{ show_edit_predictions: false }这会在任何显示模式下隐藏所有“有预测可用”的提示但仍可手动触发执行editor::ShowEditPrediction动作或按对应快捷键。7.2 按语言关闭{ languages: { Python: { show_edit_predictions: false } } }7.3 按目录/文件关闭disabled_globs{ edit_predictions: { disabled_globs: [~/.config/zed/settings.json] } }其实现位于 enabled_for_file对每个 glob 分别匹配文件的绝对路径glob 以~等开头视为绝对路径或相对路径任一命中即对该文件关闭预测。7.4 彻底关闭所有 provider{ edit_predictions: { provider: none } }8. 配置其他 Provider8.1 GitHub Copilot设置{ edit_predictions: { provider: copilot } }登录流程点击状态栏的 Copilot 图标弹窗显示设备码点击复制按钮后选择 “Connect to GitHub” 在浏览器中完成验证粘贴设备码授权成功后弹窗自动关闭。GitHub Copilot Enterprise组织使用企业实例时可在设置中指定企业 URI{ edit_predictions: { copilot: { enterprise_uri: https://your.enterprise.domain } } }将地址替换为你的 GitHub Enterprise 管理员提供的 URL例如https://foo.ghe.com。设置后 Zed 将 Copilot 请求路由到企业端点登录时点击状态栏 Copilot 图标会跳转到配置的企业 URL 完成认证其余功能与用量不变。Copilot 可能返回多个补全候选用以下动作切换editor::NextEditPredictionLinux/Windows 默认alt-]macOS 默认alt-tab具体上下文以键位文件为准切换到下一个候选editor::PreviousEditPredictionLinux/Windows 默认alt-[macOS 默认alt-shift-tab切换到上一个候选。Copilot 还支持代理设置proxy、proxy_no_verify与 NES 开关enable_next_edit_suggestions默认true定义见 CopilotSettingsContent。8.2 Mercury CoderInception Labs打开 Settings Editorzed::OpenSettings动作搜索 “Edit Predictions”点击Configure Providers在 Mercury 区块填入从 Inception Labs 控制台platform.inceptionlabs.ai 的 API Keys 页获取的 API Key。也可以点击状态栏的 edit prediction 图标从菜单选择Configure Providers。添加 API Key 后Mercury Coder 会出现在状态栏菜单的 provider 下拉框中供选择也可直接写死在设置文件里{ edit_predictions: { provider: mercury } }8.3 CodestralMistral打开 Settings EditormacOSCmd,Linux/WindowsCtrl,搜索 “Edit Predictions”点击Configure Providers在 Codestral 区块填入 API Key。同样可以通过状态栏 edit prediction 图标的菜单进入Configure Providers。配置后 Codestral 出现在 provider 下拉框中或直接设置{ edit_predictions: { provider: codestral } }从 CodestralSettingsContent 可以看到该 provider 的其余可调项model默认codestral-latest、max_tokens默认 150、api_url默认https://codestral.mistral.ai均可在设置中覆盖以适配自建或代理端点。8.4 本地与自托管模型Ollama / OpenAI 兼容服务器可以通过 Ollama 或任何实现 OpenAI completion API 格式的服务器使用本地模型支持 Ollama、vLLM、llama.cpp server、LocalAI 等。Ollama{ edit_predictions: { provider: ollama, ollama: { api_url: http://localhost:11434, model: qwen2.5-coder:7b-base, prompt_format: infer, max_output_tokens: 512 } } }api_url默认即http://localhost:11434见 OllamaEditPredictionSettingsContentmax_output_tokens默认 256。OpenAI 兼容服务器{ edit_predictions: { provider: open_ai_compatible_api, open_ai_compatible_api: { api_url: http://localhost:8080/v1/completions, model: deepseek-coder-6.7b-base, prompt_format: deepseek_coder, max_output_tokens: 512 } } }prompt_format上下文如何排版给模型prompt_format决定代码上下文如何格式化后送入模型。取infer时按模型名自动推断也可显式指定取值格式zetaZeta 1 格式zeta2Zeta 2 格式zeta2_1Zeta 2.1 格式code_llamaCodeLlama 格式PREprefix SUFsuffix MIDstar_coderStarCoder 格式fim_prefixprefixfim_suffixsuffixfim_middledeepseek_coderDeepSeek 格式使用特殊 unicode 标记qwenQwen/CodeGemma 格式|fim_prefix|prefix|fim_prefix|suffixcode_gemmaCodeGemma 格式|fim_prefix|prefix|fim_prefix|suffixcodestralCodestral 格式[SUFFIX]suffix[PREFIX]prefixglmGLM-4 格式带代码标记sweepSweep rewrite-window 格式用|fim_prefix|文件块组织相关文件配合original/...、current/...、updated/...infer按模型名自动检测默认使用prompt_format: infer时模型名含zeta2会自动用 Zeta 2 格式含zeta2.1用 Zeta 2.1 格式。例如用 Ollama 跑 Zeta 2{ edit_predictions: { provider: ollama, ollama: { api_url: http://localhost:11434, model: zeta2, prompt_format: infer, max_output_tokens: 512 } } }用 OpenAI 兼容服务器跑 Zeta 2.1{ edit_predictions: { provider: open_ai_compatible_api, open_ai_compatible_api: { api_url: http://localhost:8080/v1/completions, model: zeta2.1, prompt_format: infer, max_output_tokens: 512 } } }若模型名不匹配也可显式写prompt_format: zeta2或zeta2_1。源码中对应的枚举是 EditPredictionPromptFormatInfer为默认另有Zeta(ZetaVersion)、CodeLlama、StarCoder、DeepseekCoder、Qwen、CodeGemma、Codestral、Glm、Sweep与上表一一对应。自托管服务器需实现的请求格式你的 OpenAI 兼容服务器必须实现/v1/completions端点。Edit Prediction 会向其发送形如以下的 POST 请求{ model: your-model-name, prompt: formatted-code-context, max_tokens: 256, temperature: 0.2, stop: [【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表