Skip to main content
工作管理

自主工作

通过定时、事件或 API 自动触发 Waker 与 WakerFlow,并管理运行限制、记录和异常。

自主工作用于把已经验证稳定的任务自动启动。任务可以交给一个 Waker,也可以运行一条 WakerFlow。需要频繁讨论、目标尚未确定或每一步都需要人工判断的工作,应先在普通对话中完成验证。 自主工作负责“何时启动、用什么输入和运行到何时”;WakerFlow 负责“启动后按哪些阶段和分工执行”。需要设计或排查流程时参见 《WakerFlow》

打开自主工作

入口: 左侧导航 →「自主工作」。页面顶部汇总自动任务总数、启动中的任务,以及由 Waker 或 WakerFlow 响应的数量。列表可以按响应方式、触发类型和状态筛选。 在某个 Waker 的详情页打开「工作」→「自主工作」时,只查看与该 Waker 相关的自动任务;全局自主工作页用于跨 Waker 管理。 列表中的“已完成”表示某次运行结束,不代表业务结果一定正确。需要进入运行记录检查输入、过程、最终结果和实际产物。
从全局自主工作页查看数量、执行方式和状态

创建前检查

自动任务运行时通常没有人在旁边补充上下文。创建前先完成以下检查:
  • 执行对象: Waker 已启用且能够正常对话;使用 WakerFlow 时,流程已至少手动成功运行一次,人工确认节点和输出符合预期。
  • 模型: Waker 使用的模型当前可用。需要稳定复现结果时选择明确模型;希望跟随系统推荐时使用 Auto。
  • 工作空间: Waker 能访问所需目录或项目。使用本地目录时,对应设备、QoderWake 和目录在触发时都必须可用。
  • 能力与权限: 任务依赖的 Skill、连接器、网络和外部账号已在普通对话中验证,不要把正式自动任务当作首次授权测试。
  • 任务边界: 仍需反复讨论目标的工作先在普通对话中完成;包含多阶段分工、固定审批或人工确认的工作优先使用 WakerFlow。

选择触发方式

触发方式适用情况首次验证
定时日报、周报、周期巡检和一次性预约把时间设为几分钟后,核对时区和下一次运行
事件外部系统能主动推送 Issue、Pull Request 或其他变化制造一条安全测试事件,先看事件活动再看任务结果
API工单、CI/CD、监控或业务系统按需发起,并需要传入结构化数据使用测试 PAT 和不含敏感信息的 JSON 请求
定时拉取(页面提供时)外部系统无法推送事件,但可以按条件周期查询变化使用测试对象和较低频率,验证筛选与去重后再上线
同一个业务变化通常只保留一种触发来源。事件和定时拉取同时覆盖同一对象时,必须在任务描述或调用方增加去重标识,避免重复执行。

创建自动任务

  1. 点击「新建自动任务」。
  2. 填写名称。建议采用“对象 + 动作 + 频率或来源”,例如“官网每日界面巡检”或“新 Issue 分类处理”。
  3. 添加触发条件。一个任务最多可以添加 5 个触发方式,页面会显示已添加数量。
  4. 选择执行方式:
    • 交给 Waker: 适合单一职责、输入输出稳定的任务。
    • 运行 WakerFlow: 适合多阶段、并行处理、固定分工或结构化输入。
  5. 选择具体执行对象,确认该 Waker 或 WakerFlow 已启用并在当前环境可用。
  6. 响应方式为 Waker 时,选择 Auto 或一个明确模型。模型不可用或被移除后,应重新编辑并测试任务。
  7. 填写任务描述。写清每次触发都要执行的固定目标、输入范围、输出和禁止事项,不要把只适用于一次运行的数据写死。
  8. 选择工作空间:默认工作空间、本地目录或项目。使用本地目录时,对应设备在触发时必须在线。
  9. 展开「高级设置」,配置最大运行次数和截止日期。
  10. 保存后先手动运行一次,验证成功再保留正式触发。
