ccplus-quote — 发送到 Claude Code
在 VS Code 资源管理器中右键文件/文件夹(支持多选),一键把 @引用 插入 Claude Code 对话框输入框。两种模式:
粘贴模式(默认):全部走剪贴板 → 聚焦输入框 → OS 层模拟 Ctrl+V,零闪烁,纯文本样式。对模型而言与芯片等效(发送的都是 @路径 文本,Claude 均可解析读取)
芯片模式:文件经官方 insertAtMention(Alt+K 同款机制)插入,渲染为蓝字浅蓝底富文本芯片;需短暂激活编辑器标签。增益仅在视觉、点击打开、以及含空格路径的可靠解析
文件 → @src/app.py,文件夹 → @src/components/(尾部斜杠)
命令面板调用(无资源管理器选中项)时发送当前编辑器文件,有选区自动带行号 @src/app.py#10-25
终端模式(claudeCode.useTerminal)自动退回对应终端版命令
原理
芯片如何渲染:CC 输入框是 contenteditable 富文本,内部用正则 (?:^|\s)(@\S+) 扫描文本,但只有同时登记在其内部 mention Set 里的词元才渲染成芯片;Set 的写入方只有两个——手动 @ 自动补全的选择动作,和 insertAtMention 的内部投递。因此粘贴的纯文本永远无法变成芯片(硬边界),要芯片就必须走 insertAtMention,而它只读当前活动编辑器——这就是芯片模式需要短暂打开文件的原因。文件夹没有公共通道能产出芯片,统一走剪贴板。
粘贴链路:选中项拼成 @引用 串写入剪贴板 → 官方 claude-vscode.focus 命令聚焦输入框 → 子进程在 OS 层模拟 Ctrl+V(Windows 用 PowerShell SendKeys,macOS 用 osascript,Linux 用 xdotool)。扩展宿主内不能向其他扩展的 webview 发按键,但起子进程由操作系统投递不受此限制。
前后补空:粘贴的引用串前后各带一个空格。输入框已有文本时,直接粘贴 @xxx 会与相邻文本粘连(如 text@xxx),破坏 mention 解析(@ 前必须是行首或空白);空输入框中多出的首尾空格对解析与发送均无影响。
配置
ccplus-quote.mode(paste | chip,默认 paste):粘贴 / 芯片模式
ccplus-quote.autoPaste(默认 true):粘贴链路中自动模拟 Ctrl+V;关闭则退化为复制+聚焦,手动粘贴
ccplus-quote.pasteDelayMs(默认 250):聚焦后到模拟粘贴的等待毫秒
ccplus-quote.chipDelayMs(默认 10):芯片模式下触发插入命令后到关闭临时预览标签的等待毫秒——需大于扩展宿主捕获活动编辑器所需时间;若个别机器上仍偶见闪帧,可保持默认,出现"芯片丢失"才调大
已知边界
- 文件夹、二进制文件(编辑器打不开的)一律走剪贴板纯文本;
- CC 会话面板完全关闭时,
focus 会新开最近会话,webview 冷加载可能超过等待窗口,首次粘贴可能落空(此时手动 Ctrl+V 即可,剪贴板内容仍在);
- 模拟按键前会确认 VS Code 窗口处于前台,避免把内容粘到其他应用;CC 面板位于辅助窗口时
focus 有官方未修 bug,可能聚焦失败(可关 autoPaste 规避);
- macOS 需要在 系统设置 → 隐私与安全 → 辅助功能 中授权 VS Code;
- 若触发 focus 时编辑器里恰好有选中文本,CC 自身的行为会把该选区引用一并插入(与官方 Ctrl+Esc 一致)。
依赖已安装 Claude Code 扩展(anthropic.claude-code)。
排障日志:输出面板 → "ccplus-quote"(同时落盘 %TEMP%\ccplus-quote-debug.log)。