🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

量子智能工作台 xi-zhao/OpenQuantum

DeepSeek Harness
xi-zhao4 天前有提交已提供中文文档扫描:含敏感能力

简体中文 · English · 日本語 · 한국어 · Español · Français · Deutsch ·…

56/100
综合分
71
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;要求 dsh 0.1.0-rc.6,而最新版为 0.2.1-rc.5;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xi-zhao/OpenQuantum
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;要求 dsh 0.1.0-rc.6,而最新版为 0.2.1-rc.5;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包openquantum(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24 · 基线 Node 22.19 不满足
✗dsh CLI 依赖要求 0.1.0-rc.6 · 最新 0.2.1-rc.5 不兼容
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 17:39:13

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 96 处,展示前 84 条)
  • 读取本地文件
    benchmarks/upstream-updates/flagquantum_mcp.mjs:11
    const snapshot = JSON.parse(await readFile(new URL("../../.agents/skills/flagquantum-workbench/mcp/upstream-tools.json", import.meta.url), "utf8"));
  • 读取本地文件
    desktop/install.mjs:13
    const manifest = JSON.parse(await readFile(path.join(source, "openquantum/distribution.json"), "utf8"));
  • 读取本地文件
    desktop/install.mjs:27
    const existing = await lstat(payloadRoot).catch(error => { if (error.code === "ENOENT") return null; throw error; });
  • 读取本地文件
    desktop/install.mjs:29
    if (!existing.isDirectory() || JSON.stringify(JSON.parse(await readFile(path.join(payloadRoot, "openquantum/distribution.json"), "utf8"))) !== JSON.st
  • 写入本地文件
    desktop/install.mjs:34
    try { await rename(staging, payloadRoot); }
  • 删除本地文件递归
    desktop/install.mjs:37
    await rm(staging, { recursive: true, force: true });
  • 删除本地文件递归
    desktop/install.mjs:39
    } catch (error) { await rm(staging, { recursive: true, force: true }); throw error; }
  • 写入本地文件
    desktop/install.mjs:42
    await mkdir(dataRoot, { recursive: true });
  • 写入本地文件
    desktop/install.mjs:49
    await writeFile(launcher, body, { mode: 0o755 });
  • 写入本地文件
    desktop/install.mjs:55
    await mkdir(applications, { recursive: true });
  • 读取本地文件
    desktop/install.mjs:57
    const current = await lstat(link).catch(error => { if (error.code === "ENOENT") return null; throw error; });
  • 读取本地文件
    desktop/install.mjs:58
    if (current && (!current.isSymbolicLink() || await readlink(link) !== branding.launcher)) throw new Error(`Preserve the existing application before cr
  • 写入本地文件
    desktop/launcher.mjs:15
    await mkdir(requestedRoot, { recursive: true });
  • 读取本地文件
    desktop/launcher.mjs:16
    const dataRoot = await realpath(requestedRoot);
  • 写入本地文件
    desktop/launcher.mjs:18
    await mkdir(nativeData, { recursive: true });
  • 读取本地文件
    desktop/launcher.mjs:35
    const manifest = JSON.parse(await readFile(path.join(payload, "distribution.json"), "utf8"));
  • 写入本地文件
    desktop/launcher.mjs:53
    await mkdir(projectRoot, { recursive: true });
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:10
    const OPENQUANTUM_MARK = readFileSync(
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:14
    const OPENQUANTUM_MARK_INVERSE = readFileSync(
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:18
    const OPENQUANTUM_LOCKUP = readFileSync(
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:22
    const OPENQUANTUM_LOCKUP_INVERSE = readFileSync(
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:26
    const OPENQUANTUM_ICON_192 = readFileSync(
  • 读取本地文件
    packages/openquantum-web-branding/index.mjs:29
    const OPENQUANTUM_ICON_512 = readFileSync(
  • 读取本地文件
    runtime/openquantum/project-root.mjs:8
    const deployment = existsSync(marker) ? JSON.parse(readFileSync(marker, "utf8")) : null;
  • 读取本地文件
    runtime/openquantum/project-root.mjs:8
    const deployment = existsSync(marker) ? JSON.parse(readFileSync(marker, "utf8")) : null;
  • 读取本地文件
    runtime/openquantum/project-root.mjs:11
    const runtime = existsSync(runtimeFile) ? JSON.parse(readFileSync(runtimeFile, "utf8")) : null;
  • 读取本地文件
    runtime/openquantum/project-root.mjs:11
    const runtime = existsSync(runtimeFile) ? JSON.parse(readFileSync(runtimeFile, "utf8")) : null;
  • 写入剪贴板
    site/main.mjs:42
    await navigator.clipboard.writeText(source.textContent.trim());
  • 读取本地文件
    src/channels/cc-connect.mjs:90
    await access(filename);
  • 读取本地文件
    src/channels/cc-connect.mjs:181
    const configText = await readFile(paths.configPath, "utf8");
  • 写入本地文件
    src/channels/cc-connect.mjs:215
    await mkdir(paths.stateRoot, { recursive: true, mode: 0o700 });
  • 读取本地文件
    src/channels/cc-connect.mjs:226
    const previous = await readFile(paths.configPath, "utf8");
  • 写入本地文件
    src/channels/cc-connect.mjs:234
    try { await writeFile(backup, previous, { flag: "wx", mode: 0o600 }); }
  • 读取本地文件
    src/learning/application.mjs:55
    try { return JSON.parse(await readFile(file(id), "utf8")); }
  • 写入本地文件
    src/learning/application.mjs:62
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    src/learning/application.mjs:65
    await writeFile(temporary, JSON.stringify(course), { mode: 0o600, flag: "wx" });
  • 写入本地文件
    src/learning/application.mjs:67
    else await rename(temporary, file(course.id));
  • 删除本地文件
    src/learning/application.mjs:68
    } finally { await rm(temporary, { force: true }); }
  • 读取本地文件
    src/learning/application.mjs:75
    try { entries = await readdir(directory); }
  • 写入本地文件
    src/learning/database-service.mjs:11
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    src/learning/database-service.mjs:13
    try { await writeFile(credentials, JSON.stringify({ password: randomBytes(32).toString("hex") }), { flag: "wx", mode: 0o600 }); }
  • 写入本地文件
    src/learning/database-service.mjs:15
    await chmod(credentials, 0o600);
  • 读取本地文件
    src/learning/database-service.mjs:16
    const { password } = JSON.parse(await readFile(credentials, "utf8"));
  • 执行外部命令来自配置/变量
    src/learning/database-service.mjs:22
    const worker = fork(fileURLToPath(new URL("database-worker.mjs", import.meta.url)), [], { execPath: process.env.OPENQUANTUM_NODE_EXECUTABLE || deploye
  • 读取本地文件
    src/learning/database-worker.mjs:25
    if (!existsSync(path.join(config.databaseDir, "PG_VERSION"))) await database.initialise();
  • 发起网络请求
    src/learning/ui-readiness.mjs:21
    const response = await fetch(url, {
  • 读取本地文件
    src/learning/ui-route-diagnostics.mjs:5
    try { return (await stat(filename)).isFile() ? "file" : "not_file"; }
  • 读取本地文件
    src/learning/ui-route-diagnostics.mjs:22
    const entry = await lstat(path.join(directory, ".next"));
  • 读取本地文件
    src/learning/ui-route-diagnostics.mjs:26
    const manifest = JSON.parse(await readFile(path.join(output, "app-paths-manifest.json"), "utf8"));
  • 读取本地文件
    src/learning/ui-service.mjs:25
    if (!existsSync(path.join(directory, "node_modules/next/dist/bin/next")) || !existsSync(path.join(directory, "packages/@openmaic/editor/dist/core/inde
  • 读取本地文件
    src/learning/ui-service.mjs:28
    const manifest = JSON.parse(await readFile(path.join(directory, ".openquantum-ui.json"), "utf8"));
  • 读取本地文件
    src/learning/ui-service.mjs:31
    const digest = createHash("sha256").update(await readFile(path.join(directory, file.name))).digest("hex");
  • 读取本地文件
    src/learning/ui-service.mjs:35
    const loader = await readFile(path.join(directory, "packages/@openmaic/generation", file), "utf8");
  • 读取本地文件
    src/learning/ui-service.mjs:42
    if (!existsSync(quizGenerator) || !(await readFile(quizGenerator, "utf8")).includes("Generated quiz does not match the declared count or question type
  • 读取本地文件
    src/learning/ui-service.mjs:42
    if (!existsSync(quizGenerator) || !(await readFile(quizGenerator, "utf8")).includes("Generated quiz does not match the declared count or question type
  • 写入本地文件
    src/learning/ui-service.mjs:79
    await rename(data, persistent);
  • 写入本地文件
    src/learning/ui-service.mjs:80
    } else await mkdir(persistent, { recursive: true, mode: 0o700 });
  • 写入本地文件
    src/learning/ui-service.mjs:81
    await chmod(persistent, 0o700);
  • 执行外部命令固定命令
    src/learning/ui-service.mjs:100
    execFile("taskkill", ["/PID", String(pid), "/T", "/F"], { windowsHide: true, timeout: 5000 }, () => {});
  • 执行外部命令固定命令
    src/learning/ui-service.mjs:110
    execFile("taskkill", ["/PID", String(owned.pid), "/T", "/F"], { windowsHide: true, timeout: 5000 }, () => {});
  • 发起网络请求
    src/learning/ui-service.mjs:128
    const response = await fetch(`http://127.0.0.1:${port}/api/openquantum/status`, { signal: AbortSignal.timeout(3000) });
  • 写入本地文件
    src/learning/ui-service.mjs:165
    await mkdir(path.join(root, ".openquantum/learning"), { recursive: true });
  • 写入本地文件
    src/learning/ui-service.mjs:171
    owned.gateway = await createModelGateway({ llm, selection, attachments, record: (value) => appendFile(path.join(root, ".openquantum/learning/model-req
  • 写入本地文件
    src/learning/ui-service.mjs:178
    const log = createWriteStream(path.join(root, ".openquantum/learning/openmaic-ui.log"), { flags: "a", mode: 0o600 });
  • 执行外部命令来自配置/变量
    src/learning/ui-service.mjs:204
    child = fork(fileURLToPath(new URL("./ui-worker.mjs", import.meta.url)), [], { execPath: nodeExecutable, execArgv: [], cwd: directory, env, detached:
  • 执行外部命令固定命令
    src/learning/ui-worker.mjs:14
    execFile("taskkill", ["/PID", String(child.pid), "/T", "/F"], { windowsHide: true, timeout: 5000 }, () => {
  • 执行外部命令来自配置/变量
    src/learning/ui-worker.mjs:48
    child = spawn(process.execPath, [path.join(directory, "node_modules/next/dist/bin/next"), "dev", "--hostname", "127.0.0.1", "--port", String(port)], {
  • 读取本地文件
    src/lib/bounded-science-mcp.mjs:60
    const dependencyLockSha256 = sha256(await readFile(path.join(skillRoot, lockFile)));
  • 执行外部命令来自配置/变量
    src/lib/installed-python.mjs:5
    const check = spawnSync(python, ["-I", "-B", fileURLToPath(new URL("./check_python_install.py", import.meta.url))], {
  • 执行外部命令来自配置/变量
    src/lib/local-json-process.mjs:50
    const child = spawn(command, args, {
  • 读取本地文件
    src/lib/prepared-python.mjs:17
    const lock = createHash("sha256").update(await readFile(path.join(skillRoot, "uv.lock"))).digest("hex");
  • 读取本地文件
    src/lib/prepared-python.mjs:19
    const marker = await readFile(path.join(directory, "openquantum-lock.sha256"), "utf8").catch(() => "");
  • 读取本地文件
    src/lib/prepared-python.mjs:21
    await access(command, process.platform === "win32" ? constants.F_OK : constants.X_OK).catch(() => { throw new Error(`Prepared Python missing or not ex
  • 执行外部命令来自配置/变量
    src/lib/sdk-source.mjs:8
    const result = spawnSync(command, args, { cwd, stdio: capture ? "pipe" : "inherit", encoding: "utf8", timeout: 1_800_000 });
  • 执行外部命令来自配置/变量
    src/lib/setup-process.mjs:8
    const child = spawn(command, args, { cwd, env, stdio: capture ? ["ignore", "pipe", "pipe"] : "inherit", detached: process.platform !== "win32", window
  • 执行外部命令固定命令
    src/lib/setup-process.mjs:13
    const killer = spawn("taskkill", ["/PID", String(child.pid), "/T", "/F"], { stdio: "ignore", windowsHide: true });
  • 读取本地文件
    src/metriq-data/index.mjs:5
    export const SOURCE = Object.freeze(JSON.parse(readFileSync(new URL("./upstream/source.json", import.meta.url), "utf8")));
  • 读取本地文件
    src/metriq-data/index.mjs:6
    const bytes = readFileSync(new URL("./upstream/snapshot.json", import.meta.url));
  • 读取本地文件
    src/settings/component-directory.mjs:21
    try { return parse(await readFile(filename, "utf8"), { strict: true, uniqueKeys: true }); }
  • 读取本地文件
    src/settings/component-directory.mjs:29
    const entries = await readdir(root, { withFileTypes: true });
  • 读取本地文件
    src/settings/component-directory.mjs:34
    const raw = await readFile(path.join(directory, "SKILL.md"), "utf8");
  • 读取本地文件
    src/updates/service.mjs:25
    if ((await stat(statePath)).size > MAX_MANIFEST_BYTES) throw new Error("Oversized update state");
  • 读取本地文件
    src/updates/service.mjs:26
    const saved = JSON.parse(await readFile(statePath, "utf8"));
  • 写入本地文件
    src/updates/service.mjs:59
    await mkdir(path.dirname(statePath), { recursive: true });
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh@deepseek-ai/dsh-acp@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-cordis-host-runner@deepseek-ai/dsh-credentials@deepseek-ai/dsh-mcp-client@deepseek-ai/dsh-agent-presets
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 开源量子智能体工作台
  • 桌面客户端与WebUI

开源量子智能体工作台,带桌面客户端、Web UI、消息、Qiskit/MCP 工具和科学验证

README

由 DeepSeek 最新模型翻译生成
简体中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Português · Русский · العربية OpenQuantum,共建可信的量子科研智能。 把量子科研的专业积累,汇聚到一个 OpenQuantum OpenQuantum 是开源开放的量子科研 AI 平台,连接开源社区的优秀软件、算法与公开研究成果,让 AI 围绕你的研究问题开展分析、选择方法、执行计算并核对结果,把专业积累转化为实际的科研能力。 从一个研究问题、一篇论文或一段现有程序出发,让 AI 参与科研探索。保留程序、参数与核对记录,让一次研究成为下一次的起点。 OpenQuantum 的核心是一套通用量子科研插件,由 Skills、Tools 和 MCP Server 组成;再通过适配器接入不同 Harness。选择适合你的安装入口,两者复用同一份领域能力:Codex 插件 将量子 Skill 与科学 Tool 接入 Codex 原生对话,侧边入口用于管理能力开关、MCP 连接和 Token;Desktop 是简洁的个人 Harness,保留对话、工作区、文件、工具执行和历史,模型服务可自行配置。
展开完整文档(README 剩余 1 节)
简体中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Português · Русский · العربية

OpenQuantum,共建可信的量子科研智能。
把量子科研的专业积累,汇聚到一个 OpenQuantum

OpenQuantum 是开源开放的量子科研 AI 平台,连接开源社区的优秀软件、算法与公开研究成果,让 AI 围绕你的研究问题开展分析、选择方法、执行计算并核对结果,把专业积累转化为实际的科研能力。

从一个研究问题、一篇论文或一段现有程序出发,让 AI 参与科研探索。保留程序、参数与核对记录,让一次研究成为下一次的起点。

OpenQuantum 的核心是一套通用量子科研插件,由 Skills、Tools 和 MCP Server 组成;再通过适配器接入不同 Harness。选择适合你的安装入口,两者复用同一份领域能力:Codex 插件 将量子 Skill 与科学 Tool 接入 Codex 原生对话,侧边入口用于管理能力开关、MCP 连接和 Token;Desktop 是简洁的个人 Harness,保留对话、工作区、文件、工具执行和历史,模型服务可自行配置。

安装 Codex 插件 · 安装 Desktop · 先看计算与结果 · 访问官网

先看实测案例:PennyLane Pauli 对易子计算完整调用提速 5.09 倍;QuTiP Wigner 函数计算完整调用提速 5.69 倍,均保留性能对照、结果核对与复跑记录。

Desktop 0.8.8:Mac Apple Silicon 独立安装包 · Codex 插件 0.8.4:下载与发布说明。以各 Release 附件为准。

- 更容易找到能力: Tools、MCP、Skills 按 8 类用途分组,支持搜索和状态筛选。
- 简洁个人桌面: Mac Apple Silicon 的 OpenQuantum.app 自带运行环境;设置包含通用、模型与 OpenQuantum 插件。插件页沿用首页、Skills、MCP 三栏,展开卡片配置环境、账户与工具限制。

为什么选择 ·优化实测 ·浏览能力 · Codex 插件 ·开始使用 ·使用与结果 ·开发与扩展 ·路线与 RSI ·参与建设 ·开源生态

早期版本界面参考;0.8.8 简洁版已收拢侧栏和设置。在设置中添加自己的模型服务,即可开始新会话。

查看 Tools、MCP、Skills 的分类设置

按用途展开所需分组,再用搜索或启用状态缩小范围。Tools 用于查看可调用的动作,MCP 用于管理服务连接,Skills 用于选择任务方法与指南。

Desktop 中按用途分组的 MCP 连接、搜索和状态筛选

图为 2026-10-13 在原版客户端中验证分类功能时的实际界面,截图来源见图片说明。配置启用不代表服务已经在线。

为什么选择 OpenQuantum

覆盖广,让研究思路有路可走

从量子算法与线路模拟,到量子化学、多体计算和量子纠错,持续拓展专业方向,打通工具与方法之间的衔接。让研究者少花时间准备工具,多花时间探索问题。Qiskit、PennyLane、QuTiP、PyZX、TeNPy、Stim / PyMatching 等社区项目,为这些研究方向提供专业积累。

计算快,让更多想法得到验证

持续优化关键计算环节,缩短等待,支持更多比较与尝试。在针对性优化案例中,PennyLane Pauli 对易子计算与 QuTiP Wigner 函数计算的完整调用,分别实现了 5.09 倍和 5.69 倍加速,结果均经过原库对照与独立参考计算核对。

开放共建,让科研能力不断向前

持续引入有价值的开源项目与论文方法,在适配、优化和实际使用中共同改进。OpenQuantum 围绕这些成果建设 Agent 工作流、计算接口与验证记录,让新的工具、方法与经验成为平台继续生长的力量。欢迎所有人参与建设,一起把社区的专业积累建设成研究者用得上、能检验、愿意信赖的量子科研智能。

从你的工作开始

| 你的工作 | 核心难点 | OpenQuantum 的价值 |
| 科研与算法研究 | 验证一个新想法,常要反复实现方法、寻找对照、核对结果。 | 从算法示例与专业 SDK 起步,改输入、做对照,结合已支持的独立检查,留下可复用的程序与结果。见计算与结果。 |
| 应用与 Agent 开发 | 想在现有应用中加入量子计算,还缺专业方法与可用的调用路径。 | 接入已有 Skill、Tool 与原生 SDK,让应用使用专业软件,并保留自己的界面与流程。见开发与扩展。 |
| 行业研发与技术评估 | 有了应用方向,还需要依据来选择计算方法、估算资源、确定研发路线。 | 从已支持的任务做初步对照,查看方法条件、资源假设与结果来源,为后续研究准备依据。见参考资料与选型。 |
| 教学与课程建设 | 想把抽象概念变成学生能动手的课程,材料、实验与课件却分散。 | 用开源算例设计实验,借量子学习通组织材料与课件。教学功能与课程建设进度见量子学习通。 |
| 学习与动手探索 | 概念读懂了,还不知道怎样运行算法、调整输入、解释结果。 | 运行示例、修改参数,结合指南与可用参考结果,理解方法为什么适用、有什么限制。见算法学习与方法比较。 |
| 研究软件与生态建设 | 已有论文方法、研究代码或 SDK,还需要工作流、接口与示例,让别人用起来。 | 将方法整理为 Skill、需要执行的动作接为 Tool,或接入完整应用;保留来源与贡献归属,让他人继续使用和扩展。见能力接入。 |

开源:把能力掌握在自己手中

你可以查看平台与接入代码,了解方法的来源,按相应许可修改、部署和维护自己的工具组合。模型服务与计算后端可以按需选择,研究数据是否共享也由你决定。作者、许可证和贡献归属继续保留,让已有工作能够随项目延续。

全面:让一个问题有更多方法可选

OpenQuantum 汇聚算法、编译、仿真、量子信息、化学与多体、优化、纠错、动力学、控制和网络等方向的软件与研究方法。从指南与开源示例,到原生 SDK 和计算 Tool,你可以按任务选择所需能力,也可以组合工具、设计新的对照。各能力的输入、准备条件与支持范围见能力目录。

例如,分别用 PyZX 做电路优化、QCEC 检查等价性,再用噪声模拟研究含噪表现,可以围绕“电路更简洁,结果是否更好”设计对照。跨工具组合还需要核对模型、单位、位序和预算,当前范围见计算与资源配置。

让 AI 用上专业科研能力

Agent 可以帮你阅读材料、编写程序和调用工具。安装 OpenQuantum 后,你可以围绕已支持的任务,按需要准备依赖和服务配置,让 AI 用上量子领域的方法与计算能力。Skill 说明方法与步骤,Tool 执行具体动作,原生 SDK 也可通过宿主代码工具使用。

记录程序、结果与适用的检查,让后续工作有据可循。有依据的负结果也值得保留,帮助判断方法何时适用、何时需要换一条路线。程序故障与科学结果要分别看待;相关记录可以用于复核与复用,科学判断仍由使用者负责。

把开源库与论文方法变成可用的 Agent 能力,支撑着平台的持续建设。 为此,我们梳理方法、编写工作流、接入软件,并保留来源与使用条件。你也可以把自己的方法、程序或完整应用接进来,让一次开发成为更多人的起点。

这些积累也为下一轮研究能力的改进提供基础,相关方向与进度在长期规划中说明。

先运行一个任务 · 把你的能力接进来

快速开始

选择适合自己的入口。本页的能力说明对应源码主线;已发布安装包的功能与验证范围以各自 Release 为准。

| 你想怎样使用 | 安装入口 | 适用范围 |
| 在 Codex 原生聊天中使用量子能力 | Codex 插件 0.8.4 | 需要支持插件的 Codex、Node.js 24+ 和 npm |
| 使用独立桌面应用 | Desktop 0.8.8 | macOS Apple Silicon;自带 Node / uv 与运行依赖 |
| 使用主线能力或参与开发 | 从源码运行 | Git、Node.js 24;计算环境按任务准备 |

Codex 插件

让 Codex 帮你安装: 新建聊天,复制下面的请求:

请帮我安装 OpenQuantum Codex 插件 0.8.4。先阅读安装指南: https://github.com/xi-zhao/OpenQuantum/blob/codex-v0.8.4/docs/integrations/CODEX_AGENT_INSTALL.md 从 https://github.com/xi-zhao/OpenQuantum/releases/tag/codex-v0.8.4 下载完整安装包与 SHA256SUMS,核对摘要后,检查 Codex、Node.js 24+ 和 npm,使用包内安装器完成安装。
请保留已有插件和用户配置,核对 Skills、MCP 工具和左侧全局“OpenQuantum 设置”入口。
需要我重载应用时,告诉我具体操作。最后报告实际验证的结果,以及仍需准备的科学计算依赖。

安装后按提示重载 Codex,在新聊天中直接提出量子任务;通过 OpenQuantum 设置页管理能力和连接。科学计算依赖按需准备,插件安装本身不表示所有 SDK 已就绪。

完整安装包与校验摘要 · 手动安装与故障处理 · 插件功能与宿主边界

桌面安装包

Mac Apple Silicon 下载 OpenQuantum 0.8.8 DMG,按 SHA256SUMS 核对摘要后,将 OpenQuantum.app 拖入「应用程序」。模型服务在「设置 → 模型」中配置。

安装包采用 ad-hoc 本地签名,尚无 Apple 分发签名或公证;首次打开、升级备份与数据保留见安装说明。Intel Mac 与 Windows 暂使用 0.8.4 能力包及其配套说明,或选择源码路径。

从源码运行

git clone https://github.com/xi-zhao/openQuantum.git
cd openQuantum
npm ci
npm run dev

打开启动日志中带登录令牌的本机地址,认证后进入工作台。

在「设置 → 模型」添加服务地址、模型名称和 API Key。智能体执行任务需要模型支持 Tool Calling;模型凭据与量子云凭据分别配置。无需模型密钥也可以先运行下方的固定本地案例。

可选入口:源码桌面、学习通与消息渠道

| 入口 | 源码目录中的准备 / 启动命令 | 详细说明 |
| 桌面客户端 | npm run desktop:setup → npm run desktop:verify-install → npm run desktop -- --source | 源码构建与运行条件 |
| 量子学习通 | npm run learning:ui:setup | 教学应用、启动与数据备份 |
| 微信、飞书等消息渠道 | npm run cc-connect:setup | 渠道连接与凭据配置 |

源码桌面另需 Corepack 与系统 C++ 构建工具。Web 与源码 Desktop 共用本机 Home,切换入口前先退出正在运行的进程。各入口的完整步骤以对应文档为准。

模型与部署配置 · 按需准备计算环境 · 升级与数据保留 · 故障排查

可以用它做什么

按任务选择能力,使用既有计算入口,或通过 SDK 工作台编写自己的研究程序。

| 研究任务 | 代表能力与使用入口 | 需要核对的边界 |
| 学习算法、比较方法 | 49 项可执行示例:QFT、HHL、VQE、QAOA、QSP、态制备等 | 默认输入用于教学;实际误差、收敛和方法适用条件逐项检查 |
| 电路编译、仿真与信息分析 | Qiskit、PennyLane、PyZX、Graphix、QCEC、密度矩阵审计;任务与接口 | 门集、位序、噪声模型与等价性检查范围 |
| 基态、化学与多体计算 | VQE、SQD、TeNPy、OpenFermion;方法选择 | 活性空间、粒子扇区、收敛和独立参考 |
| 误差缓解与量子纠错 | Mitiq、Stim / PyMatching、LDPC、Chromobius;纠错能力 | 采样预算、统计误差及解码器的适用模型 |
| 检查 detector error model | emlint:结构诊断、反例及不完整检查状态 | 保留告警、跳过项和缺失上下文;不证明码距或解码正确性 |
| 动力学与实验模拟 | Trotter / qDrift、Dynamiqs、OQuPy、Bloqade、Pulser、PairInteraction;模拟与硬件入口 | 单位、截断、时间步长;模拟与真实设备操作分别说明 |
| 光子计算与量子网络 | Perceval、Piquasso、Lightworks、SimQN、NetQASM;使用范围 | 后端、损耗模型、采样与网络协议 |
| 形式化数学与物理命题 | Lean 4、mathlib、physlib:复用定理、检查证明与依赖公理 | 证明只覆盖文件中的定义、假设和公理,不证明物理模型真实 |
| 查询方法与公开基准 | Quantum-Practices 与 Metriq | 固定资料和历史记录,不代表当前设备性能 |
| 组织教学材料与课堂 | 量子学习通 / OpenMAIC:材料、课件、测验与课堂 | 完整课程体系仍在建设,真实在线 AI 教学流程尚未完整验收 |

当前源码分发 186 个内置 Skill、91 个 MCP 服务连接、5 个原生量子 Tool,并为 114 个 SDK/源码环境提供原生 API 使用路径。清单数量、配置启用、环境就绪与科学验收是不同状态;每项能力按需准备,平台、账户和许可限制见对应说明。

完整 Skill 目录 · MCP 服务及默认开关 · 原生 Tool 与副作用 · SDK API 与逐库验证 · 相近方法怎么选

跑通第一个任务

无需模型密钥:复算基态案例

完成源码的 npm ci 后,运行固定二量子位 VQE 案例,并与独立参考比较:

npm run demo:quantum-ground-state

该命令给出本地计算及逐项检查;完整科学验收还需要会话来源和可重读的验收报告。输入、历史结果与验证边界均已保留。

让 Agent 执行:Bell 态采样

在源码目录先显式准备 FatQat 的固定环境(需要 uv),再在已配置模型的工作台中发起任务:

node scripts/setup-paper-tools.mjs fatqat-workbench

用 FatQat 从双量子位全零态出发,对 q0 施加 H,再以 q0 为控制位、q1 为目标位施加 CX。返回无噪声精确概率,并用 1024 次采样、seed=7 比较频数。

理想概率是 00、11 各 50%,有限采样会波动。查看实际 Tool 调用、输入和输出,再调整参数比较结果。完整说明与更多可复制任务 · 直接运行 HHL 等算法示例

使用与结果

日常使用遵循 发现 → 准备 → 执行:先查能力和条件,再为所选 SDK 准备依赖与连接,最后执行计算。环境缺失时按提示准备;计算调用本身不隐式安装本地科学依赖。

- 看实际执行记录。 配置启用和模型的文字回复,不能替代 Tool 调用、程序与结果文件。
- 分清检查范围。 工程 CI、数值参考对照、形式证明和科学验收分别说明。只有支持完整证据链的能力,才能按相应合同产生科学验收结论。
- 保留可复算材料。 记录输入、单位、随机种子、依赖版本、程序、结果和检查状态,也保留失败与负结果。
- 按需连接外部资源。 本地数值计算无需量子云账户;真实硬件和付费服务需要另行配置凭据、权限及额度。

结果与证据说明 · 能力与宿主边界 · 常见问题

实测案例

针对固定科研计算的优化,公开完整调用计时、输出和独立参考检查,便于复跑与评估。

| 计算任务 | 原实现 → 优化后 | 测量条件与证据 |
| PennyLane Pauli 对易子 | 30.62 ms → 6.02 ms(5.09 倍) | 32 量子位局域模型;Apple M4、PennyLane 0.45.1、9 轮热运行中位数;程序、原始计时与独立核验 |
| QuTiP Wigner 函数 | 171.77 ms → 30.18 ms(5.69 倍) | 64 维 Fock 空间、201×201 网格;Apple M4、QuTiP 5.3.1、单线程、9 轮热运行中位数;程序、原始计时与独立核验 |

两项计时包含输入输出转换,不含环境准备与编译;收益限于各报告定义的任务与条件,不能推广为所有量子计算的加速比。

开发与贡献

优先复用社区已有实现,让研究方法进入共享插件,再适配 DSH、Codex 等宿主。共享实现只维护一份,不新增通用 Agent Runtime。

| 你想贡献什么 | 从哪里开始 |
| 领域方法、操作步骤或工具选择 | 编写 Skill;贡献指南与现有 Skill |
| 计算、查询或设备动作 | 按边界选择原生 Tool Provider 或 MCP Server;扩展模型 |
| 科学检查与验收 | 使用 Validator、科学合同与相应证据链;四条贡献路径 |
| 应用、课程或可复算案例 | 说明用户任务、输入输出、来源、许可与验证范围;GitHub Issues |

按改动选择检查;全仓质量入口为 npm run check,具体数值与宿主验证见开发验证示例。新增能力需同步本页的任务说明与使用入口;逐项接口、依赖和验证细节放入能力参考及对应接入文档。

长期方向包括专业软件接入、量子与经典计算协同、教学应用和经验证的研究能力改进。完整 RSI 闭环尚未实现;愿景、评估条件与权限边界见长期发展规划。

文档导航

| 想查什么 | 文档 |
| 安装、部署、升级与故障 | Desktop · Codex · 部署 · 升级 · 排障 |
| 能力、接口、SDK 与准备条件 | 能力参考 · 完整 SDK · 环境准备 |
| 任务、结果与验证命令 | 任务示例 · 算法示例 |
| 架构、代码归属与贡献规则 | 文档总入口 · 全项目架构图 · 贡献指南 |
| 版本变化与长期方向 | GitHub Releases · 长期规划 |
| 界面与截图来源 | 图片说明 |

开源生态与许可

OpenQuantum 建立在量子开源社区和宿主平台的工作之上,保留原作者、项目来源与贡献归属。上游项目及适配关系与 THIRD_PARTY_NOTICES.md 集中列出来源和许可。

自有代码除单独声明的目录外采用 MIT License,© 2026 Xi Zhao。Mitiq 能力目录采用 GPL-3.0-only,Metriq 数据快照采用 CC-BY-4.0;对应 NOTICE 与发行约束继续适用。

欢迎贡献问题、代码、教学材料和复现记录。只分享已获授权的内容,安全问题按安全政策私密报告。

OpenQuantum · 量子计算,就在指尖。
预览分享卡片长什么样 ↓xi-zhao/OpenQuantum
分享 · DeepSeek Harness Hub
xi-zhao/OpenQuantum

简体中文 · English · 日本語 · 한국어 · Español · Français · Deutsch ·…

回到顶部