可以按下面的结构编写任务描述:
目标:每次触发要完成什么。
输入:允许读取的数据、时间范围和对象。
处理规则:必须执行的步骤、判断条件和异常处理。
输出:返回格式、文件名称、保存位置或外部动作。
完成标准:如何判断业务结果正确,而不只是运行状态为“已完成”。
禁止操作:不得修改、删除、发布或发送的内容。
涉及代码、文件或外部系统写入时,把测试要求、目标分支、输出位置和需要人工确认的动作写进任务描述。
在同一弹窗中配置触发条件、执行方式、工作空间和高级设置

配置定时触发

定时触发适合日报、周报、固定巡检和周期性汇总。
  1. 选择「定时」。
  2. 选择周期运行或一次性运行,并设置日期、时间和重复规则。
  3. 检查页面显示的下一次运行时间,确认时区与业务时区一致。
  4. 首次验证时把时间设为几分钟后;运行成功后再改为正式周期。
需要注意:
  • 任务被暂停、达到最大运行次数或超过截止日期后,不再自动触发。
  • 本地 Waker 或本地目录在计划时间不可用时,任务可能启动失败。
  • 高频任务要确认上一次运行能在下一次触发前结束,避免并发覆盖同一产物。

配置事件触发

事件触发适合代码仓库 Issue、Pull Request 或当前连接器支持的外部变化。
  1. 选择「事件」。
  2. 选择事件来源并完成授权。
  3. 选择关联仓库或对象,再选择 Issue、Pull Request 等事件类型。
  4. 按事件来源提供的选项配置变化类型和过滤条件,例如新建、编辑、仓库、分支、标签或对象范围。不同来源显示的字段可能不同。
  5. 保存后在外部系统制造一条安全的测试事件。
  6. 回到任务详情查看「事件活动」或运行记录,先确认事件已被接收,再确认只启动了预期任务。
部分事件触发任务不能使用「立即运行」,必须从外部系统产生真实测试事件。GitHub 等 Webhook 事件的详情页可能以「事件活动」替代普通运行记录;先确认事件到达,再打开关联任务或聊天验收结果。 事件没有触发时,依次检查来源授权、对象范围、事件类型、过滤条件、任务启用状态和事件活动。事件重复触发时,检查是否同时配置了多个覆盖同一变化的条件。 GitHub 场景至少确认:授权账号有权访问目标仓库;仓库、Issue / Pull Request 和变化类型选择正确;分支、标签或对象过滤不会误匹配;测试事件能够在事件活动中看到。正式启用前用测试仓库或低风险对象验证,不要直接用合并、发布等高影响事件作为首次测试。

配置定时拉取(页面提供时)

当外部来源无法主动推送事件,而页面提供“定时拉取”时,可以让任务按固定周期查询新对象或状态变化。
  1. 选择来源并完成授权。
  2. 选择对象范围、筛选条件和拉取频率。
  3. 明确首次运行从何时或哪个游标开始,避免一次处理全部历史数据。
  4. 配置稳定的对象 ID 或更新时间作为去重依据。
  5. 使用测试对象验证“发现变化 → 创建任务 → 更新游标”的完整链路。
可选频率、最小间隔和字段以当前页面为准。下游系统有调用限额时,从低频率开始;失败重试不得让同一对象被重复修改或外发。

配置 API 触发

API 触发用于让工单平台、CI/CD、监控告警或业务系统按需启动一项自主工作。调用方提交结构化 JSON,QoderWake 将请求数据带入任务描述,再交给指定的 Waker 或 WakerFlow 执行。

创建个人访问令牌

API 调用使用个人访问令牌(PAT)进行 Bearer 认证。首次接入前先创建令牌:
  1. 登录 Qoder 控制台,打开头像或用户菜单。
  2. 进入「个人设置」→「服务集成」。
  3. 创建个人访问令牌,并使用能够识别调用方和环境的名称,例如“工单系统-生产环境”。
  4. 创建后立即复制令牌。令牌通常只完整显示一次,应保存到调用系统的凭据管理或 CI Secret 中。
  5. 先用测试环境完成调用验证,再为正式环境单独创建令牌。轮换令牌后,确认新令牌生效再撤销旧令牌。
PAT 代表当前账号的调用身份。不要把真实令牌写入代码仓库、自动任务描述、截图、命令历史或业务日志;如果令牌泄露,应立即撤销并重新创建。

