1回执即出卡
执行会话每次调用task_execution_report(running / waiting / blocked / failed / completed)都向会话写入一张折叠卡片:任务 ID、标题、优先级、负责人与活动摘要一屏可读。running / completed 至少各一张属预期;错误结果(校验失败)不渲染卡片、保持纯文本。
1. 窄栏模拟:左侧严格按照 400px 侧边栏宽度排版,支持原生拖拽落列、横向平滑滚动与卡片点击呼出覆盖抽屉。
2. 双向驱动:UI 的每次拖拽都会立即触发对应的 MCP Tool Call,并与远端 Agent 共享状态。
3. 与实现同步(2026-10-03):真实 logo 资源、仓库切换器 suffix「添加仓库」入口与项目路径行、详情抽屉头部(ID + 状态 Tag + 复制 + 关闭)、SVG 图标已对齐代码实现(ui/src)。
人与 Codex Agent 共享底层 Git Worktree 执行上下文与任务数据库,所有 UI 操作均为对 MCP 工具集的标准化调用。
管理任务增删改查、排序及优先级流转。
自动分流分支、捕获差异 diff、创建 PR。
监控 Codex Agent 终端输出与心跳生命周期。
获取当前仓库的所有任务看板与列定义配置。
供人和 Agent 多维度拉取任务列表。
获取单个任务详情、分支名及 Session 输出。
创建协同任务,写入默认 Backlog。
局部修改任务描述、验收标准或分支。
拖拽卡片切换状态,同步驱动生命周期事件。
指派给 Codex 时自动拉起专属 Agent 执行会话。
实现会话(executionBinding)与验收会话(reviewBinding)是两个不同的 Codex 聊天,复用同一实现工作区; 每轮结论持久留存,跨 Agent 更新以 expectedRevision CAS 防静默覆盖。 返工全程保留在 Review 列,不移动看板卡片;approved 不自动移动 Done。
任务进入 Review 列,review.status = pending。不自动创建 Reviewer、不自动选择工作区; projectless 任务不参与 Review 流转(purpose=review、外部会话记录与状态更新均被拒绝)。
服务端按 executionBinding → externalExecutionSession → worktreePath 解析唯一实现工作区并锁定到请求, 调用者不能指定;workspaceMode 固定 existing。
reviewBinding.threadId ≠ executionBinding.threadId(同一 Codex 聊天不得兼任实现与验收,Core 强制拒绝); workspacePath 必须等于实现工作区,不另建 worktree、不切换目录。
只有真实开始回执才开新一轮并推进状态;重复 running 回执不重复开轮; 回执按请求 purpose 分流写 reviewExecution,不触碰实现执行状态。
须携带非空 conclusion;关闭当前 Round 并持久留存结论与工作区,随后进入下方返工循环。
须携带非空 conclusion;会话 completed 只是执行结束,永远不等于 approved。
目标是实现会话,不是验收会话;默认提示词按最新 Round 结论生成,发送前可编辑(系统协议封装不可编辑)。
复用原聊天与原工作区(禁止换聊天 / 换工作区 / 换模型);真实 running 回执把 Review 推进到 fixing。
由实现方在修复完成后显式提交;Core 校验只能从 changes_requested / fixing 进入。
真实 running 回执开启新一轮 Round #N+1;复查前重新核对实现工作区,与 reviewBinding 不一致即拒绝继续。
approved 不自动移动 Done——最终业务流转始终由显式操作触发;UI 的「标记完成」在 approved 之前不可用。
同一 Codex 聊天(threadId + hostId)不得同时写入 executionBinding 与
reviewBinding;created 与 bound 两个阶段都由 Core 强制校验并拒绝。
Review 复用实现实际修改的目录:不另建 worktree、不凭 board.repo 猜测;
无唯一工作区或来源冲突直接拒绝启动;每次复查重新核对,工作区漂移即拒绝继续。
每轮 ReviewRound 持久保存状态、结论、工作区与更新者,新一轮不覆盖旧轮;
跨 Agent 更新必须携带 expectedRevision,过期返回 REVIEW_STALE,
须 task_get 读取最新状态后重试,不得静默覆盖他人结论。
task_execution_report(running / waiting / blocked / failed / completed)都向会话写入一张折叠卡片:任务 ID、标题、优先级、负责人与活动摘要一屏可读。running / completed 至少各一张属预期;错误结果(校验失败)不渲染卡片、保持纯文本。
widget / mode: project / lockedBoardId / repoRoot / projectDir / taskId),面板据此锁定任务所属仓库——任务列表、归档区与执行入口都只在该看板范围内。
taskId 自动打开该任务详情(同一实例仅一次),时间线展示从认领、绑定到各次回执的真实链路;projectDir 优先执行绑定的工作区路径。关闭详情回到看板;归档任务仍可通过 task_get 读取。