feat: ship native boss android console

This commit is contained in:
kris
2026-03-26 23:16:56 +08:00
parent 90e904814d
commit 90cb6b7ff1
261 changed files with 40051 additions and 135 deletions

View File

@@ -0,0 +1,137 @@
<svg width="2000" height="1320" viewBox="0 0 2000 1320" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bg" x1="140" y1="60" x2="1860" y2="1260" gradientUnits="userSpaceOnUse">
<stop stop-color="#F8FBFF"/>
<stop offset="1" stop-color="#EEF5FF"/>
</linearGradient>
<linearGradient id="centerFill" x1="790" y1="472" x2="1210" y2="848" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#4D91FF"/>
</linearGradient>
<filter id="shadow" x="0" y="0" width="2000" height="1320" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="18" stdDeviation="20" flood-color="#17212F" flood-opacity="0.12"/>
</filter>
<style>
.title { font: 700 36px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #162235; }
.subtitle { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #4C6075; }
.section-title { font: 700 25px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #14253B; }
.section-text { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #43566B; }
.section-text-small { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #54687E; }
.badge { font: 700 12px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; }
.center-title { font: 700 34px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: white; }
.center-text { font: 500 17px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: rgba(255,255,255,0.92); }
.footer { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #61758D; }
</style>
</defs>
<rect width="2000" height="1320" rx="36" fill="url(#bg)"/>
<text x="92" y="92" class="title">Codex 多机协作业务流程思维导图</text>
<text x="92" y="126" class="subtitle">只讲业务推进链路,不讲底层服务拆分。适合拿来讨论产品体验、协作方式、项目推进和异常处置。</text>
<g filter="url(#shadow)">
<rect x="780" y="470" width="440" height="380" rx="38" fill="url(#centerFill)"/>
</g>
<rect x="832" y="512" width="336" height="38" rx="19" fill="rgba(255,255,255,0.18)"/>
<text x="927" y="537" class="badge" style="fill:#FFFFFF">业务流程中心</text>
<text x="884" y="615" class="center-title">一个主 Agent</text>
<text x="850" y="662" class="center-title">贯穿整个项目周期</text>
<text x="848" y="716" class="center-text">你始终只对一个主会话说话</text>
<text x="842" y="748" class="center-text">它负责理解需求、拆任务、派机器、盯进度、收结果</text>
<text x="870" y="780" class="center-text">并在异常时切换账号、节点或执行策略</text>
<path d="M782 572C672 532 541 487 408 407" stroke="#3B82F6" stroke-width="7" stroke-linecap="round"/>
<path d="M780 656C642 653 531 673 410 738" stroke="#22C55E" stroke-width="7" stroke-linecap="round"/>
<path d="M1000 470C1002 368 1004 272 1004 180" stroke="#F59E0B" stroke-width="7" stroke-linecap="round"/>
<path d="M1220 572C1342 529 1452 488 1590 410" stroke="#A855F7" stroke-width="7" stroke-linecap="round"/>
<path d="M1220 666C1354 672 1465 700 1592 778" stroke="#EF4444" stroke-width="7" stroke-linecap="round"/>
<path d="M1000 850C1000 949 1000 1032 1000 1126" stroke="#0EA5E9" stroke-width="7" stroke-linecap="round"/>
<g filter="url(#shadow)">
<rect x="80" y="232" width="494" height="308" rx="30" fill="#FFFFFF"/>
<rect x="76" y="236" width="10" height="300" rx="5" fill="#3B82F6"/>
</g>
<rect x="122" y="266" width="164" height="34" rx="17" fill="#E8F1FF"/>
<text x="162" y="289" class="badge" style="fill:#0F62FE">需求进入</text>
<text x="122" y="346" class="section-title">1. 你在手机里发起一个项目</text>
<text x="122" y="394" class="section-text">• 你描述目标、优先级、设备条件、交付标准,始终只对一个主 Agent 说话</text>
<text x="122" y="430" class="section-text">• 主 Agent 先把需求转成项目卡:目标、边界、风险、里程碑、待确认项</text>
<text x="122" y="466" class="section-text">• 如果项目涉及硬件、摄像头、机器人、串口,也在这里声明测试需求</text>
<text x="122" y="502" class="section-text">• App 里马上生成项目视图,而不是只留下一串长聊天记录</text>
<text x="122" y="532" class="section-text-small">技术Mobile App / Web、Control API、Project View、WebSocket</text>
<g filter="url(#shadow)">
<rect x="84" y="624" width="522" height="330" rx="30" fill="#FFFFFF"/>
<rect x="80" y="628" width="10" height="322" rx="5" fill="#22C55E"/>
</g>
<rect x="126" y="658" width="174" height="34" rx="17" fill="#EAF9EE"/>
<text x="165" y="681" class="badge" style="fill:#14803D">规划与分派</text>
<text x="126" y="740" class="section-title">2. 主 Agent 拆任务并分配节点</text>
<text x="126" y="788" class="section-text">• 按功能、平台、算力、风险把项目拆成多个短任务,而不是一条线程写到底</text>
<text x="126" y="824" class="section-text">• Mac 负责前端、Xcode、本地联调Windows 负责 GPU、硬件桥接云端负责 CI 和长任务</text>
<text x="126" y="860" class="section-text">• 同时选择主账号、备用账号或 API 容灾路径,避免主流程因单账号额度耗尽而停摆</text>
<text x="126" y="896" class="section-text">• 每个任务都落在独立 worker thread、独立 branch / worktree 中</text>
<text x="126" y="928" class="section-text-small">技术LangGraph、Scheduler、Project Memory、Git worktree、Thread Registry</text>
<g filter="url(#shadow)">
<rect x="728" y="78" width="554" height="296" rx="30" fill="#FFFFFF"/>
<rect x="724" y="82" width="10" height="288" rx="5" fill="#F59E0B"/>
</g>
<rect x="772" y="112" width="180" height="34" rx="17" fill="#FFF3DD"/>
<text x="812" y="135" class="badge" style="fill:#A16207">执行推进</text>
<text x="772" y="190" class="section-title">3. 多台 Codex 并行开发与协作</text>
<text x="772" y="238" class="section-text">• 各机器上的 Codex 线程按自己的短上下文工作,减少长上下文退化</text>
<text x="772" y="274" class="section-text">• 线程可以在主控监管下跨节点对话,例如 Mac 线程请求 Windows 做 GPU 或硬件验证</text>
<text x="772" y="310" class="section-text">• 所有聊天、命令、补丁、失败和审批都被实时镜像回主项目页面</text>
<text x="772" y="346" class="section-text">• 你点开任意任务就能看见该线程的完整进度,不需要自己切电脑</text>
<text x="772" y="376" class="section-text-small">技术Codex app-server / SDK、Worker Daemon、Inter-Thread Broker、Event Store</text>
<g filter="url(#shadow)">
<rect x="1448" y="230" width="468" height="316" rx="30" fill="#FFFFFF"/>
<rect x="1912" y="234" width="10" height="308" rx="5" fill="#A855F7"/>
</g>
<rect x="1490" y="264" width="188" height="34" rx="17" fill="#F4E8FF"/>
<text x="1534" y="287" class="badge" style="fill:#7E22CE">审计与验证</text>
<text x="1490" y="344" class="section-title">4. 审计层复核“做完了没,做对了没”</text>
<text x="1490" y="392" class="section-text">• 规则审计先发现超时、失败、断流、额度异常、重复压缩</text>
<text x="1490" y="428" class="section-text">• 软件审计看代码和测试,硬件审计看设备状态和串口,多模态审计看视频音频</text>
<text x="1490" y="464" class="section-text">• 审计不是只读日志,它可以在需要时接管测试硬件能力做完整验证</text>
<text x="1490" y="500" class="section-text">• 最后由总审计 Agent 给出通过、驳回、需人工复核或返工建议</text>
<text x="1490" y="532" class="section-text-small">技术Rules Audit Engine、Audit Orchestrator、专项审计 Agent、Chief Auditor</text>
<g filter="url(#shadow)">
<rect x="1426" y="646" width="500" height="336" rx="30" fill="#FFFFFF"/>
<rect x="1922" y="650" width="10" height="328" rx="5" fill="#EF4444"/>
</g>
<rect x="1468" y="680" width="196" height="34" rx="17" fill="#FEEAEA"/>
<text x="1514" y="703" class="badge" style="fill:#B42318">硬件测试闭环</text>
<text x="1468" y="762" class="section-title">5. 硬件能力按需被审计 Agent 接管</text>
<text x="1468" y="810" class="section-text">• 摄像头、麦克风、扬声器、串口、继电器、拇指机器人先注册成能力</text>
<text x="1468" y="846" class="section-text">• 审计 Agent 通过租约领取能力,必要时按优先级抢占,而不是直接抢桌面</text>
<text x="1468" y="882" class="section-text">• 多模态测试能形成完整闭环:发声、拍摄、按压、观察、记录、判断</text>
<text x="1468" y="918" class="section-text">• 测试证据被归档,后续可以回放和复盘</text>
<text x="1468" y="950" class="section-text-small">技术Capability Registry、Lease Manager、Preemption Manager、Test Rig Gateway、Evidence Collector</text>
<g filter="url(#shadow)">
<rect x="698" y="1044" width="610" height="224" rx="30" fill="#FFFFFF"/>
<rect x="694" y="1048" width="10" height="216" rx="5" fill="#0EA5E9"/>
</g>
<rect x="742" y="1078" width="196" height="34" rx="17" fill="#E4F6FD"/>
<text x="786" y="1101" class="badge" style="fill:#0369A1">交付与异常</text>
<text x="742" y="1160" class="section-title">6. 结果汇总、交付、异常恢复</text>
<text x="742" y="1208" class="section-text">• 主 Agent 汇总各线程结果和审计结论,输出阶段成果、风险、下一步建议</text>
<text x="742" y="1244" class="section-text">• 如果 worker 掉线、额度耗尽、主账号失效,系统自动切备用账号、备用主控或 API 容灾</text>
<text x="742" y="1276" class="section-text-small">技术Event Store、Postgres、对象存储、gptpluscontrol、Standby Controller、API Fallback</text>
<rect x="84" y="1066" width="470" height="170" rx="22" fill="#FFFFFF" opacity="0.9"/>
<text x="118" y="1114" class="section-title" style="font-size:21px;">业务上最核心的变化</text>
<text x="118" y="1152" class="section-text-small">从“一个 Codex 长线程写到底”变成“一个主 Agent 驱动多个短线程协作”。</text>
<text x="118" y="1182" class="section-text-small">用户看到的是一个连续项目流程,系统内部则是拆分执行、持续审计、随时切换。</text>
<rect x="1450" y="1046" width="470" height="174" rx="22" fill="#FFFFFF" opacity="0.9"/>
<text x="1484" y="1094" class="section-title" style="font-size:21px;">适合讨论的产品问题</text>
<text x="1484" y="1132" class="section-text-small">• 手机端项目页长什么样</text>
<text x="1484" y="1160" class="section-text-small">• 主 Agent 什么时候自动审计、什么时候打断用户</text>
<text x="1484" y="1188" class="section-text-small">• 多机线程如何展示协作关系和失败重派</text>
<text x="92" y="1290" class="footer">图文件:/Users/kris/code/Talking/business_flow_mindmap_cn.svg</text>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@@ -0,0 +1,213 @@
<svg width="2200" height="1780" viewBox="0 0 2200 1780" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bg" x1="180" y1="40" x2="2020" y2="1740" gradientUnits="userSpaceOnUse">
<stop stop-color="#F8FBFF"/>
<stop offset="1" stop-color="#EEF4FF"/>
</linearGradient>
<filter id="shadow" x="0" y="0" width="2200" height="1780" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="16" stdDeviation="18" flood-color="#1F2937" flood-opacity="0.10"/>
</filter>
<style>
.title { font: 700 38px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #17263C; }
.subtitle { font: 500 17px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #4F647A; }
.stage { font: 700 20px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #17314D; }
.lane { font: 700 18px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #132238; }
.laneSub { font: 500 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #5A6E84; }
.cardTitle { font: 700 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #132238; }
.cardText { font: 500 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #43576D; }
.tech { font: 700 12px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #0F62FE; }
.footer { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #60748C; }
</style>
</defs>
<rect width="2200" height="1780" rx="36" fill="url(#bg)"/>
<text x="90" y="92" class="title">Codex 多机协作业务流程泳道图</text>
<text x="90" y="128" class="subtitle">把“谁在什么时候做什么”拆开,并把主运维层、开放式运维接入、主 Agent 反向抢救运维层一起纳入业务流程。</text>
<g filter="url(#shadow)">
<rect x="250" y="168" width="300" height="78" rx="20" fill="#FFFFFF"/>
<rect x="570" y="168" width="300" height="78" rx="20" fill="#FFFFFF"/>
<rect x="890" y="168" width="300" height="78" rx="20" fill="#FFFFFF"/>
<rect x="1210" y="168" width="300" height="78" rx="20" fill="#FFFFFF"/>
<rect x="1530" y="168" width="300" height="78" rx="20" fill="#FFFFFF"/>
<rect x="1850" y="168" width="260" height="78" rx="20" fill="#FFFFFF"/>
</g>
<text x="346" y="214" class="stage">1. 立项进入</text>
<text x="653" y="214" class="stage">2. 规划与派发</text>
<text x="976" y="214" class="stage">3. 执行与协作</text>
<text x="1290" y="214" class="stage">4. 审计与测试</text>
<text x="1611" y="214" class="stage">5. 汇总与交付</text>
<text x="1913" y="214" class="stage">6. 异常与恢复</text>
<g opacity="0.97">
<rect x="60" y="286" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="486" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="686" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="886" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="1086" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="1286" width="2060" height="180" rx="26" fill="#FFFFFF"/>
<rect x="60" y="1486" width="2060" height="180" rx="26" fill="#FFFFFF"/>
</g>
<g stroke="#D8E2EF" stroke-width="2">
<line x1="230" y1="286" x2="230" y2="1666"/>
<line x1="550" y1="286" x2="550" y2="1666"/>
<line x1="870" y1="286" x2="870" y2="1666"/>
<line x1="1190" y1="286" x2="1190" y2="1666"/>
<line x1="1510" y1="286" x2="1510" y2="1666"/>
<line x1="1830" y1="286" x2="1830" y2="1666"/>
<line x1="60" y1="486" x2="2120" y2="486"/>
<line x1="60" y1="686" x2="2120" y2="686"/>
<line x1="60" y1="886" x2="2120" y2="886"/>
<line x1="60" y1="1086" x2="2120" y2="1086"/>
<line x1="60" y1="1286" x2="2120" y2="1286"/>
<line x1="60" y1="1486" x2="2120" y2="1486"/>
</g>
<rect x="78" y="316" width="126" height="48" rx="18" fill="#E8F1FF"/>
<text x="104" y="346" class="lane">用户 / 手机 App</text>
<text x="84" y="380" class="laneSub">你看到的产品流程入口</text>
<rect x="78" y="516" width="144" height="48" rx="18" fill="#EAF9EE"/>
<text x="102" y="546" class="lane">主 Agent / 主控</text>
<text x="84" y="580" class="laneSub">决策、拆解、调度、回收</text>
<rect x="78" y="716" width="160" height="48" rx="18" fill="#FFF3DD"/>
<text x="102" y="746" class="lane">Worker 执行层</text>
<text x="84" y="780" class="laneSub">Mac / Windows / Cloud Codex</text>
<rect x="78" y="916" width="134" height="48" rx="18" fill="#F4E8FF"/>
<text x="102" y="946" class="lane">审计层</text>
<text x="84" y="980" class="laneSub">规则 + 专项 Agent</text>
<rect x="78" y="1116" width="162" height="48" rx="18" fill="#FEEAEA"/>
<text x="102" y="1146" class="lane">硬件能力层</text>
<text x="84" y="1180" class="laneSub">Capability Registry / Test Rig</text>
<rect x="78" y="1316" width="188" height="48" rx="18" fill="#EEF2FF"/>
<text x="102" y="1346" class="lane">运维层 / 运维审计层</text>
<text x="84" y="1380" class="laneSub">主运维层 + 开放式接入 + 抢修</text>
<rect x="78" y="1516" width="178" height="48" rx="18" fill="#E4F6FD"/>
<text x="102" y="1546" class="lane">数据 / 容灾层</text>
<text x="84" y="1580" class="laneSub">Event Store / Quota / Standby</text>
<g filter="url(#shadow)">
<rect x="258" y="308" width="284" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1590" y="308" width="224" height="136" rx="20" fill="#FFFFFF"/>
<rect x="582" y="508" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="900" y="508" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1220" y="508" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1540" y="508" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1862" y="508" width="232" height="136" rx="20" fill="#FFFFFF"/>
<rect x="896" y="708" width="292" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1216" y="708" width="292" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1220" y="908" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1540" y="908" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1220" y="1108" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1540" y="1108" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="582" y="1308" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1220" y="1308" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1540" y="1308" width="276" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1862" y="1308" width="232" height="136" rx="20" fill="#FFFFFF"/>
<rect x="896" y="1508" width="292" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1862" y="1508" width="232" height="136" rx="20" fill="#FFFFFF"/>
</g>
<text x="278" y="340" class="cardTitle">发起项目需求</text>
<text x="278" y="368" class="cardText">输入目标、优先级、设备条件、交付标准。</text>
<text x="278" y="392" class="cardText">系统生成项目页,不再只是一串聊天。</text>
<text x="278" y="420" class="tech">技术Mobile App / Web、Control API、Project View</text>
<text x="1610" y="340" class="cardTitle">查看结果与继续追问</text>
<text x="1610" y="368" class="cardText">看阶段成果、风险、审计结论、运维告警,再继续给主会话下指令。</text>
<text x="1610" y="420" class="tech">技术:项目页、线程页、时间线、通知中心</text>
<text x="602" y="540" class="cardTitle">项目结构化建模</text>
<text x="602" y="568" class="cardText">整理目标、里程碑、风险、待确认项。</text>
<text x="602" y="592" class="cardText">决定使用主 GPT、备用 GPT 还是 API 容灾。</text>
<text x="602" y="620" class="tech">技术LangGraph、Project Memory、Quota Router</text>
<text x="920" y="540" class="cardTitle">任务拆解与派发</text>
<text x="920" y="568" class="cardText">按平台、算力、上下文体积拆成多个短任务。</text>
<text x="920" y="592" class="cardText">为每个任务挑选节点、账号、branch 与 worktree。</text>
<text x="920" y="620" class="tech">技术Scheduler、Thread Registry、Git worktree</text>
<text x="1240" y="540" class="cardTitle">监管执行与审计触发</text>
<text x="1240" y="568" class="cardText">盯线程推进,必要时发起审计、重派或人工确认。</text>
<text x="1240" y="620" class="tech">技术Audit Orchestrator、Rules Watchdog</text>
<text x="1560" y="540" class="cardTitle">汇总与阶段交付</text>
<text x="1560" y="568" class="cardText">归并子线程结果、审计结论、运维状态和下一步建议。</text>
<text x="1560" y="620" class="tech">技术Decision Ledger、Summary Builder</text>
<text x="1882" y="540" class="cardTitle">主控异常切换</text>
<text x="1882" y="568" class="cardText">主账号或主控异常时切备用主控、备用账号或 API。</text>
<text x="1882" y="620" class="tech">技术Standby Controller、Failover Policy</text>
<text x="916" y="740" class="cardTitle">多机并行开发</text>
<text x="916" y="768" class="cardText">Mac 做前端和本地联调Windows 跑 GPU 或硬件桥接,云端跑长任务。</text>
<text x="916" y="820" class="tech">技术Codex app-server / SDK、Worker Daemon</text>
<text x="1236" y="740" class="cardTitle">跨节点线程协作</text>
<text x="1236" y="768" class="cardText">Mac 线程可请求 Windows 线程做 GPU、硬件或平台验证。</text>
<text x="1236" y="820" class="tech">技术Inter-Thread Broker、Thread Gateway、ACL</text>
<text x="1240" y="940" class="cardTitle">规则审计先筛异常</text>
<text x="1240" y="968" class="cardText">看超时、失败、断流、额度、反复压缩和卡住状态。</text>
<text x="1240" y="1020" class="tech">技术Rules Audit Engine、Event Rules</text>
<text x="1560" y="940" class="cardTitle">专项审计与总审计</text>
<text x="1560" y="968" class="cardText">软件、硬件、多模态各自复核,再由总审计给出结论。</text>
<text x="1560" y="1020" class="tech">技术Software Auditor、Hardware Auditor、Chief Auditor</text>
<text x="1240" y="1140" class="cardTitle">能力申请与租约</text>
<text x="1240" y="1168" class="cardText">审计 Agent 或 worker 先申请摄像头、串口、机器人等能力。</text>
<text x="1240" y="1220" class="tech">技术Capability Registry、Lease Manager</text>
<text x="1560" y="1140" class="cardTitle">抢占、执行、证据回传</text>
<text x="1560" y="1168" class="cardText">按优先级抢占,执行测试动作,回传视频、音频、日志和检测结果。</text>
<text x="1560" y="1220" class="tech">技术Preemption Manager、Test Rig Gateway、Evidence Collector</text>
<text x="602" y="1340" class="cardTitle">开放式主运维层接入</text>
<text x="602" y="1368" class="cardText">为其他项目注册运维域、连接器、健康探针和 Runbook Pack。</text>
<text x="602" y="1420" class="tech">技术Ops Domain、Ops Extension Registry、Connector Runtime</text>
<text x="1240" y="1340" class="cardTitle">动态巡检、跨设备运维与修复授权</text>
<text x="1240" y="1368" class="cardText">高频使用时 5 分钟巡检,空闲时 1 小时;还能跨设备拉日志、重启服务、切账号、跑 Runbook。</text>
<text x="1240" y="1420" class="tech">技术Ops Policy Engine、Local Ops Agent、Remote Actions、Postgres Queue</text>
<text x="1560" y="1340" class="cardTitle">运维修复复验与汇报</text>
<text x="1560" y="1368" class="cardText">修复后先由运维审计层复验,再把结论和剩余风险报告主会话。</text>
<text x="1560" y="1420" class="tech">技术Repair Ticket、Verification、Ops Ledger</text>
<text x="1882" y="1340" class="cardTitle">反向抢救运维层</text>
<text x="1882" y="1368" class="cardText">如果运维层自己挂了,主 Agent 切到 rescue 模式,走最小救援通道恢复运维层。</text>
<text x="1882" y="1420" class="tech">技术ops_rescue_mode、Emergency RPC、Standby Ops</text>
<text x="916" y="1540" class="cardTitle">全量事件镜像</text>
<text x="916" y="1568" class="cardText">线程消息、命令、patch、审批、协作、告警和修复工单都落库。</text>
<text x="916" y="1620" class="tech">技术Event Store、Postgres、对象存储</text>
<text x="1882" y="1540" class="cardTitle">额度与容灾健康矩阵</text>
<text x="1882" y="1568" class="cardText">监控各 Codex 节点剩余额度、切换记录、Standby 状态与运维健康矩阵。</text>
<text x="1882" y="1620" class="tech">技术gptpluscontrol、SSE、Capacity Report、Standby Controller</text>
<g stroke-linecap="round" stroke-width="5">
<path d="M542 376H586V546" stroke="#3B82F6"/>
<path d="M858 576H900" stroke="#22C55E"/>
<path d="M1176 576H1220" stroke="#22C55E"/>
<path d="M1496 576H1540" stroke="#22C55E"/>
<path d="M1816 576H1882" stroke="#EF4444"/>
<path d="M1050 644V708" stroke="#F59E0B"/>
<path d="M1360 644V908" stroke="#A855F7"/>
<path d="M1680 1044V1108" stroke="#EF4444"/>
<path d="M1042 844V1508" stroke="#0EA5E9"/>
<path d="M1360 644V1308" stroke="#6D28D9"/>
<path d="M1812 376H1838V1508" stroke="#0EA5E9"/>
<path d="M1496 1376H1540" stroke="#6D28D9"/>
<path d="M1816 1376H1882" stroke="#EF4444"/>
</g>
<text x="90" y="1736" class="footer">图文件:/Users/kris/code/Talking/business_flow_swimlane_cn.svg</text>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@@ -0,0 +1,132 @@
<svg width="1800" height="1220" viewBox="0 0 1800 1220" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bg" x1="200" y1="80" x2="1600" y2="1140" gradientUnits="userSpaceOnUse">
<stop stop-color="#F8FBFF"/>
<stop offset="1" stop-color="#EDF4FF"/>
</linearGradient>
<linearGradient id="centerFill" x1="730" y1="465" x2="1070" y2="755" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#4A8DFF"/>
</linearGradient>
<filter id="shadow" x="0" y="0" width="1800" height="1220" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="18" stdDeviation="20" flood-color="#1F2937" flood-opacity="0.12"/>
</filter>
<style>
.title { font: 700 34px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #152033; }
.subtitle { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #4D6178; }
.section-title { font: 700 24px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #132238; }
.section-text { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #3D5066; }
.section-text-small { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #4C6075; }
.center-title { font: 700 30px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: white; }
.center-text { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: rgba(255,255,255,0.92); }
.badge { font: 700 12px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #0F62FE; }
.footer { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #5E7289; }
</style>
</defs>
<rect x="0" y="0" width="1800" height="1220" rx="36" fill="url(#bg)"/>
<text x="94" y="92" class="title">Codex 多机协作当前流程思维导图</text>
<text x="94" y="126" class="subtitle">围绕手机单入口、主控调度、多机 Codex、专项审计、硬件能力接管与容灾恢复的当前整体流程</text>
<g filter="url(#shadow)">
<rect x="690" y="450" width="420" height="300" rx="34" fill="url(#centerFill)"/>
</g>
<rect x="728" y="490" width="344" height="36" rx="18" fill="rgba(255,255,255,0.18)"/>
<text x="790" y="515" class="badge">当前主流程中心</text>
<text x="779" y="580" class="center-title">一个主 Agent</text>
<text x="758" y="622" class="center-title">统一调度全局</text>
<text x="776" y="665" class="center-text">手机端只和一个主会话对话</text>
<text x="742" y="694" class="center-text">外部记忆保存项目真相,不让单线程越聊越钝</text>
<path d="M690 566C594 534 484 490 390 425" stroke="#3B82F6" stroke-width="6" stroke-linecap="round"/>
<path d="M695 633C579 646 471 665 392 728" stroke="#22C55E" stroke-width="6" stroke-linecap="round"/>
<path d="M895 450C891 332 892 252 892 186" stroke="#F59E0B" stroke-width="6" stroke-linecap="round"/>
<path d="M1108 563C1229 533 1340 492 1410 426" stroke="#A855F7" stroke-width="6" stroke-linecap="round"/>
<path d="M1108 640C1230 651 1348 681 1410 744" stroke="#EF4444" stroke-width="6" stroke-linecap="round"/>
<path d="M900 752C902 852 905 918 905 1002" stroke="#0EA5E9" stroke-width="6" stroke-linecap="round"/>
<g filter="url(#shadow)">
<rect x="96" y="244" width="462" height="300" rx="28" fill="#FFFFFF"/>
<rect x="92" y="246" width="10" height="294" rx="5" fill="#3B82F6"/>
</g>
<rect x="132" y="274" width="124" height="32" rx="16" fill="#E8F1FF"/>
<text x="165" y="296" class="badge">用户入口</text>
<text x="132" y="346" class="section-title">1. 手机端 / Web 单入口</text>
<text x="132" y="388" class="section-text">• 只保留一个主对话窗口,不让用户自己分配线程</text>
<text x="132" y="420" class="section-text">• 项目列表可查看每个 Codex 线程的聊天、命令、补丁、状态</text>
<text x="132" y="452" class="section-text">• 顶部小胶囊显示当前主控身份:主 GPT / 备用 GPT / API 容灾</text>
<text x="132" y="484" class="section-text">• 实时显示各绑定 Codex 客户端剩余额度和切换情况</text>
<g filter="url(#shadow)">
<rect x="92" y="616" width="488" height="302" rx="28" fill="#FFFFFF"/>
<rect x="88" y="620" width="10" height="294" rx="5" fill="#22C55E"/>
</g>
<rect x="130" y="646" width="154" height="32" rx="16" fill="#EAF9EE"/>
<text x="168" y="668" class="badge" style="fill:#14803D">主控编排</text>
<text x="130" y="716" class="section-title">2. Master Agent Runtime</text>
<text x="130" y="758" class="section-text">• LangGraph 负责任务拆解、节点选择、上下文裁剪、阶段推进</text>
<text x="130" y="790" class="section-text">• Project Memory 保存目标、约束、摘要、决策和未决项</text>
<text x="130" y="822" class="section-text">• Scheduler 按平台能力、额度、负载和项目优先级派发任务</text>
<text x="130" y="854" class="section-text">• Inter-Thread Broker 监管 Mac / Windows / 云线程的对话</text>
<g filter="url(#shadow)">
<rect x="648" y="78" width="510" height="288" rx="28" fill="#FFFFFF"/>
<rect x="644" y="82" width="10" height="280" rx="5" fill="#F59E0B"/>
</g>
<rect x="686" y="108" width="164" height="32" rx="16" fill="#FFF4DA"/>
<text x="725" y="130" class="badge" style="fill:#A16207">执行层</text>
<text x="686" y="178" class="section-title">3. 多机 Codex Worker 执行</text>
<text x="686" y="220" class="section-text">• Mac Worker前端、Xcode、轻量开发、本地联调</text>
<text x="686" y="252" class="section-text">• Windows WorkerWSL2GPU、CUDA、Windows 工具链、硬件桥接</text>
<text x="686" y="284" class="section-text">• Cloud WorkerCI、批处理、长任务、后台服务</text>
<text x="686" y="316" class="section-text">• 每个节点都运行自己的 Codex app-server / SDK 和独立账号</text>
<g filter="url(#shadow)">
<rect x="1236" y="244" width="474" height="300" rx="28" fill="#FFFFFF"/>
<rect x="1704" y="246" width="10" height="294" rx="5" fill="#A855F7"/>
</g>
<rect x="1272" y="274" width="160" height="32" rx="16" fill="#F4E8FF"/>
<text x="1307" y="296" class="badge" style="fill:#7E22CE">审计层</text>
<text x="1272" y="346" class="section-title">4. 混合审计与专项 Agent</text>
<text x="1272" y="388" class="section-text">• Rules Audit Engine先看超时、失败、断流、额度、队列积压</text>
<text x="1272" y="420" class="section-text">• 软件审计 Agent看代码、测试、接口契约、发布风险</text>
<text x="1272" y="452" class="section-text">• 硬件审计 Agent看固件、串口、传感器、设备状态机</text>
<text x="1272" y="484" class="section-text">• 多模态审计 Agent看视频、截图、音频、拟人交互效果</text>
<g filter="url(#shadow)">
<rect x="1228" y="620" width="492" height="312" rx="28" fill="#FFFFFF"/>
<rect x="1724" y="624" width="10" height="304" rx="5" fill="#EF4444"/>
</g>
<rect x="1268" y="650" width="184" height="32" rx="16" fill="#FEEAEA"/>
<text x="1304" y="672" class="badge" style="fill:#B42318">开放硬件能力</text>
<text x="1268" y="722" class="section-title">5. Capability Registry + Test Rig</text>
<text x="1268" y="764" class="section-text">• 摄像头、麦克风、扬声器、串口、继电器、拇指机器人统一注册</text>
<text x="1268" y="796" class="section-text">• Lease Manager 管租约Preemption Manager 管抢占和宽限期</text>
<text x="1268" y="828" class="section-text">• 审计 Agent 通过标准能力接口接管硬件,不直接抢系统桌面</text>
<text x="1268" y="860" class="section-text">• Evidence Collector 归档视频片段、截图、音频、日志与检测结果</text>
<g filter="url(#shadow)">
<rect x="606" y="956" width="594" height="218" rx="28" fill="#FFFFFF"/>
<rect x="602" y="960" width="10" height="210" rx="5" fill="#0EA5E9"/>
</g>
<rect x="646" y="986" width="192" height="32" rx="16" fill="#E4F6FD"/>
<text x="683" y="1008" class="badge" style="fill:#0369A1">数据与容灾</text>
<text x="646" y="1058" class="section-title">6. Event Store / Quota / Standby</text>
<text x="646" y="1100" class="section-text">• Event Store 镜像 thread、命令、patch、审批、协作与告警</text>
<text x="646" y="1132" class="section-text">• gptpluscontrol 提供剩余额度、账号切换、实时监控和预警</text>
<text x="646" y="1164" class="section-text">• Standby Controller 和外部状态存储保证主控故障后仍可接管</text>
<rect x="104" y="1068" width="364" height="96" rx="20" fill="#FFFFFF" opacity="0.82"/>
<text x="132" y="1106" class="section-title" style="font-size:20px;">当前主流程一句话</text>
<text x="132" y="1138" class="section-text-small">用户只对一个主 Agent 说话,主 Agent 依靠外部记忆和事件流</text>
<text x="132" y="1162" class="section-text-small">去调度多台机器上的短上下文 Codex 线程,并在审计与容灾下持续推进。</text>
<rect x="1320" y="1012" width="406" height="136" rx="20" fill="#FFFFFF" opacity="0.9"/>
<text x="1348" y="1050" class="section-title" style="font-size:20px;">开发顺序建议</text>
<text x="1348" y="1082" class="section-text-small">1. 先打通 Worker + Event Store + Quota Monitor</text>
<text x="1348" y="1108" class="section-text-small">2. 再接 Inter-Thread Broker 和审计任务协议</text>
<text x="1348" y="1134" class="section-text-small">3. 最后接 Capability Registry 与硬件测试台</text>
<text x="94" y="1196" class="footer">图文件:/Users/kris/code/Talking/current_flow_mindmap_cn.svg</text>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@@ -0,0 +1,93 @@
<svg width="1600" height="980" viewBox="0 0 1600 980" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
.bg { fill: #f7f8fc; }
.title { font: 700 34px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #1d2736; }
.sub { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #526070; }
.panel { fill: #ffffff; stroke: #d8deea; stroke-width: 2; rx: 24; ry: 24; }
.panelTitle { font: 700 24px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #17212e; }
.panelSub { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #5a6878; }
.boxBlue { fill: #eef5ff; stroke: #8cb5ff; stroke-width: 2; rx: 18; ry: 18; }
.boxGreen { fill: #eefaf2; stroke: #8dcca1; stroke-width: 2; rx: 18; ry: 18; }
.boxOrange { fill: #fff6ea; stroke: #f0b56a; stroke-width: 2; rx: 18; ry: 18; }
.boxGray { fill: #f5f7fb; stroke: #cfd8e6; stroke-width: 2; rx: 18; ry: 18; }
.boxTitle { font: 700 18px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #1e2a39; }
.boxText { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #556273; }
.tech { font: 600 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #3d6fd6; }
.foot { font: 600 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif; fill: #7a8796; }
.arrow { stroke: #6f7f95; stroke-width: 3; fill: none; marker-end: url(#arrowhead); }
</style>
<marker id="arrowhead" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
<polygon points="0 0, 10 4, 0 8" fill="#6f7f95"/>
</marker>
</defs>
<rect class="bg" x="0" y="0" width="1600" height="980"/>
<text class="title" x="70" y="70">容灾保活两种部署模式</text>
<text class="sub" x="70" y="104">系统同时支持“单云 + 单 Mac 备用控制器”和“双云热备 / 温备”,按成本与可用性选择。</text>
<rect class="panel" x="60" y="140" width="710" height="760"/>
<text class="panelTitle" x="90" y="190">模式 A单云 + 单 Mac 备用控制器</text>
<text class="panelSub" x="90" y="220">更省云成本,适合已有常开 Mac 的现场环境。</text>
<rect class="boxBlue" x="100" y="270" width="250" height="150"/>
<text class="boxTitle" x="126" y="305">Cloud A主用</text>
<text class="boxText" x="126" y="338">控制面单体</text>
<text class="boxText" x="126" y="364">PostgreSQL 主库 + pgvector</text>
<text class="boxText" x="126" y="390">HTTP + SSE</text>
<rect class="boxGreen" x="420" y="270" width="290" height="180"/>
<text class="boxTitle" x="446" y="305">Standby Mac备用</text>
<text class="boxText" x="446" y="338">备用控制面轻实例</text>
<text class="boxText" x="446" y="364">PostgreSQL 备库 / 快照恢复实例</text>
<text class="boxText" x="446" y="390">Standby Controller</text>
<text class="boxText" x="446" y="416">Ops Rescue Gateway</text>
<path class="arrow" d="M350 345 C385 345, 390 345, 420 345"/>
<rect class="boxOrange" x="100" y="500" width="610" height="160"/>
<text class="boxTitle" x="126" y="536">必要前提</text>
<text class="boxText" x="126" y="570">1. 备用 Mac 必须常开,并保留可用磁盘做备份与恢复。</text>
<text class="boxText" x="126" y="598">2. 手机 App 必须支持主 / 备 endpoint 列表切换。</text>
<text class="boxText" x="126" y="626">3. 必须有一条不依赖主云的可达通路同局域网、Tailscale/WireGuard 或长期反向隧道。</text>
<rect class="boxGray" x="100" y="700" width="610" height="150"/>
<text class="boxTitle" x="126" y="736">优点与边界</text>
<text class="boxText" x="126" y="770">优点:更省钱,本地接管更快,适合已有常开 Mac mini 的环境。</text>
<text class="boxText" x="126" y="798">边界:如果云和现场 Mac 同时断电 / 断网,这条备援链也会失效。</text>
<text class="tech" x="126" y="826">建议最低M1 / 8GB / 50GB可用更稳16GB / 100GB</text>
<rect class="panel" x="830" y="140" width="710" height="760"/>
<text class="panelTitle" x="860" y="190">模式 B双云热备 / 温备</text>
<text class="panelSub" x="860" y="220">更强的远程连续性,适合把备援独立于现场设备之外。</text>
<rect class="boxBlue" x="870" y="270" width="250" height="150"/>
<text class="boxTitle" x="896" y="305">Cloud A主用</text>
<text class="boxText" x="896" y="338">控制面单体</text>
<text class="boxText" x="896" y="364">PostgreSQL 主库 + pgvector</text>
<text class="boxText" x="896" y="390">HTTP + SSE</text>
<rect class="boxGreen" x="1190" y="270" width="290" height="180"/>
<text class="boxTitle" x="1216" y="305">Cloud B备用</text>
<text class="boxText" x="1216" y="338">备用控制面单体</text>
<text class="boxText" x="1216" y="364">PostgreSQL 备库</text>
<text class="boxText" x="1216" y="390">接管脚本 / 快照 / 恢复钩子</text>
<text class="boxText" x="1216" y="416">Standby Controller</text>
<path class="arrow" d="M1120 345 C1155 345, 1160 345, 1190 345"/>
<rect class="boxOrange" x="870" y="500" width="610" height="160"/>
<text class="boxTitle" x="896" y="536">必要前提</text>
<text class="boxText" x="896" y="570">1. Cloud B 只做热备 / 温备,不承担常态重负载。</text>
<text class="boxText" x="896" y="598">2. 手机 App 与控制面支持主 / 备云 endpoint 切换。</text>
<text class="boxText" x="896" y="626">3. 设备端继续承担重媒体、重审计、重运维执行动作。</text>
<rect class="boxGray" x="870" y="700" width="610" height="150"/>
<text class="boxTitle" x="896" y="736">优点与边界</text>
<text class="boxText" x="896" y="770">优点:公网可达性更稳,不依赖现场某一台设备,接管路径更标准化。</text>
<text class="boxText" x="896" y="798">边界:成本更高;最后一跳的硬件接管仍要依赖现场设备在线。</text>
<text class="tech" x="896" y="826">建议最低Cloud A 2C8G/100GBCloud B 2C8G/100GB</text>
<text class="foot" x="70" y="940">统一抽象建议standby_provider = standby_mac | cloud_b | both</text>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

View File

@@ -0,0 +1,166 @@
<svg width="2200" height="1420" viewBox="0 0 2200 1420" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bg" x1="160" y1="40" x2="2040" y2="1380" gradientUnits="userSpaceOnUse">
<stop stop-color="#F8FBFF"/>
<stop offset="1" stop-color="#EEF5FF"/>
</linearGradient>
<filter id="shadow" x="0" y="0" width="2200" height="1420" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="14" stdDeviation="18" flood-color="#1F2937" flood-opacity="0.10"/>
</filter>
<style>
.title { font: 700 36px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #15253B; }
.subtitle { font: 500 17px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #51657C; }
.stage { font: 700 20px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #17314D; }
.lane { font: 700 18px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #132238; }
.laneSub { font: 500 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #5A6E84; }
.cardTitle { font: 700 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #132238; }
.cardText { font: 500 13px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #44586E; }
.tech { font: 700 12px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #0F62FE; }
.footer { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #60758C; }
</style>
</defs>
<rect width="2200" height="1420" rx="36" fill="url(#bg)"/>
<text x="90" y="92" class="title">运维层与运维审计层抢修流程泳道图</text>
<text x="90" y="126" class="subtitle">覆盖动态巡检、日志命名、在线审批修复、主控离线紧急接管、修复复验与主控恢复回放。</text>
<!-- Stage headers -->
<g filter="url(#shadow)">
<rect x="250" y="162" width="280" height="76" rx="20" fill="#FFFFFF"/>
<rect x="550" y="162" width="280" height="76" rx="20" fill="#FFFFFF"/>
<rect x="850" y="162" width="280" height="76" rx="20" fill="#FFFFFF"/>
<rect x="1150" y="162" width="280" height="76" rx="20" fill="#FFFFFF"/>
<rect x="1450" y="162" width="280" height="76" rx="20" fill="#FFFFFF"/>
<rect x="1750" y="162" width="330" height="76" rx="20" fill="#FFFFFF"/>
</g>
<text x="331" y="207" class="stage">1. 动态巡检</text>
<text x="623" y="207" class="stage">2. 异常分类</text>
<text x="929" y="207" class="stage">3. 审批 / 授权</text>
<text x="1231" y="207" class="stage">4. 修复执行</text>
<text x="1543" y="207" class="stage">5. 复验</text>
<text x="1831" y="207" class="stage">6. 汇报与回放</text>
<!-- Lane backgrounds -->
<g opacity="0.96">
<rect x="60" y="280" width="2060" height="184" rx="26" fill="#FFFFFF"/>
<rect x="60" y="484" width="2060" height="184" rx="26" fill="#FFFFFF"/>
<rect x="60" y="688" width="2060" height="184" rx="26" fill="#FFFFFF"/>
<rect x="60" y="892" width="2060" height="184" rx="26" fill="#FFFFFF"/>
<rect x="60" y="1096" width="2060" height="184" rx="26" fill="#FFFFFF"/>
</g>
<!-- Grid -->
<g stroke="#D8E2EF" stroke-width="2">
<line x1="230" y1="280" x2="230" y2="1280"/>
<line x1="530" y1="280" x2="530" y2="1280"/>
<line x1="830" y1="280" x2="830" y2="1280"/>
<line x1="1130" y1="280" x2="1130" y2="1280"/>
<line x1="1430" y1="280" x2="1430" y2="1280"/>
<line x1="1730" y1="280" x2="1730" y2="1280"/>
<line x1="60" y1="484" x2="2120" y2="484"/>
<line x1="60" y1="688" x2="2120" y2="688"/>
<line x1="60" y1="892" x2="2120" y2="892"/>
<line x1="60" y1="1096" x2="2120" y2="1096"/>
</g>
<!-- Lanes -->
<rect x="78" y="310" width="134" height="48" rx="18" fill="#E8F1FF"/>
<text x="102" y="340" class="lane">主 Agent</text>
<text x="84" y="374" class="laneSub">在线审批与接收回放</text>
<rect x="78" y="514" width="144" height="48" rx="18" fill="#EAF9EE"/>
<text x="102" y="544" class="lane">Ops Agent</text>
<text x="84" y="578" class="laneSub">巡检、分类、执行修复</text>
<rect x="78" y="718" width="188" height="48" rx="18" fill="#F4E8FF"/>
<text x="102" y="748" class="lane">Ops Audit Agent</text>
<text x="84" y="782" class="laneSub">监督、判权、复验、紧急决策</text>
<rect x="78" y="922" width="162" height="48" rx="18" fill="#FEEAEA"/>
<text x="102" y="952" class="lane">终端服务层</text>
<text x="84" y="986" class="laneSub">主控 / Worker / 网关 / 硬件桥</text>
<rect x="78" y="1126" width="176" height="48" rx="18" fill="#E4F6FD"/>
<text x="102" y="1156" class="lane">数据与容灾层</text>
<text x="84" y="1190" class="laneSub">Ops Ledger / Event / Standby</text>
<!-- Cards -->
<g filter="url(#shadow)">
<rect x="552" y="506" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="552" y="710" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1752" y="302" width="320" height="136" rx="20" fill="#FFFFFF"/>
<rect x="852" y="506" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="852" y="710" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1152" y="506" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1452" y="710" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1152" y="914" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1452" y="914" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1152" y="1118" width="258" height="136" rx="20" fill="#FFFFFF"/>
<rect x="1752" y="1118" width="320" height="136" rx="20" fill="#FFFFFF"/>
<rect x="252" y="506" width="258" height="136" rx="20" fill="#FFFFFF"/>
</g>
<text x="272" y="538" class="cardTitle">动态巡检模式</text>
<text x="272" y="566" class="cardText">高频使用时每 5 分钟巡检,系统空闲时每 1 小时巡检。</text>
<text x="272" y="618" class="tech">技术Ops Policy Engine、Mode Switch Rules</text>
<text x="572" y="538" class="cardTitle">日志归一与故障聚类</text>
<text x="572" y="566" class="cardText">按 `LAYER.DOMAIN.COMPONENT.ACTION.ERROR_CODE` 归类,生成最小证据包。</text>
<text x="572" y="618" class="tech">技术fault_key、Runbook Map、Log Index</text>
<text x="872" y="538" class="cardTitle">主控在线时请求审批</text>
<text x="872" y="566" class="cardText">主 Agent 在线且可响应时Ops Agent 先提修复建议,不能越权直接修。</text>
<text x="872" y="618" class="tech">技术Approval Request、Repair Ticket</text>
<text x="872" y="742" class="cardTitle">主控失联时做最终判断</text>
<text x="872" y="770" class="cardText">确认主控失联后Ops Audit Agent 联合 Chief Ops Audit Agent 决定是否抢修。</text>
<text x="872" y="822" class="tech">技术Emergency Authority、Offline Quorum</text>
<text x="1172" y="538" class="cardTitle">执行修复 Runbook</text>
<text x="1172" y="566" class="cardText">重启服务、切换账号、恢复心跳、释放孤儿租约、重建连接等。</text>
<text x="1172" y="618" class="tech">技术Runbook Executor、Safe Action Policy</text>
<text x="1472" y="742" class="cardTitle">复验修复是否真的成功</text>
<text x="1472" y="770" class="cardText">看原故障是否消失、服务是否恢复、事件流是否恢复、是否有副作用。</text>
<text x="1472" y="822" class="tech">技术Ops Audit Verification、Synthetic Probe</text>
<text x="1172" y="946" class="cardTitle">被修复对象恢复服务</text>
<text x="1172" y="974" class="cardText">主控、Worker、Thread Gateway、Audit Orchestrator、Test Rig、gptpluscontrol 等恢复。</text>
<text x="1172" y="1026" class="tech">技术Service Supervisor、Health Probe</text>
<text x="1472" y="946" class="cardTitle">产生新健康状态与证据</text>
<text x="1472" y="974" class="cardText">生成复验日志、关键快照、队列状态、额度状态和回放材料。</text>
<text x="1472" y="1026" class="tech">技术Evidence Collector、Health Snapshot</text>
<text x="1172" y="1150" class="cardTitle">修复账本留痕</text>
<text x="1172" y="1178" class="cardText">写入 repair ticket、动作、复验结果、主控是否在线、后续风险。</text>
<text x="1172" y="1230" class="tech">技术Ops Ledger、Event Store、Postgres</text>
<text x="1772" y="334" class="cardTitle">主控每小时检查运维层</text>
<text x="1772" y="362" class="cardText">确认各节点 Ops Agent / Ops Audit Agent 是否在线且最近巡检成功。</text>
<text x="1772" y="414" class="tech">技术Master Health Check、Ops Node Matrix</text>
<text x="1772" y="1150" class="cardTitle">恢复后回放给主控</text>
<text x="1772" y="1178" class="cardText">主控恢复在线后,自动收到故障摘要、修复动作、复验结论和剩余风险。</text>
<text x="1772" y="1230" class="tech">技术Repair Report Sync、Recovery Replay</text>
<text x="572" y="742" class="cardTitle">监督 Ops Agent 是否越权</text>
<text x="572" y="770" class="cardText">确认主控是否在线、当前动作是否在自动修复白名单、是否需要升级。</text>
<text x="572" y="822" class="tech">技术Ops Audit Policy、Privilege Gate</text>
<!-- Flow arrows -->
<g stroke-linecap="round" stroke-width="5">
<path d="M510 574H552" stroke="#22C55E"/>
<path d="M810 574H852" stroke="#22C55E"/>
<path d="M1110 574H1152" stroke="#22C55E"/>
<path d="M1410 982H1452" stroke="#EF4444"/>
<path d="M1710 778H1752V1186" stroke="#A855F7"/>
<path d="M2012 438V1118" stroke="#0EA5E9"/>
<path d="M980 642V710" stroke="#A855F7"/>
<path d="M1280 642V914" stroke="#EF4444"/>
<path d="M1280 1050V1118" stroke="#0EA5E9"/>
<path d="M1610 846V914" stroke="#EF4444"/>
</g>
<text x="90" y="1376" class="footer">图文件:/Users/kris/code/Talking/ops_repair_swimlane_cn.svg</text>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,103 @@
<svg width="1900" height="1180" viewBox="0 0 1900 1180" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bg" x1="120" y1="40" x2="1780" y2="1120" gradientUnits="userSpaceOnUse">
<stop stop-color="#F8FBFF"/>
<stop offset="1" stop-color="#EEF5FF"/>
</linearGradient>
<linearGradient id="cloudA" x1="520" y1="250" x2="900" y2="640" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#4D91FF"/>
</linearGradient>
<linearGradient id="cloudB" x1="1010" y1="250" x2="1390" y2="640" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F766E"/>
<stop offset="1" stop-color="#2CB7A5"/>
</linearGradient>
<filter id="shadow" x="0" y="0" width="1900" height="1180" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="16" stdDeviation="18" flood-color="#1F2937" flood-opacity="0.10"/>
</filter>
<style>
.title { font: 700 36px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #17263C; }
.subtitle { font: 500 16px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #51657C; }
.cardTitle { font: 700 24px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #FFFFFF; }
.cardText { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: rgba(255,255,255,0.92); }
.sectionTitle { font: 700 22px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #14263D; }
.sectionText { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #45586F; }
.tag { font: 700 12px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #0F62FE; }
.footer { font: 500 14px -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #60748C; }
</style>
</defs>
<rect width="1900" height="1180" rx="36" fill="url(#bg)"/>
<text x="80" y="92" class="title">极轻云双云部署拓扑图</text>
<text x="80" y="126" class="subtitle">原则:云端只保留控制面真相和调度真相;主云承载业务,备云只承担接管准备;重执行全部下沉到设备端。</text>
<g filter="url(#shadow)">
<rect x="720" y="86" width="460" height="112" rx="26" fill="#FFFFFF"/>
</g>
<text x="852" y="132" class="sectionTitle">手机 App / Web</text>
<text x="780" y="166" class="sectionText">只看项目、线程、审计结论、运维状态,不直接连设备节点</text>
<g filter="url(#shadow)">
<rect x="520" y="250" width="390" height="360" rx="30" fill="url(#cloudA)"/>
<rect x="990" y="250" width="390" height="360" rx="30" fill="url(#cloudB)"/>
</g>
<text x="650" y="302" class="cardTitle">Cloud A 主云</text>
<text x="566" y="344" class="cardText">常态承载主业务流量</text>
<text x="566" y="380" class="cardText">• 控制面单体FastAPI + LangGraph</text>
<text x="566" y="412" class="cardText">• Master Agent / Scheduler / Audit / Ops</text>
<text x="566" y="444" class="cardText">• Thread Registry / Broker 逻辑</text>
<text x="566" y="476" class="cardText">• PostgreSQL 主库 + pgvector</text>
<text x="566" y="508" class="cardText">• HTTP + SSE</text>
<text x="566" y="556" class="cardText">不放:</text>
<text x="566" y="588" class="cardText">Redis / NATS / 独立向量库 / 重媒体处理</text>
<text x="1120" y="302" class="cardTitle">Cloud B 备云</text>
<text x="1036" y="344" class="cardText">平时只做热备 / 温备,不跑重负载</text>
<text x="1036" y="380" class="cardText">• 备用控制面单体</text>
<text x="1036" y="412" class="cardText">• PostgreSQL 备库</text>
<text x="1036" y="444" class="cardText">• 接管脚本 / 快照 / 恢复入口</text>
<text x="1036" y="476" class="cardText">• Standby Controller / Rescue hooks</text>
<text x="1036" y="556" class="cardText">目标:</text>
<text x="1036" y="588" class="cardText">保持“可接管”,而不是“平时跑满”</text>
<g filter="url(#shadow)">
<rect x="110" y="726" width="520" height="290" rx="28" fill="#FFFFFF"/>
<rect x="690" y="726" width="520" height="290" rx="28" fill="#FFFFFF"/>
<rect x="1270" y="726" width="520" height="290" rx="28" fill="#FFFFFF"/>
</g>
<rect x="150" y="758" width="172" height="32" rx="16" fill="#EAF9EE"/>
<text x="196" y="780" class="tag" style="fill:#14803D">Mac / Windows 节点</text>
<text x="150" y="834" class="sectionTitle">执行与边缘处理</text>
<text x="150" y="876" class="sectionText">• Worker Daemon</text>
<text x="150" y="906" class="sectionText">• Thread Gateway</text>
<text x="150" y="936" class="sectionText">• Local Ops Agent / Audit Agent</text>
<text x="150" y="966" class="sectionText">• OCR / 检测 / 视频裁剪 / 音频预处理</text>
<rect x="730" y="758" width="162" height="32" rx="16" fill="#FEEAEA"/>
<text x="767" y="780" class="tag" style="fill:#B42318">Test Rig / 硬件</text>
<text x="730" y="834" class="sectionTitle">硬件能力在边缘执行</text>
<text x="730" y="876" class="sectionText">• Camera / Mic / Speaker</text>
<text x="730" y="906" class="sectionText">• Thumb Robot / Relay / Serial</text>
<text x="730" y="936" class="sectionText">• Test Rig Gateway</text>
<text x="730" y="966" class="sectionText">• 只上传关键帧、短片段、摘要与异常证据</text>
<rect x="1310" y="758" width="182" height="32" rx="16" fill="#E4F6FD"/>
<text x="1353" y="780" class="tag" style="fill:#0369A1">为什么这样最省云</text>
<text x="1310" y="834" class="sectionTitle">云端不做重活</text>
<text x="1310" y="876" class="sectionText">• 不持续接原始媒体流</text>
<text x="1310" y="906" class="sectionText">• 不跑常驻重审计进程</text>
<text x="1310" y="936" class="sectionText">• 不做跨设备修复动作本体</text>
<text x="1310" y="966" class="sectionText">• 只保留真相、调度、索引、结论与接管能力</text>
<g stroke-linecap="round" stroke-width="6">
<path d="M950 198V248" stroke="#3B82F6"/>
<path d="M910 430H990" stroke="#94A3B8" stroke-dasharray="12 12"/>
<path d="M700 610V726" stroke="#22C55E"/>
<path d="M1180 610V726" stroke="#EF4444"/>
<path d="M1380 610V726" stroke="#0EA5E9"/>
</g>
<text x="80" y="1128" class="footer">图文件:/Users/kris/code/Talking/ultra_light_dual_cloud_topology_cn.svg</text>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB