npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

2pi-agent

v0.3.0

Published

2pi: a research-writing agent built on pi — research material to paper draft, paper to Chinese invention patent application draft

Readme

2pi

材料 → 论文 → 专利的科研写作 agent。基于 pi 二次开发:一个共享内核加若干领域包,每个领域以对应的 skill 为知识库。

| 领域包 | 能力 | 知识库 | |---|---|---| | paper | 研究材料 → 可逐句核对的 SCI 论文初稿(LaTeX/PDF + 中文说明),移植自 research2paper | skills/research2paper(同步自 research2paper 仓库) | | patent | 论文 → 中国发明专利申请初稿(说明书摘要、摘要附图、权利要求书、说明书、说明书附图,DOCX/PDF + 撰写说明) | 本仓库 skills/paper2patent | | research(辅助) | 文献与 idea 调研、专利现有技术检索:检索记录、逐特征对比矩阵、检索式与对比文件候选;只引用真正检索到的文献 | skills/research(2pi 自有) |

两个领域共用一本证据账本(notes/evidence.json):写论文时记下的每条事实和数字(带出处和证据类别),在同一项目里转专利时直接作为源事实。

做什么、按什么顺序、何时回头修改,由模型根据材料和你的请求自主决定;2pi 提供领域知识、专用工具、安全边界、检查点,以及"交付前必须检查"的关卡。设计见 DESIGN.md,分阶段计划见 ROADMAP.md。

产出是供作者、专利代理师复核的初稿,不是法律意见,也不评估录用或授权前景。

安装

需要 Node.js ≥ 22.19、Python ≥ 3.9、git(用于检查点)。写论文还需要 LaTeX 引擎:tectonic(推荐)或 TeX Live/MiKTeX 自带的 latexmk。

npm 安装(发布到 npm 后可用)

包名是 2pi-agent,安装后命令是 2pi,不需要另外安装 pi:

npm install -g 2pi-agent
2pi --version

PDF 解析和专利附图还需要 Python 依赖,npm 不会自动安装它们:

python -m pip install "Pillow>=9" "pymupdf>=1.24"

升级使用 npm install -g 2pi-agent@latest。也可以用 pnpm add -g 2pi-agent 或 bun add -g 2pi-agent 安装;运行仍需满足上述 Node.js 版本要求。临时运行可用 npx --package=2pi-agent 2pi --version。

从源码安装

git clone https://github.com/7toCR/2pi.git
cd 2pi
npm ci --ignore-scripts
python -m pip install -r python/requirements.txt
npm link
2pi --version

npm link 后即可在任意目录使用 2pi 命令;不想全局安装时,用 node bin/2pi.mjs 代替 2pi。源码安装直接运行 src/,npm 包安装运行编译后的 dist/,知识库、模板和 Python 脚本随包一起安装。

专利 PDF(申请文件和撰写说明各一份)优先用 LibreOffice;没有 LibreOffice 时,在 Windows 上自动改用 Microsoft Word 导出可检索的 PDF;两者都没有时,申请文件生成图像版审阅 PDF(DOCX 不受影响)。

登录与模型(与 pi 相同)

2pi 的登录、第三方 API 和模型配置完全沿用 pi 的设计,文件格式和命令都一样,只是名字不同:

| | pi | 2pi | |---|---|---| | 配置目录 | ~/.pi/agent | ~/.2pi/agent | | 凭据(/login 写入) | auth.json | auth.json | | 第三方 / 自建服务 | models.json | models.json | | 设置(默认模型等) | settings.json | settings.json | | 配置目录变量 | PI_CODING_AGENT_DIR | TWOPI_CODING_AGENT_DIR | | 会话目录变量 | PI_CODING_AGENT_SESSION_DIR | TWOPI_CODING_AGENT_SESSION_DIR | | 其他进程变量 | PI_OFFLINE、PI_CACHE_RETENTION、PI_TRUE_COLOR … | TWOPI_OFFLINE、TWOPI_CACHE_RETENTION、TWOPI_TRUE_COLOR … | | 凭据检查 | pi auth check --provider X | 2pi auth check --provider X |

  • 登录:交互界面里 /login 选择 provider,按 OAuth(订阅)或 API Key 流程登录,凭据存进 ~/.2pi/agent/auth.json;/logout 删除;/model 选模型(ctrl+s 设为默认)。也可以只设置 provider 的 API Key 环境变量(ANTHROPIC_API_KEY、OPENAI_API_KEY 等,与 pi 相同)。

  • 第三方 API:兼容 OpenAI / Anthropic / Google 接口的服务(中转站、Ollama、vLLM 等)写进 ~/.2pi/agent/models.json,格式与 pi 的完全一样;apiKey 可以是字面值、$环境变量,或 !命令(请求时执行),也可以省略后用 /login <provider> 存入 auth.json:

    {
      "providers": {
        "superaihub": {
          "baseUrl": "https://superaihub.top",
          "api": "openai-responses",
          "models": [{ "id": "gpt-6.1-sol", "reasoning": true, "input": ["text", "image"], "contextWindow": 272000 }]
        }
      }
    }
  • 从 pi 导入:2pi import-pi 把 ~/.pi/agent 的 provider、模型覆盖和默认模型导入 2pi。只引用密钥、不含密钥本身的凭据(!命令、$环境变量)一并复制;保存在 pi 里的 API Key 和 OAuth 令牌不留第二份,在 2pi 中 /login 一次即可。想直接共用 pi 的整个配置目录时,设置 TWOPI_USE_PI_CONFIG=1。

  • 从 codex 导入:

    2pi import-codex --model gpt-6.1-sol --thinking xhigh

    读取 ~/.codex/config.toml 的自定义 provider 与模型目录,按 pi 的方式写入:models.json 中 provider 以它在 codex 里的名字命名(如 superaihub),auth.json 中的凭据是一条 !node -e … 命令,首次请求时从 provider 的 env_key 环境变量或 ~/.codex/auth.json 读取 Key(pi 在进程内缓存结果),2pi 不保存密钥副本;已经用 /login 存过的凭据不会被覆盖。--thinking 接受 low/medium/high/xhigh(也可写 extra high)/max,--provider-id 可指定 provider 名。旧版 2pi 导入的 codex provider(调用 bin/codex-api-key.mjs)仍可使用,重新导入后可删除。

  • 2pi update 会提示用 npm install -g 2pi-agent@latest 升级;源码安装则在仓库目录执行 git pull 和 npm install。2pi update --models、2pi update --extensions 照常可用。

使用

mkdir my-project && cd my-project
2pi init paper         # 或 patent / both
2pi                    # 启动交互界面

2pi init paper 生成项目卡 2PI.md、materials/、LaTeX 骨架(paper/main.tex 与各节)、notes/memo.md 与证据账本;patent 生成 patent/;both 两者都有。把材料放进 materials/ 后直接说需求,例如"根据 materials 写 Methods 和 Results 两节""写一篇完整初稿""把 paper/build/main.pdf 写成专利""先帮我梳理发明点再写""检查 patent/patent.json 是否忠实原文"。

| 命令 | 作用 | |---|---| | /init [paper\|patent\|both] | 建立项目 | | /paper status\|init [模板]\|check\|compile\|final | 论文状态、骨架(article/elsarticle/ieeetran)、检查、编译、投稿前检查 | | /patent <论文> [direct\|human-in-loop\|text-only\|claims-only] | 开始专利转写 | | /review <草稿> [论文] | 审查已有专利草稿 | | /plan | 查看 agent 当前的计划 | | /changes [编号] | 列出各轮修改;带编号时逐块查看(字词级差异与修改原因) | | /redline [编号\|起..止] | 生成修订稿并打开审阅页:HTML 审阅页、论文 latexdiff PDF、专利 Word 修订模式 DOCX | | /undo [force] | 撤回上一轮 agent 对文件的修改 | | /checkpoints | 列出文件检查点 | | /research [works\|patents\|log] | 调研库与检索日志 | | /panel [on\|off\|百分比] | 显示/隐藏右侧流程面板,或设置左栏宽度(也可按 F2、拖动分隔线) | | /model、/login、/logout、/resume、/tree、/compact | pi 自带 |

