最近 Meta 发布一个编码工具,考虑到如今 Harness 如日中天,突然觉得此前 Meta 意欲收购 Manus 也没那么离谱了。尽管工具本身关注度不高,不过因其号称在健壮性方面很强(可能参考过 Manus 的思路),所以打算看看。

Muse Code 不支持第三方模型,但提供了20美金试用,愿意分享数据的话,可以用很久。
程序本身也没什么设防,即使没文档,接入第三方也不算艰难。
研究过程比较零碎,直接抛结论,具体实现在文末的 PoC。

首先,muse 启动参数有几个重要项:

  • META_API_KEY 作为环境变量输入时,比浏览器授权优先级更高。不经 TUI 设置可以跳过 KEY 验证,直接进入界面;
  • --base-url 可以设置 Meta API ,可能是用作镜像,也可以 mock 一个私服作为中转;
  • --model--provider 是设置默认模型,与 base-url 返回的结果对应。

对应的启动方式形如:META_API_KEY="dummy-key" muse --provider meta --base-url http://127.0.0.1:9911 --model glm-5.2 --yolo

base-url是本地搭建的中间层,用来提供模型目录和转发对话。

具体而言,muse 会从 {base-url}/muse-code/models 获取模型列表,官方模型只有 spark 系列,我们可以返回自定义结果。示例:

{
  "schema_version": 1,
  "data": [
    {
      "provider_id": "meta",
      "profile_id": "default",
      "id": "glm-5.2",
      "model_id": "glm-5.2",
      "display_label": "Z.AI/GLM-5.2",
      "visibility": "visible",
      "release_date": "2025-01-01",
      "display_order": 1,
      "is_current": true,
      "is_default": true,
      "context_limit": 65536,
      "output_limit": 8192,
      "description": "Third-Party Model via muse proxy"
    }
  ]
}

具体的对话走 OpenAI Responses 格式接口({base-url}/v1/responses)。

上下文窗口控制和压缩:

  • 默认达到 80% 触发摘要压缩,90% 进行强制硬压缩;
  • settings.json 、CLI 和远程模型信息均可控制窗口,本地设置优先于远程;
  • 可以额外控制是否清除工具输出,默认是清除。

之前的示例已经展示远程模型列表如何传入窗口,以下是 settings.json 示例,优先级更高:

{
  "schema_version": 1,
  "run": {
    "reminder_roster": {
      "interval_steps": 999999,
      "skip_if_running": true,
      "max_in_flight_per_agent": 1
    },
    "context_compaction": {
      "soft_threshold": 0.8,
      "hard_threshold": 0.9,
      "provider_context_limit_tokens": 32768,
      "tool_result_clearing_enabled": true
    }
  }
}

btw:对应的 CLI 参数(一般无需使用)是 --context-compaction-soft-threshold / --context-compaction-strategy / --max-tool-output-bytes

可以看到,在配置文件中还有一个reminder_roster
在实际调度中,每次回应后会有几秒的延迟,显示 Finishing up,期间程序会发起多次额外对话:

  • scope reminder(与对话调用并发)
  • approval judge
  • goal reminder
  • verification watcher
    简单来说,就是 muse 在发起额外检查,确保操作没有越界、真的完成任务。它还引入了一个二号观察员,用来监督检查是否真的起效(可以说是有迫害妄想症)。

如果想要关闭或者调整,可以配置reminder_roster,按需设定:

  • interval_steps :执行多少步开始检查,默认可能是1,大数等同于跳过;
  • skip_if_running:如果已有 reminder 在运行,跳过本次调度;
  • max_in_flight_per_agent:每个agent 最多几个并发 reminder。

至此,我们已经有了大致信息,可以完成一个简单的中间层,通过 CC-Switch、New API 等工具,我们也可以接入 /chat/completions 端点。

具体的中间层可以查看这份:PoC