# Copy AI Ctx 选中悬浮按钮 — 实现计划 > **面向 AI 代理的工作者:** 必需子技能:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(`- [ ]`)语法来跟踪进度。 **目标:** 编辑器中划选文本后,通过 CodeAction(💡 灯泡)快速触发"复制选中区域"操作。 **架构:** 新增 `codeActionProvider.ts` 文件实现 CodeActionProvider,在 `extension.ts` 中注册。复用已有的 `copySelection` 命令。 **技术栈:** VS Code Extension API — `languages.registerCodeActionsProvider`、`CodeAction`、`CodeActionKind.Source` --- ### 任务 1:创建 CodeActionProvider **文件:** - 创建:`src/codeActionProvider.ts` - [ ] **步骤 1:编写 `codeActionProvider.ts`** ```typescript 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 { // 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: ```typescript 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** ```bash 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** ```bash npm run package ``` - [ ] **步骤 2:Commit** ```bash git add CHANGELOG.md package.json git commit -m "chore: bump version for CodeAction feature" ```