このプロジェクトについて

# OpenCode++ OpenCode++ は、公式 OpenCode Desktop アプリケーション向けの Windows 優先 Harness プラグインであり、AI が生成したコードのプロセス全体を可視化し、レビュー可能にすることを目的としています。モデルが何を閲覧し、何を阻止し、何を実行するよう要求し、現在の証拠が実際に何を検証したのかを明らかにします。 ## 解決する問題 AI コーディングセッションは、もっともらしい diff を生成することがありますが、実際には誤ったファイルを読み取ったり、予想範囲を超えて編集したり、無関係なコマンドを実行したり、新鮮なテスト証拠なしに成功を宣言したりする可能性があります。OpenCode++ は OpenCode Desktop の周囲に検証コントロールプレーンを追加し、モデルがリポジトリコンテキスト、明確な編集境界、追跡可能な証拠、最終的な意思決定に基づいて作業することを強制します。 OpenCode++ は別のチャットアプリでも、モデルの代替でもありません。ユーザーレベルのデスクトッププラグインであり、OpenCode が既に公開しているツールを観察し、以下のための Harness ツールを提供します: - 盲目的な検索の前に関連するファイルとシンボルを選択する; - タスク境界と必要なチェックを準備する; - コマンドと保護されたパスをガードする; - 現在の作業ツリーに対してクリーンアップされた実行証拠を記録する; - ポリシー、鮮度、回帰、ハルシネーション、収束ゲートを評価する; - 次のステップが修復、再パッケージ、人間によるレビュー、最終化のいずれであるかを説明する。 ## システムアーキテクチャ 重要な境界は単純です:OpenCode は依然としてファイルを読み取り、コードを編集し、コマンドを実行します。OpenCode++ はこれらの作業の周囲に決定論的なコンテキスト、境界、証拠チェック、意思決定を提供します。 | 層 | OpenCode++ が行うこと | 主張しないこと | | --- | --- | --- | | コンテキスト登録と検索 | 関連するパッケージ、ファイル、シンボル、バージョン、依存関係を検索し、選択・拒否したファイルを説明する。 | コンテキストは指針であり、許可や証明ではない。 | | ガードとポリシー | コマンド、保護されたパス、契約、鮮度、回帰、必要な操作をチェックする。 | OS サンドボックスではない。 | | 証拠 | コマンドまたは CI 結果を現在の作業ツリーハッシュとアクティブな証拠ポリシーに照合する。 | コマンドの通過だけではビジネス上の正しさを証明しない。 | | 介入台帳 | 観察、阻止、要求、修復、検証、未解決、人間によるレビューの状態を記録する。 | 予防や提案は検証済みの修復ではない。 | | 意思決定とダッシュボード | 次に許可される操作を返し、デスクトップ結果とローカル成果物に記録された事実を表示する。 | 隠されたモデルの思考連鎖を公開したり、別のモデルを呼び出したりしない。 | 通常のデスクトップパスは、1 つの現在の OpenCode モデルと 1 つのプロセス内プラグインを使用します。CLI と MCP は依然として開発/互換性サーフェスであり、インストールや日常使用には必要ありません。 ## 現在の機能 Windows インストーラーは、**OpenCode++** というオプションの OpenCode メインモードを追加します。プロンプトボックス下部のモードセレクターから選択し、通常どおりコーディングタスクを記述します。OpenCode++ スラッシュコマンドを覚える必要はありません。 このモードを選択すると、そのプロンプトは現在の OpenCode モデルにプロセス内プラグインツールを使用するよう指示します。プラグインは 2 つ目のモデルや CLI プロセスを起動しません。OpenCode Desktop 内で実行され、監査可能なランタイム成果物をリポジトリの `.agent-context/` ディレクトリに書き込みます。 EXE インストーラーはユーザーごとのインストールで、Windows x64 に対応し、管理者権限は不要です。 デフォルトでは、プラグインはオフラインで動作します:リモートコンテキストソースを取得せず、2 つ目のモデルも呼び出しません。設定されたリモートソースまたはフィードバック送信は明示的に有効化する必要があります。アクティブな OpenCode モデルは依然として読み取り、編集、コマンド実行を担当し、OpenCode++ はこれらの作業の周囲に決定論的なツールとゲートを提供します。 ## インストールと使用 1. GitHub Releases から `opencode-plusplus-setup-win-x64.exe` をダウンロードします。 2. OpenCode Desktop を完全に終了します。 3. EXE をダブルクリックし、インストールメッセージを受け入れます。 4. OpenCode Desktop を再起動し、リポジトリを開きます。 5. モードセレクターで **OpenCode++** を選択します。 6. 「ログインタイムアウトを修正し、回帰テストを追加する」など、通常のリクエストを入力します。 7. 選択したモードが作業中に `prepare`、`retrieve`、`evaluate`、`next` を呼び出すようにします。Harness ゲートが必要なタスクでは、Build に切り替え戻さないでください。 8. `evaluate` または `next` の後にコンパクトなステータスを読みます。フェーズの進捗、選択・拒否されたファイル、意思決定の根拠、証拠の鮮度、介入、最終サマリーが必要な場合は、`opencode_plusplus_dashboard` を呼び出します。 9. 追跡、発見、必要なコマンド、最終レポートが必要な場合は、`.agent-context/` を確認します。 インストーラーは以下の OpenCode 設定ファイルのみを書き込みます: ```text <OpenCode config>\plugins\opencode-plusplus.js <OpenCode config>\agents\opencode-plusplus.md <OpenCode config>\opencode-plusplus\state.json <OpenCode config>\opencode-plusplus\installation.json ``` 古いバージョンでスラッシュコマンドを作成したり `app.asar` にパッチを当てたりしたファイルを削除します。OpenCode Desktop バンドルを変更することはもうありません。デフォルトの設定ディレクトリは `%USERPROFILE%\.config\opencode` で、`OPENCODE_CONFIG_DIR` が優先されます。 ## レポートと境界 ランタイム証拠はリポジトリごとにローカルです: - `.agent-context/traces/` には実行とテストの証拠が含まれます; - `.agent-context/runs/` にはタスクコンテキストと編集境界が含まれます; - `.agent-context/loops/` には意思決定と収束状態が含まれます; - `.agent-context/sidecar/latest.md` には最新の検証サマリーが含まれます。 - `.agent-context/sidecar/visualization.json` には最新の構造化 Harness ダッシュボードスナップショットが含まれます。 プラグインは OS サンドボックスではありません。別のアプリがファイルを編集するのを防ぐことはできず、終了コードからビジネスセマンティクスを証明することもできず、不透明なツールパラメータが正しく分類されることを保証することもできません。コマンドの通過は証拠であり、完全な正しさの証明ではありません。阻止結果は、選択したモードが修復するか、人間によるレビューを要求することを求めます。 ### ユーザーが見るもの デスクトップツールの結果はデフォルトでコンパクトな `OpenCode++ ✓ Verified`、`✗ Repair required`、または `⚠ Human review` ステータスです。構造化 JSON には依然として `actionSummary` が含まれ、その中に `observed`、`prevented`、`requested`、`repaired`、`verified`、`unresolved` の項目があります。`opencode_plusplus_dashboard` を呼び出すと、完全な `Plan -> Prepare -> Retrieve -> Execute -> Collect -> Evaluate -> Decide -> Persist -> Finalize` ビューが表示され、意思決定の根拠、証拠の鮮度、介入回数、選択/拒否されたファイルが含まれます。 ダッシュボードは記録されたシステム事実と意思決定入力を公開します。隠されたモデルの思考連鎖は公開しません。これにより、プライベートな内部推論を監査可能な事実として提示することなく、デバッグとレビューに役立つビューになります。 デスクトップ結果と `.agent-context/sidecar/latest.md` は以下の問題を区別します: - **介入ファイル:** 選択チェック、境界内での編集、理由付きで拒否されたファイル; - **阻止されたリスク:** 安全でないコマンド、保護されたパス、古いコンテキスト、欠落したテスト、ポリシー違反、未解決の回帰; - **提案された修復:** 要求された操作または実行者が報告した編集で、まだ証拠が必要なもの; - **検証済みの修復:** 修復後に現在の作業ツリーに対する新しいコマンドまたは CI 証拠が続くもの; - **人間の作業:** 未解決の発見、繰り返される進展なし状態、Harness が証明できないセマンティックな意思決定。 したがって、`verified fix` は `suggested fix` よりも狭いです。コメント、コンテキストドキュメント、手動宣言、成功した初期テスト、ソースコード編集、コミットリスト、モデル生成サマリーは、もっともらしく見えるという理由だけで検証済みになることはできません。外部コンテキストは信頼できない指針であり、コメントはローカル知識であり、ポリシーではありません。結果が `human-review` を示す場合は、`actionSummary.evidence` で正確に欠落している証拠を読んでください。これはタスクの繰り返しを要求するものではありません。 コンテキストキャッシュとレジストリ使用状況は `.agent-context/cache/` と `.agent-context/context-registry/usage/` の下に保存されます。ローカルフィードバックは `.agent-context/context-registry/feedback/` の下に、注釈は `.agent-context/knowledge/annotations/` の下に、介入記録は `.agent-context/interventions/` の下に保存されます。これらはローカルランタイム成果物であり、通常は未コミットのままにしておくべきです。 Windows では、スペースや非 ASCII 文字を含むパスがサポートされますが、プラグインは依然としてアクティブユーザーの権限、リポジトリの書き込み可能性、OpenCode Desktop が設定プラグインディレクトリをロードすることに依存します。アンチウイルスロック、読み取り専用フォルダ、利用不可のネットワークソース、無効なレジストリ内容、権限失敗は診断または人間によるレビューステータスとして報告され、成功した検証に変換されることはありません。 ## Harness のカスタマイズ OpenCode++ は意図的に拡張ポイントとして作られています。OpenCode が緩すぎる、厳しすぎる、またはチームのワークフローに合わないと感じる場合は、問題をプロンプトに隠すのではなく、プラグインをフォークまたは拡張して独自の Harness ポリシーを定義してください。 有用なカスタマイズポイントには以下が含まれます: - `src/installer/opencode-plusplus-prompts.ts` のメインエージェントプロンプト; - `src/integrations/opencode/plugin-runtime/` のコマンドと保護されたパスルール; - `src/retrievers/` と `src/core/ranker.ts` の検索ランキング; - `src/outputs/evidence.ts` と `src/harness/verification-plane/` の証拠信頼と鮮度; - `src/harness/control-plane/` のループ停止と意思決定仲裁; - `src/integrations/opencode/plugin-runtime/harness/` のデスクトップ固有のツール動作。 安全なカスタマイズパターンは:必要なポリシーのテストを追加し、プラグインまたはエージェントモードを変更し、完全なチェックを実行し、新しいチェックサム付き Windows インストーラーを配布することです。Harness が何を観察でき、何が依然として人間の意思決定であるかを明確に保ってください。 ## コントリビューション 1. リポジトリをフォークし、焦点を絞ったブランチを作成します。 2. `AGENTS.md`、関連するソースファイル、対応する中英ドキュメントを読みます。 3. 動作を変更する前に、決定論的なテストを追加または更新します。 4. デスクトップランタイム成果物、`dist/`、インストーラーステージング、シークレット、ローカルの `.agent-context/` ファイルをコミットしないでください。 5. `npm run check`、`npm run lint`、`npm run format:check`、`npm run docs:bilingual:check`、`npm test` を実行します。 6. インストーラーの変更については、Windows 上で `npm run build:installer:windows`、`npm run test:installer:windows`、`npm run release:verify` も実行します。 7. ユーザードキュメントの両言語版を更新し、プルリクエストで互換性の境界を説明します。 ## 開発者向け互換性サーフェス リポジトリは、ソース開発、CI、診断、互換性統合のために CLI と MCP エントリポイントを保持しています。これらは通常のデスクトップインストールパスではなく、一般ユーザーには必要ありません。 ## ライセンス MIT