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

自主科研流水线 ZJU-REAL/Polaris

DeepSeek Harnessv1.2.1
ZJU-REAL24 天前有提交已提供中文文档扫描:含敏感能力

自主、端到端的 AI 科研:从文献一路做到评审过的论文。

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZJU-REAL/Polaris
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✓npm 包polaris @ 1.2.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 09:39:40

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 45 处,展示前 35 条)
  • 发起网络请求
    integrations/deepseek-harness/src/client.ts:47
    const response = await this.request(
  • 发起网络请求
    integrations/deepseek-harness/src/client.ts:65
    const response = await this.request(
  • 发起网络请求
    integrations/deepseek-harness/src/client.ts:88
    const response = await this.request(
  • 发起网络请求
    integrations/deepseek-harness/src/client.ts:111
    return await fetch(new URL(path, this.baseUrl), {
  • 执行外部命令固定命令
    src/desktop/build/after-pack.cjs:31
    execFileSync('codesign', ['--force', '--deep', '--sign', '-', appPath], {
  • 执行外部命令固定命令
    src/desktop/build/after-pack.cjs:35
    execFileSync('codesign', ['--verify', '--deep', appPath], { stdio: 'inherit' });
  • 执行外部命令来自配置/变量
    src/desktop/src/bootstrap-smoke.ts:77
    const child = spawn(config.command[0]!, config.command.slice(1), {
  • 发起网络请求
    src/desktop/src/bootstrap-smoke.ts:101
    const res = await fetch(`${baseUrl}/api/health`);
  • 执行外部命令来自配置/变量
    src/desktop/src/bootstrap-smoke.ts:129
    const child = spawn(python, ['-X', 'utf8', '-c', code], {
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:161
    mkdirSync(join(oldDir, 'papers'), { recursive: true });
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:162
    writeFileSync(join(oldDir, 'papers', 'a.pdf'), 'pdf-bytes');
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:166
    if (readFileSync(join(newDir, 'papers', 'a.pdf'), 'utf8') !== 'pdf-bytes') {
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:169
    if (existsSync(oldDir)) {
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:174
    mkdirSync(oldDir, { recursive: true });
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:175
    writeFileSync(join(oldDir, 'stale.txt'), 'stale');
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:179
    if (!existsSync(join(oldDir, 'stale.txt'))) {
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:182
    if (existsSync(join(newDir, 'stale.txt')) || existsSync(join(newDir, 'data'))) {
  • 删除本地文件递归
    src/desktop/src/bootstrap-smoke.ts:187
    await rm(oldDir, { recursive: true, force: true });
  • 删除本地文件递归
    src/desktop/src/bootstrap-smoke.ts:188
    await rm(newDir, { recursive: true, force: true });
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:189
    if ((await runPython(python, code, env)) !== 0 || !existsSync(newDir)) {
  • 删除本地文件递归
    src/desktop/src/bootstrap-smoke.ts:194
    await rm(dir, { recursive: true, force: true });
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:209
    writeFileSync(db, 'original-db');
  • 写入本地文件
    src/desktop/src/bootstrap-smoke.ts:210
    writeFileSync(`${db}-wal`, 'original-wal');
  • 读取本地文件
    src/desktop/src/bootstrap-smoke.ts:218
    if (readFileSync(db, 'utf8') !== 'original-db') {
  • 删除本地文件递归
    src/desktop/src/bootstrap-smoke.ts:241
    await rm(dir, { recursive: true, force: true });
  • 删除本地文件递归
    src/desktop/src/bootstrap-smoke.ts:348
    await rm(dataDir, { recursive: true, force: true });
  • 发起网络请求
    src/frontend/src/lib/api.ts:73
    const res = await fetch(`${apiBase()}${path}`, { ...init, headers });
  • 发起网络请求
    src/frontend/src/lib/api.ts:94
    const res = await fetch(`${apiBase()}${path}`, { ...init, headers });
  • 发起网络请求
    src/frontend/src/lib/api.ts:110
    const res = await fetch(apiResourceUrl(url), { headers });
  • 发起网络请求
    src/frontend/src/lib/api.ts:122
    const res = await fetch(`${apiBase()}${path}`, { ...init, headers });
  • 发起网络请求
    src/frontend/src/lib/api.ts:4966
    const res = await fetch(`${apiBase()}/manuscripts/${id}/export/arxiv`, { headers });
  • 写入剪贴板
    src/frontend/src/lib/clipboard.ts:12
    await navigator.clipboard.writeText(text);
  • 发起网络请求
    src/frontend/src/lib/local-session.ts:28
    const res = await fetch(`${apiBase()}/auth/local-session`, { method: 'POST', headers });
  • 发起网络请求
    src/frontend/src/lib/sse.ts:83
    const res = await fetch(`${apiBase()}${path}`, { headers, signal: ctrl.signal });
  • 发起网络请求
    src/frontend/src/lib/sse.ts:139
    const res = await fetch(`${apiBase()}${path}`, {
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 端到端科研流程
  • 文献到论文
  • 自主科学发现

迈向自主科学发现

README

由 DeepSeek 最新模型翻译生成
自主、端到端的 AI 科研:从文献一路做到评审过的论文。 由一个长时运行的智能体内核驱动,它自己规划、自己执行、自己验证,把每一项任务都变成可恢复、可审计、由人工把关的运行。 English · 简体中文 Polaris 把完整的科研生命周期做进一个桌面应用:文献调研、想法生成、想法评审、在真实 GPU 服务器上做实验、LaTeX 论文写作,以及论文评审。它是给一个研究者在自己电脑上用的——所有东西都在本地运行,不需要架服务器;并且把每一项长任务都当作一次 Voyage——一次被持久化、可恢复、由人工把关的智能体运行,可以横跨数小时甚至数天而不丢状态(界面上就叫「任务」)。 [!NOTE] Polaris 不是套壳聊天机器人。重活(抓取、解析、去重、指标解析、引文匹配)都是确定性代码,大模型只留给需要判断的地方:打分、综合、起草和评审。这样的分工让每次运行都更便宜、可复现、可审计。 演示 一段 2 分钟的平台导览:六阶段流水线、Voyage 智能体内核、一次真实的实验运行,以及 PolarisBuddy。
展开完整文档(README 剩余 1 节)
自主、端到端的 AI 科研:从文献一路做到评审过的论文。
由一个长时运行的智能体内核驱动,它自己规划、自己执行、自己验证,把每一项任务都变成可恢复、可审计、由人工把关的运行。

English · 简体中文

Polaris 把完整的科研生命周期做进一个桌面应用:文献调研、想法生成、想法评审、在真实 GPU 服务器上做实验、LaTeX 论文写作,以及论文评审。它是给一个研究者在自己电脑上用的——所有东西都在本地运行,不需要架服务器;并且把每一项长任务都当作一次 Voyage——一次被持久化、可恢复、由人工把关的智能体运行,可以横跨数小时甚至数天而不丢状态(界面上就叫「任务」)。

[!NOTE]
Polaris 不是套壳聊天机器人。重活(抓取、解析、去重、指标解析、引文匹配)都是确定性代码,大模型只留给需要判断的地方:打分、综合、起草和评审。这样的分工让每次运行都更便宜、可复现、可审计。

演示

一段 2 分钟的平台导览:六阶段流水线、Voyage 智能体内核、一次真实的实验运行,以及 PolarisBuddy。

https://github.com/user-attachments/assets/388972c1-7ffa-45f2-94c4-07f388379ba2

在线试用

有一个跑在旧版网页实例上的访客账号可以随便逛(该实例已冻结,新版本只发布桌面版):在 <http://101.37.174.109:8080> 用用户名 guest、密码 zjuguest123 登录。

该账号仅用于演示:它是只读的,且不能调用任何模型。 它能走到每一个页面,包括管理端视图,但它做的任何事都不会改变状态——新建、编辑、删除和上传一律被拒绝,也不会触发任何 LLM 调用,无论来自对话、编译还是助手。它的作用是展示平台长什么样,而不是在上面干活。

科研流水线

Polaris 把科研建模成六个阶段。每个阶段都产出可留存的产物供下一阶段消费,而每一次交接都可以停下来等人工审批。

flowchart LR
L["文献Research Wiki"]
I["想法Idea Forge"]
R["想法评审Elo 辩论"]
X["实验GPU / SSH"]
W["论文写作LaTeX"]
V["论文评审引文核查"]
S(["投稿"])

L --> I --> R
R -->|晋级审批| X
X --> W --> V
V -->|投稿审批| S

classDef stage fill:#eaf1ff,stroke:#2f6bff,stroke-width:1px,color:#10233f;
classDef gate fill:#fff3e0,stroke:#f59e0b,stroke-width:1px,color:#5b3b00;
class L,I,R,X,W,V stage;
class S gate;

| 阶段 | Polaris 实际做的事 |
| 文献 | Research Wiki 从 OpenAlex、Semantic Scholar 和 arXiv 摄入论文。冷启动时以锚点论文为起点滚雪球式扩展引用网络,按方向库的收录配置(方向陈述、目标、范围与排除项,由一场结构化 AI 访谈写成)打分筛选相关性,再抽取全文(PyMuPDF)并编译成互相链接的 wiki 页面(TL;DR、方法、可复用的点子、概念反向链接)。一篇论文只有一份解读,全平台共享:编译时不带任何库的方向陈述或 rubric,所以同一篇论文不会因为你从哪儿点进去而读到不同内容;一个概念要有两篇论文引用才会被提升为正式概念。arXiv 新论文统一从每日新论文流进来,它是各文献库同步的唯一入口;支持带水位线断点续传的增量同步、研究摘要,以及 Obsidian 库同步。 |
| 想法 | Idea Forge 在知识库上做多信号缺口分析(概念共现的空洞、从论文中抽取的局限、趋势速度、综述空白),以此驱动带检索规划的想法生成。想法会在四个维度上打分(新颖性、可行性、可操作性、影响力),做语义去重,汇入候选池。随后一个深度 Research Proposal 构建器用「规划—执行—验证」循环把胜出的想法夯实。 |
| 想法评审 | 可配置人设的评审智能体两两辩论;由一个裁判产出 Elo 锦标赛排名。实验室成员可通过 WebSocket 实时加入讨论,他们的意见会作为一等输入进入智能体上下文。 |
| 实验 | Experiment Lab 使用按用户隔离、经 Fernet 加密的 SSH 凭据连接实验室的 GPU 服务器。一次实验 Voyage 会先做摸底提问,然后规划研究方案、通过算力预算校验、编写代码、跑冒烟测试、启动运行并流式输出日志与实时指标曲线,接着自动迭代:解析指标、反思,再决定改进、调试还是停止——修复失败靠的是时间预算,而不是固定的重试次数。它还有一份跨步骤读写的文件式记忆;真卡住时它会向你提问,而不是直接失败。控制台为每次运行提供任务图和一个可以边跑边对话的终端。图表会被生成并交由 VLM 检查。 |
| 论文写作 | Paper Writer 打开一个多文件 LaTeX 项目(NeurIPS、ICLR、ACL 模板),配 CodeMirror 6 编辑器、实时协同编辑(CRDT),以及本地 tectonic 编译出的实时 PDF 预览。智能体逐节起草,但实验数字只能来自真实的 ExperimentRun 指标,引文也必须能对应到真实的知识库条目。一键刷新参考文献,并把 bibliography 接进主 TeX 文件。 |
| 论文评审 | 逐条引文核查(存在性:精确、轻微偏差或伪造;支撑度:支撑、部分支撑或不支撑),外加把每一个数字与实验记录做确定性事实核对,然后由多视角的顶会评审智能体给出意见并汇总成 meta-review。只要出现一条伪造引文,就直接判为不通过。 |

Voyage 智能体内核

科研任务天然就是长时任务:一次冷启动的文献回填要几个小时,一次实验要跑好几天。Polaris 的核心抽象是:每一个复杂任务都是一次 Voyage——由一个被持久化的三段式循环驱动的、可恢复、可审计的运行。

| 组件 | 职责 |
| Navigator(领航员) | 规划。把目标拆解成带子目标、依赖和预算的步骤计划。在循环模式下,它会随着证据到来增量地修改计划,而不是推倒重来。 |
| Helm(舵手) | 执行。执行单个步骤(LLM 调用、工具调用、SSH 远程操作、文献 API 查询)并返回一条观测。 |
| Sextant(六分仪) | 自验证。按结构化的验收标准检查每一步(退出码、产物是否存在、schema 是否合法、指标阈值、数量、LLM 量规)。确定性检查先跑;失败会把诊断信息回喂给 Navigator,反复失败则转交人工处理。 |

[!IMPORTANT]
一次 Voyage 背后是一个持久化状态机(planning -> executing -> verifying -> ...)。如果应用在运行中途退出或崩溃,Voyage 会在健康检查后从上一个检查点继续。预算挂在这次运行上,超出即自动暂停;每一份计划、每一个动作、每一条判定都会被保留,并可在界面上回放。

不是每个任务都需要完整的认知循环。一个共享的 Runtime 外壳(状态机、检查点、人工审批、预算、取消、事件流)服务于所有任务类型,而 Brain(完整的「规划—执行—验证」循环)只在实验这类开放式任务上启用。可预测的流水线(wiki 编译、想法评审、论文起草)跑固定模板,而不是被过度编排。

核心特性

- Research Wiki,「编译,而非检索」。 由大模型先把论文读完并编译成一个持久、互链的知识库,而不是在查询时才做即时 RAG。一篇论文一份解读,全平台共享。支持研究摘要,以及带
[[wikilinks]] 和 frontmatter 的 Obsidian 库同步。
- 一个内容池,四种集合。 每篇论文只存一份;方向库、课题书架、个人库和每日新论文流都是长在这个池子上的成员关系层。文献库已与课题解耦(多对多),自己持有收录配置,并配有治理机制:策展人、月度预算、重复合并、用户建库 + 管理员审批,以及一个不会污染搜索结果的回收站。
- 每日 arXiv 新论文流。 每天的新论文,可点赞,也可一键收藏进你的任何一个文献库。它同时是 arXiv 的唯一入口:各文献库从这个池子同步,而不是自己去查 arXiv,抓取时刻由管理员配置。
- Idea Forge。 信号驱动的缺口分析、四维打分、语义去重,以及一个会对照本地文献库和外部来源二次核查新颖性的深度 Research Proposal 构建器。
- 多智能体 + 人类评审。 人设化的评审智能体辩论出 Elo 排名;人可以实时加入,其意见被注入智能体上下文,而不是事后再拼接上去。
- 通过 SSH 的 Experiment Lab。 智能体在真实 GPU 服务器上写代码、跑代码、按指标迭代、收集日志和图表;远程写操作需要放行,配有命令允许/拒绝清单、完整审计,以及三重预算上限(总量、单次运行、并发)。每次运行都有跨步骤的文件式记忆,在时间预算内自我修复,卡住时会停下来向你提问而不是直接死掉;它的控制台提供任务图和一个可以边跑边对话的终端。
- Paper Writer。 在线多文件 LaTeX,支持 CRDT 协同编辑和本地 tectonic 编译;智能体起草被约束在真实指标和真实引文上,另有一键刷新参考文献并接入主 TeX 文件。
- 带引文核查的论文评审。 每一条引文的存在性与支撑度都会对照本地文献库、Semantic Scholar 和 OpenAlex 核查;所有数字都与实验记录做事实核对。
- PolarisBuddy,应用内助手。 一个跟着你逛遍每个页面的全局伙伴:在同一套只读工具层之上,跑 Claude Code 式的多轮工具循环(经 SSE 流式输出,带工具卡片和内联图表),提供 chat、plan (只调研、先给方案再动手)和 goal(朝一个目标持续循环)三种模式。它和 Voyage 用同一套 Navigator / Helm / Sextant 拆分,所以每一步是被验证过的而不只是被生成出来的,还能把活交给子智能体。它的问候语由真实的 SQL 计数拼出来而不是模型生成,它能搜索你可见的每一个文献库,并携带页面上下文和按用户持久化的记忆。账号若无权调用模型,它就不启用。
- 两层技能系统。 智能体行为以数据而非代码的形式打包。Voyage 技能是可版本化、可组合的 guidance、rubric、persona 和 workflow 包,在具名位置注入智能体提示词,全局启用,并配有「发布—审批—安装—评分」的市场;每次 Voyage 都会对其用到的技能做快照以保证可复现。Agent 技能 则采用 SKILL.md 的形状和三级渐进披露——目录里每个技能只占一行描述,正文由 skill_load 作为工具结果取回,附件按需读取——由模型自己决定加载什么,同时保住提示词前缀的缓存。
- MCP 工具层。 一个统一的只读工具注册表(文献、知识、课题状态、稿件、外部搜索),既在内部提供给智能体循环,也对外暴露为 MCP server(Streamable HTTP 和 stdio),供 Claude Code、 Codex 和 Cursor 使用,并带自检和 try-it 演练场。按课题隔离,且严格只读。
- 处处实时。 SSE 用于智能体流式输出和 Voyage 进度;WebSocket 用于评审讨论、审批通知、实验日志跟踪和协同编辑。
- 成本核算。 按调用记录 token 和成本,可归因到课题和 voyage,看得清每个任务花了多少。
- 智能体后端与模型路由。 给 Polaris 配模型最省事的办法是用你已经在用的智能体——Claude Code、 Codex、Gemini CLI 等 ACP 智能体不需要 API key 就能回答模型调用。模型 API (OpenAI 兼容、OpenAI Responses、Anthropic)是可选的。所有模型调用都走同一层;一张存在数据库里的路由表把每个科研阶段映射到某个智能体或模型,以及推理强度档位(打分用便宜模型,辩论和起草用强模型)。内置的 fake provider 必须显式开启,产品自身从不打开它。

技术栈

| 层 | 技术 |
| 桌面端 | Electron 外壳(macOS / Windows / Linux),通过 app:// 协议加载 Web 产物,并拉起本地引擎 |
| 前端 | React 18 + TypeScript 5 + Vite 5,所有服务端状态走 TanStack Query,CodeMirror 6、Yjs(CRDT)、react-pdf、KaTeX |
| 引擎 | 一个本地进程:FastAPI(全异步)+ SQLAlchemy 2 + Alembic,任务队列和定时任务都在进程内 |
| 数据 | SQLite,外加一个存 PDF、导出文件和实验日志的数据目录——都在应用的用户数据目录里 |
| 远程执行 | 用 asyncssh 连接 GPU 服务器;SSH 密钥用 Fernet 静态加密 |
| LaTeX | tectonic,或经 latexmk 调用 TeX Live——用你电脑上装了的那个 |
| 模型 | 经 ACP 接入的智能体后端(Claude Code、Codex、Gemini CLI……),或模型 API(OpenAI 兼容、OpenAI Responses、Anthropic),配数据库模型路由表 |

安装

Polaris 是 macOS、Windows 和 Linux 上的桌面应用。*安装包请到 Releases 下载——.dmg / .zip(macOS, universal)、.exe / 便携版 .zip(Windows)、.AppImage / .deb(Linux),由 CI 在每个 v tag 上构建。应用会检查更新,能不重启就直接应用。

这些构建既未签名也未公证,所以每个平台都要先告诉系统一次它是安全的:macOS 执行 xattr -dr com.apple.quarantine /Applications/Polaris.app(或右键 → 打开);Windows 在 SmartScreen 上选「更多信息 → 仍要运行」;Linux 的 AppImage 需要 libnss3 libgtk-3-0 libasound2,在 Ubuntu 24.04+ 的 AppArmor 限制下要加 --no-sandbox。

所有东西都在你自己的电脑上运行:安装包自带 Python 引擎,首次启动时自动装好本地环境(SQLite,不需要 Docker、不用登录、不填服务器地址)。首次启动要下载 Python 工具链和依赖,可能需要几分钟;之后启动不再等待。

装好后,到 设置 → 模型与智能体 给 Polaris 配一个模型。最省事的是用你已经在用的智能体:在同一台电脑上装好并登录 Claude Code、Codex 或 Gemini CLI,在 智能体后端 里添加,它就能回答所有模型调用,不需要 API key——见 Agent backends。模型 API 是可选的;想要向量嵌入和重排时再加一个。

[!NOTE]
v0.3.x 及更早的版本只是连接远程服务器的外壳,首次启动一定会要求填服务器地址,也没法自己更新成本地版。请到 Releases 下载当前的安装包,直接覆盖安装。

开发

从源码运行各部分:

make venv # 只需一次:创建 src/backend/.venv 并安装依赖
make backend-dev # 引擎,监听 :8000(SQLite,进程内队列和定时任务)
make frontend-dev # 前端开发服务器,监听 :5173

- 前端:<http://localhost:5173>
- 引擎 API 文档:<http://localhost:8000/docs>

桌面外壳:

make desktop-deps # 安装工作区依赖(只需一次)
make desktop-dev # 构建前端并启动外壳(app:// 协议)
make desktop-dist # 为当前平台打一个未签名的安装包

常用命令:

make migrate # alembic upgrade head
make test # 后端 pytest + 前端测试与构建
make lint # ruff check + tsc --noEmit
make help # 列出所有目标

详见 docs/development.md 和 docs/desktop.md。

文档

完整文档在 docs/(英文):

- Getting started:安装应用、配好模型、建第一个文献库(中文版)
- Agent backends:把 Claude Code、Codex 等 ACP 智能体当作 Polaris 的模型
- Architecture:系统设计与 Voyage 智能体内核
- Concepts:科研流水线、Voyage、技能与 MCP 工具
- Desktop:Electron 外壳——进程模型、本地引擎、IPC 约定与打包
- Configuration:环境变量与各项设置
- Development:本地开发流程与约定

仓库结构

src/
backend/ 引擎:FastAPI 应用(包名:app)与长任务函数(包名:worker) app/ api/ 轻薄的路由层 services/ 业务逻辑(摄入、wiki、想法、评审、实验、稿件……)
models/ SQLAlchemy 模型 agents/voyage/ Voyage 引擎(navigator、helm、sextant、工具循环、各领域动作) core/ 配置、数据库、进程内队列与定时任务、事件(SSE)、llm/ 抽象层 tools/, mcp/ 只读工具注册表与对外的 MCP server frontend/ React + Vite(src/features/ 下每个产品模块一个目录) desktop/ 包装 Web 产物、拉起引擎的 Electron 外壳 kernel/ 挂在桌面外壳里的插件运行时 docker/ 只用于开发/测试的引擎镜像(桌面冒烟/E2E、golden 录制)——不是部署用的 docs/ 英文项目文档

设计原则

- 严格分层。 轻薄的路由调用 service;service 承载业务逻辑,且从不导入 Web 框架;模型层在最底下。
- 确定性与判断性分离。 确定性的活(抓取、解析、去重)交给普通代码或后台任务;只有需要判断的地方才走大模型。
- 单一 LLM 边界。 所有模型调用都经过同一个抽象层,模型的选择来自数据库里的路由表,而不是硬编码。

完整设计见 docs/architecture.md。

参与贡献

见 CONTRIBUTING.md。简而言之:一个功能一个分支一个 PR,从最新的 origin/main 切出,使用英文的 conventional commit 信息,main 保持为 origin/main 的只读快进镜像。

许可证

基于 Apache License 2.0 授权。完整条款见 LICENSE。
预览分享卡片长什么样 ↓ZJU-REAL/Polaris
分享 · DeepSeek Harness Hub
ZJU-REAL/Polaris

自主、端到端的 AI 科研:从文献一路做到评审过的论文。

回到顶部