AI Agent人工智能代码智能体交互助手【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址https://gitcode.com/gh_mirrors/op/openchamber点击查看免费下载OpenChamber 1.6.4 版本2026-02-05 发布的核心新特性是「在聊天消息中选中文本即可引用」选中任意一段对话内容后可以一键将其追加到当前输入框、作为新会话的起点或转换为内联评论草稿。本文以该版本发布说明为主线结合仓库源码完整拆解这一功能的选区捕获、Markdown 转换、全局快捷键接入与草稿存储链路并覆盖本版在配额追踪、Git SSH、移动端输入等方面的全部变更帮助读者既会用这一特性也能理解其底层实现。1. 版本变更总览根据 1.6.4 发布说明本版本按 AppWeb/桌面/移动与 VS Code 扩展两条线划分变更完整内容如下App新增New变更说明贡献者Chat 选中文本引用选中消息中的文本快速添加到当前 prompt 或开启新会话gsxdsmDiff/Plans 内联评论草稿在 Diff 视图与 Plans 中支持内联评论草稿nelsonPires5macOS SSH Agent 支持改进私有仓库认证体验shekohex改进Improvements变更说明Desktop支持在本地与远程 OpenChamber 实例之间切换并精简运行时体积Mobile拆分 Agent/Model 控件新增带自动补全Commands/Agents/Files的快捷命令按钮Terminal/Syntax新增终端字体大小控制支持 Phoenix 文件扩展名语法高亮Usage配额追踪覆盖更多供应商含 GitHub Copilot并新增供应商选择下拉框GitHubPR 描述生成支持附加可选上下文修复FixesVSCode改进 Windows PATH 解析与冷启动就绪检查减少会话/模型/代理长时间「卡在加载中」的问题。Web修复 Android PWA 安装时缺少图标的问题。VS Code 扩展类型变更New与 App 相同的「聊天选中文本引用」能力Improvements与 App 相同的配额追踪扩展含 GitHub Copilot与供应商下拉框Fixes改进 Windows PATH 解析与冷启动就绪检查减少会话「卡加载」可见本版的主线是把「对话内容」变成可复用的上下文选中即引用、选中即评论、选中即笔记同时让用量面板能回答「我的各家供应商额度还剩多少」。2. 核心功能聊天选中文本引用Select text to quote2.1 用户交互桌面弹出菜单与移动端底部栏实现主体是 TextSelectionMenu 组件。当用户在聊天消息中拖选文本并松开鼠标后会弹出一个轻量操作菜单包含四个动作Comment对选区评论菜单从动作列表切换为内联评论输入框最多 5 行自适应高度Enter提交、ShiftEnter换行、Escape关闭。提交后引用片段source 为chat-quote会写入内联评论草稿详见 2.4 节随下一条消息一并发给 Agent。Add to current chat添加到当前输入框将选区转换为 Markdown 后追加到聊天输入框末尾。Ask OpenChamber针对当前会话提问仅当存在当前会话时出现。它调用requestBtwComposer({ parentSessionId, text })把引用内容送入「旁支BTW」会话编辑器——这正是发布说明中「start a new session」的落地方式以当前会话为父节点、以引用文本为起点发起一次侧边提问。Save insight to notes存为项目笔记非 VS Code 运行时下出现。长选区会先经summarizeSelectionForNotes用小模型蒸馏成简短笔记短选区或蒸馏失败则原样保存再通过useProjectContextStore.createNote写入项目笔记source: selection并附带origin.sessionId溯源信息保证日后能追溯到它来自哪次对话。桌面与移动端的形态不同桌面端在选区上方空间不足时下方弹出胶囊形菜单位置由 selectionMenuPosition 中的getDesktopClampedX/getDesktopMenuY计算且定位边界是持有消息的滚动容器[data-scrollbarchat]或[data-selection-menu-boundary]而非消息本身——源码注释说明这是为了避免菜单压到消息首行选区的问题#3596。移动端则通过createPortal在底部弹出两列按钮栏并适配safe-area-inset-bottom评论动作不弹浮层输入框而是把引用交给当前列的 composer切换其输入为评论壳mobileCommentController.open(quote)用flushSync同步挂载并聚焦以唤起 iOS 软键盘。2.2 选区捕获生命周期菜单的触发基于三类文档级事件核心逻辑在TextSelectionMenu的React.useEffect中源码 L365-L446selectionchangedocument 级每次选区变化时执行handleSelectionChange——先检查选区文本非空、且range.commonAncestorContainer位于聊天容器内再从锚点元素上向上取data-message-id属性记录来源消息把{ plainText, markdownText, rect, messageId, range }存入pendingSelectionRef。拖拽进行中isDraggingRef只记录不显示菜单。mousedown容器级标记拖拽开始并先隐藏旧菜单避免残影。mouseupdocument 级延迟 10ms 等浏览器完成选区定稿后若选区非空则showMenu()。mousedowndocument 级点击外部点击菜单外且选区已清空时隐藏菜单。两个值得注意的健壮性细节评论态下选区会被输入框吃掉。用户在评论输入框中打字时原生选区消失因此组件在commentMode下用collectSelectionOverlayRects(range)从文本节点收集矩形、按视觉行合并后通过createPortal画一层高亮覆盖层oc-chat-comment-rect并在 scroll/resize 时用requestAnimationFrame重算让被引用的片段在整个评论过程中始终保持高亮。IME 输入保护评论输入框的onKeyDown先检查isIMECompositionEvent候选词确认Enter与放弃Escape不会误触提交/关闭。2.3 选区到 Markdown结构感知的rangeToMarkdown「把选中内容变成 prompt 友好文本」是引用功能的技术核心实现位于 selectionMarkdown.ts。它不是简单取selection.toString()而是把Range.cloneContents()解析成SelectionNode树后按节点类型分别渲染代码块选区起止点落在同一个pre code内时直接输出围栏代码块语言从data-md-lang属性或language-xxxclass 提取。关键细节是围栏反引号长度自适应——formatCodeSelectionMarkdown会统计选区内最长连续反引号longestBacktickRun用max(3, run 1)个反引号作围栏避免选区本身包含 时破坏围栏见 L94-L99。块级结构标题渲染为#前缀、ul/ol渲染为列表、blockquote渲染为前缀、普通段落压平为单行Markdown 渲染器输出的块会携带data-md-block标记以便还原原始块边界。行内结构strong/em/code/a分别还原为**…**、*…*、…、text。渲染器附加元素剔除代码行的行号元素data-md-code-line-number在trimSelectionNodes阶段被整体过滤保证引用代码不含行号噪声。最终统一经过 wrapMarkdownSelectionForChat 包装整段引用被包进md ... 围栏同样做反引号长度自增使 Agent 能明确区分「这是被引用的原文」与「用户自己的指令」——这一包装是引用功能语义正确性的关键。2.4 快捷键入口与全局工具栏addSelectionToChat除了弹出菜单OpenChamber 还提供 Cursor 风格的「Ctrl/CmdL」类全局快捷键入口实现在 addSelectionToChat.ts。captureSelectionMarkdownForChat按优先级依次尝试三种捕获路径CodeMirror 编辑器选区captureCodeMirrorSelection若聚焦的是非聊天 composer 的 CodeMirror 编辑器直接读取view.state.selection.main并经sliceDoc取文本格式化为围栏代码块原生表单控件选区captureActiveElementSelection对聚焦的textarea/input读取selectionStart/selectionEnd切出选中文本并立即折叠选区防止同一选区被重复追加DOM 选区captureDomSelection与聊天引用同一套rangeToMarkdown转换。addSelectionToChat()捕获成功后通过useInputStore.getState().setPendingInputText(markdown, append)追加到输入框并用queueMicrotask聚焦聊天输入若无任何选区则只聚焦输入框——这就是「选中即引用未选中即聚焦」的交互约定。菜单显示期间还有配套机制registerActiveSelectionToolbar会注册一个「活动选区工具栏」同时通过shortcutRegistry.suspend()挂起全局快捷键防止菜单动作与全局快捷键互相干扰并暴露invokeActiveSelectionAddToChat/dismissActiveSelectionToolbar供键盘路径直接调用栈顶工具栏的动作L53-L69。2.5 引用进入内联评论草稿chat-quotesource选区「Comment」路径最终落入 useInlineCommentDraftStore。该 store 定义了草稿来源类型L8export type InlineCommentSource | diff | plan | file | preview-annotation | terminal | pr-comment | pr-check | chat-quote | file-quote;chat-quote即本版的聊天引用评论路径handleAttachComment以{ source: chat-quote, fileLabel: selectedMessageId, code: 选区Markdown, text: 评论内容 }调用addDraft草稿按(runtimeKey, directory, sessionKey)三元组分桶持久化会话草稿上限 20 条、桶上限 50 个、持久化总大小 1MBMAX_DRAFTS_PER_SESSION 20等常量见 L57-L59超限时按淘汰策略清理。这与发布说明中「Diff/Plans: add inline comment drafts」共用同一套草稿基础设施——1.6.4 实际上把「评论草稿」从一个评论来源扩展成统一的多来源上下文管道。3. 配额追踪扩展与供应商下拉框发布说明中 Usage 一项「expanded quota tracking with more providers (including GitHub Copilot) and a provider selector dropdown」对应 quota 模块。供应商注册表 providers/index.ts 导出QUOTA_PROVIDERS数组当前覆盖 21 个供应商包括claude, cline-pass, codex, cursor, github-copilot, google, kimi-for-coding, nano-gpt, openrouter, zai-coding-plan, zhipuai-coding-plan, minimax-cn-coding-plan, minimax-coding-plan, ollama-cloud, wafer, opencode-go, deepseek, exe-dev, hyper, neuralwatt, xaigithub-copilotGitHub Copilot即为本版新增的代表性条目。每个条目为{ id, name }元数据id与QuotaProviderId类型联合保持一致name直接用于「provider selector dropdown」的展示配额拉取逻辑集中在 fetchQuota.ts模型家族识别见 model-families.ts。VS Code 扩展侧复用同一份 UI 包中的该模块因此扩展端的 Usage 面板与 Web/桌面端能力对齐。4. 其余变更的落点速览macOS SSH AgentGit 私有仓库认证服务于 VS Code 扩展的 Git 桥接层bridge-git-runtime 系列文件处理 Git 进程与凭据环境。从源码结构看该修复让 git 子进程能继承 macOS 上的 SSH agent 环境减少私有仓库 clone/fetch 时的交互式密码提示。VS Code Windows 冷启动修复对应 extension.ts 的启动链路managed-opencode-process.ts 与 opencode-ready.ts 负责托管 OpenCode 进程与其就绪探测opencode-cwd 与 shell-environment 则涉及 Windows PATH 解析。两者共同缓解「会话/模型/代理一直转圈」的体验问题。Desktop 本地/远程实例切换packages/electron 主进程负责多实例运行时管理startup-url-selection.ts 处理启动时本地/远程地址的选择逻辑。终端与语法终端字体大小控制在 TerminalViewportPhoenix 文件扩展名支持落在 fileTypeIconIds.ts 与语法高亮语言表中。Android PWA 图标修复图标资源位于 web/publicPWA 清单为 site.webmanifest。5. 源码导读相关文件索引关注点文件选区菜单主组件动作、定位、评论态packages/ui/src/components/chat/message/TextSelectionMenu.tsx选区 → Markdown 转换packages/ui/src/components/chat/message/selectionMarkdown.ts桌面菜单几何计算packages/ui/src/components/chat/message/selectionMenuPosition.ts全局快捷键/工具栏注册、多来源选区捕获packages/ui/src/lib/addSelectionToChat.ts内联评论草稿 storechat-quote来源packages/ui/src/stores/useInlineCommentDraftStore.ts小模型选区蒸馏为笔记packages/ui/src/lib/smallModel配额供应商注册表含 GitHub Copilotpackages/ui/src/lib/quota/providers/index.ts配额拉取 / 模型家族识别packages/ui/src/lib/quota/fetchQuota.ts、model-families.tsVS Code 侧 Git 运行时SSH agent 相关packages/vscode/src/bridge-git-runtime.tsVS Code 冷启动就绪探测packages/vscode/src/managed-opencode-process.ts、opencode-ready.ts6. 小结OpenChamber 1.6.4 表面上是一次「体验打磨版」实质上把「对话内容复用」做成了贯穿聊天、评论、笔记三条路径的基础能力选区捕获selectionchange 拖拽状态机、结构感知 Markdown 转换自适应围栏、行号剔除、md包装、多来源选区捕获DOM/表单/CodeMirror与统一的内联评论草稿 store共同构成了一个可复用的「上下文引用管道」。配合覆盖 21 家供应商的配额面板与 VS Code 冷启动修复这个版本让 OpenChamber 在「引用对话、追踪用量、稳定启动」三件日常高频事上都有了更完整的工程答案。赞分享AI Agent人工智能代码智能体交互助手【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址https://gitcode.com/gh_mirrors/op/openchamber点击查看免费下载相关推荐9Router 配额追踪与用量监控深度指南实时 Token 消耗、额度预警与成本管控9Router 配额追踪与用量监控深度指南实时 Token 消耗、额度预警与成本管控 导读 9Router 是一个面向 AI 编程的统一网关可把 Claud人工智能LLM 网关AI 应用OpenChamber 1.3.0 深度解读聊天消息回退Revert机制与聊天体验打磨OpenChamber 1.3.0 深度解读聊天消息回退Revert机制与聊天体验打磨 本篇文章以 OpenChamber 1.3.02025 12 2AI Agent人工智能代码智能体交互助手Spacebar插件系统深度解析如何扩展你的聊天平台功能Spacebar插件系统深度解析如何扩展你的聊天平台功能 Spacebar是一个免费开源的自托管Discord兼容通信平台其强大的插件系统让你能够轻松扩展平上一篇Lua 语言编译器项目教程下一篇Kscan性能调优实战如何在大规模扫描中保持高效稳定创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考