{"_id":"@aa2246740/pi-fusion","_rev":"4-b6d2faef88f1da9f8120f782d778d4dd","name":"@aa2246740/pi-fusion","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@aa2246740/pi-fusion","version":"0.1.0","keywords":["pi-package","pi-extension","model-fusion","multi-model","agent"],"license":"MIT","_id":"@aa2246740/pi-fusion@0.1.0","maintainers":[{"name":"aa2246740","email":"aa2246740@gmail.com"}],"homepage":"https://aa2246740.github.io/pi-fusion/","bugs":{"url":"https://github.com/aa2246740/pi-fusion/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"3a4d8a6d25b52366156b55157cfa9197217b35dd","tarball":"https://registry.npmjs.org/@aa2246740/pi-fusion/-/pi-fusion-0.1.0.tgz","fileCount":27,"integrity":"sha512-ueuvOqFMZTc2Br9WVB7zBpwqiVIlNA40hjTqr/cUEDP1J9g8E9gFRxgKsut47ovPHX3QtxXKhaBYgQTGQ16K3A==","signatures":[{"sig":"MEUCIGCBeYsQKrqu7nPq4tev4z9H/OBGN6MBN9vWOHr7AgZQAiEA6VmNP0SYwqQAge5n8vYH/1Esxd+EDGcb54qCok3MBMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307973},"type":"module","gitHead":"9061c3a4e9c37fcbe029a98b552ac3f9c82ee6f7","scripts":{"test":"vitest run","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"aa2246740","email":"aa2246740@gmail.com"},"repository":{"url":"git+https://github.com/aa2246740/pi-fusion.git","type":"git"},"_npmVersion":"11.5.1","description":"Model fusion for Pi agents","directories":{},"_nodeVersion":"24.6.0","dependencies":{"jiti":"^2.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.8.0","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-fusion_0.1.0_1782293006655_0.04410584660498684","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aa2246740/pi-fusion","version":"0.1.1","keywords":["pi-package","pi-extension","model-fusion","multi-model","agent"],"license":"MIT","_id":"@aa2246740/pi-fusion@0.1.1","maintainers":[{"name":"aa2246740","email":"aa2246740@gmail.com"}],"homepage":"https://aa2246740.github.io/pi-fusion/","bugs":{"url":"https://github.com/aa2246740/pi-fusion/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"c63bc71b00724786b27384fc86fe77d23cc49385","tarball":"https://registry.npmjs.org/@aa2246740/pi-fusion/-/pi-fusion-0.1.1.tgz","fileCount":27,"integrity":"sha512-R9+05d+2G6HOHcyG5qZgtMYu2yhFusVZF0D5VFVb7vpFuaqDPAtLbyKPv1jqFugtdf1oAsiCuRBjigJpQzvatQ==","signatures":[{"sig":"MEYCIQCGsbOlQolFQOoX1AiExdcOrhfQ5wb5mngdQWO7je+1fQIhAKx6xV0O8wP7PsLZq8EHI0756VQubcsfGDjubWrn0Dag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329143},"type":"module","gitHead":"7a7715423b363f4beab828fb9d651cea13d99787","scripts":{"test":"vitest run","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"aa2246740","email":"aa2246740@gmail.com"},"repository":{"url":"git+https://github.com/aa2246740/pi-fusion.git","type":"git"},"_npmVersion":"11.5.1","description":"Model fusion for Pi agents","directories":{},"_nodeVersion":"24.6.0","dependencies":{"jiti":"^2.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.8.0","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-fusion_0.1.1_1782297998115_0.6429737466933703","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aa2246740/pi-fusion","version":"0.2.0","keywords":["pi-package","pi-extension","draco","benchmark","scored-validation","model-fusion","multi-model","agent"],"license":"MIT","_id":"@aa2246740/pi-fusion@0.2.0","maintainers":[{"name":"aa2246740","email":"aa2246740@gmail.com"}],"homepage":"https://aa2246740.github.io/pi-fusion/","bugs":{"url":"https://github.com/aa2246740/pi-fusion/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"f3c8ad20175e7bf72e421d5b80a26938b9987919","tarball":"https://registry.npmjs.org/@aa2246740/pi-fusion/-/pi-fusion-0.2.0.tgz","fileCount":29,"integrity":"sha512-Q3G+zB1utLpMhLnqwDin+U3nQ1Gixoz9EXHK4XlgIUVde8NOQmGW6mVM8odDmAGmgQHLqu9dXzNlzyHxx/GEhA==","signatures":[{"sig":"MEUCIENB2J8+Ifrg8ZdDFJa/CVhb95nxQQErwr/XC/l4gdNKAiEAlOvGU2RxoUPsqCBH/n5UdoUl91vU+LkuXRqQgKylRco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":500195},"type":"module","gitHead":"2f0e6f2cef5f7180d121bcdc2744ad2052c465d7","scripts":{"test":"vitest run","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"aa2246740","email":"aa2246740@gmail.com"},"repository":{"url":"git+https://github.com/aa2246740/pi-fusion.git","type":"git"},"_npmVersion":"11.5.1","description":"DRACO-verified model fusion for Pi agents","directories":{},"_nodeVersion":"24.6.0","dependencies":{"jiti":"^2.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.8.0","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-fusion_0.2.0_1782899097746_0.6023617029837389","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aa2246740/pi-fusion","version":"0.2.1","description":"DRACO-verified model fusion for Pi agents","type":"module","license":"MIT","publishConfig":{"access":"public"},"homepage":"https://aa2246740.github.io/pi-fusion/","repository":{"type":"git","url":"git+https://github.com/aa2246740/pi-fusion.git"},"bugs":{"url":"https://github.com/aa2246740/pi-fusion/issues"},"keywords":["pi-package","pi-extension","draco","benchmark","scored-validation","model-fusion","multi-model","agent"],"scripts":{"test":"vitest run","test:watch":"vitest","check":"tsc --noEmit"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.3 <1","@earendil-works/pi-coding-agent":">=0.80.3 <1","@earendil-works/pi-tui":">=0.80.3 <1"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","hono":"^4.12.27","jiti":"^2.7.0","protobufjs":"^7.6.4"},"devDependencies":{"@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3","@earendil-works/pi-tui":"^0.80.3","typescript":"^5.8.0","vitest":"^4.1.9"},"pi":{"extensions":["./index.ts"]},"_id":"@aa2246740/pi-fusion@0.2.1","gitHead":"d7437a475c5f8b3f3586b6be02c42b556eda0948","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-+zgC6ISdX6hjzklp8eij751W5fPXH6cG/9FmRziIsUKo8l6XYnqmvUMralZHspnNGBnETxWDgUzbS6bPv5lwjA==","shasum":"04f60861995bcadbf2120aded77ba55826463784","tarball":"https://registry.npmjs.org/@aa2246740/pi-fusion/-/pi-fusion-0.2.1.tgz","fileCount":29,"unpackedSize":508902,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICRtxkhsfNcpgsagaDjHt18tP/41VVrbswc7ogTeeRMKAiEApk5SNSaDAzfti4xm+6INfkpu/mct6338qVlB991B+TY="}]},"_npmUser":{"name":"aa2246740","email":"aa2246740@gmail.com"},"directories":{},"maintainers":[{"name":"aa2246740","email":"aa2246740@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-fusion_0.2.1_1782911162823_0.44882209971885745"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T09:23:26.506Z","modified":"2026-07-01T13:06:03.119Z","0.1.0":"2026-06-24T09:23:26.803Z","0.1.1":"2026-06-24T10:46:38.254Z","0.2.0":"2026-07-01T09:44:57.888Z","0.2.1":"2026-07-01T13:06:03.001Z"},"bugs":{"url":"https://github.com/aa2246740/pi-fusion/issues"},"license":"MIT","homepage":"https://aa2246740.github.io/pi-fusion/","keywords":["pi-package","pi-extension","draco","benchmark","scored-validation","model-fusion","multi-model","agent"],"repository":{"type":"git","url":"git+https://github.com/aa2246740/pi-fusion.git"},"description":"DRACO-verified model fusion for Pi agents","maintainers":[{"name":"aa2246740","email":"aa2246740@gmail.com"}],"readme":"# Pi Fusion\n\n**经过 DRACO 评分验证的 Pi agents 模型融合。**\n\nPi Fusion 会把一个 prompt 分发给一组独立模型，让它们并行工作、可选地收集 evidence，再由 judge model 综合、验证并输出最终答案，整个过程发生在 Pi 里。\n\n它的重点不只是“多跑几个模型再合并文本”。Pi Fusion 已经做过 DRACO full10 评分验证：生成阶段只看 prompt-only cases，rubric 只在生成结束后的 scorer 阶段加载，10 个 case 全部完成，并提供 sanitized public benchmark summary。\n\n它受 hosted Fusion-style APIs 启发，但实现为 Pi extension：你选择模型，保留 artifacts，并且可以把 fusion layer 接到现有 Pi 工具和上下文中。\n\n官网：<https://aa2246740.github.io/pi-fusion/>\n\n文档：[English](README.md) | 中文 | [Benchmarks](docs/benchmarks.md) | [中文基准说明](docs/benchmarks.zh-CN.md)\n\n## 这个仓库为什么突出\n\n很多 fusion demo 停在“运行多个模型并合并答案”。Pi Fusion 的定位是有评分验证的 fusion engine：\n\n| 证据点 | 公开 claim | 为什么重要 |\n| --- | --- | --- |\n| DRACO full10 tested | 完成 10-case benchmark protocol | 这是有评分的项目，不只是 demo |\n| Scorer-only rubric access | rubric 只在 generation sealed 后加载 | 生成器看不到 private scoring criteria |\n| 对比 Fusion API | 73.80 vs reported Fusion API 69.00 | claim 绑定明确 benchmark result |\n| 对比 budget baseline | 73.80 vs reported Fusion API budget 64.70 | 相对 budget baseline 高 +9.10 |\n| 最新 validation 稳定性 | 10/10 cases，0 judge failures | 完整 protocol 跑通 |\n| 本地 artifact trail | answers、evidence summaries、tokens、costs 留在本地 | 用户可以检查运行过程 |\n\n## 它能做什么\n\nPi Fusion 为一个模型答案不够用的任务提供通用 fusion layer：\n\n- 多个 participant models 并行独立回答\n- judge synthesis 和 contradiction analysis\n- 可选 verification/revision loop\n- 可选 web/evidence tools\n- 用于确定性计算的 sandboxed bash\n- 每个 participant 独立的 workspace sandbox 和读写工具\n- model fallback 和 retry policy\n- artifacts、evidence summaries、token usage 和 cost reporting\n- Pi 原生命令和配置\n\n适合研究、规划、架构决策、调试假设、代码/设计评审、产品比较、写作、文档综合，以及其他需要更高可靠性的高风险问题。\n\n## 安装\n\nPi Fusion 是 Pi package/extension。\n\n```bash\npi install git:https://github.com/aa2246740/pi-fusion@main\n```\n\nnpm package 名称：\n\n```bash\nnpm install @aa2246740/pi-fusion\n```\n\n本地开发：\n\n```bash\ncd pi-fusion\nnpm install\npi -e ./index.ts\n```\n\nPi package discovery 在 `package.json` 中声明：\n\n```json\n{\n  \"pi\": {\n    \"extensions\": [\"./index.ts\"]\n  }\n}\n```\n\n## 命令\n\n```text\n/pi-fusion-config       配置 participants、judge、tools 和 evidence backend\n/pi-fusion-doctor       诊断模型和 evidence backend 可用性\n/pi-fusion <prompt>     运行 fusion panel\n```\n\n示例：\n\n```text\n/pi-fusion Should we migrate this module to a plugin architecture?\n/pi-fusion --fast Summarize the tradeoffs of these three implementation plans.\n/pi-fusion --quality Compare the vendors and cite current sources.\n```\n\n## 配置\n\n运行：\n\n```text\n/pi-fusion-config\n```\n\n你会选择：\n\n1. participant models\n2. judge model\n3. 从可选模型列表中选择 fallback models\n4. web/evidence policy\n5. evidence backend mode，通常在运行时 auto-detect\n6. sandboxed bash policy\n7. monitor 和确认默认值\n\n配置保存在：\n\n```text\n~/.pi/agent/pi-fusion/config.json\n```\n\n最小配置可以不启用 web retrieval：\n\n```json\n{\n  \"participants\": [\n    { \"model\": \"openai/gpt-4.1\" },\n    { \"model\": \"anthropic/claude-sonnet-4-5\" }\n  ],\n  \"judge\": { \"model\": \"openai/gpt-4.1\" },\n  \"defaultFallbacks\": [],\n  \"webPolicy\": \"optional\",\n  \"toolPolicy\": { \"bash\": \"sandboxed\" },\n  \"monitorDefault\": false,\n  \"confirmBeforeRun\": true\n}\n```\n\n## Evidence layer\n\nPi Fusion 不是 scraper adapter，但它有一个可选 evidence layer，用于需要现时信息或来源支撑的任务。\n\n如果没有配置或自动发现 evidence backend，Pi Fusion 仍然会作为 model-fusion engine 运行。如果发现兼容的 evidence backend，participant 和 judge models 可以使用 `web_search` 和 `web_fetch` tools。\n\n运行时，Pi Fusion 会从常见 Pi/MCP 配置位置自动检测兼容的本地 MCP search/fetch servers。如果没有发现 backend，而 prompt 看起来需要 sources，Pi Fusion 会询问你是继续不带 web evidence、取消运行，还是为本次运行添加用户提供的上下文/evidence notes。\n\n### MCP evidence backend\n\nMCP 是第一种支持的 connector type。Pi Fusion 不要求也不内置 `unified-search`；任何兼容 MCP search/fetch server 都可以使用。多数用户可以把 evidence backend 留给 auto-detect。高级用户可以固定一个 explicit backend：\n\n```json\n{\n  \"webPolicy\": \"optional\",\n  \"webBackend\": {\n    \"type\": \"mcp\",\n    \"serverName\": \"my-search\",\n    \"searchServerName\": \"my-search\",\n    \"searchTool\": \"web_search\",\n    \"fetchServerName\": \"my-reader\",\n    \"fetchTool\": \"web_fetch\",\n    \"fetchFallback\": \"off\",\n    \"maxResults\": 5\n  }\n}\n```\n\nExpected search input:\n\n```json\n{ \"query\": \"...\" }\n```\n\nPi Fusion 可以解析常见 search result shapes，例如带有 `title`、`url`/`link` 和 `snippet` 字段的 `organic[]`、`results[]` 或 `items[]`。\n\nExpected fetch input:\n\n```json\n{ \"url\": \"https://example.com\" }\n```\n\nPi Fusion 可以解析带有 `content`、`text` 或 `markdown` 的常见 fetch shapes。\n\n### Internal/private backends\n\n你可以在 MCP interface 后面使用 private MCP servers、company search、本地 crawlers 或 hosted search APIs。Provider-specific backend，例如 `unified-search`，应该被看作可选兼容实现，而不是 Pi Fusion 核心依赖。\n\n## Workspace sandboxes\n\n面对大型项目任务时，Pi Fusion 会把当前 Pi working directory 复制成一个 Pi Fusion 管理的 baseline，并为每个 Participant Model 创建一个独立可写 sandbox。Participant 只能通过 scoped `workspace_*` tools 在自己的 sandbox 中 list、search、read、write、edit 文件。\n\nSandbox 写入不会修改真实用户 workspace。运行结束后，Pi Fusion 会把每个 participant 的 sandbox root、变更文件列表和 ChangeSet artifacts 写到 run directory，方便 judge 和用户审查具体文件级工作，而不是只看纯文字回答。\n\n## DRACO 评分验证结果\n\nPi Fusion 在 sealed fixed DRACO-10 validation run 上拿到 **73.80**，比 reported Fusion API **69.00** 高 **+4.80**，比 reported Fusion API budget **64.70** 高 **+9.10**。\n\n在这个仓库里，**DRACO verified** 指的是公开 benchmark claim 有完整 DRACO 10-case runs、prompt-only generation、scorer-only rubric access 和 sanitized aggregate results 支撑。它不是 DRACO 官方认证，也不是说 Pi Fusion 在所有评估里超过所有 Fusion API modes。\n\n我们在固定 10-case DRACO validation protocol 上评估了 Pi Fusion。Final answers sealed 之后，scorer 才加载 rubric 和 scoring artifacts。\n\nPublic repository 只保留 aggregate scores、methodology notes 和 protocol checks。Raw scorer files、private rubric artifacts、case prompts 和 run internals 不公开发布。\n\n| 验证项 | 状态 |\n| --- | --- |\n| validation cases | 10/10 |\n| generation input | sanitized prompt-only case files |\n| rubric access | scorer-only，final answers sealed 后才加载 |\n| latest validation judge failures | 0 |\n| public artifact policy | 只发布 sanitized aggregate summaries |\n\n| System / run | DRACO score | 相对 reported Fusion API | 相对 reported budget |\n| --- | ---: | ---: | ---: |\n| Pi Fusion latest sealed DRACO-10 validation | **73.80** | **+4.80** | **+9.10** |\n| Reported Fusion API headline result | 69.00 | - | +4.30 |\n| Reported Fusion API budget baseline | 64.70 | -4.30 | - |\n\nLatest validation 完成了全部 10 个 cases，judge failures 为 0。\n\n生成阶段使用 sanitized prompt-only case files。Benchmark answer/rubric/scoring artifacts 在生成阶段不提供给 Pi Fusion，只在生成后由 scorer 使用。\n\n更多方法论和 sanitized results 见 [`docs/benchmarks.zh-CN.md`](docs/benchmarks.zh-CN.md)。\n\n## 开发\n\n```bash\nnpm run check\nnpm test\n```\n\n## 安全\n\nPi extensions 会以你的本地权限运行。安装第三方 package 前请先审查源码。Pi 本身不提供进程内安全 sandbox。Pi Fusion 因此把 workspace sandbox 当作产品层隔离：文件先复制到 participant 独立目录，participant 写入只留在那里，把 ChangeSet 应用回真实 workspace 是独立于 Fusion Run 的步骤。\n\nPi Fusion 的 bash tool 是 sandboxed，面向确定性计算，而不是 arbitrary host access。\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md"}