无头模式:

2pi -p "根据 materials/ 写论文的 Methods 和 Results and Discussion 两节"
2pi --mode json -p "..." > run.jsonl
2pi -c                 # 继续上一次会话

项目布局

2PI.md          项目卡:类型、目标期刊与字数上限、专利撰写模式、公开状态、是否允许联网检索
materials/      原始材料(agent 只读)
notes/          中文说明 memo.md、证据账本 evidence.json(论文与专利共用)、专利事实清单
paper/          main.tex、sections/、refs.bib、figures/、build/
patent/         patent.json、out/(附图、DOCX、撰写说明、PDF、preview/)
.2pi/           agent 状态:解析后的论文 sources/、检查点 history/、修改记录 changes/、检查报告 reports/、临时文件 scratch/

.2pi/ 自带 .gitignore,不会进入你的 git 仓库。论文、材料和草稿是私有材料,不要提交到公开仓库。research2paper 的 PAPER.md 仍可识别。

工具

| 工具 | 领域 | 作用 | |---|---|---| | paper_ingest | 共用 | PDF/DOCX/TeX/MD/TXT → 带页码的全文、页面图、图表与章节索引、公开状态线索 | | evidence | 共用 | 证据账本:记录、修改、删除、查询事实与出处 | | compute_stats | 共用 | 比率、差值、百分点、相对变化的精确计算,可直接读 CSV 单元格,结果自动入账 | | pdf_preview | 共用 | 把 PDF 页面渲染成图片给模型看 | | update_plan、ask_user | 共用 | 自主计划、人在回路提问 | | paper_init、check_draft、latex_compile、fill_gaps、bib_lookup | paper | 骨架、检查器(含账本数字核对 V01)、编译、填补缺口、Crossref 核对参考文献 | | patent_check、patent_build | patent | 专利形式自检;附图 → DOCX → PDF | | lit_search、lit_fetch | research | 文献检索(OpenAlex 题名与摘要、arXiv、Crossref 兜底)、按编号核实单篇并给出 BibTeX、下载开放获取 PDF | | patent_search、patent_import | research | 专利检索(EPO OPS;未配置时给出 Google Patents / Espacenet 链接)、导入数据库导出的 CSV |

交付前检查

模型准备结束一轮时,2pi 自己检查这一轮改过的东西:论文编译 LaTeX 并运行检查器,专利运行形式检查;有错误就把报告交给模型进入修复轮,每次请求最多两轮,用完后如实报告剩余问题。只有模型能做的(例如查看生成的专利附图与预览页)作为待办列出。

终端界面

2pi 在 pi 的界面上换了一套更安静的样式:

  • 启动标题:参照 codex 与 Claude Code 的做法,只有一个小标识和三行字:左边是一本摊开的书,左页写"2"、右页写"π"——论文和专利是同一项工作的两页,合起来读作 2π;右边是名称与版本、当前模型与思考强度(/model 切换后跟着变)、工作目录与领域,下面一行常用操作。整个标题只有书本用了固定颜色(米色纸页、墨色字、墨蓝封面,浅色终端下纸色自动加深),其余文字只用主题的粗体和灰色。
  • 左右分栏(默认开启):左侧约 70% 是对话与工具输出,右侧约 30% 是流程面板,显示这一轮执行到了哪一步;输入框和状态栏仍横跨整个底部。中间的分隔线可以用鼠标按住拖动调整宽度(宽度会记住),F2 显示或隐藏面板,/panel on|off 同样;/panel 65 把左栏设为 65%。偏好存在 ~/.2pi/agent/2pi.json。需要 pi 的全屏模式(默认即是;/settings 中 TUI mode 为 regular 时保持单栏),终端窄于 90 列时自动收起;TWOPI_SPLIT=0 关闭分栏。
  • 流程面板:一条竖直的步骤轨道,没有分组框和分隔线。轨道是项目领域通常会经过的步骤(专利项目:你 → 解析材料 → 撰写专利 → 形式检查 → 生成文件 → 核对渲染 → 交付前检查 → 完成;论文项目换成证据账本、撰写论文、编译 PDF、论文检查),用到的其他步骤(调研检索、修改说明等)随时加入。2pi 不写死工作流,模型自己决定先做什么;每次工具调用点亮它所属的步骤(例如 patent_check 点亮"形式检查",写 .tex 点亮"撰写论文")。走过的轨迹是实线,还没走到的是点线;正在做的一步转圈,完成为 ●、失败为 ✗,后面跟结果摘要(如"2 错误 · 1 警告")。模型回到前面的步骤时(检查不通过回去改稿、交付前检查要求回去看附图),在轨道左侧画一条回环,从离开的那一步连回返回的那一步;这一遍从返回处重新开始,实线停在正在重做的一步,上一遍的结果变暗但仍可见,多次往返时回环按层嵌套,步骤旁标出经过次数(×2)。顶部是模型正在做什么、用时、工具调用次数、token 与回环次数;下方是模型的 update_plan 计划(分栏时计划只在这里显示);网络中断时顶部显示重连倒计时。点击步骤打开它的记录(每次调用的时间、对象、结果、用时,以及与它相关的回环),点击"完成"可看本轮完整轨迹,Esc 关闭。
  • 工具调用一行一条:✓ 读取 paper/sections/methods.tex 42 行 · 0.3s。不再显示彩色底框和输出预览;失败时标红,并在下面列出说明错误原因的几行。ctrl+o(或点击该行)展开 pi 原来的完整输出,例如编辑的差异、命令的全部输出。
  • 交付前检查一行摘要:◆ 交付前检查 专利 0 错误 4 警告 · 引用待核实 2 处 自动修复 1/2,ctrl+o 展开完整报告。
  • 本轮修改挂件(单栏时还有计划挂件)。
  • 首次启动时在 2pi 自己的配置里写入默认值:启动时不列加载的资源(quietStartup: "header")、折叠思考过程(hideThinkingBlock)、对话里不显示页面图片(showImages: false,模型照样能看到)、断流重试 5 次(retry,见"断线重连")。已有的设置不覆盖,之后可以用 /settings 修改;ctrl+t 切换是否显示思考过程。
  • 设置 TWOPI_CLASSIC_UI=1 恢复 pi 原来的样式(不分栏)。

断线重连

参考 codex 的机制(codex-rs/core/src/responses_retry.rs),分三种情况:

  1. 偶发失败(限流、5xx、流中途断开):在同一请求上有限次重试,指数退避。这一层用 pi 自己的 retry 设置,2pi 首次启动把次数设为 codex 的流重试默认值 5 次(1、2、4、8、16 秒,遵守服务端的 Retry-After)。面板显示"重连中 2/5"。
  2. 网络断开(DNS 解析失败、连接被拒或被重置、fetch failed 等):pi 的重试用完后,2pi 不结束这一轮,而是像 codex 的 "Reconnecting... waiting for network" 一样等待网络恢复:按 5 秒起、每次翻倍、最长 60 秒(带 ±10% 抖动)的间隔,向模型服务的主机(配置了 HTTPS_PROXY/HTTP_PROXY 时向代理)发起 TCP 探测;探测成功后把失败的那次请求从上下文中去掉,从中断处继续这一轮,不用重新输入。等待期间状态栏与流程面板显示探测次数与倒计时,Esc 取消。交互界面里一直等到网络恢复;无界面运行(2pi -p、--mode json)最多等 TWOPI_RECONNECT_MAX_WAIT 分钟(默认 10)。网络探测已通但连续 5 次续跑仍然失败时停止并说明原因。
  3. 等待无济于事的错误(额度、计费、鉴权失败、请求无效、上下文超长):立即结束并报告,不重试。

