triphasic-execution

Other

Execute→Review→Advance 三步循环执行框架。所有任务按此节奏推进, 防止无限死循环或单步骤卡住。附带结构化问题日志、风险手册和经验教训登记册。 v5.8 更新:【加载协议】+ 【约束精简】 - 新增 LOADING PROTOCOL:skill 加载后输出状态标识,表示上下文已建立 - 状态输出用于透明可见:出现在任务执行前 = 执行顺序正确;出现在任务执行后 = 顺序错误 - 删除无实质意义的强制确认机制(F-00) - F-01~F-10 绝对约束:框架核心,任何模式下不可跳过 v5.7 更新:【语义拆分前置】+ 【强制规范硬化】 - 规划前强制执行语义拆分,明确主语/目的/诉求/动机后再规划 - 所有"必须"描述升级为 [MANDATORY] 强制约束,违规即停止执行 - 强制规范移至文件顶部,防止AI读到末尾时已开始执行 - 新增违规检测机制:每个阶段开始前自检 v5.6 更新:【临时进度文件】+ 【进度持久化防中断】 核心逻辑 = Python CLI,不依赖任何 Agent 平台。 触发关键词:三步执行、循环框架、执行审查推进、triphasic、问题记录、 经验教训、problem logger、exec wrapper、exec guard、 打开 triphasic 设置、修改 triphasic 配置、triphasic settings、打开设置界面。

Install

openclaw skills install triphasic-execution

Triphasic Execution Framework v5.8

执行 → 审查 → 推进。每次交互只做一件事,三者缺一不可。


⚡ [LOADING PROTOCOL] —— 执行顺序透明可见机制

本块定义 skill 的加载状态输出。目的是让用户看到执行顺序,不影响框架执行本身。

状态输出(仅供可见性,不约束行为)

skill 加载后,AI 应输出以下状态标识:

[triphasic] skill loaded — 执行顺序:语义拆分 → 任务规划 → 执行/审查/推进

如何判断执行顺序是否正确

观察结果结论
状态输出在任务相关内容之前出现✅ 执行顺序正确,skill 在任务前加载
状态输出在任务执行后才出现❌ 执行顺序错误,任务跑在 skill 加载之前
无状态输出❌ skill 未加载或加载后未输出状态

注意:状态输出只是透明可见的标识,不约束 AI 的实际执行行为。框架的执行约束由 F-01~F-10 定义。

执行顺序(透明可见)

完整读取 SKILL.md → 输出状态标识(可见) → 读取用户任务 → 语义拆分 → 规划 → 执行循环
                                                              ↑
                                                    F-01~F-10 约束在此生效

🚨 [MANDATORY] 强制约束总表 —— 加载技能后立即生效,无例外

本节是整个技能的执行宪法。任何步骤开始前,AI必须对照本表自检。违反任意一条 = 违规,必须立即停止当前操作并补充执行被跳过的步骤。

强制约束清单(按执行顺序)

序号约束内容触发时机违规后果
F-01收到任务后,首先执行语义拆分,输出块分析结果,禁止直接进入规划收到任务的第一个响应停止执行,补充语义拆分输出
F-02语义拆分完成后,必须输出【任务规划】,禁止直接执行语义拆分输出后停止执行,补充任务规划
F-03任务规划输出后,必须立即调用 task_progress.py init 创建进度文件规划确认后停止执行,补充 init 调用
F-04每个步骤 EXECUTE 开始前,必须重述本步骤的任务目的每步执行前停止,补述目的后再执行
F-05每个步骤执行后,必须紧跟 REVIEW 阶段,禁止连续执行两步每步执行后停止,补充 REVIEW 输出
F-06每个步骤 REVIEW 后,必须紧跟 ADVANCE 阶段每步 REVIEW 后停止,补充 ADVANCE 输出
F-07每步 ADVANCE 后,必须调用 task_progress.py update 更新进度文件每步 ADVANCE 后停止,补充 update 调用
F-08同一步骤失败 3 次后,必须换方案,禁止第 4 次重试重试计数达到 3停止重试,输出换方案决策
F-09任务全部完成后,必须调用 task_progress.py complete 删除进度文件任务完成时补充 complete 调用
F-10任务完成后,必须输出【任务完成】总结任务结束时补充总结输出

