Pi-Science 将 AI 对话、科学计算、数据预览和统一记忆整合到一个本地工作台。
- 在上下文中运行分析。 在会话内核执行 Python/R 代码,与对话一起查看表格、图像和生成文件。
- 保留执行证据。 运行记录保存代码、环境版本、产物哈希和谱系,便于检查与复现结果。
- 在对话中开展研究。 Auto Research 技能指导动态子问题、独立审查和任务专属评价,保存恢复检查点,并由运行时限制工具预算。
- 检索科学来源。 内置连接器获取论文和科学数据,提供可以核对的引用元数据。
- 探索工作区文件。 原生只读工具
ls、glob、grep支持目录浏览、文件发现和文本检索,遵守.gitignore与输出上限。支持 Linux 和 macOS(需构建原生目录模块);排除隐藏、敏感、受保护和链接路径,参见工具限制与平台状态。 - 使用普通项目目录。 科研文件保存在工作区,模型请求和外部检索使用你配置的服务。
多个对话通过独立 Agent Core Worker 进程并发执行。AgentHarness 管理执行和持久会话,Pi-Science 提供科学工作区与产品界面。
- Node.js 24.16+,包含 npm。安装器自动引导仓库锁定的 pnpm 11.7.0,无需全局安装 pnpm。
- Git 用于克隆源码。Python、R 和 Micromamba 环境在使用科学计算功能时按需配置。
- 一个 LLM API Key,或已配置的 Ollama、LM Studio 等本地端点
- Windows 需要 PowerShell 5.1+
先克隆仓库:
git clone https://github.com/Garhorne0813/pi-science.git
cd pi-sciencemacOS/Linux 可一键安装并启动:
bash scripts/dev.sh也可以安装一次,再独立启动:
bash scripts/install.sh
bash scripts/start.sh原生 Windows 使用 PowerShell:
powershell -File scripts/install.ps1
powershell -File scripts/start.ps1打开 http://127.0.0.1:8787**,在 设置 → LLM 配置提供商和默认模型,再打开工作区开始对话。设置 → Skills 管理技能,设置 → MCP 启用科学连接器;初始启用 Paper Search;在设置 → 联网搜索**中配置内置网页搜索与抓取。控制面 API 位于同一端口。
Linux/WSL 需要安装 ripgrep、socat 和 bubblewrap(Debian/Ubuntu:sudo apt-get install ripgrep socat bubblewrap)。安装、启动和 pi-science doctor 都会检查这些工具,并离线验证 Bubblewrap 能否创建隔离命名空间;缺少依赖或系统禁止隔离时,会停止安装/启动并提示原因。
Linux sandbox 中的 MCP 通过受控 HTTP/HTTPS 代理访问网络,域名由宿主侧代理解析;sandbox 内不提供通用 DNS,/etc/resolv.conf 不可见或 socket.getaddrinfo() 失败不能单独说明 MCP 无法联网。内置检索工具会直接使用该代理。自定义 MCP 也需要使用支持 HTTP_PROXY/HTTPS_PROXY 的客户端;若宿主机本身无法解析域名,则需要先修复宿主机 DNS。
安装器构建控制面、Agent Worker 和前端。默认启动运行编译后的 JavaScript,由控制面在同一个端口提供前端和 API,运行时不使用 Vite 或 tsx。Bash 支持 macOS/Linux 与 WSL,原生 Windows 不需要 Git Bash;Agent Core SDK 随项目依赖安装。
安装器提供 pi-science 命令。macOS/Linux 需要将 ~/.local/bin 加入 PATH(可用 PI_SCIENCE_BIN_DIR 修改安装目录);Windows 安装更新 PATH 后请打开新终端。
pi-science 启动生产构建(端口 8787)
pi-science start --dev 启动源码和 Vite(端口 5173)
pi-science install 安装依赖并重新构建
pi-science doctor 诊断生产模式运行条件
pi-science doctor --dev 诊断开发模式运行条件
pi-science logs 输出运行日志
pi-science status 查看服务状态
pi-science stop 停止当前 checkout 的服务
pi-science help 查看命令帮助
前台启动占用当前终端,按 Ctrl+C 停止服务。Bash 还支持 pi-science start --detach;Windows 启动器仅支持前台运行。
移动或更新仓库后,应重新运行对应平台安装器,刷新生产构建产物。只有开发模式会直接使用修改后的源码。组合 Bash 启动器可跳过安装:
PI_SCIENCE_SKIP_INSTALL=1 bash scripts/dev.sh启动器行为与持久状态
生产启动器直接调用 Node,npm/pnpm 仅用于安装、构建和依赖更新。doctor 执行本地检查,不下载软件、不写入持久数据库;检查范围包括运行时、构建和 Worker 文件、依赖、回环端口、目录权限以及 SQLite 内存查询。Python/R/Micromamba 和 LLM 配置作为按需设置单独说明,持久 SQLite 数据库的就绪状态在启动时检查。doctor 会检查端口是否可用,因此请先停止运行中的实例,再进行启动前诊断。
开发时使用 pi-science start --dev(Node 直接运行 tsx,另启动 Vite)、bash scripts/start.sh --dev 或 powershell -File scripts/start.ps1 -Dev。设置 PI_SCIENCE_SERVER_WATCH=1 才会启用 tsx watch;Bash 和 PowerShell 的开发模式均默认直接运行 tsx。PI_SCIENCE_CONTROL_PLANE_PORT 修改生产端口,PI_SCIENCE_FRONTEND_PORT 仅用于开发模式。两种启动器都将控制面绑定到 127.0.0.1。浏览器内部认证 Cookie 不等于用户登录,不应将服务暴露到公网。
pnpm store 默认由多个仓库目录共享:POSIX 使用 ${XDG_CACHE_HOME:-~/.cache}/pi-science/pnpm-store,Windows 使用 %LOCALAPPDATA%\pi-science\pnpm-store。可用 PNPM_STORE_DIR 指定独立缓存,包括原先的仓库内 .cache/pnpm-store。默认就绪期限为 90 秒,可用 PI_SCIENCE_STARTUP_TIMEOUT_SECONDS 调整。启动器根据进程身份停止服务,并拒绝覆盖无关的启动器路径。Windows 停止前检查仓库目录、可执行文件、入口文件、进程创建时间和每次启动的标识;状态缺失或过期时,不会仅凭端口号停止进程。
更新: 当前未提供事务式 update、rollback、uninstall 或独立安装包。手动更新源码前,应停止应用并备份应用状态和工作区数据,包括 SQLite 数据库及其 WAL 文件。更新后重新运行安装器。源码降级不能撤销数据库迁移,恢复时需要兼容的应用版本和完整数据备份。验收方式与后续计划见安装与部署。
Windows 停止失败时保留身份记录以便重试,并返回退出码 1。Windows 的 logs 默认包含控制面和前端的 stdout/stderr,logs --stderr 仅显示错误输出。POSIX 前台输出保留在终端,logs 读取后台运行日志。启动器与 doctor 都将相对的 PI_SCIENCE_FRONTEND_DIST 解释为相对于仓库根目录的路径。
应用状态使用 PI_SCIENCE_HOME 或 ~/.pi-science,必要时回退到 checkout 内。项目元数据可位于工作区或应用托管目录,移动或备份前请参阅数据归属。旧 v3 会话支持自动转换或离线转换。
| 领域 | Pi-Science 提供的能力 |
|---|---|
| 智能体工作区 | 流式对话、工具卡片、Markdown、LaTeX、斜杠命令和浏览器问卷与审批 |
| 并行会话 | 活跃、恢复和分叉的对话使用独立的 Agent Core Worker 进程 |
| 科学文件 | 原生预览分子结构、FITS、基因组、相图、3D 模型、表格、办公文档、媒体和代码 |
| 可复现性 | 实时的会话级执行记录、产物哈希、生成代码与差异、环境快照、谱系历史、一键复现,以及固定到已发布版本的产物引用与文本/表格/图片版本差异 |
| 记忆 | SQLite 统一记录、版本绑定人工审核、分作用域召回、可选 Extraction/Dream 与共享预算(默认关闭) |
| 科学计算 | 可复用的 Micromamba 环境、隔离的 Python/R Session 内核、可执行 .ipynb 文件、与对话关联的运行记录和应用级 Jupyter Lab |
| 扩展能力 | Pi skills、提示模板、MCP、subagents、自定义模型提供商和托管端点 |
| 工作区安全 | 项目级元数据、路径校验、会话状态隔离和受控的模型端点发现 |
升级注意: 新 Memory 初始为空,旧 Ledger / Project Knowledge 文件保留但不自动导入。停止应用后,可运行
pnpm export:legacy-memory /absolute/workspace /absolute/new-export.json只读导出旧数据。迁移时核对原始来源,重新创建并审核记忆,不沿用旧审核标记。详见升级步骤。
在 设置 → 记忆 中启用 Memory,全局策略对当前本地用户的所有项目生效。Memory、自动提取 Extraction 和 Dream 默认关闭,分别启用。子选项随开关和触发模式展开,收起时保留已填写的值;模型、审核模式、运行计划和共享后台预算也在这里配置。项目与分类的召回开关保留在项目记忆页面。
记忆页面分为 记忆、待审核、运行历史 三个页签。支持关键词搜索、状态/类型/作用域/分类筛选、排序和每页 20 条的分页,显示全部授权匹配记录的总数;手机端以底部抽屉选择条件,点击应用后生效,关闭会放弃本次修改;主页面优先展示记忆列表。条目默认显示紧凑预览和明确状态,展开后查看完整正文、来源、版本与历史;编辑、归档、删除位于“更多”菜单。新增候选展开后提供批准/拒绝操作,修改提案展示当前内容与建议内容对照。待审核内容不参与自动召回。智能审核只允许严格识别的低风险偏好等内容直接生效,科学内容始终需要批准指定版本;全部人工审核会将所有 Agent/后台变更送审。批准表示采用该版本,不表示科学结论已被证明。
记忆保存在应用 SQLite 数据库中,不改写 PROJECT.md,也不自动导入旧 ledger / Project Knowledge 数据。作用域、召回、Extraction/Dream、预算、保留与备份详见统一记忆。
输入框底部的审批模式菜单按会话保存,默认“请求批准”。“帮我批准”允许工作区执行和公网 HTTPS,并自动批准明确声明为安全只读的 MCP 工具;其他需要审批的工具仍会询问。“完全访问”可访问用户目录与项目文件、使用公网 HTTPS,并自动批准工具调用,启用前会显示范围确认。明确的域名和工具禁止规则、应用私有数据以及受限子任务边界始终保留。
模式由后端策略执行,不依赖模型自行判断或批准。任务进行中不能切换;切换会重启该会话的运行环境并清除内核变量。新会话和受限子任务不会自动继承完全访问权限。
Pi-Science 内置 19 个 MCP 连接器,覆盖公共科学数据服务和通用网页搜索。它们以本地 MCP 进程运行,向 Agent 提供带类型的工具;实际检索仍会向上游服务发送网络请求。
| 连接器 | 上游服务 | 默认状态 |
|---|---|---|
| Paper Search | PubMed、arXiv、Crossref、bioRxiv、medRxiv、Europe PMC | 启用 |
| Literature Graph | OpenAlex | 关闭 |
| Clinical Trials | ClinicalTrials.gov | 关闭 |
| Structures & Interactions | RCSB PDB、AlphaFold DB、EMDB、IntAct、Complex Portal | 关闭 |
| Genes & Ontologies | MyGene.info、EBI OLS、QuickGO、Reactome | 关闭 |
| Genomes | Ensembl REST、UCSC Genome Browser | 关闭 |
| CellGuide | CELLxGENE CellGuide | 关闭 |
| Protein Annotation | InterPro、STRING v12、Human Protein Atlas | 关闭 |
| Omics Archives | NCBI GEO、PRIDE、MGnify、ArrayExpress、MetaboLights | 关闭 |
| Chemistry | PubChem、ChEBI、BindingDB、Rhea | 关闭 |
| Regulation | ENCODE、JASPAR、UniBind | 关闭 |
| BioMart | Ensembl BioMart | 关闭 |
| Drug Regulatory | openFDA、Drugs@FDA | 关闭 |
| Human Genetics | NHGRI-EBI GWAS Catalog、FinnGen PheWAS | 关闭 |
| Protein Records | UniProtKB | 关闭 |
| Nucleotide Archives | NCBI GenBank、ENA | 关闭 |
| Target Discovery | Open Targets Platform | 关闭 |
| ChEMBL | ChEMBL | 关闭 |
这些连接器共提供 89 个工具。可在 设置 → MCP 中仅启用需要的科研领域,查看已发现
工具、测试连接、筛选暴露的工具,并为工具选择 询问、允许 或 拒绝。内置连接器
定义只读;也可以注册自定义 stdio、Streamable HTTP、SSE 和 socket 连接器。连接器
设置全局生效,单个项目可以覆盖工具决策。配置变更会自动投影到活跃 Agent runtime,
无需手工编辑 Pi 配置文件。
连接器认证可引用托管密钥/令牌或具名环境变量,作为进程变量、HTTP Header 或 Bearer Token 传递。策略快照只含凭据引用,获准使用的凭据在 Worker 内存中解析。目前不支持 OAuth 登录与刷新。
web_search 和 web_fetch 是 Agent 内置工具,复用固定版本的 pi-web-access@0.40.0 核心。在设置 → 联网搜索中配置全局工具开关、搜索服务和 API Key。工具直接在可信 Worker 中执行,不经过代码执行沙箱,保留公网地址、重定向和响应体大小检查。Paper Search 继续作为学术数据库 MCP 连接器。详见 Web Access 配置与验证。
Pi-Science 可以直接在浏览器中渲染常见科研格式。
| 领域 | 格式 | 查看器 |
|---|---|---|
| 化学 | CIF、PDB、PQR、SDF、MOL、MOL2、SMILES、XYZ、CUBE | 支持结构关联序列的 Mol* 交互式查看器 |
| 天文 | FITS | Canvas 渲染和科学色图 |
| 3D / CAD | STL、OBJ、PLY、glTF、GLB | Three.js 场景查看器 |
| 固体物理 | EIGENVAL、DOSCAR | 能带和态密度图 |
| 基因组 | BED、GFF、GTF、VCF | 轨道式基因组查看器 |
| 表格数据 | CSV、TSV | 可排序表格及折线、柱状、散点图 |
| 办公文档 | DOCX、XLSX、PPTX | 浏览器原生文档预览 |
| 通用格式 | Markdown、JSON、代码、图片、PDF、视频 | 语法感知或浏览器原生预览 |
flowchart LR
UI[浏览器] -->|REST / SSE v3| CP[Node 控制面]
CP -->|IPC| W[Agent Core Workers]
W --> H[AgentHarness / pi-ai]
H --> S[(Core v4 会话)]
CP --> K[Python / R 内核]
CP --> M[记忆服务与后台任务]
M --> DB[(SQLite state.sqlite)]
AgentHarness 管理智能体执行和持久操作状态。Node 控制面监督独立 Worker,将 Core 事实投影为有版本的浏览器协议,并协调科学计算服务。对话、标题、研究和子代理共用这套执行链路。Memory 的 Extraction/Dream 由控制面管理,使用独立且不带工具的模型调用。
Core 会话格式 v4 与产品 SSE 协议 v3 是独立版本。历史是 Core 会话的投影;旧格式只在数据读取/转换边界处理。SQLite 保存 Memory,并协调工作区、环境、任务和 MCP 策略,科研文件与产品元数据分别管理存储位置。
进程边界、事件交付、状态目录、恢复机制与能力隔离详见架构文档。
在对话输入框中输入 / 即可打开命令菜单。
| 命令 | 作用 |
|---|---|
/compact |
压缩对话上下文 |
/export <html|jsonl> |
导出对话历史 |
/skill:<name> |
调用动态发现的工作区技能 |
Pi-Science 托管的工作区默认信任 .pi/skills/;其中的项目内置 skills 会参与 Pi 的命令发现。可在 设置 → Skills 中查看和控制已发现的 skills。
内核、Notebook 和智能体工具的执行都会记录在产生它们的对话会话中。执行状态会实时更新;在 Runs 视图中,可将执行定位到来源对话,也可打开该次执行生成的文件和产物。
对话 Worker 为文件型 .ipynb 提供 notebook_read、notebook_edit 和
notebook_run。notebook_read 会返回每个 cell 的 revision;默认编辑使用
Notebook 文件 SHA-256 做严格并发保护,也可用 expected_cell_revisions
只保护本次修改的 cell,使无关 cell 的并发修改不会阻塞操作。运行选定的
Python/R 代码块后,会把受限的执行次数、标准输出/错误、MIME 结果和错误输出
原子写回 Notebook,并返回新的 revision。产物发布失败会作为执行告警保留,
不会被静默忽略。
可以在 设置 → LLM 中配置提供商。Pi-Science 支持内置厂商、OpenAI-compatible、Anthropic-compatible,以及 Ollama、LM Studio 等可信的无 Key 本地服务。还可以在同一页面注册、启停并检查托管模型端点。健康检查是带超时和响应大小限制的出站请求;为支持本地模型服务,默认允许私网端点,可通过 PI_SCIENCE_ALLOW_PRIVATE_PROVIDERS=0 禁用。
API Key 通过 设置 → LLM 管理。环境凭据需要在模型资源配置中明确引用变量名,仅导出厂商环境变量不会建立凭据绑定。
成功完成一轮对话后,Pi-Science 可以生成 AI 标题(默认启用)。标题使用配置的默认模型,可能与当前对话模型不同。禁用工具与技能的临时 Worker 发送最近不超过 6 条消息,每条截断到 200 字符,并请求不超过 8 个词的标题。
这是一次额外的模型请求,会包含最近的对话片段。标题保存到项目实际元数据目录中的 session-titles.jsonl,浏览器存储作为即时回退。
如需禁用,请在启动前设置并重启服务:
export PI_SCIENCE_AI_TITLES=0标题生成不阻塞对话,失败时保留侧边栏的派生名称。临时会话保持隐藏,在 Worker 释放时删除。
# JavaScript / TypeScript 测试
pnpm test
# 静态类型检查
pnpm typecheck
# 生产构建
pnpm build补充端到端检查:
pnpm smoke
pnpm uat:conversation
pnpm smoke:agent-core前端专项 UAT:
pnpm --filter frontend test:uat:memory
pnpm --filter frontend test:uat:notebook
pnpm --filter frontend test:uat:office| 内容 | 参考 |
|---|---|
| 进程边界、状态归属、事件与恢复 | 架构文档 |
| 记忆设置、审核、召回、后台任务与数据保留 | 统一记忆 |
| 支持的工具与已知限制 | Agent Core 能力清单 |
| 旧会话与离线转换 | 会话转换 |
| 科学连接器、凭据与工具策略 | MCP 管理 |
| 研究编排与确定性评估 | 对话原生 Auto Research |
| 编写项目技能 | 技能编写 |
架构文档提供对应的实现记录链接,未提供双语版本的文档保留原语言。
欢迎提交 Issue 和 Pull Request。提交前请运行相关测试,以及 pnpm typecheck 和 pnpm build。修改运行时行为时,应同时补充回归测试。
MIT
可选的 Pi 原生模型配置后端 支持版本化配置、显式凭证来源和保守的旧资源迁移。发布门槛通过前,部署默认仍为 legacy。
Documentation index / 文档索引 · Development verification / 开发检查