创建任务并取得调用地址

  1. 新建自动任务并添加「API」触发方式。
  2. 选择 Waker 或 WakerFlow,填写任务描述,配置工作空间和运行限制。
  3. 保存任务。在任务详情中复制系统生成的 POST 地址、认证方式和请求示例。
  4. 将完整调用地址与 PAT 一样作为敏感凭据保存,不要手工拼接,也不要放入公开日志或截图。
调用地址包含当前 API 触发器的标识。删除、重新添加或重新生成 API 触发器后,旧地址可能失效;编辑触发配置后,应回到任务详情重新复制最新地址。

设计任务描述和请求体

任务描述定义固定工作要求,请求体提供每次调用的数据。例如,任务描述可以写成:
处理工单 {{ticket.id}}。
优先级:{{ticket.severity}}
问题:{{ticket.summary}}
输出:给出原因、处理建议和需要人工确认的风险。
调用时发送对应的 JSON:
curl -X POST 'https://api.qoder.com/v1/qoderwake/automation/invoke/<GENERATED_INVOKE_KEY>' \
  --header 'Authorization: Bearer <YOUR_PAT>' \
  --header 'Content-Type: application/json' \
  --data '{
    "wakeSessionUniqueId": "ticket-1001",
    "ticket": {
      "id": "1001",
      "severity": "high",
      "summary": "支付回调持续超时"
    }
  }'
以任务详情页生成的完整 POST 地址为准。字段替换遵循以下规则:
  • 使用 {{field}} 读取顶层字段,使用 {{ticket.id}} 读取嵌套字段,也可以用 {{items[0].name}} 读取数组元素。
  • 字段名区分大小写;找不到字段时,占位符会保留在任务描述中,便于定位字段路径错误。
  • 字符串直接写入;对象、数组、数字、布尔值和 null 会转换成 JSON 文本。
  • 如果任务描述没有占位符,固定任务描述仍会保留,完整请求体会作为本次输入附加给执行对象。

一次性调用与连续聊天

默认情况下,每次 API 调用都会创建新的任务聊天。需要围绕同一工单、告警或业务对象继续处理时,在多次请求中传入相同的顶层字符串字段 wakeSessionUniqueId
  • 相同用户、自动任务和 wakeSessionUniqueId 的请求会沿用同一聊天,并按顺序处理。
  • 不传该字段或更换该值,会开始新的聊天。
  • 该字段用于延续上下文,不是防止重复提交的幂等键。调用方仍需自行设计重试和去重机制。
  • 不同客户、项目、数据权限或安全范围必须使用不同的值,避免上下文串联。

验证调用结果

  1. 使用不含敏感数据的小范围请求进行首次调用。
  2. 检查 HTTP 响应。请求被接受只表示已经进入执行流程,不表示业务任务已经完成。
  3. 回到「自主工作」的运行记录,确认触发来源为 API,并核对输入、执行对象、工作空间和当前状态。
  4. 等待运行结束,检查最终回复、生成文件和外部系统中的实际结果。
  5. 验证无误后,再把完整地址和 PAT 配置到正式调用系统。

API 触发排错

现象检查方法
返回 401 或 403检查 PAT 是否有效、是否属于当前区域和账号,以及请求头是否为 Authorization: Bearer <YOUR_PAT>
地址无效或返回 404从任务详情重新复制完整地址;确认任务和 API 触发器没有被删除或重新创建
请求已接受但没有预期结果查看运行记录,检查任务是否启用、Waker/WakerFlow 是否可用、本地设备或目录是否在线
占位符没有被替换检查 JSON 层级、字段名大小写和数组下标是否与任务描述一致
任务沿用了错误上下文检查是否把同一个 wakeSessionUniqueId 用在了无关业务对象上
重试后重复执行在调用方增加请求去重;不要把 wakeSessionUniqueId 当作幂等键
如果调用地址泄露,删除并重新添加 API 触发器以取得新地址;如果 PAT 泄露,同时撤销并重新创建令牌。

选择 WakerFlow 作为执行方式