自检指令(每个阶段开始前执行)

[自检] 当前阶段:[阶段名称]
- F-01 语义拆分:[已完成/待执行]
- F-02 任务规划:[已完成/待执行]
- F-03 进度文件创建:[已完成/待执行]
- 当前步骤 N:[待执行/执行中/已完成]
违规项:[无/F-XX 描述]

🔴 [MANDATORY] Phase 0 —— 语义拆分(每次收到任务的第一步,必须输出,禁止跳过)

违反 F-01:如果 AI 没有输出语义拆分就开始规划或执行,属于严重违规。必须回滚并先输出拆分结果。

拆分规则

块(Block)识别:按主语划分,每个主语构成一个块。

主语类型识别方式
用户("我")说话者本人
AI助手("你")执行者、帮助者
第三方("他/她/它")提及的其他角色

每个块提取三类信息:

元素定义
目的最终要达成的目标
诉求需要执行的具体操作或交付物
动机为什么会产生这个需求

输出格式([MANDATORY] 必须按此格式输出)

【语义拆分】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【原始输入】
[用户原话完整引用]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

## 块 1:[主语名称]
  角色:[用户/执行者/第三方]
  目的:[该主语要达成的核心目标]
  诉求:
    1. [诉求点1]
    2. [诉求点2]
    3. [诉求点3]
  动机:[产生该需求的背景/原因/情绪]

## 块 2:[主语名称]
  角色:[执行者]
  目的:[执行者要达成的目标]
  诉求:
    1. [需要执行的行为1]
    2. [需要执行的行为2]
  动机:[块1的所有要求]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[拆分完成,进入任务规划]

语义拆分示例

原始输入:

这个PPT太难搞了,我想让你为我做个PPT,明天要介绍产品的,就一个钛合金马扎。

拆分结果:

## 块 1:用户
  角色:requester
  目的:明天要介绍产品
  诉求:
    1. 做一个PPT(核心交付物)
    2. 介绍钛合金马扎产品
  动机:用户觉得PPT太难做

## 块 2:执行者
  角色:executor
  目的:制作一个符合用户诉求的PPT
  诉求:
    1. 使用技能或MCP等进行完整的PPT制作
    2. 涵盖产品核心卖点
  动机:块1的所有要求

🔴 [MANDATORY] Phase 1 —— 任务规划(语义拆分后必须输出,禁止直接执行)

违反 F-02:如果 AI 在输出【语义拆分】后没有输出【任务规划】就开始执行,属于严重违规。

核心原则:规划必做,拆分看规模

  • 任务规划:[MANDATORY] 所有任务必须执行,无论大小。规划 = 明确任务目的、要求、工具、预期结果。
  • 任务拆分仅大任务执行(3步以上)。拆分 = 将大任务分解为多个子步骤。

判断流程

收到任务
  │
  ├─ [MANDATORY] 第零步:语义拆分(F-01,必做)
  │   → 输出块分析:主语/目的/诉求/动机
  │
  ├─ [MANDATORY] 第一步:任务规划(F-02,必做,所有任务)
  │   → 明确:任务目的、具体要求、使用工具、预期结果、潜在风险
  │
  ├─ 第二步:判断是否需要拆分
  │   ├─ 单步任务(1个操作可完成)→ 直接进入执行
  │   └─ 多步任务(2个以上操作)→ 任务拆分,列出子步骤
  │
  ├─ [MANDATORY] 第三步:创建进度文件(F-03,规划确认后立即执行)
  │   → 调用 task_progress.py init
  │
  └─ 第四步:进入 Execute→Review→Advance 循环

任务规划模板(所有任务必做)

【任务规划】任务名称
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 任务目的:[一句话说明为什么要做这个任务,最终要达成什么]
📋 具体要求:[用户的核心要求,必须满足的条件]
🔧 执行工具:[使用什么工具或命令]
✅ 预期结果:[成功后的具体状态或输出]
⚠️ 潜在风险:[可能出现的问题]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
**请确认执行(输入选项,调整请同时说明要求)**:
1. 执行全部(包括问题/风险/经验记录)
2. 执行但跳过问题/风险/经验记录
3. 取消任务
4. 调整任务

