# pi-moa **Repository Path**: zhuli2/pi-moa ## Basic Information - **Project Name**: pi-moa - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-14 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pi-moa > [English](./README.md) · [Gitee 仓库](https://gitee.com/zhuli2/pi-moa) · [npm](https://www.npmjs.com/package/pi-moa) 面向 [pi](https://pi.dev) 的 Mixture of Agents(MOA)扩展,以斜杠命令的形式复刻 Nous Research Hermes Agent 的 MOA 工作流。 - **1–3 个高智能参考模型**并行运行,每个模型只看到单轮上下文(无工具、无 system prompt)。 - **1 个主模型**接收带标签的参考意见 + 完整对话历史,正常作答并可使用工具。 默认就是**当前界面选择的模型**;也可以选择固定一个聚合器。 - 模型与鉴权**复用 pi 已有配置**——配置文件只存 `provider/model` 标识,绝不存 API 密钥。 - **可选自动模式**(`/moa-auto`):开启后,你输入的**每一条**消息都会自动走 MOA 流程,无需再每次打 `/moa`。 ## MOA 做了什么 一次 `/moa ` 分两个阶段: 1. **参考 fan-out。** 每个参考模型(1–3 个)拿到单轮上下文——仅当前这条 用户消息(多轮会话时附带一段简短的对话总结)。无工具、无 system prompt、 无历史。它们各自独立、并行作答。 2. **聚合。** 主模型收到所有参考回答(按来源标注)+ 完整对话历史,产出 最终回复——与普通轮次一样,可正常使用工具。 主模型默认跟随你当前界面选择的模型;配置 `aggregator` 可固定一个。 ### 能带来什么 - **交叉校验单一模型的盲区。** 相互独立的模型给出互补或冲突的第一轮意见, 这比单个模型单独推理提供了更强的信号。 - **难题或模棱两可的问题更稳健。** 多角度交叉可降低单个模型「自信但错误」 的概率。 - **无需手动获取第二意见。** 不必把同一个 prompt 复制到多个对话里——一条 命令自动 fan-out 并收敛。 - **零额外配置。** 参考模型复用 pi 里已配置的模型;配置文件只存 `provider`/`model` 标识,绝不存密钥。 ## 安装 ```bash pi install npm:pi-moa # 或开发期从本地路径安装 pi install ./moa # 或手动复制到 ~/.pi/agent/extensions/ + ~/.pi/agent/skills/ ``` 首次在交互终端运行 `/moa` 会进入引导向导(选 1–3 个参考模型;主模型默认 跟随当前界面模型,除非你选择固定一个)。配置写入 `~/.pi/agent/moa.json`。 ## 用法 ``` /moa 用默认预设运行一次 MOA /moa 显示用法 + 配置摘要(未配置时进入向导) /moa list 列出所有预设 /moa configure [名称] 交互式创建/编辑(默认 "default") /moa delete <名称> 删除一个预设 /moa status 显示配置与当前模型 /moa set-main

/ 设置固定主输出模型(默认跟随界面模型) /moa-auto 切换自动模式(每条消息都走 MOA) ``` ## 配置 ```json { "default_preset": "default", "presets": { "default": { "reference_models": [ { "provider": "anthropic", "model": "claude-sonnet-4-5", "reasoning_effort": "low" }, { "provider": "openrouter", "model": "deepseek/deepseek-v3.1" } ], "aggregator": { "provider": "anthropic", "model": "claude-opus-4-5" }, "reference_max_tokens": 4000, "max_tokens": 4096 } } } ``` `aggregator` 字段是**可选的**。省略时,MOA 直接把当前界面模型作为主输出模型 (不切换、不恢复);只有想固定一个主模型(不随界面变化)时才需要设置它。 其余每个预设的可选字段:`reference_temperature`、 `reasoning_effort`(每个参考槽位)、`max_tokens`(v1 保留未启用——主模型的 token 预算由 pi 管理)。 ## 行为说明与限制(v0.3.2) - **主模型跟随界面。** 默认情况下主输出模型就是当前界面模型(`ctx.model`), 不切换、不恢复。只有配置了固定 `aggregator` 时,MOA 才会临时切换并在 结束后恢复。 - **自动模式。** `/moa-auto` 切换一个持久的「每条消息都走 MOA」状态。它通过 pi 的 `input` 事件,同时拦截 TUI(`source === "interactive"`)与 pi-web 等 web/RPC 界面(`source === "rpc"`)的输入,在 agent 循环前把普通输入改写 成 MOA 消息。斜杠命令与 `/moa` 内部 `sendUserMessage` (`source === "extension"`)不受影响,因此不会双重 fan-out。开启时状态栏 显示 `MOA 自动:开`。 - **可滚动选择器。** 配置向导使用可滚动的 `SelectList`(最多显示 10 项 + `(n/总数)` 指示器)而非 `ctx.ui.select`,模型列表再长也不会撑爆窗口。 - **对话总结(多轮)。** 会话已有历史时,`/moa` 会先让主模型总结 「我们在做什么」(100–200 字),再把总结提供给参考模型,而非只给用户 当前一句话。总结失败则降级为仅用用户 prompt。 - **一次性语义**(`fanout: user_turn`)。参考模型每次 `/moa` 只跑一次, 不会在工具循环中反复调用。 - **模型恢复。** 配置了固定 `aggregator` 时,`/moa` 前的模型会在 `agent_settled` 时恢复;MOA 期间排队的后续步骤仍会在聚合器上跑完再恢复。 - **失败处理。** 单个参考模型失败会内联标注并继续;若全部失败,`/moa` 会在运行主模型前中止。 - **无隐私过滤。** 参考输出原样注入主模型(未实现 Hermes 的 `privacy_filter`)。 - **无界面/print 模式。** 无法运行向导;请先在交互模式跑一次 `/moa`,或 手动编辑 `~/.pi/agent/moa.json`。 - **prompt-cache 交互**(U8)与并发写 `moa.json` 时的**文件锁**在 v1 中 未处理。