dsh-issue-priority
リポジトリの GitHub Issue を、着手する順番に並べておく DSH プラグインです。 一緒に片付けられる Issue は、ひとつの作業単位(パッケージ)にまとめます。次にやるパッケージがサイドバーに出るので、ボタンを押せばエージェントがその作業を始めます。
並べ替えは 1 時間ごとに裏で行います。規模や重要度の見積もりには Decision Model を使い、チャット用の LLM は使いません。GitHub には書き込みません。
インストール
dsh plugin --profile web add github:lifwsp/dsh-issue-priority
web は使っているプロファイル名に置き換えてください。外すときは dsh plugin --profile web remove dsh-issue-priority です。
サイドバーのタブを使うには dsh-better-sidebar が必要です。
設定
既定では Decision Model を使いません。この状態でも動きますが、規模や重要度は見積もらず、依存関係と Issue 番号の順に並びます。
Decision Model を使うときは、呼び先と API キーを設定し、allowExternalJudgment を true にします。true にすると、Issue のタイトル・ラベル・本文と、人が書いたコメントが呼び先に送られます。
# cordis.patch.yml
- id: dsh-issue-priority
name: dsh-issue-priority
config:
decisionProvider: liquid # 下の表から選ぶ
allowExternalJudgment: true
decisionProvider | 呼び先 | API キーの名前 |
|---|
liquid | Liquid AI の API(d1) | LIQUID_API_KEY |
openrouter | OpenRouter(liquid/d1) | OPENROUTER_API_KEY |
typesafe | TypeSafe の API(Jev) | TYPESAFE_API_KEY |
custom | System One 形式の任意の API。decisionApiUrl と decisionModel も指定する | DECISION_API_KEY |
API キーは DSH の認証情報か環境変数に、表の名前で登録します。名前を変えたいときは decisionApiKeyRef で指定します。
使い方
- リポジトリを開いたセッションで、右サイドバーの「+」から Issue 計画 タブを開きます。
- いちばん上の 次はこれ が、次に着手するパッケージです。これに着手 を押すと、エージェントが方針を示します。承認すると、ブランチを切って実装し、
Closes #N 付きの PR を出します。
- 順番を変えたいときは、Issue の横の 優先 / 後回し を押します。
丸いアイコンにマウスを乗せると、そのパッケージを選んだ理由や同期の状態が見えます。アイコンが ! のときは、確認したほうがよいことがあります。
タブの代わりにコマンドでも操作できます。
| コマンド | 内容 |
|---|
/issues | 計画を表示する |
/issues next [ID] | 次のパッケージ(または ID のパッケージ)をエージェントに渡す |
/issues pin N / defer N / clear N | Issue N を優先 / 後回し / 元に戻す |
/issues done | 作業中の印を外す |
/issues sync | 今すぐ GitHub と同期する |
Issue の起票への影響
このプラグインを入れると、エージェントが Issue を作成・編集するとき、本文の末尾に次のような HTML コメントを追加するようになります。GitHub の画面には表示されません。
<!-- dsh-plan
v: 1
areas: auth, ui
size: M
files: src/auth/**
dependsOn: 12
-->
中身はエージェントが会話とコードから推定して書きます。このプラグインは、ここに書かれた規模・関係するファイル・依存関係を、まとめ方と順番の根拠に使います。コメントのない Issue も計画に入ります。
順番の決め方
- 「#12 の後」のように依存関係が書かれている Issue は、相手が閉じるまで 先行待ち になります。依存は GitHub の Issue 依存(blocked by)、上の
dependsOn、本文やコメントの blocked by #12 から読み取ります。本文やコメントから読み取った依存は、Decision Model がスレッド全体を読み、後のコメントで取り消されていれば外します。
- すぐ着手できるパッケージどうしは、優先 を付けたもの、重要度が高いもの、規模が小さいものの順に並べます。重要度は
priority:high などのラベルがあればそれを使い、なければ Decision Model が見積もります。
- 後回し を付けたものは最後に回します。
主な設定項目
| キー | 既定値 | 内容 |
|---|
allowExternalJudgment | false | Decision Model に Issue を送ってよいか。decisionProvider と両方そろったときだけ使う |
decisionProvider | none | Decision Model の呼び先(上の表)。none は使わない |
decisionModel | (呼び先ごとの既定) | 使うモデルの ID |
syncIntervalMinutes | 60 | 同期の間隔(分)。0 で止める |
maxIssues | 300 | 1 回の同期で読む Issue の上限 |
githubTokenRef | GITHUB_TOKEN | GitHub トークンの名前。見つからなければ GH_TOKEN、gh auth token を使う |
ほかの項目は src/config.ts にあります。
開発
pnpm install
pnpm check # 型チェック・テスト・ビルド
設計メモは docs/design.md にあります。
ライセンス
MIT