选择「运行 WakerFlow」后,页面会显示流程阶段和运行参数。
  1. 选择已经手动验证成功的 WakerFlow。
  2. 检查流程包含的阶段和人工确认节点;自动触发后仍可能在确认节点等待人工处理。
  3. 为每个运行参数选择覆盖方式并填写值。固定值适合长期不变的配置;由触发数据提供的值要与字段类型一致。
  4. 检查必填参数没有留空,输出字段仍能满足下游系统或业务验收。
修改 WakerFlow 输入字段后,已有自动任务不会自动获得正确的新值。重新打开每个引用该流程的自动任务,检查参数映射并测试。

配置工作空间

选项适用情况注意事项
默认工作空间不依赖固定文件或项目不要假设存在某个本地目录
本地目录固定设备上的文件处理触发时设备必须在线,目录权限有效
项目长期维护的代码库或文档检查公开/私有范围、分支和写入权限
自动任务通常无人实时补充上下文,因此工作空间必须比普通对话更明确。涉及代码修改时,在任务描述中写明分支策略、测试要求和不得执行的发布操作。

配置高级设置

  • 最大运行次数: 选择无限制或自定义次数。达到上限后任务自动暂停,适合阶段性迁移或有限批次处理。
  • 截止日期: 选择永不截止或指定日期。到达截止日期后不再触发,适合活动、版本或短期项目。
两个限制可以同时使用。正式上线前确认限制不会在业务周期中途意外停止,也不会让临时任务长期运行。

测试并上线

保存后不要直接认为配置完成,按以下顺序验证:
  1. 使用「立即运行」验证执行对象、任务描述、工作空间和能力。
  2. 使用真实触发方式做一次小范围验证:等待一次定时、制造一条测试事件或发送测试 API 请求。
  3. 打开运行记录,核对触发来源、输入、当前节点、最终结果和实际产物。
  4. 确认高风险动作仍会等待人工授权。
  5. 清理测试数据,再启用正式计划或事件。
手动运行成功但自动触发失败,重点检查触发配置;手动运行也失败,重点检查执行对象、工作空间、权限、Skill 和连接器。

查看运行记录

运行记录用于回答“为什么启动、使用了什么输入、执行到哪一步、返回了什么”。建议依次查看:
信息用途
触发来源与时间确认是否由预期定时、事件或 API 启动
本次输入核对事件字段、API 请求或固定参数
执行对象与工作空间确认没有路由到错误 Waker、流程或目录
过程状态定位首个失败、等待确认或超时节点
最终结果与产物进行业务验收
失败排查从首个错误开始,不要只看最后一条汇总消息。

编辑、暂停、复制和删除

任务卡片或详情页会提供立即运行、暂停、恢复、编辑、复制和删除等操作,实际按钮以当前版本为准。
  • 编辑既有任务时,响应方式以及已选的 Waker 或 WakerFlow 会被锁定。需要更换执行对象时,使用「复制」创建新任务,验证成功后再暂停或删除旧任务。
  • 修改触发方式、模型、工作空间、权限或连接器后,重新测试再恢复。
  • 复制任务不会复制累计运行次数和运行历史。复制后检查名称、触发范围、项目、模型和令牌,不要让新旧任务重复处理同一事件。
  • 暂停只阻止新的自动触发,不会停止已经运行中的任务。
  • 并非所有事件触发任务都支持「立即运行」;应使用对应外部系统的安全测试事件验证。
  • 删除前保存需要保留的运行记录和产物,并确认没有外部系统继续调用 API 地址。

常见问题

现象检查顺序
到时间没有运行任务状态 → 下一次运行和时区 → 运行限制 → 设备和目录
事件没有触发来源授权 → 对象范围 → 事件类型 → 活动记录
API 返回认证或参数错误详情页最新地址 → PAT → Content-Type → JSON 字段
启动后立即失败Waker/WakerFlow 状态 → 工作空间 → 模型 → Skill 与连接器
WakerFlow 参数为空流程输入定义 → 自动任务覆盖方式 → 触发字段
显示完成但没有正确产物运行详情 → 任务描述 → 输出位置 → 实际文件或外部对象