pi 的 HTTP 空闲超时(httpIdleTimeoutMs,默认 300 秒,对应 codex 的 stream_idle_timeout_ms)照常生效:流长时间没有数据会被当作断开处理。

调研与引用核验

调研(相关工作、idea 查新式调研、专利现有技术检索)由辅助领域 research 负责,论文和专利项目都能用。项目卡允许联网检索时自动启用,用过一次之后也保持启用。

  • 联网授权:只有项目卡写了"联网检索:允许",或你在终端里对本会话确认过,才会发出请求;只发送检索词,不上传论文、稿件或材料。尚未申请的发明,检索词本身也可能泄露发明点,research skill 要求用领域通用词检索。
  • 检索日志:每次联网请求(服务、检索式原文、时间、结果数)记在 .2pi/research/searches.jsonl,/research log 查看。
  • 调研库:检索、获取、导入的文献与专利,以及 bib_lookup 在 Crossref 确认存在的 DOI,存入 .2pi/research/library.json。
  • 引用核验:交付前检查扫描本轮写入的 Markdown、LaTeX、.bib 和 JSON。凡是 DOI、arXiv 编号、专利公开号既不在调研库,也不在作者材料或已解析的论文里,都可能是凭记忆写的,模型必须核实、删除,或明确标注"待核实"。
  • 专利数据库:设置 TWOPI_EPO_OPS_KEY、TWOPI_EPO_OPS_SECRET(EPO Open Patent Services 免费注册)后可直接检索全球专利,含中国。未设置时 patent_search 不联网,只给出检索式与 Google Patents / Espacenet 链接;你检索后把导出的 CSV 放进 materials/,agent 用 patent_import 导入。
  • 产出:调研报告写在 research/<主题>.md;专利的检索式与对比文件候选写进专利 JSON 的 notes["检索与对比文件"],生成在撰写说明中,不进申请文本。调研只报告检索范围内看到了什么,不下新颖性或创造性结论。

检查点与修改记录

每轮开始和结束时,2pi 都把项目目录存入一个影子 git 仓库(.2pi/history,与你自己的 git 完全隔离),并把这一轮的改动记成一条修改记录(.2pi/changes/cNNNN.json)。/undo 可以撤回。两轮之间你手动改过的文件会单独存档:撤回 agent 的修改时,会跳过你之后又改过的文件,除非用 /undo force。

看改了什么

修改记录按"块"记录改动,而不是按行:专利按申请文件的结构(发明名称、摘要、每一项权利要求、说明书每一段、每张附图、撰写说明),论文按 LaTeX 段落(标题取所在的节,如"Methods 第2段"),证据账本按条目,其他文本按段落。块用内容序列比对对齐,插入一项权利要求不会把后面的权利要求都标成改动。

模型修订已有稿件后,用 report_changes 写一句总结和每处关键修改的原因;没写时交付前检查会提醒一次。原因挂在对应的块上,三种视图都能看到:

  • 终端:每轮结束显示"本轮修改:patent.json:权利要求1、说明书·具体实施方式 第3段……"和原因;/changes c0004 打开可滚动的逐块视图,删除的字划线、新增的字加下划线并着色。
  • HTML 审阅页(/redline,写到 .2pi/review/<编号>/review.html 并用浏览器打开):整篇文档按块排列,改动处红删绿增、标出原因,未改动的段落折叠。
  • 修订稿(同一目录):专利是 Word 修订模式 DOCX,每处改动都是一条可单独接受或拒绝的修订,原因作为批注;论文是 latexdiff 生成的修订版 PDF(需要 TeX Live 自带的 latexdiff)。

