00 · VISUAL OVERVIEW
先用六张图看懂 Multiflow
不用先理解所有模块。只要记住:公司组织能力,项目承载工作,智能体负责执行,所有过程沉淀为可复用的组织记忆。
图一 · 公司如何组织智能体
从公司目标一路落到项目、专业角色和实际运行环境。
图二 · 一个需求如何完成
人定义结果,系统组织流转,智能体执行,人负责关键判断。
图三 · 网页如何调用员工本地智能体
云端负责调度与瞬时字节中继,本地 PTY 负责真实执行;授权成员可像坐在机器前一样实时查看、输入并用 Esc 打断。终端内容不写入云端数据库。云端机器先通过同源安装器获得最新 CLI,再用一次性接入码启动会话。
图四 · 智能体如何越用越好
每次执行都进入统一账本,反过来改进调度、模型、skill 和流程。
图五 · Agent 小队如何自动协作
Issue 触发一次有版本、可返工、可阻塞的协作运行;阶段结果自动交给下一位 Agent,同时写回 Issue 时间线。
图六 · 两种工作方式如何自动沉淀
计划型工作先拆任务,探索型工作边做边形成任务;两条路径共享同一份工作记录与项目视图。
DETAILED REFERENCE · 完整设计参考
01 · NORTH STAR
不是另一个聊天工具,而是智能体组织系统
智能体可以运行在员工电脑、公司服务器或云端;Multiflow 不替代模型与编码工具,而是提供统一的组织、调度、工作记录和治理层。
01 / ORGANIZE
按组织与项目组织智能体
一个项目可以归类多个具名智能体:前端、后端、iOS、安卓、UI、测试或任何公司自定义角色。
02 / OPERATE
把需求变成可追踪的执行
管理者可以直接问项目前台、下发 issue,或点名调用某个智能体;智能体领取、执行、汇报阶段、请求审批并交付结果。
03 / IMPROVE
用数据持续提高组织效率
历史、决策、成功率、耗时、token、工作量与交互流畅性共同形成智能体的改进闭环。
02 · CONTROL PLANE
公司级智能体控制面
管理者看到的是稳定的“能力与责任”,底层运行位置和工具可以变化。项目是组织边界,智能体是可调用责任单元,会话是一次具体执行环境。
Demand
老板 / PM目标、优先级、审批
团队成员需求、协作、接管
Autopilot定时与事件触发
外部系统API / Webhook / MCP
Multiflow
工作区组织、成员、权限
项目目标与工作边界
智能体目录角色、owner、在线状态
Issue & 调用队列、流程、审批、记录
Execution
员工 Mac桌面端 / 本地会话
公司服务器守护进程 / runner
云端 Runtime弹性执行环境
Claude · Codex · …可替换的执行引擎
Evidence
需求与决策为什么做、如何取舍
执行时间线阶段、阻塞、交付
用量与工作量token、时长、成功率
体验指标p50 / p95 / 卡顿率
关键抽象:项目归类能力;智能体承诺能力;会话承载上下文;issue 承载可审计工作。项目本身也是一个可对话入口——问项目现状由服务端直接作答,不需要任何执行端在线。
03 · SESSION MODEL
智能体只有一种,开放范围决定协作边界
系统不再把“协作智能体”和“普通智能体”建模为两种对象。智能体是稳定的能力身份,它的开放范围决定谁能调用;会话只是可替换的执行端,不是另一类智能体。对话可以指向智能体,也可以直接指向项目——项目前台由服务端用项目数据作答,不需要任何智能体在线。
AGENT · 统一能力身份
一个智能体,一套责任与记录
- 名称、owner、能力、历史和用量不因运行位置变化
- 开放范围可选仅自己、指定成员或整个工作区
- 可归类到多个项目角色,调用权与项目分类彼此独立
- 所有调用、issue、决策和工作记录回到同一智能体账本
ENDPOINT · 执行端与会话
智能体实际工作的地方
- 可以是员工 Mac、公司服务器或云端运行时
- 一个智能体可连接多个执行端,会话闪退不会改变智能体身份
- 目录、密钥和完整 transcript 默认不上传;云端 IP 与 Mac 机器名仅 owner 可见,终端仅在查看期间瞬时中继
- 可恢复 Claude Code / Codex 历史,并由授权成员实时查看、输入或 Esc 打断
- 下行通道按引擎不同:Claude Code 由服务端推送唤醒;Codex 只有桌面端启动时能收到网页派活(桌面端写入自己拥有的终端),取消信号收不到,其余情况必须自己轮询
项目工作边界与团队分类
→
智能体名称 · 角色 · skill · 开放范围
→
会话 / 执行端Claude Code · Codex · daemon · cloud
→
当前工作issue · 队列 · 阶段 · 结果
产品界面只保留一个“智能体工作台”:会话是智能体下面的运行上下文;“管理”负责配置身份与权限,不再与“会话”作为两个平级产品概念竞争。
向项目提问对话里选中项目前台,不指定任何智能体
→
识别意图封闭意图集 · 关键词兜底 · issue 编号只从用户原文提取
→
读项目结构化摘要team 路由表 · digest 状态 / 阻塞 / 需要关注
→
当场作答,或转为派活答案落库为一条会话消息,没有任务也没有运行时
项目前台是会话的第二种目标:target_kind=project 的会话没有智能体、没有执行端,服务端读 /api/projects/{id}/team 与 /api/projects/{id}/digest 直接作答。它要回答的是“这个项目现在怎么样、卡在哪、该找谁”,因此工作区里一个智能体都没有时也必须可用;只有“派活”这一类意图才继续走 issue 与调用管道。数字、状态和人名全部来自服务端查询结果,模型只被允许改写一句不含任何事实的开场白;模型不可用、超时或在改写里写出数字时,前台退回关键词分类与确定性文案,答案照常送达。
04 · REMOTE INVOCATION
网页调用、实时接管,也能恢复退出的本地会话
真正的执行始终发生在员工 Mac 或服务器的 PTY 中;云端负责授权、排队、固定动作与瞬时双向终端中继。Web 与 macOS 客户端都能创建首次接入云端机器的一次性接入码,也会为已接入机器生成不含接入码、可长期保存的 multiflow session start 新建与恢复命令;两端都能按项目角色调用在线云端智能体并接管实时终端。项目角色明确绑定执行端,不再按智能体名称猜测本机文件夹。调用不再只有“点名某个智能体”一个入口:向项目前台提出一件要动手的事,服务端会自己选执行端。
网页 / PM选择项目中的具名智能体,输入目标与上下文
→
Multiflow 调用管道关联已有 issue,或自动建工作记录 · 排队 · 确认
→
本地会话长轮询领取 → Claude / Codex 执行 → 阶段回报
调用者视图队列位置、当前 issue、阶段、输出、完成状态
←
实时事件WebSocket + 持久化历史,断线可恢复
←
owner 视图谁在调用、任务队列、确认、取消与人工接管
网页 xterm实时画面 · 键盘输入 · Esc = 0x1b · resize
↔
一次性终端票据45 秒有效 · 首帧认证 · 明确 assignment 权限
↔
WebSocket 字节中继不存输出 · 单一键盘控制者 · 断线自动重连
↔
员工机器 PTYDesktop node-pty / Linux multica PTY → Claude Code
本地 PTY 是唯一事实源:浏览器关闭或网络断开不会终止 Claude Code;执行端仅保留 2 MiB 内存回放用于重连,服务端不持久化终端内容。每次调用优先关联用户选择的已有 issue;未选择时自动创建同项目的轻量工作记录,并随调用进入 todo、in_progress、in_review / blocked / cancelled,结果沿同一来源链归档。Web 与 macOS 使用页面内多终端工作台而非阻塞弹窗,同一终端重复点击只切换标签,不同 Agent 可同时保持连接。服务器从受信代理链观察云端执行端 IP,客户端报告 Mac 机器名;两者仅在 owner 的私人会话列表和终端标题中展示。
准备云端机器同源脚本安装 / 更新 CLI · 校验 SHA-256
→
兼容性检查multiflow session --help · claude --version
→
一次性接入码10 分钟有效 · 单次兑换 · 绑定项目与权限
→
会话上线新建 / 继续最近 / 按名称或 ID 恢复 · channel 随进程启动
已运行的 Claude Code 进程不能热插入 MCP channel;先退出旧进程,再通过 --continue 或 --resume=<会话名称或 ID> 恢复保存的上下文。
个人会话本机或云端 · Claude Code / Codex
→
补齐智能体身份已有则选择;没有则用同类型运行环境一键创建
→
项目角色前端 · 后端 · iOS · UI · 自定义角色
→
组织可调用开放范围 · 队列 · 时间线 · 用量统一记账
个人会话默认私有;用户明确开放后,具有该智能体调用权的成员才能查看和接管当前在线终端。目录、密钥、完整历史和离线终端记录仍不对组织公开。
前台收到派活一句人话,没有指定智能体
→
服务端路由表挑人先看调用权 · 再看是否可达 · 再看优先级与在跑负载
→
有在线本地会话走既有调用管道 · 幂等键是那条消息 · 自动建 issue 台账
→
否则记成 issue指派给最合适的智能体,等它上线接手;没人可派就留在待办
前台不会因为“没有在线执行端”而报错:只有在线的本地会话能立刻开工,其余情况一律落成项目里的 issue,由 issue 指派把工作交给带运行时的智能体队列。派活入口有三个,边界不重叠:项目前台面向人,一句话进来、自动分诊与路由;小队工作流面向系统,版本化、可返工、由工作流独占阶段流转;delegate_work 面向智能体,是智能体之间的一次性求助。前台可以让工作进入 issue 与调用管道,但不参与流程内部调度——小队工作流没有因为前台而改变。
主智能体读取当前项目与目标
→
get_project_team角色 · skill · 在线端点 · 当前 issue / 队列
→
delegate_work会话 invocation 或 runtime @提及队列
→
可审计协作task · 调用 · 时间线 · 用量
「把这个交给某某的 agent」点名到人,而不是点名到角色
→
find_teammate_agent人 → agent · 当前可达路线 · 是否有调用权
→
handoff_workruntime 立刻开工 / attended 唤醒本人 / queued 落库等领取
→
交接留痕交接记录 · 交接评论 · 改指派 · 开场上下文
交接和委派是两件事,权限也不同:delegate_work 要跑对方的机器、花对方的额度,所以要对方授权,对方离线就失败;handoff_work 转移的是这件事的归属,只需要同一个工作区,对方离线或没给你调用权时降级成「已记录并指派、对方上线自取」,绝不因此丢掉工作。交接内容始终落在 issue 上而不是走智能体私信——这样同事本人也看得见,重复提交不会送两次,链路超过三跳会被拦下来要求人来接。
路由表只有一份:get_project_team 和项目前台读的都是服务端的 /api/projects/{id}/team,谁可达、谁有调用权、谁在跑几件事由服务端判定,客户端不再各算一遍。
owner 网页选择自己的项目智能体,发送 start / restart
→
固定动作邮箱校验 user + launcher + generation,不接收 Shell
→
Multiflow Desktop预登记不透明档案;本机解析目录、代理和权限
→
Claude Code--resume 原会话;闪退最多自动恢复 3 次
04A · MOBILE COMPANION
手机是智能体的随身调度台,不复制桌面终端
iOS 与 Android 共用一套 Expo / React Native 业务层。管理者可以按项目找到自己有权调用的 Agent 角色,关联 Issue 后下发工作并实时查看队列、阶段和结果;真正的终端、目录与代码执行仍留在员工机器或云端 Runtime。
iOS / Android登录 · 工作区 · 项目上下文
→
对话 · 需求 · 调度项目 Agent · 本机会话 · 队列 · 调用时间线
→
Multiflow 控制面统一权限、REST、WebSocket 与工作记录
→
Agent Runtime员工本地 · 公司服务器 · 云端执行
共享业务层API 语义、缓存、状态机、实时更新完全一致
+
平台适配层iOS / Android 各自的导航、菜单、键盘、图标与无障碍
→
同一协作闭环选项目角色 → 关联 Issue → 下发 → 实时阶段 → 决策
- 底部主导航只保留对话、需求、项目与我的;复杂配置和批量管理留在 Web / Desktop。
- 智能体目录展示当前用户可调用的统一智能体;“我的执行端”单独管理本机会话,不把会话当作第二种智能体。
- 移动端复用 queued / delivered / running / completed / failed / cancelled 六态、权限模式和幂等键,WebSocket 实时更新并以 30 秒轮询降级。
- 切换 Tab 不重建核心页面;草稿、筛选和滚动状态按工作区隔离。
- 对话文本、附件与 mention 按用户 / 工作区 / 会话持久隔离;停止恢复先排队、成功发送后才消费服务端记录。
- WebSocket 负责实时 patch,前台恢复与重连只做有界补拉,弱网不静默丢消息。
- 双端记录首屏、Tab 切换、会话/需求打开和长帧指标,不采集正文、邮箱或密钥。
05 · ISSUE EXECUTION LOOP
需求、决策、执行和验收留在同一个闭环
智能体一次只租赁一份工作,阶段性回报后继续推进。任务不是一条消失的 prompt,而是拥有上下文、证据、状态与责任人的长期记录。
定义需求与验收标准背景、目标、非目标、依赖、决策记录进入 issue
todo
原子领取下一份工作按项目、优先级与能力筛选,获得租约避免重复执行
claim_next_work
读取完整工作上下文需求、历史决策、资源、相关 issue、当前约束一次获取
work_context
执行并汇报阶段计划、实现、验证、阻塞和关键决定形成结构化时间线
report_stage
风险操作请求人工审批发布、删除、生产配置、花钱或信息不足时暂停当前动作
request_approval
交付、验证并流转附验证证据、总结和后续事项,进入评审或完成
finish_work
领取队列中的下一项串行推进,新任务无需轮询模型;空闲时零 token 等待事件
next
06 · DATA & LEARNING LOOP
从“做过”走向“知道如何做得更好”
记录不是为了监控员工,而是让组织回答:什么工作正在发生、哪里卡住、成本花在哪里、哪一种智能体与工作方式更可靠。
交付
成功率调用次数 · 完成率 · 返工率 · 阻塞率
效率
周期排队时长 · 首次响应 · 执行时长 · 评审时长
成本
Token输入 · 输出 · 缓存 · 模型 · 项目/成员/智能体维度
体验
p50 / p95路由切换 · 首屏可用 · 交互延迟 · 卡顿与冻结
执行事件与工作证据谁、何时、为何、做了什么、结果如何
→
统一智能体账本项目 / 成员 / 智能体 / issue / 会话维度聚合
→
组织改进调度、提示词、skill、模型、流程和产品体验优化
07 · API-FIRST VERIFICATION
所有产品操作都应可由 API 或 CLI 验证
界面是使用入口,不是唯一入口。每个功能先有可脚本化边界,再通过界面承载体验,调试与回归不依赖截图和人工点击。
Web / Desktop / Automation用户体验与自动化调用者
→
REST · WebSocket · CLImultiflow api request · websocket · check
→
同一业务能力权限、状态机、事件和持久化行为一致
- 生产环境默认只读验证;写操作只允许在隔离工作区或隔离数据库中执行。
- 文件、长轮询与实时事件必须通过真实 transport 测试,不能只从 handler 单测推断。
- CI 守卫新路由具备脚本化访问方式;UI 验证是补充,不是替代。
- 每次交付记录准确的 API/CLI 验证命令与结果。
08 · DESKTOP PATCH DELIVERY
高频小修复,也必须经过完整的签名交付链路
Multiflow 不向已签名应用热塞代码。每个补丁仍是完整签名、公证、可追溯的版本,但通过 blockmap 只传输变化部分;更新元数据最后原子切换,发布中断不会影响正在使用的旧版本。
已推送提交干净工作区 · 单调版本
→
签名与公证Developer ID · Gatekeeper 验证
→
自有稳定源版本文件先到 · 清单最后切换
→
后台差分更新15 分钟检查 · 退出时安装
- 更新传输使用 Multiflow 自有域名,不依赖 GitHub API 可用性。
- ZIP blockmap 降低小版本下载量,但应用签名和公证边界保持完整。
- 版本化文件不可变,同版本内容冲突时发布立即失败。
- 下载页与客户端读取同一稳定清单,避免“可下载版本”和“可更新版本”分叉。
09 · TRUST BOUNDARIES
集中管理不等于失去个人环境的控制权
默认最小暴露、显式授权、危险操作升级人工审批。组织获得可调用性与可追踪性,员工保留对机器、会话和权限策略的控制。
01显式授权
智能体默认仅 owner 可调用;owner 可改为指定成员或整个工作区。连接执行端不会自动扩大调用权。
02最小数据
云端保存调度与工作证据,不默认上传项目文件、密钥或完整本地 transcript。
03可配置确认
owner 为智能体设置调用确认与权限模式;网页调用者不能绕过机器侧安全策略。
04危险操作审批
删除数据、发布、生产配置与付费行为通过审批单升级给授权人员。
05本人启动边界
网页只能启动当前用户自己的本地会话;组织调用者不能启动员工命令行,云端也不能下发路径、环境变量或任意 Shell。
10 · LIVING DOCUMENT CONTRACT
这份 HTML 本身也是产品接口
页面正文服务于人,页面末尾的 JSON 服务于系统。两者必须在同一次变更里更新,避免“图里一个世界、代码里另一个世界”。
什么时候必须更新
- 智能体、项目、会话或运行时的领域关系发生变化
- 远程调用、issue 生命周期、审批或安全边界发生变化
- 用量、工作量、体验指标或验证控制面发生变化
- 产品北极星与“协作 / 个人”边界发生变化
机器读取契约
#multiflow-architecture-model
schema_version 保持兼容
document_version 每次递增
updated_at 使用 ISO 日期
flows[].id 是稳定标识