# OMP Kanban
**Repository Path**: CZXyee/omp-kanban
## Basic Information
- **Project Name**: OMP Kanban
- **Description**: 使用 OMP Kanban 在 [OMP](https://github.com/can1357/oh-my-pi) 中统一管理任务的创建、评估、运行、审查和归档,用 Markdown + Git 持久化每个阶段的事实。使用多 Session/Subagent 的 lease、fencing 和 run barrier 保障并发。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-08-24
- **Last Updated**: 2026-08-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OMP Kanban
使用 OMP Kanban 在 [OMP](https://github.com/can1357/oh-my-pi)中统一管理任务的创建、评估、运行、审查和归档,用 Markdown + Git 持久化每个阶段的事实。使用多 Session/Subagent 的 lease、fencing 和 run barrier 保障并发。
我们目标是减少任务执行过程中的人工介入,明确 preparation → evaluation → execution → review → archived。例如我们 preparation → evaluation,evaluation 介入提供更多上下文,或干脆让 Agent 从 preparation 执行至 review 直接进行评估。Agent 执行期间,结合自动的时间估计,尽量让任务执行期间不管,卸载心智负担,做到流水线 drain。


## 立即开始
- Windows x64
- PowerShell
- OMP
克隆仓库后,在仓库根目录启动 OMP:
```powershell
git clone <本仓库地址>
cd Prj-2608-omp-kanban
omp
```
### 1. 一句话安装
在 OMP 中输入:
```text
安装 OMP Kanban。
```
仓库内的 `.agents/skills/omp-kanban-setup` 会让 Agent 执行全局安装脚本并验证结果。安装目标为当前 OMP 用户的 Agent 目录,不复制本仓库的 `.kanban/` 数据。完成后退出并重启 OMP。
### 2. 初始化并打开看板
重启后可在任意项目目录中启动 OMP,并输入:
```text
/kanban init
/kanban
```
现在可以直接创建任务并让 Agent 推进:
```text
创建任务:修复登录超时问题,优先级 high。
```
```text
处理准备区优先级最高的任务:完成评估后自动执行,验证通过后移入审查。
```
默认看板保存在当前项目的 `.kanban/`,任务和配置可以随 Git 提交;临时运行状态不会进入 Git。
### 3. 一句话卸载
需要卸载时,从本仓库根目录启动 OMP 并输入:
```text
卸载 OMP Kanban。
```
Agent 只删除当前 OMP 用户目录中的 `extensions/omp-kanban/` 和 `skills/omp-kanban/`。已有项目的 `.kanban/` 数据保持不变;完成后退出并重启 OMP。
手动安装、更新或卸载
```powershell
./scripts/global-kanban.ps1 -Action install
./scripts/global-kanban.ps1 -Action install -Force
./scripts/global-kanban.ps1 -Action uninstall
```
安装脚本会在仓库缺少 `.omp/bin/kanban-md.exe` 时自动下载并校验固定版本的 `kanban-md`,无需先运行依赖安装命令。
使用自定义看板目录
在启动 OMP 前设置相对项目根目录或绝对路径:
```powershell
$env:OMP_KANBAN_DIR = ".team-kanban"
omp
```
## 使用
### 推荐工作方式
把看板作为 Agent 的持久任务队列,而不是要求人手工维护每次状态变化。用户负责创建目标、调整优先级和作出必要决策;其余阶段默认由 Agent 推进:
```text
处理准备区优先级最高的任务:自动完成评估,门禁满足后领取并执行,验证通过后移入评审。
```
```text
审查 #12;满足验收要求则以 completed 归档,否则记录问题并退回评估。
```
Agent 会在一个工作流中完成上下文收集、coding 时间估算、资源声明、claim、Session/Subagent 协调、验证、评审交接和状态回写。只有范围或风险取舍、评审结论、取消任务、失联 worktree 处置等需要真实判断时,才请求人工介入。
### 1. 打开看板
在 OMP 中执行:
```text
/kanban
```
看板不存在时,Extension 会先询问是否初始化;确认后再打开 TUI。以下写法等价:
```text
/kanban tui
/kanban open
```
常用 TUI 操作:
| 按键 | 操作 |
| ------------------ | --------------------------- |
| 方向键或 `h/j/k/l` | 切换列和选择卡片 |
| `c` | 创建卡片 |
| `e` | 编辑卡片 |
| `E` | 使用外部编辑器打开 Markdown |
| `m` | 选择目标状态 |
| `+` / `-` | 提高或降低优先级 |
| `s` / `S` | 切换排序字段 / 顺序 |
| `/` | 搜索 |
| `q` | 退出 |
TUI 适合创建卡片、调整优先级,以及在 `preparation` 和 `evaluation` 之间整理任务。不要在 TUI 或直接 CLI 中绕过 Agent,把卡片推进执行、评审或处理带 lease 的卡片。
### 2. 创建和整理任务
人工可以在 TUI 中创建卡片,也可以直接告诉 Agent:
```text
创建一张卡片:为领取冲突增加用户可见提示,优先级 high。
```
每张卡片是一份 Markdown 文件,拥有永久稳定的数字 ID。引用任务时使用 `#ID`,不要依赖文件名或路径。
看板固定流程:
```text
preparation → evaluation → execution → review → archived
```
| 状态 | 使用者看到的含义 |
| ------------- | ---------------------------------------------------------- |
| `preparation` | 新任务、描述补充、优先级排序 |
| `evaluation` | Agent 收集代码上下文、确认范围、识别资源并估算 coding 时间 |
| `execution` | 已领取并执行,受 lease 和 run barrier 保护 |
| `review` | 实现已经交接,等待人工或 Agent 评审 |
| `archived` | 任务已结束,不再参与日常调度 |
归档结果由标签区分:`outcome-completed`、`outcome-abandoned`、`outcome-failed`。
### 3. 让 Agent 评估任务
使用自然语言即可:
```text
评估准备区优先级最高的任务。
```
Agent 在一分钟内只读取需求和少量直接相关文件,主动给出一个粗粒度 Agent coding estimate、置信度和一句依据,不运行测试或提前实现。估时表示从开始编码到结果可进入 `review` 的最可能墙钟时间,不包含等待用户、人工评审和外部依赖。
允许的档位为 `10m`、`20m`、`30m`、`45m`、`1h`、`1.5h`、`2h`、`3h`、`4h`、`1d`。Agent 通过 `evaluate` 将卡片移入 `evaluation` 并把单一 estimate 写入卡片;不输出时间范围。执行中发现任务量级变化时,只有跨越档位才覆盖 estimate。
### 4. 领取并执行
```text
领取并执行卡片 #12;可以独立完成的部分并行处理。
```
执行前,Coordinator 会创建:
- 当前 Session 持有的 lease;
- 单调递增的 `generation` fencing token;
- 本次执行的 `runId`;
- 预期参加本次 run 的主 Session/Subagent 列表;
- 与其他卡片进行冲突检查的资源声明。
同一 run 可以包含多个 Subagent。只有该 run 的所有活跃 Session 都进入终态,run barrier 才会变为 ready。项目中无关 Session 不会阻塞当前任务。
### 5. 检查结果并进入评审
```text
检查 #12 的 run;所有 Session 完成后移入评审,并给出验证证据和剩余风险。
```
只有持有当前 lease 的 Coordinator,且 `cardId`、`runId`、`generation` 和卡片 hash 全部匹配时,才能 finalize。实现成功后通常进入 `review`;执行结果不满足要求时可以退回 `evaluation`。
### 6. 归档
评审通过:
```text
将 #12 以 completed 结果归档。
```
取消任务:
```text
将 #12 以 abandoned 结果归档,并记录原因。
```
不可恢复失败:
```text
将 #12 以 failed 结果归档,并保留失败摘要。
```
### 7. Session 失联后的恢复
过期 lease 不会被普通 `claim` 自动抢占。应让 Agent 先检查旧 Session 和 worktree,再显式恢复:
```text
检查 #12 的旧 Session 和 worktree;确认处置结果后恢复该卡片继续执行。
```
`recover` 必须记录 worktree 处置摘要。新 run 成功建立后,旧 run 才会被 supersede;恢复中途失败会尝试恢复旧 claimant 和 lease。
### 查询和终端使用
OMP 内可直接查询:
```text
/kanban list # 未归档卡片
/kanban archived # 已归档卡片,仅查询
/kanban sessions # Session registry
```
维护清理:
```text
/kanban clean runtime # 重置临时协调状态和 generation fencing
/kanban clean activity # 清空 activity.jsonl
/kanban clean all # 同时执行上述两项;/kanban clean 与此相同
```
所有清理都要求交互确认。`runtime` 和 `all` 在存在活跃 lease、run 或其他 Session 时拒绝执行;当前 Session 登记会保留。清理不删除 `config.yml`、`.gitignore` 或 `tasks/`,但重置 fencing 后旧 generation 不再保留,因此只能在确认没有执行中任务时使用。
脱离 OMP 的只读查询:
```powershell
./scripts/kanban.ps1 list --compact
./scripts/kanban.ps1 show 12
./scripts/kanban.ps1 list --archived --table
./scripts/kanban.ps1 board
./scripts/kanban.ps1 metrics
```
完整的 `/kanban` 子命令、Agent tool actions、20 个上游 CLI 命令及参数边界见 [命令参考](docs/commands.md)。
> Agent 必须通过 `kanban` 工具修改卡片,不能直接编辑 `.kanban/tasks/*.md`。直接执行 `kanban-md edit/move/archive` 不会创建或校验 OMP runtime lease,只适用于明确不受协调保护的人工整理操作。