请输入:

任务拆分模板(仅大任务,3步以上)

📌 任务目的:[一句话说明]
📋 具体要求:[核心要求]
⚠️ 潜在风险:[整体风险]

**执行步骤**:
  步骤 1: [操作描述]
    - 任务目的:[这一步要达成什么,为什么需要这一步]
    - 工具/命令:`[具体工具或命令]`
    - 操作说明:`[具体要做什么]`
    - 预期结果:`[预期输出或状态]`
    - 潜在风险:`[可能的问题或风险]`

  步骤 2: [操作描述]
    - 任务目的:[这一步要达成什么]
    - 工具/命令:`[具体工具或命令]`
    - 操作说明:`[具体要做什么]`
    - 预期结果:`[预期输出或状态]`
    - 潜在风险:`[可能的问题或风险]`
  ...

**进度追踪**:
  ┌──────┬────────┬────────┬────────────┬────────────┐
  │ 步骤 │ 状态   │ 重试   │ 审查结论   │ 推进决策   │
  ├──────┼────────┼────────┼────────────┼────────────┤
  │  1   │  ⏳    │  -     │     -      │     -      │
  │  2   │  ⏳    │  -     │     -      │     -      │
  │  3   │  ⏳    │  -     │     -      │     -      │
  └──────┴────────┴────────┴────────────┴────────────┘
  进度:0/3(0%)

**📋 任务后强制记录** [MANDATORY](必须执行,除非用户明确跳过):
  → 问题记录:回顾执行过程,识别问题 → 调用 add
  → 风险记录:回顾执行过程,识别风险 → 调用 add-risk
  → 经验积累:执行完成后 → 调用 merge-to-lessons

**临时进度文件**:规划确认后立即创建(F-03),每步更新(F-07),完成后删除(F-09)

🔴 [MANDATORY] Phase 2~4 —— 执行/审查/推进循环

[MANDATORY] EXECUTE 阶段规则

违反 F-04:如果 AI 执行步骤前没有重述本步骤任务目的,属于违规。

  • [MANDATORY] 执行前必须输出:🔧 执行前重述目的:[本步骤目的]
  • 实际运行命令、调用工具、测试代码
  • 只跑一个主要命令(可并行多个独立命令)
  • 不提前分析结果,不跳到审查阶段

[MANDATORY] REVIEW 阶段规则

违反 F-05:如果 AI 执行步骤后没有输出 REVIEW,属于违规,不得继续执行下一步。

  • [MANDATORY] 执行后必须紧跟 REVIEW,给出明确判断:✅成功 / ❌失败 / ⚠️部分
  • 列出具体证据(数据、错误码、状态)
  • [MANDATORY] 对照任务目的判断是否达成
  • 不执行新操作

[MANDATORY] ADVANCE 阶段规则

违反 F-06:如果 AI REVIEW 后没有输出 ADVANCE,属于违规,不得跳到下一步。

  • [MANDATORY] REVIEW 后必须紧跟 ADVANCE,明确:继续 / 换方向 / 结束 / 向上返回
  • [MANDATORY] 更新进度追踪表,标记当前步骤状态
  • [MANDATORY] 调用 task_progress.py update 持久化进度(F-07)
  • 不直接执行,只规划

执行输出标准格式

### 🔧 [EXECUTE] - 步骤 N
🔧 执行前重述目的:[本步骤任务目的]
(执行操作...)

### 🔍 [REVIEW] - 步骤 N
[✅成功/❌失败/⚠️部分] -- [具体证据]

### 📍 [ADVANCE] - 步骤 N
推进:[继续步骤 N+1 / 重试 / 换方案 / 任务完成]

**进度更新**:
  ┌──────┬────────┬────────┬────────────┬────────────┐
  │ 步骤 │ 状态   │ 重试   │ 审查结论   │ 推进决策   │
  ├──────┼────────┼────────┼────────────┼────────────┤
  │  1   │  ✅    │  0     │ 成功       │ 继续→步骤2 │
  │  N   │  ...   │  ...   │ ...        │ ...        │
  └──────┴────────┴────────┴────────────┴────────────┘
  进度:N/Total(X%)▸ 下一:步骤N+1

状态标记规则

标记含义说明
待执行初始状态
🔄执行中正在执行
成功审查通过
失败需要重试或换方案
⏭️跳过经评估无需执行

🔴 [MANDATORY] 禁止行为清单(违反即停止并补救)

[VIOLATION-01] 收到任务后未输出语义拆分就开始规划或执行
[VIOLATION-02] 语义拆分后未输出任务规划就开始执行
[VIOLATION-03] 任务规划确认后未调用 task_progress.py init
[VIOLATION-04] 每步执行前未重述本步骤任务目的
[VIOLATION-05] 步骤执行后未输出 REVIEW 就继续执行下一步
[VIOLATION-06] REVIEW 后未输出 ADVANCE 就继续执行
[VIOLATION-07] ADVANCE 后未调用 task_progress.py update
[VIOLATION-08] 同一步骤失败 3 次后仍继续重试而不换方案
[VIOLATION-09] 任务完成后未调用 task_progress.py complete
[VIOLATION-10] 任务完成后未输出【任务完成】总结

循环规则

  1. [MANDATORY] 语义拆分先行 = 收到任务的第一个动作就是输出语义拆分,无论任务大小
  2. [MANDATORY] 规划先行 = 所有任务必须先输出任务规划,明确目的和要求
  3. [MANDATORY] 临时文件持久化 = 规划后立即创建进度文件(init),每步更新(update),完成删除(complete)
  4. 最小单元 = 单次工具调用,每步必须立即审查+推进
  5. 最多 3 次重试 — 3 次失败后必须换方案或向上回溯
  6. 大任务才拆分 — 3步以上任务输出步骤列表;单步任务只做规划不拆分
  7. 每步更新进度 — 执行后更新进度文件和进度追踪表
  8. [MANDATORY] 完成后必须输出总结 — 目标/结果/关键发现/异常记录,不可静默消失
  9. 中断可恢复 — 进度文件保留,重启后 resume 恢复

完整执行流程示例

示例:多步任务(标准完整流程)

用户:请帮我修复登录接口Bug

[triphasic] skill loaded — 执行顺序:语义拆分 → 任务规划 → 执行/审查/推进

[自检] 当前阶段:收到任务
- F-01 语义拆分:待执行
- F-02 任务规划:待执行
违规项:无,执行语义拆分

【语义拆分】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【原始输入】
请帮我修复登录接口Bug

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

## 块 1:用户
  角色:requester
  目的:登录接口恢复正常
  诉求:
    1. 修复登录接口中的 Bug
  动机:当前登录功能存在问题

## 块 2:执行者
  角色:executor
  目的:定位并修复登录接口 Bug
  诉求:
    1. 读取代码定位问题
    2. 修复代码
    3. 验证修复有效
  动机:块1的所有要求

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[拆分完成,进入任务规划]

【任务规划】修复登录接口Bug
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 任务目的:修复登录接口 Token 验证缺失导致的认证绕过漏洞
📋 具体要求:添加 Token 验证逻辑,确保未携带有效 Token 的请求被拒绝
⚠️ 潜在风险:修改可能影响正常登录流程

**执行步骤**:
  步骤 1: 读取登录接口代码
    - 任务目的:获取当前代码,理解认证逻辑现状
    - 工具/命令:`Read`
    - 操作说明:读取 login.py 文件
    - 预期结果:获取完整代码内容
    - 潜在风险:文件不存在

  步骤 2: 修复代码
    - 任务目的:添加缺失的 Token 验证逻辑
    - 工具/命令:`Edit`
    - 操作说明:在指定位置添加验证逻辑
    - 预期结果:代码修改成功,无语法错误
    - 潜在风险:语法错误、引入新bug

  步骤 3: 测试验证
    - 任务目的:验证修复有效且未影响正常功能
    - 工具/命令:`Bash`(pytest)
    - 操作说明:运行测试用例
    - 预期结果:测试通过
    - 潜在风险:测试环境问题

**进度追踪**:
  ┌──────┬────────┬────────┬────────────┬────────────┐
  │ 步骤 │ 状态   │ 重试   │ 审查结论   │ 推进决策   │
  ├──────┼────────┼────────┼────────────┼────────────┤
  │  1   │  ⏳    │  -     │     -      │     -      │
  │  2   │  ⏳    │  -     │     -      │     -      │
  │  3   │  ⏳    │  -     │     -      │     -      │
  └──────┴────────┴────────┴────────────┴────────────┘
  进度:0/3(0%)

**📋 任务后强制记录** [MANDATORY]:
  → 问题记录 → 风险记录 → 经验积累

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
确认执行?(1.全部执行 2.跳过记录 3.取消 4.调整): 1

→ [MANDATORY-F-03] 创建进度文件:
python {SKILL_DIR}/scripts/task_progress.py init \
  --task "修复登录Bug" \
  --purpose "修复Token验证缺失导致的认证绕过漏洞" \
  --requirements "添加Token验证逻辑" \
  --risks "可能影响正常登录" \
  --steps '[{"description":"读取代码","purpose":"理解认证逻辑","tool":"Read"},{"description":"修复代码","purpose":"添加验证","tool":"Edit"},{"description":"测试验证","purpose":"确认修复有效","tool":"Bash"}]'

### 🔧 [EXECUTE] - 步骤 1
🔧 执行前重述目的:获取当前代码,理解认证逻辑现状
(读取 login.py...)

### 🔍 [REVIEW] - 步骤 1
✅成功 -- 发现 Token 验证逻辑缺失

### 📍 [ADVANCE] - 步骤 1
推进:继续步骤 2
→ 更新进度文件:python {SKILL_DIR}/scripts/task_progress.py update --task "修复登录Bug" --step 1 --status success --review "发现Token验证缺失" --advance "继续步骤2"

**进度更新**:
  ┌──────┬────────┬────────┬────────────┬────────────┐
  │ 步骤 │ 状态   │ 重试   │ 审查结论   │ 推进决策   │
  ├──────┼────────┼────────┼────────────┼────────────┤
  │  1   │  ✅    │  0     │ 成功       │ 继续→步骤2 │
  │  2   │  ⏳    │  -     │     -      │     -      │
  │  3   │  ⏳    │  -     │     -      │     -      │
  └──────┴────────┴────────┴────────────┴────────────┘
  进度:1/3(33%)▸ 下一:步骤2

...(继续步骤 2-3)

【任务完成】
- 目标:修复登录接口Bug
- 结果:✅成功 -- Token验证已添加
- 进度:3/3(100%)
→ [MANDATORY-F-09] python {SKILL_DIR}/scripts/task_progress.py complete --task "修复登录Bug"

临时进度文件机制(v5.6 核心更新)

[MANDATORY] 违反 F-03/F-07/F-09 属于严重违规。

核心原理

任务规划确认
  └─→ [MANDATORY] 创建临时进度文件(init)
         │
         ├─ 步骤1 ADVANCE后 → [MANDATORY] 更新文件(update)
         ├─ 步骤2 ADVANCE后 → [MANDATORY] 更新文件(update)
         │   ...
         └─ 任务完成 → [MANDATORY] 删除进度文件(complete)
             中断/异常 → 保留文件,下次 resume 恢复

AI 调用时机([MANDATORY])

时机必须调用的命令
任务规划确认后init
每个步骤 ADVANCE 后update --step N --status success/failed --review "..." --advance "..."
任务全部完成后complete
用户说"继续"、"恢复"resume
用户说"取消任务"、"停止"abort --reason "..."

命令速查

# [MANDATORY] 初始化(任务规划确认后立即调用)
python {SKILL_DIR}/scripts/task_progress.py init \
  --task "任务名" \
  --purpose "任务目的" \
  --requirements "具体要求" \
  --risks "潜在风险" \
  --steps '[{"description":"步骤描述","purpose":"步骤目的","tool":"工具名"}]'

