Melso Docs

守护进程与运行时

了解 Melso 如何连接电脑、发现 AI 编程工具并执行任务。

Melso 负责记录和协调工作,连接的电脑负责执行。电脑上的守护进程(daemon)领取 task,再调用本机安装的 AI 编程工具。

概念区分

  • 守护进程是运行在一台电脑上的 Melso 后台程序。它负责连接服务器、发现本机工具、领取 task 和回传结果。
  • 运行时代表一个工作区可以使用的具体执行环境。它对应一台电脑,以及这台电脑上的一款 AI 编程工具或自定义运行时配置。

例如,一台电脑同时安装了 Claude Code 和 Codex,并连接两个工作区。守护进程会分别为两个工作区注册 Claude Code 和 Codex 运行时。重启守护进程会更新原有记录,不会为同一个组合不断创建新运行时。

执行位置与数据边界

本地运行时调用的 AI 编程工具、这些工具自己的登录凭据,以及本地代码目录都留在连接的电脑上。Melso 服务器不会代替本地工具执行命令,也不会自动上传整个工作目录。

为了让团队能够协作,服务器会保存 issue、评论、智能体配置、task 上下文、执行记录和智能体写回的结果。这些内容可能包含智能体主动读取并写入回复的代码片段或其他项目上下文。

智能体的自定义环境变量保存在服务器侧,并在执行时发送给运行时。不要把"本地执行"理解为所有 secret 都只存在本机;自定义环境变量和 MCP 配置保存在服务器侧,展示受敏感信息规则限制。

启动守护进程

使用 Melso Desktop 时,应用会自动启动守护进程,不需要额外运行命令。

使用 Web、远程电脑或无界面环境时,先安装 Melso CLI,再运行:

melso daemon start

守护进程默认在后台运行。常用命令如下:

命令作用
melso daemon status查看守护进程和连接状态
melso daemon logs -f持续查看日志
melso daemon restart重启守护进程并重新检测本机工具
melso daemon stop停止守护进程
melso daemon start --foreground在当前终端中运行,便于调试

如需把 task 工作目录放到其他磁盘,可用 melso config set workspaces_root <path> 为当前 profile 持久化根目录,也可在 daemon startdaemon restart 中传入 --workspaces-root <path>。flag 的优先级高于 MULTICA_WORKSPACES_ROOT,环境变量又高于 profile 配置。修改根目录不会迁移已有的 task 目录。

启动时,守护进程会检测 PATH 中受支持的 AI 编程工具,并为你有权连接的工作区注册运行时。如果一款工具刚刚安装或登录,重启守护进程即可重新检测。

守护进程至少需要检测到一款内置支持的 AI 编程工具才能启动。安装方法和可执行文件名见安装 AI 编程工具

派发与在线状态

运行时注册后会持续保持连接。新 task 入队时,服务器会通知对应守护进程;守护进程也会定期轮询,作为连接中断后的补充。因此运行时在线且有空闲容量时,task 通常会立即开始。

守护进程每 15 秒发送一次心跳。服务端综合心跳与连接状态判断运行时是否在线;守护进程意外退出后,最迟通常会在约 3 分钟内显示为离线。

一台在线电脑的运行时详情:同一守护进程注册了 7 个运行时,每款检测到的 AI 编程工具各占一行,均显示在线状态与 CLI 版本

运行时离线时:

  • 已经排队的 task 会等待运行时恢复,最多保留 2 小时。
  • 正在执行的 task 会失败;符合条件的 issue 或对话 task 可以自动重试。
  • 守护进程重新启动后,会重新注册运行时,并回收上一次没有正常结束的 task。
  • 离线超过 7 天且没有任何智能体(包括已归档的)绑定的运行时,会被自动清理。

详细状态和重试规则见执行任务

并发限制

一台守护进程默认最多同时执行 20 条 task;每个智能体默认最多同时执行 6 条。实际并发取两者中的较小值。

达到上限后,新 task 会继续排队。你可以在智能体设置中调整单个智能体的并发数,也可以通过 MULTICA_DAEMON_MAX_CONCURRENT_TASKS 调整整台电脑的上限。并行执行会同时占用机器性能、工具账号额度和同一工作目录。

私有与公开

本地运行时默认是私有的:只有运行时所有者可以在它上面创建智能体。工作区的 owner、admin 也不例外——运行时是别人的电脑,在上面跑智能体消耗的是对方的机器和工具凭据。

只有运行时所有者可以把它改为公开——管理员可以重命名或删除运行时,但要不要共享由所有者决定。公开后,工作区中的其他成员也可以选择这条运行时;这不会分享底层 AI 编程工具的登录凭据,只是允许成员把智能体的执行任务路由到这台电脑。

自定义运行时配置

如果团队使用内部 wrapper、固定版本的可执行文件,或需要为一款兼容工具追加固定参数,可以创建自定义运行时配置

自定义配置不会增加新的通信协议。创建时仍需选择一种 Melso 已支持的协议族(工具的对接协议类型,见 AI 编程工具对照);命令本身必须与该协议兼容。

创建配置

只有工作区 owner 和 admin 可以创建、修改或删除自定义运行时配置:

  1. 打开 运行时,进入已经安装该命令的电脑。
  2. 点击添加自定义运行时
  3. 选择命令实际兼容的协议族。
  4. 填写名称、命令和固定参数,然后保存。

配置会在工作区内共享。每台已连接电脑会自行查找这个命令;只有能在 PATH 中解析到它的电脑才会注册对应运行时。创建配置不会自动安装命令,也不会替其他成员完成工具登录。

这里填写的是可执行文件和参数,不是 shell 脚本。可以使用普通参数、引号和反斜杠转义,但不能使用管道、重定向、&&;、反引号或环境变量展开。需要这些行为时,把它们放进 wrapper script,再把该脚本作为命令填写。

参数的排列顺序

命令字段里填写的内容会紧跟在可执行文件之后,排在 Melso 追加的参数之前:

<你的命令> <你的固定参数> <Melso 的协议参数> <Agent 的自定义参数>

带子命令的 wrapper 正是依靠这个顺序才能工作。如果命令是 ccms start q36,工具会先看到 start q36,在 Melso 的 -p 等参数到达之前完成子命令选择——这类 wrapper 只接受这一种顺序。

此前这里填写的参数是追加在最后的。多数 flag 形式的命令在两种位置下解析结果相同,但并非全部——如果某个命令区分全局 flag 和子命令 flag,它就会在意 flag 的位置。如果你已经配置了带固定参数的 profile,升级后请跑一个任务确认它仍能正常启动。

另有两点需要注意:

  • 冲突时以 Melso 的值为准。 如果固定参数设置了 Melso 也会设置的 flag,Melso 的值排在后面并最终生效。最典型的是:在 Agent 上选择的模型会覆盖 profile 里固定的 --model。若要为所有人固定模型,请把 Agent 的模型字段留空。
  • 协议关键 flag 会被忽略。 -p--output-format--input-format--permission-mode 以及其他协议族的对应 flag 会从固定参数中被剔除,因为覆盖它们会切断 daemon 与工具之间的通信。子命令和其他位置参数始终原样传递。

如果 Desktop 启动的守护进程找不到终端里能够执行的命令,可以为当前电脑设置绝对路径:

melso runtime profile set-path <profile-id> --path /absolute/path/to/command

移除路径覆盖:

melso runtime profile unset-path <profile-id>

修改配置只影响之后领取的 task。删除配置前,需要先处理仍绑定在对应运行时上的活动智能体。只删除某台电脑上的运行时实例并不会删除配置,运行中的守护进程还会重新注册它。

运行时离线的排查

按以下顺序检查:

  1. 运行 melso daemon status,确认守护进程已经启动。
  2. 运行 melso daemon logs -f,查看登录、网络或工具检测错误。
  3. 在同一运行环境中执行 command -v <工具命令>,确认守护进程能够找到它。
  4. 打开 Melso 的运行时页面,检查目标电脑和对应的 AI 编程工具是否显示在线。
  5. 工具刚安装、路径刚修改或配置刚更新时,运行 melso daemon restart

仍未解决时,参见故障排查

接下来