Skip to content

feat(computer-use): #500 S5-c-2 PR-2 ファイルマネージャーの単一 click を開く操作に数えない - #817

Merged
yusei531642 merged 15 commits into
mainfrom
feat/500-s5c2-2-click-rule
Oct 16, 2026
Merged

yusei531642 merged 15 commits into
mainfrom
feat/500-s5c2-2-click-rule

Conversation

@yusei531642

Copy link
Copy Markdown
Collaborator

概要

#500 S5-c-2 の PR-2 です。ファイルマネージャーの上で受動的な項目を 1 回 click しても、「開く操作」に数えないようにします(click は選択するだけだからです)。規則は Windows と macOS の両方に共通です。

変更

  • computer_use_effect_classifier.h
    • RoleIsPassiveItem / RoleIsKnownContainer / ItemInSpan を effect_detail に移しました。
    • MayOpen の規則は次のとおりです。
      • DoubleClick と Invoke は数えます。
      • Enter(key_is_activation)は数えます。
      • click は、FileBrowser の面で ItemInSpan に当たるときだけ数えません。それ以外の click は数えます。
  • computer_use_native_interlock.h: 移した関数を using で参照するようにしました。
  • computer_use_effect_shadow.h
    • ShadowRequestInfo::click_opens を足しました。click_opens の click は DoubleClick として扱います。
    • portable な関数 ClickCompletesDoubleClick を足しました。
      • 間隔と範囲は、境界の値を含めて判定します。
      • 前の click が無いときと、時計が逆行したときは false です。
  • computer_use_windows_host.cc(// BEGIN/END click rule で囲んだ範囲)
    • 直前の click を session に記録します。SendInput が成功したときだけ記録します。
    • WindowsSingleClickOpens は、SHGetSetSettings(SSF_DOUBLECLICKINWEBVIEW) で設定を読みます。読めなければ「開く」とみなします(安全側)。
    • shadow と同期の入口の 2 か所に click_opens を渡します。dispatch 本体には渡していません。
  • computer_use_windows_shadow_scheduler.h: click_opens を引き継ぎます。
  • harness
    • 新しく CheckClickRule を足しました。規則の表の全ケースと、ClickCompletesDoubleClick の境界を確かめます。
    • 規則が変わったので、既存の期待を 4 か所反転しました。
      • 同じ項目への click を invoke に変えました(Windows interlock の run.bat、invoice.pdf、known_script 系)。
      • installer 名の項目をファイルの一覧で click するケース: 判定なしに変わりました。
      • effect-e3-any-key: Enter 以外のキーは ordinary に変わりました。
      • ダウンロードの面での Key ケース: key_is_activation を付けました。
  • vitest
    • 新しく computer-use-windows-click-rule.test.ts(9 件)を足しました。source の契約と、MSVC でホストの helper を実際に動かす live テストです。
    • 既存の 3 本を更新しました。

検証

  • C++ harness(CI と同じフラグ): 全件 PASS しました。警告の C4456 が 1 件出ていますが、main の HEAD でも同じ位置に出る既存のものです。
  • RED(変異を入れると失敗すること):
変異 失敗したテスト
MayOpen を元に戻す effect-e3-only-an-activating-key-opens
surface の条件を外す interlock-installer-named-file-opened-from-a-list
ItemInSpan を外す effect-e1-e4-extension
key_is_activation を外す effect-e3-only-an-activating-key-opens
  • vitest: 対象の 4 本が通りました。
    • src/main/computer-use* 全体では 1505 件が通りました。
    • 失敗した privacy-inspection の 2 件は、開発機の symlink 権限が原因で、この PR とは関係ありません。
  • tsc と prettier: 通りました。

留意点

  • 「シングルクリックで開く」設定の実機では、まだ確かめていません。この開発機の設定は、二重クリックが必要な状態として読めました。
  • 設定が読めないときは「開く」とみなします。レジストリ ShellState から読む代替経路は入れていません。
  • macOS の .mm は変えていません。macOS(Finder)には portable な MayOpen の規則だけが効きます。.mm に click_opens が無いことは、テストで固定しました。macOS 側のビルドは CI で確かめます。
  • PR-1(feat(computer-use): #500 S5-c-2 PR-1 interlock レーンの前提(MTA ワーカー・250 ms・lookup 枠の分離・座標写像の一本化) #816)と同じく computer_use_windows_host.cc を変えています。先にマージされたほうに合わせて rebase します。

Refs #500

🤖 Generated with Claude Code

@sprintreviewer

sprintreviewer Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

🗺️ PR Walkthrough

Note

Windows のファイルマネージャーでは、追跡できた単一クリックが既知の受動的項目に当たる場合、選択として扱い「開く操作」に数えない規則を追加しました。ダブルクリック相当、invoke、Enter やその他の開く可能性があるキーは引き続き対象です。

Changed files (5)
File Summary
apps/desktop/computer-use-native/computer_use_effect_classifier.h 受動的項目の判定をコアへ移し、追跡済みのファイルマネージャー単一クリックを MayOpen の例外にしました。キー判定は安全側の許可リスト方式に変更しています。
apps/desktop/computer-use-native/computer_use_effect_shadow.h クリックが開く操作か、キーが開く可能性があるかを facts に反映する portable helper を追加しました。
apps/desktop/computer-use-native/computer_use_windows_host.cc Windows のシェル設定と最終入力時刻からクリックの開閉判定を行い、shadow と同期 interlock に渡します。
apps/desktop/computer-use-native/computer_use_protocol_fuzz.cc クリック規則、キー許可リスト、二重クリック時刻の境界を確認する harness を追加・更新しました。
apps/desktop/src/main/computer-use-windows-click-rule.test.ts クリック規則の source 契約と Windows host helper の live テストを追加しました。

Reviewed by vibe-editor-reviewer — head efdd09a

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧭 Code review

Note

レビュー結果(承認保留)

Critical Warning Nitpick Info
🔴 0 🟡 0 💬 0 💡 0

確認内容

  • ⚠️ Codexのリポジトリ検査が未完了: 検査処理を完了できませんでした(詳細は実行ログ)
  • ⚠️ Claudeのリポジトリ検査は完了せず、固定差分のみ確認: 変更箇所と関連コードが検査量の上限を超過
  • ✅ 独立した差分レビュー(Claude)を確認
  • ⚠️ Claudeの差分レビューは完了しましたが、Codexのリポジトリ検査が未完了のため、必須の二者レビューが成立せずapprove不可
  • ⚠️ Codexの必須レビュアーが利用できなかったためClaudeのdiffベースレビューにフォールバックしました。リポジトリ実体・未変更の呼び出し元は未検査のため、このrunはAPPROVEを発行しません。
  • ⚠️ high-risk routeで必須のリポジトリ検査が完了しませんでした。利用可能な縮退レビュー所見は保持しますが、このrunはAPPROVE / REQUEST_CHANGESを発行せずCOMMENTとして投稿します。

レビュー所感

chunk 1: 提示された diff と PR 説明の範囲では、具体的な欠陥は確定できませんでした。検討した内容は次のとおりです。

  • SHGetSetSettings の判定: 読み取りに失敗すると構造体は 0 のままになり、「シングルクリックで開く」とみなされます。安全側に倒れるので問題ありません。
  • 記録のタイミング: 直前の click は SendInput が成功したときだけ記録されます。
  • 時刻の判定: 判定時点は実際の送出より前なので、二重クリックかどうかを誤るとしても安全側にずれます。

次の点は、提供された文脈に根拠がないため確認できていません。これらは「問題がない」という結論ではありません。

  • ScheduleWindowsEffectShadow と同期の入口が、DispatchWindowsAction より前に呼ばれるかどうか。後に呼ばれる場合、自分の click と比べてしまい、常に「開く」と判定されます。
  • 同期の入口で point_known を確かめていないこと。座標が未確定のときの point の値によっては問題になります。
  • WindowsLastClick を複数スレッドから読み書きすることがあるかどうか。
  • 実際のユーザーのマウス click を考慮していないこと。

Reviewed by vibe-editor-reviewer — head cf5dd0b

Review coverage & tooling
  • Files: 10 reviewed (+649 / -74)
  • Full file bodies included: 0 / 10
  • Reviewer roles: numeric_consistency (deterministic), claude_peer (claude-opus-5-5, fixed-diff only, partial), claude_repository (claude-opus-5-5, fixed-diff only, partial), degraded_route (required repository coverage unavailable; fallback evidence only)

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧭 Code review

Warning

未検証の指摘候補 2 件 — 根拠の確認が必要です

Critical Warning Nitpick Info
🔴 0 🟡 2 💬 0 💡 0

確認内容

  • ✅ 変更箇所と関連するコード経路を確認
  • ✅ 独立した差分レビュー(Claude)を確認
  • ✅ リードが指定した重点ファイルの精査(Claude)を確認

レビュー所感

固定HEADと対象差分を確認し、クリック判定、入力履歴の同期、shadowへの伝播を追跡しました。報告基準に該当する重大な欠陥は確認できませんでしたが、実行検証は行っておらず、同期interlockは現在未接続です。

🔍 Verification: 2 件は 未検証の指摘候補(検証処理を完了できませんでした)。検証による除外や重要度の引き下げは行っていません。

指摘の正しさは未確定です。見逃し防止のため候補と現在の判定を保持しています。

根拠の確認は該当スレッドに返信してください。PR全体の再レビューは /reviewer full review、検証設定の確認は /reviewer config で行えます。既存スレッドは再レビューで自動解決されません。


Reviewed by vibe-editor-reviewer — head dc0514b

Review coverage & tooling
  • Files: 11 reviewed (+844 / -76)
  • Full file bodies included: 0 / 11
  • Reviewer roles: numeric_consistency (deterministic), codex_deep (gpt-6.1-sol), claude_peer (claude-opus-5-5, fixed-diff only, partial), claude_specialist (claude-opus-5-5, fixed-diff only, partial)
  • Verification: 2 件は 未検証の指摘候補(検証処理を完了できませんでした)。検証による除外や重要度の引き下げは行っていません。

Comment thread apps/desktop/computer-use-native/computer_use_effect_classifier.h
Comment thread apps/desktop/computer-use-native/computer_use_effect_classifier.h
yusei531642 and others added 2 commits October 17, 2026 00:44
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧭 Code review

Warning

4 actionable finding(s) — review recommended

Critical Warning Nitpick Info
🔴 0 🟡 4 💬 0 💡 0

確認内容

  • ✅ 変更箇所と関連するコード経路を確認
  • ✅ 独立した差分レビュー(Claude)を確認
  • ✅ リードが指定した重点ファイルの精査(Claude)を確認

レビュー所感

固定 HEAD を確認し、クリック判定、入力履歴の共有状態、同期入口と shadow への伝播を追跡しました。自分の入力後の50msを一律に除外するため、人のクリックと組み合わさるダブルクリックを見逃す問題があります。実行検証は行っていません。

🔍 Verification: 全 2 件の指摘を検証パス(gpt-6.1-sol / high)でクロスチェック済み(コード引用を固定base/headと照合) — 0 件を反証・重複確認により除外

⏳ 過去のレビューで指摘済み・未解決のスレッド 2 件(🟡 2)が open のままです。対応済みであればスレッドを resolve してください(verdict に反映されます)。


Reviewed by vibe-editor-reviewer — head f76bd51

Review coverage & tooling
  • Files: 11 reviewed (+909 / -76)
  • Full file bodies included: 0 / 11
  • Reviewer roles: numeric_consistency (deterministic), codex_deep (gpt-6.1-sol), claude_peer (claude-opus-5-5, fixed-diff only, partial), claude_specialist (claude-opus-5-5, fixed-diff only, partial)
  • Verification: 全 2 件の指摘を検証パス(gpt-6.1-sol / high)でクロスチェック済み(コード引用を固定base/headと照合) — 0 件を反証・重複確認により除外

Comment thread apps/desktop/computer-use-native/computer_use_effect_shadow.h Outdated
Comment thread apps/desktop/computer-use-native/computer_use_effect_shadow.h Outdated
yusei531642 and others added 3 commits October 17, 2026 00:56
…操作、二重クリックは最後の入力の時刻だけで判定

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Code review

Tip

LGTM — actionable issues were not found.

確認内容

  • ✅ 変更箇所と関連するコード経路を確認
  • ✅ リードが指定した重点ファイルの精査(Claude)を確認

レビュー所感

固定 HEAD を確認し、クリック・キー判定、UIProperty の例外、Windows 側の情報伝達と関連テストを静的に追跡しました。今回の変更による重大な不具合は確認できませんでした。実行検証は行っていません。

🛡️ blockingな指摘はありません。bot側の安全設定により、merge-relevantなAPPROVEではなくCOMMENTとして投稿します。

Review coverage & tooling
  • Files: 12 reviewed (+883 / -75)
  • Full file bodies included: 0 / 12
  • Reviewer roles: numeric_consistency (deterministic), codex_primary (gpt-6.1-sol), claude_specialist (claude-sonnet-5-5, fixed-diff only, partial)

Reviewed by vibe-editor-reviewer — head 1c4a050

yusei531642 and others added 5 commits October 17, 2026 01:07
…n のコメントを新しい規則に合わせる

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… と同じ式にし、click facts の読み取りを見積りに注記

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…メントを新しい規則に合わせる

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧭 Code review

Warning

未検証の指摘候補 2 件 — 根拠の確認が必要です

Critical Warning Nitpick Info
🔴 0 🟡 2 💬 0 💡 0

確認内容

  • ✅ 変更箇所と関連するコード経路を確認
  • ✅ 独立した差分レビュー(Claude)を確認
  • ✅ リードが指定した重点ファイルの精査(Claude)を確認

レビュー所感

指定 HEAD の一致を確認し、クリック例外、キー分類、Windows の入力時刻取得と非同期処理への受け渡しを追跡しました。関連する呼び出し元と既存ガードを含む静的確認では、報告対象となる重大な欠陥は確認できませんでした。実行検証は行っていません。

🔍 Verification: 2 件は 未検証の指摘候補(検証処理を完了できませんでした)。検証による除外や重要度の引き下げは行っていません。

指摘の正しさは未確定です。見逃し防止のため候補と現在の判定を保持しています。

根拠の確認は該当スレッドに返信してください。PR全体の再レビューは /reviewer full review、検証設定の確認は /reviewer config で行えます。既存スレッドは再レビューで自動解決されません。


Reviewed by vibe-editor-reviewer — head 2f8f5b2

Review coverage & tooling
  • Files: 13 reviewed (+1018 / -84)
  • Full file bodies included: 0 / 13
  • Reviewer roles: numeric_consistency (deterministic), codex_deep (gpt-6.1-sol), claude_peer (claude-opus-5-5, fixed-diff only, partial), claude_specialist (claude-opus-5-5, fixed-diff only, partial)
  • Verification: 2 件は 未検証の指摘候補(検証処理を完了できませんでした)。検証による除外や重要度の引き下げは行っていません。

Comment thread apps/desktop/computer-use-native/computer_use_effect_shadow.h Outdated
Comment thread apps/desktop/computer-use-native/computer_use_effect_shadow.h Outdated

@sprintreviewer sprintreviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Code review

Tip

LGTM — actionable issues were not found.

確認内容

  • ✅ 変更箇所と関連するコード経路を確認
  • ✅ 独立した差分レビュー(Claude)を確認
  • ✅ リードが指定した重点ファイルの精査(Claude)を確認

レビュー所感

固定 HEAD を確認し、クリック・キーの分類、Windows の時刻・設定取得、shadow と interlock への伝播を追跡しました。確認した差分と関連コードから、報告対象となる重大な不具合は確認できませんでした。実行検証は行っていません。

🛡️ blockingな指摘はありません。bot側の安全設定により、merge-relevantなAPPROVEではなくCOMMENTとして投稿します。

Review coverage & tooling
  • Files: 13 reviewed (+1018 / -84)
  • Full file bodies included: 0 / 13
  • Reviewer roles: numeric_consistency (deterministic), codex_deep (gpt-6.1-sol), claude_peer (claude-opus-5-5, fixed-diff only, partial), claude_specialist (claude-opus-5-5, fixed-diff only, partial)

Reviewed by vibe-editor-reviewer — head efdd09a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant