面向日常编码对话的本地优先副驾。它不会常驻读取所有网页,也不会替你发送消息:用户主动开启后,输入阶段给出零模型延迟提示,回答完成后检查当前一轮,并用最近几轮脱敏摘要补足上下文,把证据、风险和下一步 Query 收在侧边栏。
node local-service/server.js服务默认只监听 127.0.0.1:8787,自动选择本机 Ollama 中的 Qwen(只在检测到对应尺寸时使用,不会偷偷切换到大型未知模型):
qwen2.5:0.5b:标准/深度 Query 措辞优化(快速模式由本地规则完成)qwen2.5:1.5b:回答监督、代码审查和总结(深度通道)
输入阶段完全走本地规则;快速改写直接使用本地质量管线,不等待冷启动模型;需要模型措辞时可通过标准/深度模式调用 0.5B。回答监督先显示本地即时检查,模型结果晚到或失败也不会覆盖这些提示;重复 Query 会命中短期内存缓存。
Query 质量管线会先提取任务类型、目标、约束、上下文线索、信息缺口和验收标准,再生成职责不同的三条建议:澄清版、工程版、严格验证版。每条建议都带用途、价值、预期输出和质量分;服务会分别检查意图保持、具体程度、可执行性、可验证性、版本差异、上下文覆盖和输入完整度,避免“模板写得很长”就得到虚高分。模型返回的泛化、重复或只复述约束的 Query 会自动回退到本地模板。若存在关键缺口,侧边栏会标出“推荐先用”的澄清版;信息足够时优先推荐工程版,监督结果有待核查项时优先推荐验证版。
每次分析同时生成统一的意图契约,记录响应模式(确认、改写、实现、验证、总结等)、是否必须保留原文、上下文范围和干预级别。后续记忆、模型路由和 UI 都以这份契约为准,避免不同模块重复猜测用户意图。
回答监督会同步返回结构化 memory_snapshot(目标、阶段、技术/文件/命令、约束、未决项和证据状态)。插件只把这份脱敏快照与最近必要轮次带入下一次分析,不把整页历史无限拼接;快照只在页面会话内临时保留,用户关闭辅助模式或切换对话时清除。
没有 Ollama 时会先尝试异步 SmolVLM,失败则回退本地规则;回退不会阻塞网页或本地服务。
健康检查:
http://127.0.0.1:8787/health
可选配置:QUERY_COPILOT_MAX_CONTEXT、QUERY_COPILOT_OLLAMA_TIMEOUT_MS、QUERY_COPILOT_SMOLVLM_TIMEOUT_MS、QUERY_COPILOT_CACHE_TTL_MS、QUERY_COPILOT_RATE_LIMIT。如需远程 Ollama,必须显式设置 QUERY_COPILOT_ALLOW_REMOTE_OLLAMA=1,否则服务强制使用回环地址。
记忆仓库默认关闭持久化。配置长度不少于 16 个字符的 QUERY_COPILOT_MEMORY_KEY 后,服务才会把结构化快照写入本机 AES-256-GCM 加密仓库;原始对话不会写入。可用 GET /memory/status 查看状态,POST /memory/distill 蒸馏并按任务保存,GET/DELETE /memory/:task_id 读取或删除任务记忆。保存时可携带读取到的 expected_revision,避免多个窗口互相覆盖;冲突会返回 409,要求重新读取后合并。GET /memory/export 只导出密文包,POST /memory/import 只接受同密钥密文并按 revision 合并,适合用户自行放入同步盘。当前阶段不会自动上传或同步到远程服务。
Windows 推荐运行 powershell -ExecutionPolicy Bypass -File local-service/scripts/memory-key.ps1 ensure 创建随机密钥。密钥使用当前 Windows 用户的 DPAPI 保护,保存在本机用户目录;服务重启后自动读取,接口只显示 windows-dpapi 来源,不返回密钥内容。环境变量仍可作为开发环境兼容方式,并具有更高优先级。删除密钥前应先导出需要保留的记忆,否则原密文将无法解密。
macOS 使用 sh local-service/scripts/memory-key.sh ensure 创建 Keychain 项;服务会自动读取并在状态中显示 macos-keychain,不会输出密钥内容。两种系统使用相同的 AES-256-GCM 记忆包格式,可通过密文导出/导入实现用户控制的迁移。
同步前可调用 POST /memory/sync-preview 预览新增、未变更和同版本冲突条目;预览不会写入任何数据,确认后再调用导入接口。
GET /providers 仅返回提供商是否已配置、模型名和是否为本机地址,不返回任何 API Key。
- 打开浏览器扩展管理页,开启开发者模式。
- 选择“加载已解压的扩展”,指向本目录的
browser-extension。 - 修改文件后在扩展管理页点击“重新加载”;已打开的 AI 页面刷新一次即可。
扩展不再使用 <all_urls> 常驻脚本。点击扩展图标或按 Alt+Q 才会向当前页面按需注入;新标签页默认不读取任何内容。右键选中文本仍可作为一次性兜底分析。
解析器按语义标记、ARIA、消息容器和 Shadow DOM 逐层兜底,不绑定某一个网站;输入框、无文字图标发送按钮和自定义 Web Component 也会尝试识别。回答等待阶段只在发送后短暂监听,输入和阅读页面时不启动全页观察器。
侧边栏采用系统外观:在浅色环境使用半透明白色玻璃层,在深色环境自动切换为深色系统表面;Windows 优先使用 Microsoft YaHei UI 等清晰的中文系统字体,macOS 优先使用 SF/PingFang;系统蓝用于主要操作,橙/红仅用于风险提示,并支持系统的减少动态效果设置。
- 在 ChatGPT、Claude、豆包或其他对话网页按
Alt+Q开启辅助模式(首次会显示一次本机处理授权)。 - 在网页输入框打字时,只显示轻量行内提示,不调用模型。
- 输入框聚焦且有草稿时再按
Alt+Q,会立即显示三版 Query:澄清版、工程版、严格验证版。选择“替换输入”或“追加”,文本会直接写回当前输入框。 - 发送消息后,插件等待模型回答稳定,先在本地即时显示下一步 Query 草案,再对“最近几轮脱敏摘要 + 本轮用户消息 + 本轮回答”执行一次深度分析;只增量观察回答阶段,不重复轮询整页历史。深度结果返回后会替换草案并补上证据与风险,不会让输入操作被模型冷启动阻塞。
- 页面角落只出现一张小提示卡;点击“查看证据”才展开侧边栏。代码任务会列出对话中提到的文件、命令、测试和未验证风险,并明确提示目前没有本地工作区桥接。
- 没有草稿时再次按
Alt+Q关闭当前页辅助模式;关闭会清除提示卡和侧边栏。 - 需要整理当前会话时按
Alt+Shift+S,生成一次结构化总结;当前页面已有的语义消息会被整理为最多 6 轮临时脱敏上下文。
如果草稿只是“需要”“好的”“可以”“不用”等确认型短回复,插件会默认原文直通:不调用模型、不生成长 Query,输入内容保持不变,直接按网页原生发送即可。直通卡中的“我想优化这句”是显式覆盖入口,只有点击它才会把这句话送入正常的三路 Query 改写流程。
Query 不是把原文简单加长:改写会尽量保留原目标和约束,先补齐会阻塞执行的缺口,再要求具体产物、文件/命令、验收标准和失败处理。建议先采用绿色标记的推荐版本;若它指出缺口,先回答缺口再继续执行,避免让模型在错误假设上反复生成。
如果网页使用了没有文字标签的自定义发送按钮,插件会结合按钮位置、所在表单/编辑器和输入框清空事件判断发送;判断不确定时不会阻止网页原生发送,可用右键选中文本做一次性补充分析。
右键选中文本属于一次性分析:结果关闭后临时桥接会移除,不会把该页面加入自动监督列表。
- 默认只向本机
127.0.0.1:8787和本机 Ollama 发送经过脱敏的当前轮文本及最多 6 轮脱敏摘要,不保存原始对话;页面路由变化或关闭辅助模式时会清空上下文。 - 自动屏蔽常见 API Key、JWT、邮箱、手机号和 PEM 私钥;敏感信息识别不是绝对保证,发送前仍应检查。
- 未连接本地工作区时,插件只能判断网页中出现的代码和测试描述,不能确认真实文件、
git diff或命令是否执行成功。 - 模型调用失败、页面 DOM 改版或服务超时只会显示友好降级提示,不会阻止原网页输入和发送。
- 服务限制了请求体、输入长度、并发数和访问频率,并拒绝任意网页的通配 CORS。
开发验收可运行:
node --test local-service/tests/server.contract.test.js侧边栏显示本轮输入字符数、分析耗时、模型名称和缓存命中状态。开发调试可设置 QUERY_COPILOT_DEBUG=1,默认不显示内部日志。