任务
任务将 GitHub、Linear 和 Sentry 上的工作统一到一个视图中。无需分别在 GitHub 上跟踪 Pull Request、在 Linear 上跟踪相关 issue、在 Sentry 上跟踪错误告警,Themis 会自动将它们关联起来,在收件箱中显示为一个完整的任务。
你也可以直接在聊天中创建个人任务 —— Agent 会为你跟踪这些持久承诺,与 webhook 衍生的任务在同一个收件箱中并列显示。详见聊天管理的个人任务。
统一机制
当 Themis 收到 webhook 事件(PR 打开、issue 更新、Sentry 告警)时,它会计算一个任务键——一个唯一标识符,如 github:owner/repo:pr:42 或 linear:ENG-123。如果来自不同渠道的事件存在关联,它们会被合并到一个任务中。
跨渠道检测
Themis 自动发现渠道之间的关联:
| 检测方式 | 示例 |
|---|---|
| 分支名称 | 分支 pip-123-fix-login → 关联到 Linear issue PIP-123 |
| PR 描述 | PR 正文提到 PIP-456 → 关联到该 Linear issue |
| 代码生成 | Themis 为 ENG-789 生成代码 → 将 PR 关联回该 issue |
| URL 扫描 | 活动文本包含 github.com/owner/repo/pull/42 → 关联到该 PR |
当发现关联时,活动会合并到一个任务中。如果后来发现两个独立的任务存在关联,它们会自动合并——活动、参与者和收件箱条目全部整合。
任务收件箱
任务出现在收件箱的 Tasks 标签下,分为三个视图:
| 标签页 | 显示内容 | 状态 |
|---|---|---|
| 聚焦 | 现在需要你关注的工作 | 待处理、审查中 |
| 稍后 | 进行中但不紧急的工作 | 进行中 |
| 已完成 | 已完成或关闭的工作 | 已完成、已关闭 |
每个任务显示的内容
- 状态标记 — 颜色编码:灰色(待处理)、金色(进行中/审查中)、绿色(已完成)
- 标题 — 取自最相关的活动(优先使用 Linear issue 标题,其次是 PR 标题)
- 来源标记 — 可点击的链接,指向 GitHub、Linear 和/或 Sentry
- 贡献者 — 所有参与者的头像及其角色
- AI 摘要 — 1-2 句话总结当前状况,自动生成并在新活动到达时刷新
- 活动时间线 — 所有渠道事件的时间顺序列表
任务详情
点击任务查看完整详情面板:
- 状态下拉菜单 — 手动更改状态或让其自动跟踪
- 操作按钮 — 直接跳转到 PR、Linear issue 或相关聊天
- AI 摘要 — 过期时自动刷新;点击刷新按钮手动重新生成
- 关联对话 — 讨论过该任务的聊天对话
- 活动时间线 — 来自所有渠道的每个事件,带有来源标识
任务状态
状态从最新活动自动推导:
| 事件 | 推导出的状态 |
|---|---|
| PR 打开/准备就绪 | 审查中 |
| PR 审查已提交 | 审查中 |
| 代码推送 | 进行中 |
| Linear issue 移至”进行中” | 进行中 |
| PR 已合并 | 已完成 |
| Linear issue 移至”已完成” | 已完成 |
| PR 关闭但未合并 | 已关闭 |
| Sentry issue 已解决 | 已完成 |
手动覆盖
点击任务上的状态下拉菜单可以手动设置。一旦手动覆盖,该任务的自动状态跟踪会暂停。点击状态旁边的重置图标可恢复自动跟踪。
你在任务中的角色
你根据参与情况出现在任务中:
| 角色 | 获得方式 |
|---|---|
| 拥有者 | 你在聊天中创建了任务(create_task) |
| 作者 | 你打开了 PR 或创建了 issue |
| 受理人 | PR 或 issue 分配给了你 |
| 审查者 | 你被指定为审查者 |
| 被提及 | 你在评论中被 @ 提及 |
每个角色都会创建一个收件箱条目,使任务出现在你的个人任务列表中。你只会看到你有角色的任务——而不是空间中的所有任务。
AI 摘要
每个任务会获得一个自动生成的摘要,概述工作内容、当前状态和最近发生的事情。摘要:
- 新活动到达时自动刷新(带防抖机制以避免过度重新生成)
- 使用具体细节 — PR 编号、issue ID 和贡献者姓名
- 保持简洁 — 最多 1-2 句话
- 可以通过点击摘要卡片上的刷新按钮手动刷新
聊天管理的个人任务
除了来自 webhook 的任务之外,你还可以让 Agent 直接在聊天中创建并管理个人任务。个人任务是持久的承诺 —— 待办、跟进、提醒 —— 它们与 webhook 任务在同一个收件箱中显示,但归你所有,并通过对话进行管理。
创建任务
直接告诉 Agent 你要跟踪什么:
“提醒我周五前起草认证重构 spec”
Agent 会调用 create_task(title: "起草认证重构 spec", due_date: "2026-04-30"),任务会立即出现在你的任务标签下。发起这次对话会被链接为任务的来源,方便你随时跳转回去。
Agent 被指示不要为一过性的问题、一次性操作,或已经存在 Linear issue / GitHub PR / Sentry 告警的工作创建任务(那些通过 webhook 流入)。create_task 用于你之后还想回头处理的事情。
通过 ID 引用任务
每个任务都有一个数字 id,在收件箱标题旁以小巧的 #1278 chip 形式显示。把 id 粘回聊天就能引用:
“#1278 现在什么状态?” “把 #1278 标记为完成” “把 #1278 的截止日期改到下周二”
Agent 在底层使用以下工具:
| 工具 | 作用 |
|---|---|
create_task(title:, summary?, status?, due_date?) | 创建一个由你拥有的个人任务 |
list_my_tasks(status?, overdue?, origin?, limit?) | 列出你拥有的任务 |
get_task(id:) | 只读详情查询;任务上的任意参与者均可查看(拥有者、作者、受理人、审查者、被提及者) |
update_task(id:, title?, summary?, status?, due_date?) | 更新你拥有的任务;传入 status: "auto" 可清除手动覆盖 |
complete_task(id:) | 将你拥有的任务标记为完成 |
delete_task(id:) | 销毁你拥有的任务(Agent 会先确认) |
权限
- 读取 —— 任务上有任意参与者角色(拥有者、作者、受理人、审查者、被提及者)的人,都可以让 Agent 通过 id 查询。与你在收件箱中能看到的一致。
- 写入 —— 仅拥有者可以更新 / 完成 / 删除。Agent 会拒绝你不拥有的任务,并建议替代方案(例如改为在 Linear issue 上评论)。
- 跨空间 —— 任务按 space 隔离。空间 A 中的 Agent 无法读取或修改空间 B 的任务。
状态、截止日期与覆盖
在聊天中设置状态(例如 “把 #1278 标为进行中”)会将任务切换为手动覆盖 —— webhook 活动不会再静默改回它。要恢复自动跟踪,让 Agent “清除 #1278 的状态”(它会传 status: "auto")。
截止日期会同时显示在侧栏和详情页。逾期任务会在日期旁显示红色的逾期标签。
审计轨迹
你对个人任务的每一次更改 —— 标题、摘要、状态、状态覆盖、截止日期 —— 都会与任意 webhook 活动一起被记录在任务的时间线中,包含执行更改的用户和易读的描述(如 “标记为完成”、”截止日期设为 5 月 1 日”)。在任务详情页查看时间线,了解发生了什么以及何时发生。
启用 / 禁用
个人任务由空间上的任务功能开关控制(默认开启)。关闭后聊天工具消失,引导提示也不再注入。在设置 → 功能中按空间配置。
使用技巧
Webhook 任务是自动的;个人任务是显式的。 GitHub、Linear、Sentry 任务无需操作就会出现在你的收件箱中。个人任务只在你让 Agent 跟踪某事时才存在。
一致的分支命名能让跨渠道关联效果最佳。 使用
pip-123-description或feat/eng-456-feature这样的分支名,Themis 就能自动将分支匹配到 Linear issue。
利用聚焦/稍后/已完成作为轻量级的任务看板。聚焦显示当前需要关注的事项,稍后显示后台进行的工作,已完成是你的完成归档。