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 --versionPDF 解析和专利附图还需要 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 --versionnpm 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 导入的codexprovider(调用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),分三种情况:
- 偶发失败(限流、5xx、流中途断开):在同一请求上有限次重试,指数退避。这一层用 pi 自己的
retry设置,2pi 首次启动把次数设为 codex 的流重试默认值 5 次(1、2、4、8、16 秒,遵守服务端的 Retry-After)。面板显示"重连中 2/5"。 - 网络断开(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 次续跑仍然失败时停止并说明原因。 - 等待无济于事的错误(额度、计费、鉴权失败、请求无效、上下文超长):立即结束并报告,不重试。
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 packnpm 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