# [MANDATORY] 更新步骤状态(每步 ADVANCE 后调用)
python {SKILL_DIR}/scripts/task_progress.py update \
  --task "任务名" \
  --step 1 \
  --status success \
  --review "审查结论" \
  --advance "推进决策"

# 恢复中断任务
python {SKILL_DIR}/scripts/task_progress.py resume --task "任务名"

# [MANDATORY] 完成任务(删除进度文件)
python {SKILL_DIR}/scripts/task_progress.py complete --task "任务名"

# 中止任务
python {SKILL_DIR}/scripts/task_progress.py abort --task "任务名" --reason "原因"

# 列出活跃任务
python {SKILL_DIR}/scripts/task_progress.py list

# 清理已完成/中止文件
python {SKILL_DIR}/scripts/task_progress.py clean

问题、风险、经验记录

[MANDATORY] 强制记录规则

每次任务执行完成后,[MANDATORY] AI必须执行以下步骤(除非用户明确选择"2.跳过记录"):

  1. 回顾执行过程,识别问题 → 调用 add
  2. 回顾执行过程,识别风险 → 调用 add-risk
  3. 执行完成后 → 调用 merge-to-lessons

问题记录

python {SKILL_DIR}/scripts/problem_logger.py add \
  --scene "API测试" \
  --symptom "HTTP 503" \
  --cause "服务端限流" \
  --solution "增加重试机制" \
  --task "用户头像接口"

风险记录

python {SKILL_DIR}/scripts/problem_logger.py add-risk \
  --description "网络不稳定可能导致API调用失败" \
  --impact "用户体验下降" \
  --mitigation "增加重试机制和降级策略" \
  --task "用户头像接口"

经验积累

python {SKILL_DIR}/scripts/problem_logger.py merge-to-lessons

设置界面

安装技能后首次运行 install.py 时,会自动弹出 HTML 设置界面(系统默认浏览器),引导用户完成初始配置。

设置项选项说明
默认调用方式调用模式(按需) / 全局模式控制技能激活方式
记录文件路径TRIPHASIC_HOME 等未自定义时使用默认值
任务规划确认询问确认后再执行 / 直接执行控制 Agent 是否请求确认

当前配置

调用方式:🟢 按需调用模式(默认) 数据目录~/.workbuddy/triphasic/ 任务规划确认:询问确认后再执行

呼出设置界面:向 Agent 发送"打开 triphasic 设置",或运行 python {SKILL_DIR}/scripts/settings.py


双模式设计

维度按需调用模式(默认)全局自动模式(可选)
触发条件用户主动加载技能配置 mode: global + 启动 daemon
记录行为调用时才记录三步框架所有任务自动应用三步框架
后台守护不启动 daemonproblem_daemon.py 持续监控
适用场景日常简单任务、跨平台协作复杂多步骤项目、长期维护

数据目录

路径说明
TRIPHASIC_HOME/.problem_logs/problems.jsonl问题日志
TRIPHASIC_HOME/.problem_logs/risks.jsonl风险日志
TRIPHASIC_HOME/PROBLEMS.md问题清单(人类可读)
TRIPHASIC_HOME/RISKS.md风险手册
TRIPHASIC_HOME/LESSONS_REGISTER.md经验教训登记册
TRIPHASIC_HOME/.active_tasks/临时进度文件目录
TRIPHASIC_HOME/config.json用户配置

安装

python install.py                           # 基础安装
python install.py --mode global            # 全局自动模式
python install.py --target ~/.workbuddy/skills/  # 指定安装路径
python install.py --home ~/.myagent/triphasic/   # 指定数据目录
python install.py --uninstall              # 卸载

脚本清单(v5.8)

脚本功能
install.py安装/卸载
settings.pyHTML 设置界面
problem_logger.py问题/风险 CRUD + 合并登记册
exec_wrapper.py命令执行拦截器
problem_daemon.py后台监控守护进程(仅全局模式)
lessons_register.py登记册管理
cron_helper.py定时任务钩子
task_progress.py临时进度文件管理(init/update/resume/complete/abort/clean)

所有脚本零外部依赖,仅使用 Python 标准库。跨平台支持 Windows/Linux/macOS。