管理工单
在 Mopheus 中创建、组织和跟踪工单——涵盖状态流转、优先级、子工单、依赖、标签、评论以及 CLI 参考。
管理工单
工单是 Mopheus 中工作的最小单位。每个数据库巡检任务、性能优化需求、备份恢复操作或故障排查都是一张工单。工单按工作区隔离,可以被分组到项目中。
创建工单
在工单视图右上角点击 新建工单,唯一必填项是标题。填写描述、设置优先级、关联项目、添加标签,然后点击 创建。
使用 时间 选择器可以暂存计划开始时间和截止时间,再一次性应用两项修改。两者都包含日期、时间和时区;同时设置时,截止时间必须晚于开始时间。创建后也可在工单详情面板中修改。
设置计划开始时间后,工单会保持在「待规划(Backlog)」直到指定时刻,再转为「待办(Todo)」并派发给所选智能体或团队 Leader。开始时间必须至少晚于当前时间一分钟。如果到期时智能体已经没有在线 Runtime,Mopheus 仍会把工单转为待办,在系统评论中记录失败,并且不会自动重试,避免任务在原定运维窗口之外延迟执行。
非终态工单达到截止时间时,Mopheus 会向创建该工单的成员发送一次 Inbox 提醒。若工单由智能体创建,则在其当前 Owner 仍是工作区成员时提醒该 Owner。终态工单不会产生提醒。
状态流转
状态不是一条固定的线性流程。团队可以按实际情况切换状态;下图展示的是推荐的交付闭环和常见的回退路径。
| 状态 | 含义 |
|---|---|
| 待规划(Backlog) | 已记录但尚未排期。 |
| 待办(Todo) | 已明确范围、负责人和预期结果,可以开始处理。新建工单的默认状态;分配给智能体时会自动创建智能体任务。 |
| 进行中(In Progress) | 有成员或智能体正在执行,或已经开始处理但尚未形成可确认的结果。 |
| 审核中(In Review) | 已有可交付结果,但还需要成员确认验收标准、结果质量、外部影响或下一步决策。智能体运行完成后,若其输出需要人工判断,应将工单转入此状态,而不是直接视为完成。 |
| 已完成(Done) | 验收标准已经满足,结果已被确认,不再需要后续动作。可从「进行中」直接进入,例如结果已由负责人确认;也可由「审核中」确认后进入。 |
| 阻塞(Blocked) | 因依赖、权限、环境故障、缺失信息或等待外部反馈而无法推进。请在评论中记录阻塞原因和解除条件。 |
| 已取消(Cancelled) | 决定不再做。保留用于追溯。 |
| 已归档(Archived) | 已归档,默认视图不显示。用于长期留存。 |
智能体执行与状态
在工单详情面板的状态选择器中可以直接切换状态。处于「待规划」「已取消」或「已归档」的工单不会自动派发智能体任务;需要自动执行时,应先将工单安排到可执行的状态(通常为「待办」或「进行中」)。
AgentTask 运行期间,可以在 transcript 指导输入框中追加待处理指示。点击「立即处理」会将某一条待处理指示标记为尽快投递,并在 provider 可安全接收的边界发送,不会打断正在执行的 tool call。投递前仍可撤回待处理指示。transcript 顶部的停止按钮会停止整个 AgentTask 及其运行中的工作。
批量更新状态
在工单列表视图中勾选多个工单后,屏幕底部会自动浮现批量操作栏。点击 修改状态 可以一次性将选中的所有工单批量推进或调整到目标状态(例如「已完成」「进行中」或「待办」)。若某张工单存在未完成的强制前置依赖,系统会自动校验并拦截,确保状态流转符合依赖约束。
优先级
| 优先级 | 适用场景 |
|---|---|
| 低(Low) | 可有可无;有空再做。 |
| 普通(Normal) | 多数工作的默认值。 |
| 高(High) | 本周期内必须完成。 |
| 紧急(Urgent) | 抛下其他事;值班响应级别。 |
未设置优先级等价于 普通。
附加字段
除标题、状态和优先级之外,工单还支持以下字段:
| 字段 | 说明 |
|---|---|
| 开始时间 | 分配给智能体或团队的待规划工单可设置一次性激活时间。 |
| 截止日期 | 可选的截止时间;工单届时仍未结束会向创建者发送一次 Inbox 提醒。 |
| 验收标准 | 可选的条件清单,标记工单为已完成前需逐项满足。支持 Markdown。 |
| 元数据 | 可选的 JSON 键值存储(最多 50 个键,总计 8 KB)。适合集成和智能体挂载结构化数据,而不污染描述字段。 |
在工单详情面板中编辑这些字段。
子工单
工单可以拥有子工单。子工单本身是完整的工单——有自己的状态、优先级、负责人和评论——但会内联显示在父工单的详情面板里。关闭所有子工单不会自动关闭父工单,父工单的负责人决定整体何时收尾。
在父工单的 子工单 面板中创建。
当 AgentTask 使用 task token 将其绑定的子工单推进到 in_review 或 done 时,Mopheus 会为父工单记录一条待决唤醒,并在该 source AgentTask 进入最终状态后再考虑唤醒父工单负责人。如果本次运行已经通过父工单评论有效触发了同一负责人,待决唤醒会被抑制。本阶段成员手动修改状态不会自动唤醒父工单。
依赖
依赖表达「本工单需要等待另一张完成」。请克制使用,因为依赖往往会暴露真实的协调成本。被阻塞的工单会在列表中标记,并在你尝试开始一张仍有未完成依赖的工单时给出提示。
在工单详情面板的 依赖 区域添加或移除依赖关系。
标签
标签是工作区级的自由标记,适合那些不值得开一个项目、却需要跨工单聚合的概念(如 slow-query、capacity-risk、change-window)。
在工单详情面板或列表行的标签区域直接添加、编辑或移除标签。
评论与时间线
评论触发预检
评论输入框可以显示本条评论可能唤醒的智能体只读快照。评论发送并持久化后
会重新计算路由,因此负责人、运行时、权限或队列状态变化时,预检中的待处理
提示最终变为 queued、coalesced、deferred 或 blocked 都是正常竞态。
输入框中的跳过选项只影响本条评论,不会修改智能体、工单或团队配置。
每张工单都有一条时间线,混合显示用户评论、状态变更、智能体运行摘要和子工单事件。评论支持 Markdown,是记录进展、讨论方案和交接上下文的主要场所。
在工单详情面板底部的输入框中撰写并提交评论。支持拖拽上传附件。每条根评论和回复都支持直接复制分享链接(通过操作菜单中的「复制链接」或点击评论时间戳锚点 #comment-<id>);打开评论链接会自动展开父评论串、展开已解决折叠块并平滑滚动高亮目标评论。
Markdown 与预览
工单描述、评论和聊天消息使用同一套 Markdown 渲染。工单描述和评论可在富文本和 Markdown 两种模式间切换;Agent、团队和自动任务的指令编辑器也提供相同的源码模式。富文本模式中的任务列表可直接勾选完成。Mermaid 图表可在支持缩放和拖拽的查看器中打开,并下载为 SVG。使用 ==高亮文本== 创建行内高亮。#42 或工作区前缀形式(例如 TSK-42)在目标工单存在时会保存为可点击的工单链接;代码中的引用保持原样。
GFM 任务列表会展示勾选状态,但为只读,不会修改原内容。源码附件使用语法高亮预览,PDF 附件在应用内分页预览。Markdown 附件以富文本渲染(支持代码高亮、Mermaid 图表和表格),可通过下载按钮旁的切换按钮在可视化视图与源码之间切换;HTML 附件以沙箱页面渲染,CSV 附件以表格渲染并支持同样的源码切换。文本和源码附件最多预览 20 MB,超过此大小的文件仍可下载。
交互式决策组件(Ticket Widgets)
[!NOTE] 实验性能力与功能开关: 交互式决策组件(Ticket Widgets)目前作为实验性能力提供,由系统级与工作区级功能开关
widget(Feature Flag)管控。
- 默认状态:系统默认开启(
enabled)。工作区管理员可在 工作区设置 → 功能管理 中单独关闭此能力(选择「强制关闭」)。系统管理员亦可在平台管理端统一管控。- 关闭降级:当功能关闭时,智能体将不再输出组件指令,工单内的
widget代码块将自动降级显示为标准 JSON 语法高亮代码块,底部提交工具栏和个人设置中的主题偏好亦会同步隐藏。
智能体(Agent)可以在工单正文或评论中通过 widget 代码块(```widget ... ```)输出结构化的 JSON 规范,渲染为可交互的卡片组件。成员可以直接在 Web 界面中直观选择方案或审批操作,无需手动输入非结构化文本回复。
支持的组件类型
- 单选组件(
single_select):从多个候选方案中选择唯一一项(例如:技术方案选型或备份恢复目标)。 - 多选组件(
multi_select):支持选择多项,并可通过min与max配置约束最小和最大选择项数(例如:选择需要执行灰度升级的目标节点列表)。 - 二次确认组件(
confirm_action):用于高危生产操作的审批确认或拒绝,支持填写操作理由(例如:生产数据库 DDL 变更或主从切换放行)。
组件定义示例
```widget
{
"v": "1",
"id": "w_failover_choice",
"type": "single-select",
"label": "选择主从切换目标节点",
"props": {
"options": [
{ "value": "node-db-02", "label": "Node DB-02 (可用区 A)", "description": "复制延迟: 0ms,NVMe 存储", "intent": "positive" },
{ "value": "node-db-03", "label": "Node DB-03 (可用区 B)", "description": "复制延迟: 12ms,HDD 存储" }
],
"default": "node-db-02"
}
}
```交互与提交机制
- 交互选择与批量提交:在工单中勾选或选择决策项后,屏幕底部会浮出吸顶式的提交工具栏,汇总待提交的选择数量;点击「提交选择」即可完成决策并持久化。
- 结构化回执评论:提交成功后,系统会自动在工单时间线上发表一条回执评论(包含已确认方案的概览表格与可折叠展开的
<details>原始 JSON 数据),便于后续审计追踪。 - 锁定与审计状态:完成决策或组件过期后,组件卡片进入只读锁定态,明确展示决策人头像、姓名、确认时间及选定内容。
- 5 种专属视觉风格:成员可在 个人设置(Profile Settings) 的 组件风格(Widget Theme) 中选择偏好的渲染外观:
- 默认(Default):现代极简卡片与标准圆角设计。
- 紧凑(Compact):紧凑运维风格,行距与边距紧凑,适合信息高密度场景。
- 醒目(Vibrant):高对比度边框与鲜明状态徽标,强化视觉注意力。
- 极客终端(Geek Mono):等宽字体排版、终端风格高亮与方括号选框(
[x])。 - 温润工业(Warm Industrial):温暖中性灰底色、微倒角机加工边框与实体按键触感。
- 安全降级:若组件 JSON 语法无效或存在未知字段,系统会自动优雅降级为提示卡片,并保留可一键复制的代码块。
长评论串
当一张工单有超过五个顶层评论串时,详情面板会在桌面端显示评论缩略导航和快速跳转轨道。点击其中一项可滚动到对应评论串,整张评论串卡片会短暂显示浅蓝色后淡出。时间线上方的全部展开和全部收起按钮可一次调整所有评论串。
在评论面板聚焦时使用 Ctrl+F(macOS 使用 Cmd+F)可在面板内查找评论。匹配内容会高亮,并可用上一个/下一个控制项逐条跳转。
任意评论(包括回复)都可以解决所在评论串。被标记解决的评论会显示「已解决」标识。解决顶层评论时,整条评论串会收起为摘要;解决某条回复时,会保留根评论和这条解决回复,其余回复收起,展开评论串后才能查看。清除解决状态后会恢复完整评论串。
质询与追问(Grill Me)
点击 追问(Grill Me) 按钮,可以唤醒智能体基于 grill-me 技能开展最多 10 轮自问自答式的深度推演与审查,并在识别风险的同时给出推荐方案。
- 指定 Griller 智能体:若工作区中配置了开启
Griller开关的专家智能体(例如架构质询专家、DBA 质询专家),点击追问按钮右侧的下拉箭头可直接选择指定的专业 Griller;直接点击主按钮则自动派发给默认或首选的 Griller 智能体。 - 工单质询(Ticket Grill):位于工单详情页右上角主操作栏或工单列表右键菜单。以工单标题与正文描述为事实源,对整张工单的需求定义、技术选型、边界条件与潜在风险进行全局审查,审查报告以一级根评论发表在时间线上。
- 评论质询(Comment Grill):位于评论卡片的操作区。以当前评论串为事实源,针对该局部方案或具体回复进行针对性审查,审查报告以回复(Reply)形式发表在当前评论串中。
从评论触发智能体
评论可以在不改变工单负责人的情况下唤醒智能体。顶层评论和回复评论走不同的路由规则。
顶层评论:
| 场景 | 当前负责人 | 评论内容 | 触发谁干活 |
|---|---|---|---|
| 成员评论并提及另一位成员 | 成员 / 智能体 / 团队 / 未分配 | @成员 | 不触发智能体。只通知被提及成员。 |
| 成员评论并提及智能体 | 任意负责人 | @智能体 | 被提及的智能体获得一个针对当前工单和评论的任务。 |
| 成员评论并提及团队 | 任意负责人 | @团队 | 触发团队 Leader 智能体评估并按需分派。 |
| 成员评论但没有路由型提及 | 智能体 | 普通评论 | 当前负责的智能体获得一个后续任务。 |
| 成员评论但没有路由型提及 | 团队 | 普通评论 | 当前负责团队的 Leader 智能体被触发,评估并按需分派。 |
| 成员评论但没有路由型提及 | 成员 / 未分配 | 普通评论 | 不触发智能体,只记录到时间线。 |
| 智能体在运行过程中发表评论 | 任意负责人 | 总结或进度评论 | 不会因为智能体自己的输出额外触发下一轮,除非它显式提及另一个智能体或团队。 |
任意顶层评论以 /note 开头 | 任意负责人 | /note ... | 不做智能体或团队路由,即使正文里包含智能体或团队提及。 |
回复已有评论:
| 场景 | 当前负责人 | 回复对象 | 回复内容 | 触发谁干活 |
|---|---|---|---|---|
| 成员回复智能体评论 | 任意负责人 | 智能体评论 | 普通回复 | 被回复的智能体获得一个后续任务。 |
| 成员回复并显式提及智能体 | 任意负责人 | 任意评论 | @智能体 | 被提及的智能体获得任务;显式提及优先于回复对象路由。 |
| 成员回复并显式提及团队 | 任意负责人 | 任意评论 | @团队 | 被提及团队的 Leader 智能体被触发。 |
| 成员回复成员发起的评论串 | 智能体 | 成员评论 | 普通回复 | 通常不触发智能体,除非负责人智能体已参与该评论串或被显式提及。 |
| 成员回复成员发起的评论串 | 团队 | 成员评论 | 普通回复 | 可作为团队协作信号触发团队 Leader;如果回复只是在 @成员,则不触发智能体。 |
| 回复中只提及成员 | 任意负责人 | 任意评论 | @成员 | 不触发智能体。只通知被提及成员。 |
任意回复以 /note 开头 | 任意负责人 | 任意评论 | /note ... | 不做智能体或团队路由。 |
当评论或回复确实触发工作时,这条消息会成为本次运行的触发上下文:智能体会看到工单、此前讨论,以及唤醒它的具体消息。回复会继续绑定到所在评论串。如果没有兼容运行时在线,触发出的任务会保持排队,直到运行时连接。
在任务开始运行前,Mopheus 会合并同一智能体在同一工单上的兼容评论触发,避免短时间内产生重复运行:
- 没有任何子评论的顶层评论会进入同一个待处理的根评论池,因此连续补充多个独立话题时,智能体会在一次运行中看到它们。
- 成员在存在活跃任务的评论串内追加回复时仍会触发派发。该任务已运行时,回复会创建排队后继任务;后续回复会在后继任务保持 pending 期间合并到它。
- 根评论池中的任一根评论收到第一条子评论后,该池会绑定并封口到这个评论串。之后新发的顶层评论会开始新的待处理池,不会混入已形成对话的评论串;该评论串中的后续回复仍会继续合并。
- 合并任务会保留其中最高的优先级,普通补充不会降低已排队任务的优先级。
- 任务开始运行后,提示词快照不再改写。后续评论会创建后继任务,并在同一智能体和工单范围内按顺序认领。
筛选与搜索
工单列表支持按状态、优先级、负责人、标签、创建时间等条件筛选,也支持全文搜索标题和描述。筛选条件会按用户和工作区保存,并在刷新或切换工单列表页面后恢复;创建时间筛选仍会保留在 URL 中,便于向团队成员分享指定时间范围的视图。
工单默认按创建时间降序排列,最新工作优先显示。打开 排序 菜单后,可按优先级、开始日期、截止日期、创建时间、更新时间或标题排序;再次选择当前排序项即可切换升降序,排序字段和方向会在刷新后继续保留。
命令行参考
以下命令供熟悉 CLI 的用户快速操作:
# 创建工单
mopheus ticket create \
--title "修复 Payment Webhook 测试偶发失败" \
--description "CI 上大约 10% 概率失败" \
--priority high
# 定时开始工单;批量排期时按不同时间重复执行该命令
mopheus ticket create \
--title "午夜升级数据库" \
--status backlog \
--agent-id <智能体-id> \
--activate-at "2026-12-31T16:00:00Z"
# 清除计划开始时间
mopheus ticket update <工单-id> --activate-at ""
# 修改状态(使用 snake_case:in_progress、in_review)
mopheus ticket status <ticket-id> in_progress
# 批量更新工单状态(支持逗号分隔的工单 ID 或 UUID 列表)
mopheus ticket batch-update --ids <id1,id2,id3> --status done
# 创建子工单
mopheus ticket create --title "子工单示例" --parent-id <父工单-id>
# 更新工单
mopheus ticket update <ticket-id> --title "新标题" --priority urgent
# 分配(成员 / 智能体 / 团队 / 清空)
mopheus ticket assign <ticket-id> --user-id <user-id>
mopheus ticket assign <ticket-id> --agent-id <agent-id>
mopheus ticket assign <ticket-id> --team-id <team-id>
mopheus ticket assign <ticket-id> --unassign
# 管理依赖
mopheus ticket dependency add <ticket-id> <depends-on-ticket-id>
mopheus ticket dependency list <ticket-id>
mopheus ticket dependency remove <dependency-id>
# 管理标签(单次传入一个标签名或 UUID;要添加多个请重复执行命令)
mopheus ticket label add <ticket-id> bug
mopheus ticket label list <ticket-id>
mopheus ticket label remove <ticket-id> urgent
# 工单元数据(结构化键值存储)
mopheus ticket metadata list <ticket-id>
mopheus ticket metadata get <ticket-id> --key <key>
mopheus ticket metadata set <ticket-id> --key <key> --value <value>
mopheus ticket metadata delete <ticket-id> --key <key>
# 关注者
mopheus ticket subscriber list <ticket-id>
mopheus ticket subscriber add <ticket-id> --user-id <user-id>
mopheus ticket subscriber remove <ticket-id> --user-id <user-id>
# 评论(正文通过 --content 传入)
mopheus ticket comment add <ticket-id> --content "PR 已提交:github.com/acme/payments/pull/482"
mopheus ticket comment list <ticket-id>
mopheus ticket comment update <comment-id> --content "更新后的内容"
mopheus ticket comment delete <comment-id>
# 评论追问质询(对指定评论发起 Grill Me,可选指定 Griller 智能体)
mopheus ticket comment grill <comment-id>
mopheus ticket comment grill <comment-id> --agent-id <griller-id>
# 工单追问质询(对整张工单发起 Grill Me,可选指定 Griller 智能体)
mopheus ticket grill <ticket-id>
mopheus ticket grill <ticket-id> --agent-id <griller-id>
# 创建工单或添加评论时附加文件
mopheus ticket create --title "日志" --attachment ./logs.tar.gz
mopheus ticket comment add <ticket-id> --content "见附件" --attachment ./screenshot.png
# 筛选与查看
mopheus ticket list --status in_progress --priority high
mopheus ticket list --search "payment retry" --status todo
mopheus ticket search "webhook"
mopheus ticket get <ticket-id>
# 取消工单
mopheus ticket cancel <ticket-id>
# 重跑或取消智能体任务(传入的是 agent-task id,不是工单 id)
mopheus ticket rerun <agent-task-id>
mopheus ticket cancel-agent-task <agent-task-id>
mopheus ticket run-messages <agent-task-id>mopheus ticket list --search <关键词> 会搜索工单标题和描述;可与 --status、--priority、--project 等列表筛选条件组合使用,以缩小结果范围。
ticket create / ticket update 的常用参数:
运行记录详情中的交互输入仅对运行中的 AgentTask 展示。权限按任务触发者/任务 owner、工作区 owner 和 RBAC 顺序判断;消息按序进入 daemon 队列,撤回只允许尚未开始投递的本人消息或具备管理权限的 owner。状态变化由 WebSocket 实时刷新。WebSocket 只用于唤醒调度器;daemon 重连或重试后会从服务端恢复待处理消息,仍有未投递交互时任务完成会被延后。
| 参数 | 说明 |
|---|---|
--title | 创建时必填。简短的标题。 |
--description | 详细描述,支持 Markdown。 |
--priority | 优先级名称:low、normal、high、urgent。 |
--status | 初始状态。默认为 todo。 |
--project | 关联项目的 UUID。 |
--parent-id | 父工单 UUID(用于创建子工单)。 |
--assignee-id | 负责人 UUID(成员、智能体或团队)。需配合 --assignee-type(0=成员、1=智能体、3=团队),或对智能体直接使用 --agent-id 简写。 |
--due-date | 截止日期,RFC3339 格式(如 2026-12-31T00:00:00Z)。 |
--attachment | 要上传并附加的文件路径。可重复传入。 |