工作目录文件超过 5000 个时(例如误在家目录启动),检查点会自动关闭。

安全边界

  • materials/ 与 .2pi/(.2pi/scratch/ 除外)不可写;论文原件、知识库和工作目录外的路径需要确认。
  • 稿件区域(paper/、patent/、notes/ 中 agent 的文件)之外,已有的文件可能是作者的原稿:修改需要确认,修订应写到新文件。
  • 上传文件、改写或推送 git 历史、工作目录外的递归删除、修改 materials/ 的命令、下载即执行等需要确认。
  • 无界面模式(-p)下,需要确认的操作一律拒绝。--full-access 关闭以上限制。
  • 上级目录中的 AGENTS.md/CLAUDE.md(写给编程助手的仓库说明)不会注入 2pi 的提示词;项目自己目录里的会注入。
  • bib_lookup 只把被引文献的 DOI、题目、第一作者和年份发给 Crossref,不发送稿件内容。
  • 文献与专利检索需要联网授权(见"调研与引用核验"),只发送检索词。

环境变量

前缀是 TWOPI_(环境变量不能以数字开头)。

| 变量 | 作用 | |---|---| | TWOPI_CODING_AGENT_DIR | 配置目录(默认 ~/.2pi/agent,即 pi 的 PI_CODING_AGENT_DIR;旧名 TWOPI_AGENT_DIR 仍可用) | | TWOPI_CODING_AGENT_SESSION_DIR | 会话目录(即 pi 的 PI_CODING_AGENT_SESSION_DIR) | | TWOPI_OFFLINE、TWOPI_TELEMETRY、TWOPI_CACHE_RETENTION、TWOPI_HARDWARE_CURSOR、TWOPI_HYPERLINKS、TWOPI_PROGRAM_STATUS、TWOPI_IMAGE_PROTOCOL、TWOPI_TRUE_COLOR、TWOPI_TUI_ESC_TIMEOUT、TWOPI_SHARE_VIEWER_URL | 与 pi 的同名 PI_* 变量相同 | | TWOPI_HOME | 配置根目录(默认 ~/.2pi,配置目录为其下的 agent) | | TWOPI_PAPER_SKILL_DIR、TWOPI_PATENT_SKILL_DIR | 两个知识库的目录 | | TWOPI_PYTHON | Python 可执行文件 | | TWOPI_TECTONIC、TWOPI_LATEXMK | LaTeX 引擎 | | TWOPI_PDFTOPPM、TWOPI_MUTOOL、TWOPI_GS、TWOPI_PDFINFO | PDF 渲染工具 | | TWOPI_USE_PI_CONFIG=1 | 复用 ~/.pi/agent 的登录与配置 | | TWOPI_NO_WORD=1 | 不用 Microsoft Word 导出 PDF | | TWOPI_OPENALEX_KEY | OpenAlex API key(不设置时用免费额度,约每天 100 次检索) | | TWOPI_EPO_OPS_KEY、TWOPI_EPO_OPS_SECRET | EPO Open Patent Services 账号,用于专利检索 | | TWOPI_CLASSIC_UI=1 | 使用 pi 原来的界面样式 | | TWOPI_SPLIT=0 | 不分栏(不显示右侧流程面板) | | TWOPI_RECONNECT_MAX_WAIT | 无界面运行时断网最多等待的分钟数(默认 10;交互界面一直等待) |

在原版 pi 中加载

pi -e path/to/2pi/src/pi-extension.ts

开发

npm run check         # 类型检查
npm test              # 离线测试:faux provider 脚本化模型回复,不调用真实模型;装了 LaTeX 引擎时包含真实编译
npm run build         # 编译到 dist/(打包安装时使用)
npm run test:package  # 打包并隔离全局安装,验证命令和项目初始化;会下载 npm 依赖,不调用模型
npm run sync-skills   # 从 research2paper 仓库同步论文 skill 与 LaTeX 模板
npm run sync-skills -- --patent ../paper2patent  # 从指定 paper2patent 仓库同步专利 skill 与许可证

