先划定执行边界,再选择工具
已知且重复的任务
健康检查、有范围限制的日志查询、已形成文档的维护步骤,不必每次都让 AI 重新判断。保留经过审核的脚本,或将已保存资源组合成具有明确输入和条件的 Flow。
尚不明确的问题
用已授权的 MCP 工具收集少量、相关的运行时事实,让 AI 比较证据并提出下一项检查。结果不确定,意味着需要继续调查,不意味着可以修改数据。
高风险变更
数据库迁移、批量数据修正、服务重启或部署,应先让 AI 给出方案和可审核的脚本。执行权保留给有权限的操作人员,沿用团队现有变更流程。
一次事件可以同时包含这三类任务。AI 可以解释故障并准备修复方案,而不持有向生产应用修复所需的凭据或工具权限。同时检查 Agent 的其他 shell 和连接器是否能访问生产:Unfour MCP 策略只约束经过 Unfour MCP 的调用。
准备测试工作区,建立实际权限边界
创建或选择测试工作区,逐项检查真实的 API 主机、SSH 主机与账号、数据库地址以及 database/schema。使用测试数据与最小权限服务账号。名为“test”的工作区仍可能保存生产 URL 或连接;名称本身不构成网络隔离。
- Workspace 类型、变量环境和 MCP 策略是不同设置。Auto 策略下,DEV 对应 full_access,TEST 对应 guarded,PROD 对应 read_only;显式策略会覆盖这组映射。应检查实际生效的策略,不能只看环境徽标。
- 收集证据时,若所需工具允许,先使用 read_only。它允许受支持的读取操作,包括受限 SSH 诊断,并不等于一个可任意执行命令的“只读 shell”。数据库与 SSH 访问还应由账号权限独立限制。
- 如果需要 MCP 在测试环境保存或运行 Flow,应选择允许这些操作的策略。Guarded 会对相应工具处理逻辑判定的操作要求确认,不代表每次写入都等待人工审批。不要为完成这套流程而放宽生产策略。
- 限制查询行数、日志时间窗口、输出量和请求重复次数。把日志与数据交给模型前仍需复核;脱敏无法识别任意文本中的所有秘密。
示例:在测试环境排查停止处理任务的 Worker
以一个示意性的任务处理服务为例:API 健康检查正常,但测试任务一直停留在 pending。先定义预期,例如某个已知测试任务应在团队正常处理时间窗口内进入 completed 状态。健康接口成功,本身不能证明 Worker 已处理任务。
- 1. 测试证据
- 2. 提出假设
- 3. 审核测试变更
- 4. 重复检查
- 5. 保存 Flow
- 6. 人工交接
-
记录基线
通过已授权 MCP 工具发送保存的 GET 健康或状态请求,记录解析后的主机、状态码、相关响应字段、时间窗口和测试任务标识。不要为了获得信号而反复提交新任务。
-
对照服务器与数据库证据
读取限定范围的 Worker 日志,通过聚焦的只读查询检查测试任务状态,或少量待处理任务的聚合结果。确认这三类资源属于同一测试部署。要求 AI 分开列出观察事实、假设与缺失证据;跨层关联是排查工作,不是 Unfour 自动完成的功能。
-
提出可以验证或推翻的解释
假设日志提示 Worker 使用了过期的队列配置,让 AI 明确还需什么配置证据才能确认,并提出范围有限的变更方案。不能只凭 pending 数量增加就确定根因:下游依赖变慢也可能造成相同症状。
-
审核测试变更,再重复检查
由操作人员审核测试配置修改,并通过正常流程应用。使用等价输入重新执行同一组 API、日志和数据库检查,确认任务完成,并检查重复处理或新增错误。记录仍未覆盖的情况,尤其是生产拓扑、负载与权限差异。
把已确认的检查整理为可复用 Flow
当排查方法可以重复时,保存其中稳定的检查,而不是每次重放整段对话。在这个例子里,用保存的 API 状态请求、限定 Worker 日志范围的 SSH Task,以及 Database 查询组成诊断 Flow。重启或修复配置保留为单独审核的操作,避免重跑诊断时再次产生变更。
-
明确输入与目标
只声明流程实际需要的输入,例如可信的测试任务标识或有限时间窗口。选择保存的请求、SSH Task 及明确的 SSH 连接、Database 连接。保存前复核 SQL、catalog/schema、Task 命令及输入替换方式。
-
写出有依据的判断条件
通过 Condition 比较输入或前序结果。只有需要有限轮询时才使用 Wait Until:选择 API GET/HEAD 探针或只读 Database 探针,明确成功条件、失败条件和超时。数据库探针要求只读连接;SSH 不能作为 Wait Until 探针。
-
检查成功与失败路径
在测试环境用已知输入运行,查看步骤结果与轮询尝试,并在可行时主动检查资源缺失、条件不满足和超时路径。复核分支去向:Condition 选中某个分支,本身不证明业务正确。运行成功只说明已定义步骤按配置规则完成。
Flow 编辑与执行属于免费核心能力。它是本地 runbook,不是 LLM/Agent 工作流,也不是通用脚本运行器。API 步骤会拒绝保存请求中的脚本与 multipart 请求;不适合 Flow 的现有脚本应继续走原有审核与执行流程,不能假定可以原样搬入。
切换变量环境,不等于重绑所有资源
Flow 属于一个工作区,引用该工作区中保存的资源。变量环境会改变受支持替换中的取值,不是一张部署目标映射表。将测试过的流程用于其他目标前,必须分别检查每个端点和资源绑定。
桌面与 MCP 的环境选择不同
打开桌面 Run 或 Run again 窗口时,默认选择当前工作区的活动变量环境;没有活动环境时使用 Workspace-only。需要复核这个选择,之后标题栏的环境变化不会覆盖已经初始化的选择。MCP run 省略 environmentId 或传 null,表示 Workspace-only,不会沿用桌面活动环境。
API 仍引用原来保存的请求
Flow 选择的环境参与 API 变量解析。因此,参数化 URL 可能解析到不同主机,但写死的 URL 不会随环境改变,除非明确覆盖。要检查解析后的 URL、认证、请求头和请求体,而不只是环境名称。
SSH 使用明确的连接
Flow SSH 动作引用保存的 Task 与明确的 connection ID。主动启用 workspaceDefaults 时,可从工作区变量及所选环境取得 Task 输入默认值,但不会因此切换 SSH 连接。主机、账号、命令与参数需要一起复核。
Database 保留连接与 SQL 上下文
Database 动作使用 resource ID 引用的已保存连接,以及该动作的 SQL 和可选 catalog/schema。选择变量环境不会自动找到对应的生产数据库。
如果目标是另一个工作区,应先准备所需资源,以及引用能在该工作区解析的定义,再次审核适配后的定义。切换工作区或选择环境,并不等于自动将测试过的 Flow 投产。现有资源校验能发现部分缺失或变化,但无法证明一个可连接的主机就是预期目标,也不提供多个服务之间的原子事务。
交付可审核的执行方案,再由人工运行
面向生产,让 AI 提供一份具体的变更材料:证据与不确定性、建议脚本或 Flow 定义、准确目标、前置条件、预期影响、执行后检查和恢复步骤。审核者应能直接评估这次变更,而无需重新拼接整段聊天记录。
- 把保存的定义及其引用的请求、Task、连接设置一起审核。记录预期修订、环境、运行输入、受影响服务或数据行,以及负责执行的人。输入或依赖资源发生变化后,应重新审核。
- 涉及写入时,明确幂等性、部分失败行为、必要的备份或恢复前提、停止条件和具体回滚动作。写下一段回滚说明或拥有取消按钮,并不会让破坏性变更自动可逆。
- 由有权限的操作人员复核目标,通过桌面 Flow Run 确认或团队正常脚本/发布流程执行。MCP 策略不是桌面的通用操作锁;手动执行仍受操作者凭据与组织授权约束。
- 对照事先声明的成功标准检查结果,保留相关运行历史和变更记录。超时或取消导致远端结果不确定时,先检查目标状态,再决定是否重试。取消不会撤销已经完成的副作用。
其他 MCP 工具有各自的风险检查,full_access 可以跳过 guarded 确认,不能推断所有高风险调用都会弹出提示。生产策略阻止 Flow 时,应保留该策略,仅使用获准的单项诊断工具,或由操作人员提供复核过的证据。
这套流程今天能提供什么
Unfour 提供这里使用的运行时工具、用户定义的 Flow 步骤、执行检查和本地运行历史。调查、成功标准的选择、审核和生产交接仍由人主导。测试结果是支持方案的证据,不是“可以安全投产”的认证。
从对话自动生成 Flow、业务级自动验证、按环境自动迁移资源绑定,以及无人值守的安全投产,都不是这套流程已经提供的能力。它们只能视为可能的未来设计,不能当成已发布功能或交付承诺。Flow V1 没有调度器、Webhook 触发器、并行步骤、子 Flow 或 LLM/Agent 节点。