DeepSeek Harness plugin

oh-my-ticket

DSH ticket management plugin: Epic/Story/Ticket hierarchy backed by SQLite + Markdown

Jump to install

Source facts

Repository
rqwj/oh-my-ticket
Latest update
Aug 22, 2026
Category
Tools & Capabilities
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/rqwj/oh-my-ticket
Plugin: oh-my-ticket
Author: rqwj

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

Oh-My-Ticket (OMT)

!version !tests !platform !dsh

DSH 的 ticket 管理插件Epic → Story → [SubStory] → Ticket → [SubTicket] 五级任务体系, SQLite 存元数据与层级关系,Markdown 存正文。ticket 随项目走(.omt/ 目录可直接进 git), 模型通过工具创建/推进,人通过三种可切换的 UI 展现方式浏览与管理; run 机制支持把一批 ticket 交给模型批量执行,全程有状态机、进度与信任策略兜底。

![image-20260819114848240](attachments/README/image-20260819114848240.png)

✨ 功能特性

三种展现方式,一键切换

同一份 ticket 树,三种外壳共享同一套过滤/排序/搜索交互:

  • 左侧抽屉shell.overlay 浮层,顶部 OMT 按钮开合,宽度可拖拽记忆
  • 浮窗:自由拖拽移动、右下角缩放,位置尺寸持久化;浮窗激活时 OMT Tab 自动隐藏并回退 Chat
  • OMT Tab:注册进会话视图环,与 Chat | Trajectory 并列,可"弹出为浮窗"

完整的树交互

  • 类型徽章(E/S/SS/T/ST)、状态点(归档空心化)、优先级信号条(P1–P3 渐强着色)
  • 搜索、类型/状态/优先级多选过滤、优先级排序、编号显示开关;过滤器状态

自动保存到工作区 .omt/ui-filters.json,刷新自动恢复,面板内一键重置

  • 归档独立维度(与生命周期状态正交,归档只读)、折叠状态跨会话记忆
  • 窄视口适配(<640px 抽屉全宽、拖拽把手退役)、键盘焦点环规范
  • 变更即时推送:自有 SSE 通道(/omt/events),模型改完 UI 立刻刷新

文档详情面板

  • 选中节点即在右侧 details 列打开完整文档(动态遮蔽,关闭自动恢复原工具详情)
  • 标题/状态/优先级/归档操作、追加进度记录、相对时间展示
  • "执行"按钮:把 ticket 引用进输入框提交执行,执行中状态展示并锁定面板操作

模型与 UI 双向联动

  • @ 输入触发器:引用 ticket 进对话(候选排序 + 状态着色)
  • 输入框上方引用条、激活 ticket 状态条
  • 每轮对话末尾自动展示"相关 ticket"列表(来源:@ 引用 ∪ 工具调用 ∪ UI 操作)

Workspace 归属

  • 工作区根目录存在 .omt/ 时 ticket 随项目走(可进 git),否则回退全局 home

(插件 config > OMT_HOME > ~/.omt

  • 创建 Epic 时弹窗选择归属;id 跨 home 全局唯一
  • 树跟随当前会话的工作区自动切换

Run 批量执行

把一批 Ticket/SubTicket 快照成有序 run,交给模型逐项认领、执行、如实报告:

  • item 状态机pending → running → done / failed / blocked / skipped / interrupted

另有信任策略态 awaiting_confirmation——非 report 的裸 done 需人在 run 详情确认或打回

  • 续跑:run 可 pause/resume,interrupted 项 retry 后重新入队;idle 续跑 nudge 自动提醒
  • UI 联动:Runs 区块展示列表/详情/进度统计,树行"▸▸"一键加入 run;

从 UI 触发「开始执行」会自动唤醒执行会话进入 claim 循环

  • 执行上下文注入:claim 成功即时读取祖先链(Epic → Story → SubStory → 父 Ticket)

正文作为只读背景返回,16 KiB 预算内最近父级优先,截断显式标记,单点读取失败降级不阻塞

  • 祖先激活:ticket 开工(置 in_progress 或 claim 成功)自动点亮仍为 open 的

祖先链;done/blocked/skipped 祖先永不重开,归档祖先静默跳过

🤖 模型工具

工具用途
omt_create创建节点(Epic/Story/SubStory/Ticket/SubTicket),层级合法性校验
omt_list列出节点(类型/状态过滤,关键词搜索)
omt_show节点详情(元信息、正文、父子清单),toolview 渲染为 Markdown 文档
omt_update标题/状态/优先级/归档,替换正文或追加进度记录
omt_move移动节点(连同子树)
omt_reindex磁盘 markdown 手工修改后重建 SQLite 索引
omt_run_create创建 run:按顺序快照 Ticket/SubTicket 为执行批次
omt_run_list列出 run(状态过滤 + 成员进度统计)
omt_run_show查看 run 详情:配置、成员状态、执行者谱系、attempts、last_error
omt_run_controlstart / pause / resume / cancel / retry(nodeId) / remove(nodeId)
omt_run_claim原子认领下一项并绑定执行者;返回只读祖先上下文,激活 open 祖先
omt_run_report报告单项结果(done/failed/blocked/skipped),note 记入 ticket 进度

内嵌两个 skill:omt 教 ticket 体系操作规范与状态流转约定,omt-runs 教 run 批次纪律(创建/认领/报告/续跑响应)。

📦 安装

# 本仓库构建并打包(首次需先链接 DSH checkout,见「开发」一节):
pnpm install && pnpm build && npm pack    # → oh-my-ticket-0.4.1.tgz

# 安装进目标 DSH profile(profile 的 dsh.profile.bundles 依次为):
#   @deepseek-ai/dsh-base, @deepseek-ai/dsh-web-app, oh-my-ticket
pnpm dsh plugin --profile <profile> add /path/to/oh-my-ticket-0.4.1.tgz

在工作区根目录 mkdir .omt 即可让该项目拥有独立的 ticket 库(随项目进 git)。 安装/升级后需重启 dsh web 进程,新版本的工具与 UI 才会生效。

🛠 开发

首次设置:链接本地 DSH checkout

@deepseek-ai/* 依赖未发布到 npm,package.json 通过 link:./.dsh-checkout/... 引用本机的 deepseek-harness 源码。克隆仓库后,先运行 setup 脚本创建符号链接:

# 方式一:参数传入 DSH checkout 路径
pnpm run setup /path/to/deepseek-harness

# 方式二:环境变量
DSH_CHECKOUT=/path/to/deepseek-harness pnpm run setup

# 然后正常安装依赖
pnpm install

脚本会校验目标目录确实是 deepseek-harness checkout(检查 vendor/cordispackages/* 等子目录是否存在),然后在仓库根目录创建 .dsh-checkout 符号链接。该链接已 gitignore,只存在于本机,不含任何机器特定路径。

日常开发

pnpm build        # lib/index.js(host 半)+ lib/client.js(浏览器半)
pnpm watch        # 增量重建
pnpm typecheck    # tsc --noEmit
pnpm test         # vitest(344 例)

仓库结构

├── package.json          # dsh.bundle + dsh.client 双 manifest
├── cordis.patch.yml      # 组合层:insert omt 行
├── tsdown.config.ts      # host 半 + client bundle 构建
├── src/
│   ├── index.ts          # host 插件入口(home 解析 + core 装配 + 工具/skill/hook 注册)
│   ├── host/
│   │   ├── core/store/markdown/files/pool   # 数据核心:SQLite + Markdown 双写、多 home 池
│   │   ├── rpc/events/changes               # 浏览器通道:RPC 端点 + SSE 变更推送
│   │   ├── tools/skill                      # omt_* 工具面 + omt / omt-runs skill
│   │   ├── running/recent/idle-hook/disposed-hook/notify-hook   # 执行态与提醒
│   │   └── ui-state.ts                      # 过滤器持久化(ui-filters.json)
│   └── client/
│       ├── index.ts      # 浏览器半入口(slot 注册装配)
│       ├── controller.ts # snapshot stores 与全部异步流
│       └── components/   # TicketPanel(共享树面板)+ Drawer/FloatWindow/TicketTab 三壳
│                         # + DocPanel/RunsView/RunPicker/TurnTickets 等
├── tests/                # vitest 单测(27 文件 / 344 例)
└── .omt/tickets/         # 本项目的 ticket 库(SQLite 索引已 gitignore,可 omt_reindex 重建)

📚 设计文档

  • 可行性分析:[FEASIBILITY.md](FEASIBILITY.md)
  • 代码证据调研:[RESEARCH-dsh-ticket-plugin.md](RESEARCH-dsh-ticket-plugin.md)
  • 执行计划:[EXECUTION-PLAN.md](EXECUTION-PLAN.md)
  • 开发笔记:[docs/dsh-plugin-dev-notes.md](docs/dsh-plugin-dev-notes.md)

License

[MIT](LICENSE)