Important
这是基于官方最新发布版 v0.4.42 的个人发行分支(local/native-context-v0.4.42)。它保留 Multica 优秀的传输、路由、运行时注册、聊天界面、执行日志和用量统计能力,同时尽量不接管 Codex、Claude Code、Cursor、Pi、Antigravity 等 Agent/Harness 原本的工作方式。
这是一个长期维护的 Agent 网关发行版。它保留 Multica 作为多端入口和运行时调度器的价值,同时把工作目录、会话、Prompt、Skill 和代码目录的最终控制权交还给用户和 Agent。它的价值来自一套可长期使用的边界,不靠堆叠开关。
Note
上游默认提供受管任务工作流。 平台会向运行目录写入 sidecar垃圾文件,并向模型注入 Workflow 和 Skill 激活规则。这套设计适合AI native 程序不高,希望通过 Multica 推动 AI 更全面普及的团队,但对已有成熟本地工作流的用户是一种打扰。
GPT-5.6 Sol、Claude Fable 5 和 Claude Opus 5 这类 SOTA(当前能力最强的一档)模型已经能自行规划、调用工具、拆分任务并根据执行结果调整做法。继续强加一套固定 Workflow,往往会变成 Superpowers skill一样的枷锁。它迫使模型在每个 turn 重复扫描和执行已经具备的能力,额外消耗 token,也会降低实际任务表现:过度规划、调用无关 Skill、重复验证、陷入循环,最后把简单修改做得更慢、更复杂。用户删除 Superpowers 后,异常 token 消耗停止; GPT-5.6 Codex 用户讨论:多人因 token 消耗、过度思考和质量下降而停用 Superpowers。
- 官方客户端,自维护网关。 Web、Desktop 和 Mobile 可以继续跟随官方版本;本机只需替换同一个 Go CLI/daemon,不需要 fork 整个客户端就能获得核心体验。
- Workflow 和 Skill 不再默认接管模型。 上游完整 Prompt 会重复强调 issue/comment 工作流、CLI 使用和 Skill 激活规则;“匹配就调用”会让模型过度敏感,容易启动与当前任务无关的 Skill,同时持续消耗上下文。本分支的
minimal只保留必要环境事实和中性 Skill 清单,可见不等于必须触发;off移除 Multica 运行时工作流和服务端 Skill,full才保留官方完整行为。 - Multica 不再向代码目录写入 sidecar。 上游运行模式可能写入或改写
AGENTS.md、CLAUDE.md、.agent_context/、reasonix.toml、.cursor/mcp.json等运行说明和项目 MCP 配置。native 模式不向 cwd 写这些 Multica runtime sidecar;日志、凭证、provider home 和 task scratch 全部保持在独立的私有状态目录。 - 连续会话,不用平台工作流换取历史。 Codex thread 和 Pi/OMP session 不再因 workdir 变化、取消 turn 或追加消息轻易冷启动;Web 私聊恢复后只发送新增消息,不在每个 turn 重放稳定的平台套话。
- 通用修复回馈上游,个人取舍留在 fork。 可复用的协议、会话和 CLI 修复会拆成独立 PR 提交给 Multica;“网关而非工作流”这种明确带有个人偏好的组合仍由本分支维护。
截至 2026-09-18,mameikagou 向 multica-ai/multica 提交的以下 12 个 PR 已全部正式合并(日期按 GitHub UTC):
| PR | 上游获得的能力 | 合并日期 |
|---|---|---|
| #7331 · daemon server URL override | 自部署环境可用 MULTICA_DAEMON_SERVER_URL 分离公网 webhook 地址与 daemon 私有出口 |
2026-08-24 |
| #7557 · remove obsolete autopilot priority flag | 移除已废弃但仍被 CLI 静默接受的 autopilot priority 参数,让 CLI、API 与产品语义一致 | 2026-08-26 |
| #7753 · preserve Codex usage on cancelled turns | 保留 Codex 运行取消前已经产生的 token 用量,让中途停止的运行也能计入用量统计 | 2026-09-08 |
| #7756 · explicit Codex Standard speed | 区分“继承本地配置”、“明确 Standard”与“Fast”,支持本地默认 Fast 时主动切回 Standard | 2026-09-01 |
| #7760 · Pi session continuity | Pi/OMP 使用独立 JSONL session 时不再被 workdir 变化错误阻断恢复 | 2026-08-31 |
| #7790 · Codex thread handshake budget | 为 thread/start / thread/resume 设置独立的 60 秒默认预算,轻量 RPC 继续保持 30 秒 |
2026-08-31 |
| #7798 · require proven task ownership before GC mutation | GC 修改磁盘前必须先用 .task_owner 证明目录由 Multica 创建,普通目录不会再因为够旧或缺少完成信息就被递归删除。这项修复来自一次误删 20 GB 以上文件的真实事故,把“无法确认归属”改成保留目录,而不是猜测删除。 |
2026-09-01 |
| #7961 · record Antigravity token usage | 从 Antigravity 结构化输出记录本次运行的 token 用量,避免恢复会话时重复累计历史用量;完整回复已结束后出现特定网络尾部错误时,不再误报失败 | 2026-09-11 |
| #8200 · classify concurrent request rejections | 将带有 concurrent request limit 的 provider 403 正确识别为临时容量限制,不再误导用户重新登录或把正常会话判成上下文溢出。维护者评价 |
2026-09-09 |
| #8236 · decline Codex reuse when home preparation fails | 旧 Codex 会话目录准备失败时,转入新环境准备流程,让局限于旧目录的故障不再直接终止任务;正常会话复用不变。维护者评价 | 2026-09-10 |
| #8481 · report Grok prompt budget stops as failures | Grok 因 max_tokens 或 max_turn_requests 提前停止时,正确报告失败并保留输出、会话和用量,避免将未完成的运行误报为成功,也不将生成预算耗尽误判为上下文溢出 |
2026-09-16 |
| #8527 · preserve resumed Cursor sessions on connect timeouts | 将 Cursor 在恢复会话时、尚未产生任何事件便发生的 provider ETIMEDOUT 准确识别为网络故障,避免错误地冷启动新会话并丢失原有上下文;工具和 MCP 自身的同类超时仍保持原有分类 |
2026-09-18 |
#8200:发现真实缺陷,也把审查意见落实到了测试。
"Thank you — this was a good contribution, and worth saying why."
维护者 Bohan-J 肯定了几个具体点:从真实事故中发现尚无人报告的错误分类;按审查意见拆分 PR,保持自动重试逻辑不变;修正分类规则顺序,而非只让测试通过;主动用测试固定“不自动重试”的边界,并查明离线回填脚本不在仓库内、写清后续所需处理。查看完整评价
#8236:用确定性回归测试证明修复。
"Thanks for the fix, @mameikagou — and for the deterministic regression test that fails on main and passes here."
维护者 Bohan-J 明确感谢了修复,以及在主分支失败、修复后通过的回归测试。同时指出并在合并前纠正了原描述:旧代码会被启动前检查拦住,不会误用默认会话目录;这项修复的价值是提供重新准备环境的恢复路径。代价也明确保留:放弃复用后,不会自动延续旧 Codex 会话或搬运旧工作目录内容;若新环境仍无法准备,任务仍会报错。查看完整评价
Multica 原本不仅是网关,也会主动塑造 Agent 的执行环境:为每次任务创建独立 workdir,向项目写入运行说明和 Skill,要求模型遵循 Multica 的 issue/comment 工作流,并把 provider session 与任务目录绑定。
对需要完整项目管理闭环的团队,这套设计有价值;但对于已经有成熟本地工作流、只希望统一接入多个 Agent 的用户,它会产生几个问题:
- Agent 不在真正的代码根目录运行,还需要进入 Multica 生成的任务目录;
AGENTS.md、CLAUDE.md、.agent_context/、项目 MCP 配置等 sidecar 可能污染用户目录;- 强制工作流和 Skill 激活规则让模型过度敏感,容易调用与当前任务无关的 Skill;
- 取消正在运行的 turn 后,替代任务可能在旧目录释放前冷启动,丢失 provider session;
- 网关自己的提示词和工作流消耗大量上下文,掩盖了 provider 原生体验。
这个分支的原则很简单:
Multica 负责:连接、路由、认证、消息、日志、用量、附件和运行状态
Agent 负责: cwd、会话、项目规则、Skill 选择、工具使用和代码修改
用户负责: 决定任务如何拆分,以及多个 Agent 是否同时操作同一目录
Web / Desktop / Mobile
│
│ chat、task、附件、日志、usage
▼
Multica control plane
│
│ WebSocket task dispatch
▼
本分支 CLI / daemon
│
├── 私有状态:~/.local/share/multica/workspaces/...
│ logs、credentials、provider home、task scratch
│
└── 统一 cwd:<native_workdir>
Codex / Claude / Cursor / Pi / 其他 provider
| 问题或边界 | 本分支行为 | 价值 |
|---|---|---|
| 每次任务默认使用 daemon 管理的 workdir | 新增通用 native_workdir,所有 Agent/Harness 都可直接在真实代码根目录运行 |
保留 provider 原生项目发现和用户工作流 |
向 cwd 写入 AGENTS.md、CLAUDE.md、.agent_context/ 等上下文 |
native 模式不写任何 Multica runtime sidecar | 用户目录保持原样 |
Reasonix 写 reasonix.toml,Cursor 写 .cursor/mcp.json |
native 模式绕过这些项目级写入 | 不覆盖用户自己的 provider 配置 |
| 默认注入完整 Multica workflow 和 Skill 激活策略 | 新增 full、minimal、off 三档 platform_context_mode |
把工作流变成可选能力 |
| 服务端内置 Skill 总是随任务进入 provider 环境 | minimal 只做中性展示;off 会过滤 Multica 内置 Skill,用户安装和 workspace Skill 不受影响 |
避免平台 Skill 抢占用户 Skill |
| 部分 provider 依赖 cwd 文件读取运行说明 | native 模式在内存里传递所选上下文:Codex 使用 developer instructions,其他 provider 放进任务 prompt | 不写文件仍能说明运行环境 |
| 取消旧 turn 后可能在目录释放前启动替代任务 | 明确的环境释放信号与上游 #7818 的有界等待共同工作 | 避免取消/追加消息时丢会话,也不无限占用任务位 |
| Pi/OMP session 存在独立文件中,不应与 workdir 绑定 | 整合上游 #7760,并为 transcript writer 做串行化 | cwd 改变或快速追加消息后仍保留 Pi 历史 |
| Codex rollout 与旧任务目录耦合 | 使用稳定 conversation store,并安全迁移已有 rollout | 切换到 native cwd 后仍可继续 Codex thread |
| Codex thread setup 比轻量 RPC 更容易超过 30 秒 | 整合上游 #7790:轻量 RPC 保持 30 秒,thread/start 和 thread/resume 默认使用 60 秒 |
避免加载模型目录、MCP 或历史时误判启动失败 |
| 替代任务可能与旧进程同时写同一 session | Codex 和 Pi 按 conversation/session store 串行化 writer | 防止取消并追加消息时损坏 rollout 或 JSONL 序号 |
| Web 私聊的每个 turn 重复携带 audience、initiator、附件说明和平台简介 | 成功恢复同一 Codex thread 后只发新消息和本轮附件;冷启动回退仍保留完整说明 | 不浪费上下文,也不牺牲断线恢复安全性 |
| 重命名的本地构建可能不在子进程 PATH | daemon 把当前 CLI 的稳定别名加入任务 PATH | multica 命令保持可用,但不强迫 Agent 调用 |
| native cwd 与 daemon 可回收 workspace 如果没有所有权边界,GC 存在误判风险 | GC 修改前要求可验证的 Multica task ownership | 用户代码目录不会被当成已完成任务的临时目录 |
provider 偶发返回 403 concurrent request limit |
整合上游 #8200 的准确分类;上游只修正提示,本分支额外按现有任务次数自动重发一次 | 不再误导用户重新认证,短暂并发拒绝通常也不需要手动重发消息 |
| 打开 Chat 后还要再点一次最近对话 | 前端自动打开最近会话 | 降低无意义操作 |
| 进行中任务的 token 尾量可能未进入统计 | 服务端统计补入 live usage tail | 正常展示本地 Agent 的 token 使用量 |
| Antigravity 遇到旧 active step、临时认证超时或过早判定结束 | 过滤失效 step,认证超时自动重试,强制等完最新响应并保全回复;补全 input/output/cache token | 不丢回复,不被假死打断,用量统计准确 |
| Claude 执行 scheduled loop(cron/timer)时易被终态结果意外截断 | 跨 terminal 保持活跃,定时唤醒后保留终态结果并累积各轮 token | 循环轮询和定时后台任务能正常跑完 |
| 任务偶发因环境抖动失败,或 scheduled wait 挂死 | 任何执行失败就地自动重试一次;定时等待增加看门狗兜底 | 减少人工重试,后台等待不无限挂死 |
主要组合变更:
a9a546311:增加full / minimal / off平台上下文模式;89998e620:服务端统计补入 live usage tail;fa206c6a2:保持版本化本地构建的multicaCLI 在任务 PATH 中可用;a3f19fe8f:串行化 Codex session store writers,防止并发冲突;90cfcc23a:Codex Web 私聊恢复后只发增量 Prompt,避免重复注入稳定 developer instructions;c4293efb3+526d17094+2ff7a1086+08c4197f2+e13003fa5+126ef60e3:适配 Antigravity:等待响应完成、过滤失效 step、瞬时认证超时重试并补全 token 统计;1d9c735ed+4db39b9b6+ca688aa73+8e920fb51+42bce34c5+b2a004904:Claude 支持原生 scheduled/native loop,唤醒后不提前退出并累积各轮 token;ab41c5523:定时等待增加看门狗超时兜底;8806ed0c1:本地任务失败就地自动重试一次。
保留 Agent 无法自行推断的运行环境事实,以及当前任务可见 Skill 的中性清单;不注入 “Always Use”、issue workflow 或“匹配就必须调用 Skill”等策略。
multica --profile <profile> config set platform_context_mode minimal这是本分支建议的网关粒度:能力仍然可见、命令仍然可用,但是否使用由模型判断或由用户主动提出。
不提供 Multica runtime brief,并过滤服务端附带的 Multica 内置 Skill。provider 自己安装的 Skill、用户的 ~/.codex/skills、~/.agents/skills 和 workspace Skill 不会因此被删除。
multica --profile <profile> config set platform_context_mode offoff 仍会保留任务传输必需的信息,例如当前用户消息、附件说明和发起人信息;它关闭的是本地 daemon 注入的运行时工作流,不是假装 Multica 不存在。
保留原本完整的 Multica workflow、CLI 指令和 Skill 策略。代码默认值仍是 full,避免升级时无声改变其他安装者的行为;部署这个个人发行版时应显式选择 minimal 或 off。
这种方式继续使用 Multica Cloud 或现有服务端,只替换运行 Agent 的 CLI/daemon。它会获得 native cwd、上下文模式、会话交接、Pi/Codex 恢复和 CLI PATH 修复;不会自动获得本分支的前端或服务端页面改动。
- Go 1.26.x;
- 至少一个已经登录的 Agent CLI,例如
codex、claude或cursor-agent; - 已经登录并能启动 daemon 的 Multica profile;
- 一个统一的代码根目录,例如 macOS 的
/Users/<user>/code或 WSL 的/home/<user>/code。
新设备:
git clone \
--branch local/native-context-v0.4.42 \
--single-branch \
https://github.com/mameikagou/multica.git
cd multica已有 checkout:
git remote add fork https://github.com/mameikagou/multica.git 2>/dev/null || true
git fetch fork
git switch local/native-context-v0.4.42
git pull --ff-only fork local/native-context-v0.4.42macOS、Linux 或 WSL:
cd server
GATEWAY_COMMIT="$(git rev-parse --short=10 HEAD)"
GATEWAY_BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
GATEWAY_BIN="$HOME/.local/bin/multica-gateway-$GATEWAY_COMMIT"
mkdir -p "$HOME/.local/bin"
go build \
-ldflags "-X main.version=$GATEWAY_COMMIT -X main.commit=$GATEWAY_COMMIT -X main.date=$GATEWAY_BUILD_DATE" \
-o "$GATEWAY_BIN" \
./cmd/multica
"$GATEWAY_BIN" version
ln -sfn "$GATEWAY_BIN" "$HOME/.local/bin/multica"使用版本化文件可以避免直接覆盖正在运行的可执行文件,也能防止 Desktop/daemon 继续持有旧 inode,方便快速回滚。
下面以名为 desktop-api.multica.ai 的 profile 和 /Users/luoyu32/code 为例。其他设备替换成自己的 profile 与代码目录;使用默认 profile 时可以去掉 --profile <profile>。
multica --profile desktop-api.multica.ai config set \
workspaces_root "$HOME/.local/share/multica/workspaces"
multica --profile desktop-api.multica.ai config set \
native_workdir /Users/luoyu32/code
multica --profile desktop-api.multica.ai config set \
platform_context_mode minimal
# 清理旧版 Codex-only 配置;新版本仍兼容它,但不建议同时保留两套键。
multica --profile desktop-api.multica.ai config set codex_native_workdir ""
# 清理旧的全局握手超时覆盖,启用新版本的 30s/60s 分层默认值。
# 若保留显式值(例如 2m),它会继续同时覆盖轻量 RPC 和 thread RPC。
multica --profile desktop-api.multica.ai config set codex_handshake_timeout ""workspaces_root 继续存放 task logs、凭证、provider home 和 session scratch;它不再是 Agent 的 cwd。
multica --profile desktop-api.multica.ai daemon restart
multica --profile desktop-api.multica.ai daemon status --output json
multica --profile desktop-api.multica.ai config show然后分别启动一次 Codex、Claude 或 Cursor 对话并询问 pwd。预期结果:
- cwd 是配置的
native_workdir; git status --short不出现 Multica 生成的AGENTS.md、.agent_context/、reasonix.toml或.cursor/mcp.json;minimal模式下能看到 Skill 清单,但不会出现强制激活规则;multica命令仍在 PATH 中,只有任务确实需要时才调用。
再做一次会话连续性回归:在同一 Codex 对话里发出一条要求记住随机短语的消息,运行中停止并追加新消息,然后询问该短语。预期 thread/resume 在 60 秒预算内完成,历史仍在,并且 daemon 日志中没有 rollout ordinal 重复或连续的 30 秒 thread/start / thread/resume 超时。
WSL 使用同一套源码和构建命令,但 profile 与路径属于 WSL 自己,不要照搬 macOS 的绝对路径:
PROFILE="desktop-api.multica.ai" # 替换为 WSL 实际 profile
CODE_ROOT="$HOME/code"
multica --profile "$PROFILE" config set \
workspaces_root "$HOME/.local/share/multica/workspaces"
multica --profile "$PROFILE" config set native_workdir "$CODE_ROOT"
multica --profile "$PROFILE" config set platform_context_mode minimal
multica --profile "$PROFILE" config set codex_native_workdir ""
multica --profile "$PROFILE" config set codex_handshake_timeout ""
multica --profile "$PROFILE" daemon restart
multica --profile "$PROFILE" daemon status --output json普通升级只需重启 Multica daemon,不需要重启整个 WSL。只有 WSL 自身或其 init/网络状态异常时,才从 Windows PowerShell 执行 wsl --shutdown 后重新进入发行版。
- Codex:首次切换会迁移可验证的旧 rollout,后续使用稳定 conversation store;
- Pi/OMP:session 是独立 JSONL 文件,可以跨 workdir 继续;
- 其他 cwd-keyed provider:从旧 Multica sandbox 第一次切到 native cwd 时,无法证明旧 session 可达就会诚实冷启动;记录新的稳定 cwd 后,后续 turn 才正常恢复。
只有以下需求才需要构建整套服务:
- 使用本分支的 Chat 自动打开最近会话;
- 部署包含 migration 441 的 token live-tail 统计;
- 希望 Web、API 和 daemon 全部由自己维护。
git clone \
--branch local/native-context-v0.4.42 \
--single-branch \
https://github.com/mameikagou/multica.git
cd multica
make selfhost-buildmake selfhost-build 会从当前 checkout 构建 backend 与 web,并启动本地 Docker Compose 栈。完整的密钥、邮件、域名和数据库说明沿用上游的 Self-Hosting Guide。每台实际运行 Agent 的机器仍需按照“部署方式 A”构建本分支 CLI,并设置 native_workdir 与 platform_context_mode。
git fetch fork
git switch local/native-context-v0.4.42
git pull --ff-only fork local/native-context-v0.4.42重新执行“构建版本化 CLI”,确认 multica version 后切换软链并重启 daemon。不要直接对个人分支执行 git reset --hard origin/main;需要吸收上游时,在单独分支完成 merge/rebase、测试后再合回个人维护分支。
先关闭本分支运行模式:
multica --profile <profile> config set native_workdir ""
multica --profile <profile> config set platform_context_mode full然后把 ~/.local/bin/multica 软链切回之前保留的二进制,或重新安装官方 CLI,最后执行:
multica --profile <profile> daemon restart版本化二进制和独立 workspaces_root 让这个过程不需要删除用户代码或任务历史。
- 所有普通任务共享同一个
native_workdir,本分支不会额外加写锁。用户决定哪些会话可以并发;网关不猜测任务是否冲突。 - Agent 以 daemon 所属系统用户的权限直接操作代码目录。这个分支优化的是工作流边界,不提供额外文件系统沙箱。
minimal降低平台提示词和误触发概率,但模型仍可能根据 Skill 自身过宽的描述主动选择它;真正零平台 Skill 使用应选择off,或收紧相应 Skill 自身的说明。- 连接官方 Multica Cloud 时,本地 fork 只能控制 daemon 侧行为;服务端和前端改动必须等上游部署,或使用完整自建模式。
本分支沿用上游 provider 支持,包括 Codex、Claude Code、Cursor Agent、Pi、Oh-My-Pi、OpenCode、OpenClaw、Hermes、Kimi、Kiro、Qwen、QwenPaw、Reasonix、DeepSeek Harness、Grok、Trae、CodeBuddy、Copilot、Antigravity、Qoder、MiniMax Code、Dim、ZeroClaw 等。
provider 安装与认证方式继续参考上游的 runtime documentation。这个 fork 不替代 provider,也不代理模型请求;它只聚合和调度用户已经安装好的 Agent/Harness。
上游项目:multica-ai/multica。通用修复仍适合独立提交上游;纯个人工作流取舍只维护在本分支。
许可证沿用仓库中的 LICENSE。