feat(review): read-only conversational /ask for non-write users
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 42/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- github, java
調査の方向性
Start with ManualReviewAuthorizer, MaintainerReplyService, TriggerDetector, and WebhookController.maybeDispatchConversationalMention; trace how authorization and mention routing work, then review the related spend cap and pause behavior in #42. Done means the config, README, and tests cover read-only question routing while slash commands remain write-gated and the ask path creates no reviews, findings, or check runs.
索引モデルが issue の本文から書いたものです。
説明
Problem Statement
Today all commands except /help require write access (CommentCommandService.HELP_TEXT, ManualReviewAuthorizer). Conversational @mention replies on PRs and review threads use the same authorizer (MaintainerReplyService → ManualReviewAuthorizer.isAuthorized), so read-only collaborators cannot ask questions without triggering spend-heavy review commands.
This is an intentional simplicity tradeoff (prevent drive-by AI spend) documented in PLAN.md → Simplicity tradeoffs, but teams with many read-only reviewers (docs, QA, security readers) want a question-only path that does not post findings, suggestions, check runs, or merge-blocking verdicts.
Proposed Solution
Add a read-only ask mode for conversational mentions (not slash commands):
- Eligible users: any collaborator with read access (or higher) on the repo — confirmed via GitHub collaborator permission API (same pattern as write check in
ManualReviewAuthorizer, but acceptread/triage/write/admin). - Trigger: bare
@bot …mention on a PR comment or review thread (WebhookController.maybeDispatchConversationalMention/ review-thread path) where the body is a question (no command verb likereview,describe, etc. — reuseTriggerDetectorcommand detection to reject command-shaped mentions). - Behavior: single conversational reply (
MaintainerReplyService) — no check run, no inline findings, no REQUEST_CHANGES, no label mutations. Optional disclosure footer: "Read-only ask — for a full review, a maintainer with write access can run/review." - Spend controls: honor #42 caps and
/pause; consider a separate lower token budget config for ask-only replies. - 👀 ack: if #315 lands first, read-only asks should not get 👀 (per #315 scope: commands only) — document clearly.
Config knob, e.g. thrillhousebot.review.read-only-ask-enabled (default: false to preserve current fail-closed behavior).
Related issues
- #315 — 👀 on commands only (explicitly excludes conversational asks)
- #322–#323 — other simplicity-tradeoff knobs (same milestone theme)
- #42 — spend cap
- #50 — model config / budgets
Acceptance criteria
- Read-only collaborator can get a conversational answer when
read-only-ask-enabled=true - Read-only user still cannot run
/review,/describe, or other write-gated slash commands - Ask path never creates or updates check runs, PR reviews, or inline finding comments
- Write users unchanged — existing authorized conversational + command behavior
- Config + README documented; tests for auth gate and command-vs-ask routing
Alternatives considered
- Allow
/askslash command — clearer UX but expands command surface; mention-only keeps parity with "ask the bot a question" flow. - Open conversational replies to everyone — rejected; still need collaborator check to limit spam.
Priority
Important — simplicity tradeoff evolution; target v0.5.0 with other configurability work (#322, #324).
Code of Conduct
- I have searched for existing issues and this is not a duplicate.
- 主要言語
- Java
- スター
- 35
- フォーク
- 7
- 平均マージ
- 9時間 23分
- マージ済み PR(30日)
- 154
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
devops-thiago/ThrillhouseBot のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
devops-thiago/ThrillhouseBot#1093 ·
メンテナーはふだん 1 日以内に返信
-
documentation enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
devops-thiago/ThrillhouseBot#321 ·
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
devops-thiago/ThrillhouseBot#46 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 58/100
devops-thiago/ThrillhouseBot#1095 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 58/100
devops-thiago/ThrillhouseBot#1094 ·
メンテナーはふだん 1 日以内に返信
devops-thiago/ThrillhouseBot の issue をすべて見る
似ている issue
-
approved bug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
checkstyle/checkstyle#21981 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
beehive-lab/TornadoVM#1248 ·
メンテナーはふだん 1 日以内に返信
-
bug jdbc-v2
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
ClickHouse/clickhouse-java#3214 ·
メンテナーはふだん 1 日以内に返信
-
Java and Kotlin (JVM): parse gradle/wrapper/gradle-wrapper.properties with exact line locationsオープンarea: detector eco: java help wanted lane: free-agent roadmap size: S type: parser
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
arminazimi/evergreen#355 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
micronaut-projects/micronaut-data#4134 ·
メンテナーはふだん 1 日以内に返信