协作与自动化

Task

issue、PR 和你自己记的事,各自带着 Workspace 和 PR。

Task 是什么

Task 就是那件事本身。Workspace 是在哪干,agent 是谁来干,Task 是为了什么干。它只存别处推不出来的东西:

  • 信源:一个 GitHub issue、一个 pull request,或者什么都没有(你自己手填的)。
  • 你的备注。
  • 阶段:new、planning、confirming、ready、in progress、in review、done。这是你定的。在 task 详情的下拉框里改,或者交给 agent、agentflow 去设。

其他一切都是显示时现算的。标题来自 issue。活动状态来自实际发生的事:

Todo名下还什么都没有
In progress有一个 Workspace
In review有一个打开的 PR
Done所有信源都已关闭或合并,或者你标记了完成

名下的 agent 或 run 出了状况也会体现出来:needs you、error 或 running,取最严重的那个。阶段是你打算做到哪,活动状态是实际发生了什么。两者并排显示,谁也不去纠正谁。

PR 归属于哪条 task,靠分支判断:head 分支等于这条 task 某个 Workspace 分支的 PR,就是它的 PR。Kumo 不解析 fixes #96。

Task 从哪来

  • GitHub issue,自动进来。在 GitHub 上的 project(且 gh 已登录),每个打开的 issue 一被 Kumo 看到就成为一条 task。Kumo 只看它有理由看的 project:已经有 task 的、有在线 agentflow 在监听的、或者 Task 页正开着的。每五分钟查一次,列表没变化不消耗你的限流额度。
  • 一个 PR:在 Task 页上选中它,或者从它新建 Workspace 时。
  • 手填:Task 页上,或侧栏 Tasks 那一行上的 +。Manual 让你填标题、project 和备注;Chat 让你用一句话描述要做的事,交给一个 agent 拆成一条或多条 task,需求不清楚时它会先问。
  • agent 建的:kumo task new。

Task 页

侧栏顶上的 Tasks 打开一个整页:左边是列表,右边是选中那条的详情。它在侧栏那一行会数出有几条在等你。

列表按 project 分组,顶上的筛选按钮有 All、Mine(你建的、指派给你的、或者等你 review 的)、Needs you、Confirming 和 In review。搜索框接受普通词、#96,以及可以组合的过滤条件:

label:bug  milestone:"0.26"  author:ann  stage:ready  is:pr  is:issue  is:manual

每一行显示 issue 编号、标题、它的 PR(⑂ #131)、labels,然后是阶段和活动状态。已完成的 task 显示为灰色,排在末尾,只在 All 里出现。点一行只是选中它,不会跳到别处。

详情从上到下是:task 的身份和阶段、动作、它的 pull request、名下的 Workspace 和 agentflow run、issue 的正文、评论(只读,回复仍去 GitHub),以及活动流:分支上的 commit、agent 的启停、run 的进展、事件,最新的在前。每一行都链到它说的那个东西。

动作

第一颗按钮永远是这条 task 离完成还差的那一步,你不用自己去想下一步是什么:

什么时候第一颗按钮
名下还什么都没有Start a Workspace…
有 Workspace,没有 PROpen a pull request ▾
有打开的 PRMerge #131…
PR 已合并,issue 还开着Close issue…
你手填的 taskMark done

然后是放弃它的方式(Close issue…、Close pull request… 或 Delete task…),把 task 交给某条 agentflow 的 Run flow ▾,以及始终都在的 Start a Workspace…:一条 task 随时都能再开一个 Workspace。

  • Start a Workspace… 打开已经为这条 task 填好的 New Workspace:分支、带 issue 正文的第一条 prompt,以及告诉 agent 它在做哪条 task 的那一行。
  • Open a pull request ▾ 列出这个 Workspace 上的 agent。选一个,Kumo 就给它发一句固定的话:push 这个分支,向 base 分支开一个 PR,正文里写上 Fixes #96。这条消息在那个 agent 的对话里显示为 FROM Task #96,而不是你。
  • Merge #131… 让你在 Merge、Squash、Rebase 里选(仓库允许哪些就显示哪些),通过 gh 合并。GitHub 拒绝的话,你会看到它的原话。

Kumo 写 GitHub 只有四个地方,全都是你按下并确认的按钮:关闭 issue、合并 PR、关闭 PR,以及让 agent 去开 PR。没有后台同步,也不发评论。

Task 面板

在 Workspace 里,右侧栏的 Task 按钮(⇧⌘T)显示这个目录对应的 task:编号、标题、PR,以及和 Task 页上相同的第一颗按钮。不离开 board 就能把事情收尾。没有关联 task 的 Workspace 会直说。

对话里的 Task

  • 在输入框里打 #,按编号或标题挑一条这个 project 的 task,最近动过的在前。插进去是 @task:#96。
  • 从 task 新建的 Workspace,第一条 prompt 开头会带一小段:这是哪条 task,以及怎么用 kumo task 读取和更新它。agent 由此知道自己的工作归在哪,也能自己推进阶段,不用你粘贴任何东西。
  • agent 用 kumo task list / show / new / edit / start / done 做 Task 页上能做的那些事。kumo task show 后面什么都不跟,就是这个 agent 所在 Workspace 的那条 task。

Task 的结束

一条 task 的所有信源都关闭或合并后,Kumo 会把它标为完成;名下不再有 Workspace 时,就把它移除。列表不会被做完的事堆满。你手填的 task 用 Mark done 结束。

Delete task… 只移除 task,它的 Workspace 都还在。在 GitHub 上重新打开 issue,它会作为一条新 task 回来。

事件

每条 task 都会在 Kumo 的事件总线上广播自己:task.created、task.updated(带上变了什么:阶段、labels、PR 打开或合并……)、task.done 和 task.deleted。Agentflow 就从这些事件起跑。见 Agentflow。