2026-07-14-codeaction-plan.md 2.6 KB

Copy AI Ctx 选中悬浮按钮 — 实现计划

面向 AI 代理的工作者: 必需子技能:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(- [ ])语法来跟踪进度。

目标: 编辑器中划选文本后,通过 CodeAction(💡 灯泡)快速触发"复制选中区域"操作。

架构: 新增 codeActionProvider.ts 文件实现 CodeActionProvider,在 extension.ts 中注册。复用已有的 copySelection 命令。

技术栈: VS Code Extension API — languages.registerCodeActionsProviderCodeActionCodeActionKind.Source


任务 1:创建 CodeActionProvider

文件:

  • 创建:src/codeActionProvider.ts

  • [ ] 步骤 1:编写 codeActionProvider.ts

    import * as vscode from 'vscode';
    
    export class CopyAiCodeActionProvider implements vscode.CodeActionProvider {
    public static readonly providedCodeActionKinds = [
    vscode.CodeActionKind.Source,
    ];
    
    provideCodeActions(
    document: vscode.TextDocument,
    range: vscode.Range | vscode.Selection,
    ): vscode.ProviderResult<vscode.CodeAction[]> {
    // Only provide action when there's a selection
    if (range.isEmpty) return;
    
    const action = new vscode.CodeAction(
      '$(clippy) Copy to AI: 选中区域',
      vscode.CodeActionKind.Source,
    );
    action.command = {
      command: 'copy-ai-ctx.copySelection',
      title: 'Copy to AI: 选中区域',
    };
    return [action];
    }
    }
    
  • [ ] 步骤 2:修改 extension.ts 注册 Provider

activate 函数中,导入并注册 CodeActionProvider:

import { CopyAiCodeActionProvider } from './codeActionProvider';

// 在 activate 函数末尾,console.log('[copy-ai-ctx] activated'); 之前添加:
context.subscriptions.push(
  vscode.languages.registerCodeActionsProvider(
    { pattern: '**' },
    new CopyAiCodeActionProvider(),
    {
      providedCodeActionKinds:
        CopyAiCodeActionProvider.providedCodeActionKinds,
    },
  ),
);
  • 步骤 3:运行 build 验证

运行:npm run build 预期:esbuild 打包成功,无报错退出。

  • [ ] 步骤 4:Commit

    git add src/codeActionProvider.ts src/extension.ts
    git commit -m "feat: add CodeAction (lightbulb) for copy selection on text selection"
    

任务 2:重新打包

文件:

  • 修改:package.json(bump version)

  • [ ] 步骤 1:打包 vsix

    npm run package
    
  • [ ] 步骤 2:Commit

    git add CHANGELOG.md package.json
    git commit -m "chore: bump version for CodeAction feature"