打包与发布到 npm

首次发布前确认包名 2pi-agent 可用;如果已被其他账号占用,改为自己有权限的名字(例如 @你的npm用户名/2pi-agent)。package.json 的包名和 package-lock.json 的根包名需保持一致,bin 中的命令名仍可保留 2pi。

在仓库根目录执行:

npm ci --ignore-scripts
npm run test:package
npm pack

npm pack 自动执行类型检查、编译和资源检查,生成 2pi-agent-0.3.0.tgz。发布文件通过 files 白名单限定,包含编译代码、知识库及其许可证、模板和 Python 脚本,排除源码、测试、参考仓库、开发缓存和 Python 缓存。包中不捆绑 node_modules,安装时由 npm 安装运行依赖。

pi 的配套模块固定在一起验证过的 1.1.0,避免安装时被上游间接依赖的版本范围带到不兼容的版本。升级 pi 时应一起升级这些模块,再运行隔离安装验证;源码仓库的 package-lock.json 不会替 npm 用户锁定间接依赖。

发布需要 npm 账号。按 npm 官方要求 配置账号双重验证;登录和发布时在本机完成浏览器或验证码验证:

npm login --registry=https://registry.npmjs.org/
npm whoami --registry=https://registry.npmjs.org/
npm publish ./2pi-agent-0.3.0.tgz --access public --registry=https://registry.npmjs.org/
npm view 2pi-agent version --registry=https://registry.npmjs.org/

最终 npm view 应显示发布的版本号。Windows PowerShell 若阻止运行 npm.ps1,将命令中的 npm 换成 npm.cmd。后续发布必须先增加版本号;例如 npm version patch --no-git-tag-version,再重新验证、打包和发布新版本的 .tgz。npm 同名同版本不能重复发布。

src/cli.ts、env.ts          启动器:独立配置目录 + pi main() + 2pi 扩展
src/extension.ts            装配内核与领域包,分层系统提示词
src/core/                   与领域无关的内核
  prompt.ts                 提示词各层
  project.ts                项目卡 2PI.md、项目布局、证据账本位置
  evidence.ts、stats.ts     证据账本、精确计算
  checkpoints.ts、history.ts 影子 git 检查点、修改记录、/undo /checkpoints
  blocks.ts、blockdiff.ts   块模型、块对齐与字词级差异
  review.ts、changes-view.ts、review-html.ts、redline.ts  块级变更、/changes 查看器、HTML 审阅页、/redline
  guard.ts、gate.ts         写保护与命令审批、交付前检查
  office.ts、pdf.ts         Word 导出 PDF、PDF 渲染
  online.ts                 联网授权、请求与重试、检索日志
  reconnect.ts              断线重连:断网时探测网络、恢复后续跑(参考 codex)
  codex-import.ts、pi-import.ts、branding.ts  按 pi 原生格式导入 codex / pi 配置,帮助文本中的 2pi 名称
  tools/                    paper_ingest、evidence、compute_stats、pdf_preview、update_plan、ask_user、report_changes、redline
src/packs/paper/            论文领域包(移植自 research2paper)
src/packs/patent/           专利领域包
src/packs/research/         调研辅助领域:文献与专利来源、调研库、引用核验
skills/research/            调研 skill(2pi 自有:检索策略、调研报告模板、现有技术检索)
src/ui/                     终端界面:一行式工具调用、检查报告摘要、挂件、首次启动的默认设置
  banner.ts、palette.ts     启动标题与书本标识的配色
  split.ts、flow.ts         左右分栏(可拖动分隔线)与右侧流程面板
skills/research2paper/      同步来的论文 skill(规则与检查脚本),来源见 skills/SOURCES.json
templates/                  2PI.md 与论文 LaTeX 骨架
python/ingest_paper.py      论文解析
python/redline_docx.py      Word 修订模式 DOCX