Skip to content

Latest commit

 

History

History
407 lines (297 loc) · 12.5 KB

File metadata and controls

407 lines (297 loc) · 12.5 KB

行内代码补全功能 (Inline Code Completion)

概述

DeepV Code 现已支持 AI 驱动的行内代码补全功能,类似于 GitHub Copilot 和 Augment Code,能够在您编码时实时提供智能建议。

功能特性

✨ 核心能力

  • 🎯 上下文感知补全:基于当前文件内容、光标位置和编程语言生成智能建议
  • ⚡ 实时响应:在您输入时自动触发补全(可配置延迟)
  • 🎨 原生集成:完美融入 VSCode 的行内补全界面
  • 🔧 灵活配置:可通过设置启用/禁用,调整触发延迟
  • 💾 智能缓存:避免重复请求,提升性能
  • 🌐 多语言支持:支持所有编程语言

🛠️ 技术架构

┌─────────────────────────────────────────────────────────┐
│                VSCode Extension Layer                   │
│  ┌──────────────────────────────────────────────────┐  │
│  │  DeepVInlineCompletionProvider                   │  │
│  │  - Implements InlineCompletionItemProvider       │  │
│  │  - Handles VSCode completion events              │  │
│  │  - Debounce & cancellation control               │  │
│  └────────────────┬─────────────────────────────────┘  │
└────────────────────┼────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────┐
│                  Core Package Layer                     │
│  ┌──────────────────────────────────────────────────┐  │
│  │  InlineCompletionService                         │  │
│  │  - Generate AI-powered completions               │  │
│  │  - Prompt engineering                            │  │
│  │  - Response parsing                              │  │
│  │  - Caching mechanism                             │  │
│  └────────────────┬─────────────────────────────────┘  │
└────────────────────┼────────────────────────────────────┘
                     │
                     ▼
                 AI Model
           (Claude / Gemini)

使用方法

快速开始

  1. 安装插件:确保已安装 DeepV Code VSCode 扩展
  2. 登录认证:完成 DeepV Code 登录流程
  3. 开始编码:在任何文件中输入代码,补全建议将自动出现

状态栏快捷开关 ⭐

在 VSCode 状态栏右下角,您可以看到 DeepV 代码补全开关图标,方便快速启用/禁用补全功能:

启用状态

  • 图标D✓ (DeepV + 对勾)
  • 颜色:默认前景色
  • 提示:DeepV 代码补全:已启用(点击关闭)

禁用状态

  • 图标D✗ (DeepV + 叉号)
  • 颜色:警告前景色(橙黄色)
  • 提示:DeepV 代码补全:已禁用(点击启用)

交互方式

  • 点击切换:点击状态栏图标即可切换代码补全的启用/禁用状态
  • 配置同步:状态栏会自动同步配置项变化
  • 轻量级提示:切换时在状态栏左下角显示简短消息(3秒后自动消失)

接受补全建议

  • Tab 键:接受整个补全建议
  • Esc 键:拒绝建议
  • 继续输入:建议会自动更新或消失

触发方式

  • 自动触发:在编辑代码时自动触发(默认延迟 300ms)

配置选项

在 VSCode 设置中搜索 "DeepV Code" 以访问以下配置:

deepv.enableInlineCompletion

  • 类型boolean
  • 默认值true
  • 描述:启用或禁用 AI 驱动的行内代码补全
{
  "deepv.enableInlineCompletion": true
}

控制方式(多种方式同步):

  1. 状态栏按钮(推荐):点击右下角的 D✓D✗ 图标
  2. 命令面板DeepV Code: Toggle Inline Completion
  3. 设置界面:搜索 deepv.enableInlineCompletion 勾选/取消勾选
  4. settings.json:直接修改配置文件

deepv.inlineCompletionDelay

  • 类型number
  • 默认值300
  • 描述:触发补全前的延迟(毫秒),推荐范围:100-1000ms
{
  "deepv.inlineCompletionDelay": 300
}

示例场景

场景 1:函数补全

输入:

function calculateSum(a: number, b: number) {
  return |  // 光标位置
}

补全建议:

a + b;

场景 2:导入语句

输入:

import { | } from 'react';  // 光标位置

补全建议:

useState, useEffect

场景 3:条件逻辑

输入:

def is_valid_email(email: str) -> bool:
    if |  # 光标位置

补全建议:

'@' in email and '.' in email.split('@')[1]:
        return True
    return False

性能优化

缓存机制

  • 自动缓存最近 100 个补全结果
  • 相同上下文直接返回缓存结果
  • 避免重复 AI 请求

取消控制

  • 自动取消未完成的旧请求
  • 避免资源浪费
  • 确保最新请求优先

智能过滤

  • 自动跳过空行和注释行
  • 减少无意义的补全请求
  • 提升整体性能

性能统计

Provider 内部维护以下统计数据(开发者模式):

{
  totalRequests: number;        // 总请求数
  successfulCompletions: number; // 成功补全数
  canceledRequests: number;      // 取消请求数
  errors: number;                // 错误数
}

已知限制

  1. 首次请求较慢:服务初始化需要时间,后续请求会更快
  2. 网络依赖:需要稳定的网络连接到 AI 服务
  3. 上下文窗口:当前使用光标前后有限字符(前 2000,后 1000)

与 Augment Code 的对比

功能 DeepV Code Augment Code
行内补全
上下文感知
多语言支持
缓存优化
自定义延迟
性能统计 ✅ (Dev)
离线模式

故障排除

补全不显示

  1. 检查状态栏图标:确认状态栏右下角显示 D✓(启用状态)
  2. 检查配置deepv.enableInlineCompletion = true
  3. 确认已登录:DeepV Code 已完成认证
  4. 检查网络:确保网络连接正常
  5. 查看日志:输出面板(Output > DeepV Code AI Assistant)

补全速度慢

  1. 减少延迟:降低 deepv.inlineCompletionDelay 值(注意可能增加请求频率)
  2. 切换模型:尝试使用 gemini-2.5-flash 模型(更快)
  3. 检查网络:确认网络延迟正常
  4. 清除缓存:重启 VSCode

建议不准确

  1. 选择模型:尝试切换到 gemini-2.5-pro 模型(更高质量)
  2. 检查语言模式:确保文件语言模式正确
  3. 提供上下文:在关键代码附近触发补全
  4. 手动触发:使用 Ctrl/Cmd + Space

状态栏图标不显示

  1. 检查扩展状态:确认 DeepV Code 扩展已激活
  2. 重启 VSCode:完全关闭并重新打开 VSCode
  3. 查看日志:检查是否有初始化错误
  4. 重新安装:卸载并重新安装扩展

开发者信息

核心文件

  • Core Service: packages/core/src/code_assist/inlineCompletion.ts
  • VSCode Provider: packages/vscode-ui-plugin/src/services/inlineCompletionProvider.ts
  • Extension Integration: packages/vscode-ui-plugin/src/extension.ts

API 接口

// Core Service
interface InlineCompletionRequest {
  filePath: string;
  position: { line: number; character: number };
  prefix: string;
  suffix: string;
  language: string;
  maxLength?: number;
}

interface InlineCompletionResponse {
  text: string;
  range?: {
    start: { line: number; character: number };
    end: { line: number; character: number };
  };
}

🎯 模型选择与配置

模型选择策略

行内代码补全功能支持灵活的模型选择,您可以选择使用与聊天界面相同的模型,或为补全功能单独指定模型。

默认行为(auto 模式)

  • 自动同步:当您在聊天界面切换模型时,行内补全会自动使用相同的模型
  • 一致体验:确保代码补全风格与聊天建议保持一致
  • ⚠️ 可能较慢:如果聊天使用 Pro 或 Claude 模型,补全响应可能较慢

手动指定模型

您可以为行内补全单独选择优化的模型,独立于聊天会话,获得更快的响应速度。

配置方法

方法 1:通过命令(推荐)

Cmd+Shift+P → "DeepV Code: Select Inline Completion Model"

选择模型(仅提供 3 个最优选项):

  • 🤖 自动 (Auto) - 默认 - 跟随聊天会话模型,未来兼容性最好
  • Gemini 2.5 Flash(推荐速度) - 快速 & 经济
  • Gemini 2.5 Pro - 高质量 & 较慢

方法 2:通过设置界面

  1. 打开 VSCode 设置:Cmd+,(Mac)或 Ctrl+,(Windows/Linux)
  2. 搜索:DeepV Code: Inline Completion Model
  3. 从下拉菜单选择模型

方法 3:通过 settings.json

{
  "deepv.inlineCompletionModel": "gemini-2.5-flash"
}

可用模型对比

综合考虑性能、经济实惠、响应速度、未来兼容性,行内补全仅提供 3 个最优选择:

模型 速度 质量 成本 未来兼容性 推荐场景 说明
auto 变化 变化 变化 ✅✅✅ 默认推荐 自动跟随聊天会话模型,未来模型升级无需手动调整
gemini-2.5-flash ⚡⚡⚡ ⭐⭐ 💰 ⚠️ 追求速度 速度最快,成本最低,但模型名称可能变更
gemini-2.5-pro ⚡⚡ ⭐⭐⭐ 💰💰💰 ⚠️ 追求质量 质量更高,但速度较慢且成本较高

推荐配置

场景 1:默认配置(推荐给大多数用户)⭐

{
  "deepv.inlineCompletionModel": "auto",
  "deepv.inlineCompletionDelay": 300
}
  • ✅ 自动跟随聊天模型,无需手动调整
  • ✅ 未来模型升级自动适配
  • ✅ 与聊天界面保持一致的 AI 体验
  • ⚠️ 速度和成本取决于聊天使用的模型

场景 2:追求极致速度

{
  "deepv.inlineCompletionModel": "gemini-2.5-flash",
  "deepv.inlineCompletionDelay": 200
}
  • ✅ 最快的响应速度
  • ✅ 最低的使用成本
  • ✅ 适合高频代码补全
  • ⚠️ 模型名称未来可能变更

场景 3:追求最高质量

{
  "deepv.inlineCompletionModel": "gemini-2.5-pro",
  "deepv.inlineCompletionDelay": 500
}
  • ✅ 更高质量的代码建议
  • ⚠️ 响应较慢,需要更多耐心
  • ⚠️ 使用成本较高
  • ⚠️ 模型名称未来可能变更

动态切换

配置更改会立即生效,无需重启 VSCode:

  1. 修改设置或使用命令切换
  2. 缓存自动清除
  3. 下次补全请求使用新模型

未来规划

  • 多行补全优化
  • 项目级上下文集成
  • 补全历史记录
  • 用户反馈机制(接受/拒绝率)
  • 离线模式支持
  • 自定义补全提示词模板

反馈与支持

如遇到问题或有功能建议,请:

  1. 查看日志:DeepV Code > Open Log File
  2. 提交 Issue:GitHub Issues
  3. 社区讨论:GitHub Discussions

享受 AI 驱动的编码体验! 🚀