惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
Recent Announcements
Recent Announcements
博客园 - Franky
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
宝玉的分享
宝玉的分享
I
InfoQ
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
V
V2EX
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
T
The Blog of Author Tim Ferriss
量子位

博客园 - 悠哉大斌

AI治好了我的linux桌面恐惧症 AI Agent 安全沙箱技术对比:E2B、Cube Sandbox 与 Docker Sandboxes linux 升级 claude code的坑 debian(WSL) apt 代理配置 linux内核之Namespaces、Cgroups、Capabilities、Seccomp和Landlock 大语言模型推理中的隐藏瓶颈及其解决方法 Docker Sandboxes 技术是什么,和docker容器有什么区别 什么是 Docker Agent以及一个Docker Agent示例 windows wsl 安装 Temurin® JDK claude Code 和 codex 作为编程代理,前者使用typescript开发,后者使用rust,他们的决策依据是什么 Java 并发编程发展史与 java.util.concurrent 全景解析 LLM 真的改变了编码风格吗? 如果人工智能会犯错且不精确,为什么它正在改变世界? Python 的协程模型和 JavaScript 的 async/await python闭包和function.__closure__特殊属性 python 的 dunder name和 sunder name 基于nodejs设计REST API的知名开源框架 windows上使用node-oracledb Thick 模式连接 Oracle 11g Claude Code CLI连接 DeepSeek V4模型后调用报400错误 python里对象(object)到底是什么 Python 泛型演变史 Python 类型别名的演变 Python 类型提示的演变史 PEP 593 新增的Annotated 类型 Alibaba AgentScope 和 microsoft agent framework 详细对比分析 spring AI Alibaba Agent Framework 和 agentscope有什么区别和联系 AI Agent协作模式以及主流开源框架对协作模式的支持 Tailscale 是如何接管 DNS 的? Agent = Model + Harness 使用rust编写typescript编译器的难点在什么地方,哪些数据结构是rust不擅长的?
全新Qoder CN (非Qoder CN IDE)技术架构分析
悠哉大斌 · 2026-09-05 · via 博客园 - 悠哉大斌

官方下载地址 https://docs.qoder.cn/qoder/overview

Qoder CN 技术架构分析

TL;DR:这是阿里系 Qoder 的桌面端「AI Agent 工作台」(v0.1.6,deb 安装),不是 VS Code 套壳,而是一个自研 Electron 应用(Electron 43 / Chromium 150 / React 19)。它的核心设计是:Electron 壳负责 UI 和本地系统集成,真正干活的 AI 引擎是内嵌的 qoder-worker-runtime(即 Qoder CLI CN,31MB 混淆 JS)子进程,两者通过 stdio + JSONL/protobuf 通信;周边配了一套带权限模型的插件系统、基于 SQLite 的会话存储、以及多模型云端推理网关。

1. 总体分层

┌─────────────────────────────────────────────────────────┐
│  Electron 43 壳 (qoder-cn, ~220MB, Chromium 150/V8)     │
│  ┌──────────────┐  ┌─────────────────────────────────┐  │
│  │ Main 主进程   │  │ Renderer 渲染层 (React 19 SPA)   │  │
│  │ index.js 5.9MB│◄─►│ workbench / chat / xterm 终端   │  │
│  │ + 服务化 chunks│IPC│ Shiki/KaTeX/mermaid 渲染        │  │
│  └──────┬───────┘  └─────────────────────────────────┘  │
│         │ spawn (stdio)          ┌────────────────────┐  │
│  ┌──────▼──────────────────┐    │ Plugin Host 插件宿主 │  │
│  │ qoder-worker-runtime    │    │ (带代际隔离+故障上报) │  │
│  │ (Qoder CLI CN, 混淆JS)   │    └────────────────────┘  │
│  │ 工具执行/沙箱/ripgrep     │                            │
│  └─────────────────────────┘                            │
└─────────────────────────────────────────────────────────┘
  • 入口 resources/app.asar(123MB),结构为 out/mainout/preloadout/renderer,Vite 打包(chunk 哈希命名)。package.json 自述:"Qoder - Agent workbench for human and AI software teams"。
  • product.json 定义应用标识 com.qodercn.app、协议 scheme qoder-cn、更新源 static.qoder.com.cn(electron-updater generic provider)。

2. 主进程:服务化架构

主进程不是单一大文件,而是按服务拆分的 chunks,包括:chatSessionProjectionServicechatSessionSearchWorkerchatSessionSubagentTranscriptWorkergitWorker/gitRepositoryWatch(Git 状态监听与快照)、officeArtifactPreviewWorker(Office 文件预览)、pluginHost。IPC 面向渲染层暴露了约 10 个命名空间、100+ 通道:workspace:*(46 个,含完整 Git 操作和文件读写)、mcp:*auth:*(登录/套餐/用量/积分热力图)、agent:*terminal:*appshot:*(截图捕捉)、byok:*(自带 API Key 的多供应商配置)、quest:*(云端任务)等。

会话与状态全部落在 Node 内置 SQLite(node:sqlitechat_sessions_v*chat_generated_image_assetschat_session_sidebar_placements 等表,数据库文件包括 local.dbagents.dbmain.sqlite,另有 sessionMigration/memoryMigration 两个迁移模块(@qoder-space/session-migrationmemory-migration)负责升级历史数据。凭据用 keytar 存系统钥匙串。

3. Agent 引擎:内嵌的 Qoder CLI

app.asar.unpacked/node_modules/@qoder-ai/qoder-cn-agent-sdk/dist/_worker/ 是整个产品的执行核心:

  • qoder-worker-runtime.obf.mjs(31MB,混淆)runtime-info.json 显示它就是 qoderclicn(Qoder CLI 中国版)v1.1.40,主进程以 QODERCLI_PATH 子进程方式拉起,走 stdio + 双向 JSONL(配套 TS SDK 文档明确写了 query() 返回 AsyncGenerator 的模式),聊天消息协议另定义了 proto/chat.proto(OpenAI 兼容的 ChatCompletion 结构 + reasoning/tool 字段,包名 com.qoder.grpc)。
  • 命令沙箱policies/sandbox-default.toml 定义 plan(只读+断网)/default/accepting_edits 三种模式,按命令白名单放行(cat/ls/grep/sed/awk…);另附 6 份 macOS sandbox-exec profile(strict/permissive × open/proxied)。与 Claude Code / Codex 的沙箱思路一致。
  • 内置技能builtin/ 下有 agent-creatorskill-creatorhook-configsdk 四个 SKILL.md —— 说明 Agent 系统支持用户自建子 Agent、技能和钩子(与 Claude Code 的 Skills/Hooks 机制同构)。
  • 自带工具链:vendor 内置 ripgrep(rg 二进制)和 Qoder Security 插件(v0.8.9,SAST 式编辑告警 + Stop 时云端 diff 审查 + commit/push 代理审查,逻辑在跨平台 qodersec 二进制中)。

4. 上下文引擎(qoder-context 插件)

bundled-resourcesSHA-256 全量钉扎(每个文件有 hash、zip 有大小/条目数上限,防供应链篡改)分发 qoder-cn-context-plugin v1.0.27,包含:ripgrep、qoder-search.bundle.mjs(4.8MB 搜索打包)、mtree 原生模块(.node,Rust/N-API 写的 Merkle 树文件索引,用于增量工作区扫描)、syncWorkspaceScanWorker,以及 hooks + mcp.json —— 这是代码库语义索引/检索的本地侧。

5. 双层插件体系

  • 应用插件resources/extensions/catalog.v1.json):manifest 格式类似 VS Code 但独立演进(engines.qoder),有显式 权限声明(如 auth.readUserTokenchat.createSessionnode.callServiceworkspace.read),可贡献 views(工作区侧边栏视图,通过 本地 HTTP 服务 127.0.0.1 随机端口 托管,渲染层 CSP frame-src http://127.0.0.1:* 白名单放行)。pluginHost.js 用 AsyncLocalStorage 做按插件/按代际的操作追踪,捕获 uncaughtException 后上报 plugin.runtimeFault 并支持重启——故障隔离不靠多进程,靠代际+钩子。
  • CLI 插件.qoder-plugin/plugin.json):跑在 Agent 侧,贡献 skills/hooks/MCP server。内置三个应用扩展:qoder.find-extensionsqoder.knowledge.center(知识中心视图)、qoder.security
  • MCP 全线打通:主进程引用 @modelcontextprotocol/{client,node,server},主进程代码中 mcpServers 出现 80+ 次,插件也能注册 MCP。
  • 浏览器连接器native-messaging-host/qoder-app-host.cjs 是 Chrome Native Messaging 主机,通过心跳文件(~/.qoder/browser-connector/clients/*.json,30 秒过期 + PID 存活检测)发现本机 Qoder 的本地中继端口。

6. 云侧与模型接入

  • 推理网关gateway.qoder.com.cn(inferBaseUrl)做模型转发,openapi.qoder.com.cn/mind(记忆/账号 OpenAPI),测试环境全套 -test- 域名。dynamic-text/qoder-cn.json 实现服务端下发的模型清单文案:自研 Cantus(长程自主任务模型)+ DeepSeek-V4-Pro/Flash、GLM-5.3、Kimi-K2.7-Code、MiniMax-M3、Qwen3.7-Plus,外加 BYOK(自带 Key)接入其他供应商。
  • Quest 云环境:主进程会从 static.qoder.com.cn/qoder-app/releases/remote-runtime 拉取 4 个 tarball(qoder-remote-host / qoder-worker-runtime / node / qoder-context),在云端沙箱环境里重建与本地相同的 Agent 运行时——本地与远程执行同构。
  • 可观测性:阿里云 ARMS RUM(rum-electron,上报到 log.aliyuncs.com)、aoq-electron-sdk(阿里内部在线质量/崩溃 SDK,来自 anpm.alibaba-inc.com 内部源)。

7. 渲染层技术栈

React 19 + react-i18next(55 个 locale pak),编辑/渲染类:xterm.js 6(终端,node-pty 后端)、Shiki 4(几百个按语言懒加载的语法 chunk)、KaTeX、mermaid 类图表(architectureDiagram/blockDiagram chunks)、Slate(富文本,Markdown 编辑器 WorkspaceMarkdownEditor)、TanStack Virtual、framer-motion + GSAP。UI 文案走 dynamic-text 服务端下发。CSP 相当严格:script-src 'self'worker-src blob:,仅 frame 放行本地 Surface 和 qoder 域名。

8. 工程与发布特征

  • 阿里内部 CI 构建(runtime-info 残留 aoneci-runner 路径,构建站点 cn、产品名 qoderclicn),核心 Agent 运行时发布即混淆(.obf.mjs)。
  • Linux 侧带 chrome-sandbox(setuid)和 apparmor-profile;数据目录 com.qodercn.app.stable
  • 包结构上 Electron 运行时与业务完全分离:升级业务只换 app.asar + app.asar.unpacked,Agent 运行时可经 umid manifest(含 sha256)独立校验更新。

总结:Qoder CN = 「Electron 工作台壳 + 内嵌 Qoder CLI Agent 运行时 + 双层插件/技能/MCP 体系 + SQLite 会话存储 + 云端多模型网关与 Quest 远程环境」的桌面 Agent IDE;其 Agent 执行、沙箱、技能、上下文索引均与终端 CLI 共用同一套运行时,桌面端主要是会话管理、工作区可视化和云本协同的载体。