メインコンテンツまでスキップ

参加する

プルリクエストは歓迎で、待つべき招待はありません。 これは小さなプロジェクトです。 役に立つのはたいてい大きな機能ではなく、表の一行、翻訳の一句、 あるいは動けるだけ詳しいバグ報告です。

一番役に立つ貢献​

モデル表の一行。 モデルを試すは固定の五分の課題です。 表が短いのは走らせたものしか載せていないからであり、 負の結果は正の結果と同じだけの値打ちがあります —— 動かなかったモデルのことは誰も投稿しないので、全員が発見し直します。

翻訳、あるいはその一行の修正。 十が同梱されています。どれも残りに触らずに一句ずつ 直せます —— 多言語を見てください。 新しい言語は JSON ファイル一つです。

四点そろったバグ報告。 モデルと供給元をそのままの名前で(Ollama の qwen3-coder:30b、「ローカルのモデル」ではなく)、何を頼んだか、何が起きたか、 そして ~/.opencli/log の失敗前後の五十行。 貼る前に、そのログ行に鍵が入っていないか見てください。

あなたが実際にやりたかったことを教えてください。 同梱の部門とスキルは 人が何を必要とするかの推測から書かれています。 あなたが手を伸ばして見つからなかったものこそ、言える中で一番役に立つことです。

コードを書く前に​

一箇所の修正より大きなものは、まず issue を開いてください。 関門としてではなく —— あなたが一晩を費やす前に、やり方を決めておけるようにです。 背後に issue のないまま来た PR も、ちゃんと読まれます。

環境​

Rust と pnpm。ワークスペースは opencli-rs/、ウェブ画面は web/、 デスクトップの外殻は desktop/ です。

git clone https://github.com/ai-dashboad/opencli
cd opencli
pnpm install
cargo build -p opencli-cli

リポジトリのルートで just を使うとワークスペースの補助コマンドが走ります。 just help が一覧を出します。

PR を開く前に​

just fmt
just fix -p <crate>
cargo test -p <crate>

素の cargo fmt を走らせないでください。 このツリーは imports_granularity=Item で整形されており、それは nightly 限定のオプションです。stable ではその指定が 黙って無視されるので、cargo fmt はワークスペースのほぼ全ファイルの import 節を 書き換え、あなたの変更を数百の無関係な差分に埋めます。 just fmt が nightly を呼ぶのは、まさにそのためです。nightly のツールチェーンがなければ (rustup toolchain install nightly)、触ったファイルだけを整形し、残りは CI に 確認させてください。

ウェブ画面を触ったなら、python3 scripts/i18n-check.py が 翻訳のために包まれていない英語を見つけます —— 行内タグで分断された文や、 取り込み時に組み立てられるラベルのような、見落としやすい場合も含めて。

合わせやすい PR とは​

  • 一件だけ。 無関係な修正は別の PR に。
  • あなたの変更の前に落ち、あとで通るテスト。 全網羅ではなく —— そのバグを捕まえたであろう断言が一つあれば十分です。
  • どの commit も構築できること。 それが review と巻き戻しを可能にします。
  • 振る舞いが変わったなら文書も。 README、opencli --help、 あるいはここの、いま間違いになったページ。
  • 説明には 何を・なぜ・どうやって。なぜが、差分から読めない部分です。

CLA はありません​

署名するものは何もありません。 貢献はツリーの他の部分と同じく Apache-2.0 のもとにあります。

脆弱性を報告する​

安全上の不具合について、公開の issue を開かないでください。 GitHub の 非公開アドバイザリのフォーム を使ってください。何も公開せずに維持者に届きます。

最も見る値打ちのある場所:サンドボックスの方針、承認の経路、 そしてツール呼び出しが何に触れてよいかを決めているところすべて。 あなたのファイルを読み、あなたのマシンでコマンドを走らせるエージェントは面が広く、 それを見つけるのは他人よりあなたであるほうがよいのです。

まっとうにやる​

人を敬意をもって扱ってください。 我々は Contributor Covenant に従います。 善意を前提に —— 文字でのやりとりは難しいので、寛容な側に倒してください。 何かが分かりにくいなら、それ自体が issue の値打ちがあります: 分かりにくい文書は、文書のバグです。