这是indexloc提供的服务,不要输入任何密码
Skip to content

Sunwood-ai-labs/openhands-cli-action-forgejo

Repository files navigation

Image

🤖 OpenHands CLI Action for Forgejo

セルフホストGit ForgejoでClaude APIを活用した自動コード修正・PR生成アクション

OpenHands Forgejo Actions


Docker Node.js Python Japanese


🌟 概要

OpenHands CLI Action for Forgejoは、ForgejoのセルフホストGit環境でAnthropic Claude APIを活用し、IssueやPR、コメント、ラベル付与などのイベントをトリガーに自動でコード修正・PR作成を行うCIアクションです。
GitHub Actions互換のワークフローで、AIによる自動化を安全かつ柔軟に導入できます。


✨ 主な特徴

  • 🔗 メンション/ラベルトリガー: @openhands-agentメンションやfix-meラベルでAI修正を自動実行
  • 📝 自動コード修正: Issue/PR/コメント内容をもとにClaude APIで修正案を生成
  • 🔄 自動PR作成: 変更があれば自動でドラフトPRを作成
  • 👀 リアクション通知: 実行状況を絵文字リアクションで可視化
  • 🌏 日本語完全対応: UI・メッセージ・プロンプト全て日本語
  • 高速セットアップ: Docker+uv+Node.jsによる軽量・高速な実行環境

🚀 セットアップ

1. 必要要件

  • Forgejo: Actions機能が有効なセルフホストGit
  • Docker: コンテナ実行環境
  • Anthropic API Key: Claude API用

2. シークレット設定

ForgejoリポジトリのSettings > Secretsで以下を設定:

ANTHROPIC_API_KEY: "your-anthropic-api-key-here"
GITHUB_TOKEN: "actions用トークン"

3. ワークフロー配置

ワークフローファイルは下記に配置されています:

mkdir -p .forgejo/workflows/
cp openhands-cli-action-forgejo.yaml .forgejo/workflows/

4. Dockerイメージビルド(任意)

docker build -t openhands-action .

5. docker-composeによる起動

docker-compose up -d --build
  • サービス名は docker-compose.ymlservices: で定義されています(デフォルト: app)。
  • サービス名を変更した場合は、下記コマンド例のサービス名も合わせて修正してください。

6. コマンド例

下記のコマンドで、コンテナ内でOpenHands CLIを実行できます(サービス名は適宜変更してください):

docker-compose exec oh-cli-dev openhands -t "Create a file called test.txt with content 'Hello World'"
  • サービス名が app の場合は docker-compose exec app ... に読み替えてください。

📖 使い方

Issue/PR/コメントでの利用

  • Issue/PR本文やコメントに @openhands-agent を含めて投稿
  • fix-me または fix-me-experimental ラベルを付与
  • Issueの担当者にopenhands-agentを割り当て

@openhands-agent このプロジェクトのテストカバレッジを改善してください

🔧 技術仕様

ワークフロートリガー

  • Issue: 作成・ラベル付与・担当割当
  • PR: ラベル付与
  • コメント: 作成
  • PRレビュー/コメント: 作成・提出

実行フロー概要

  1. イベント発生(メンション/ラベル/担当割当)
  2. 目アイコン👀リアクション
  3. リポジトリチェックアウト
  4. Claude API(OpenHands)で自動修正
  5. 変更があればドラフトPR作成
  6. 結果コメント・リアクション

実行環境

  • OS: Python 3.12 + Node.js 20 (Docker)
  • パッケージ管理: uv (Python), npm (Node.js)
  • OpenHands設定: .config/openhands/config.toml
    [sandbox]
    trusted_dirs = [ "/workspace", "/prj", "/home", "/tmp" ]
  • 除外ファイル: .SourceSageignore
    • Git/ビルド/キャッシュ/アセット/一時ファイル/仮想環境/CI関連を除外

Dockerfile構成

  • Python3.12, Node.js20, uv, git, curl, jq, ca-certificatesをインストール
  • OpenHands用configをコピー
  • デフォルトコマンド: bash

🛠️ カスタマイズ

  • モデル変更: ワークフロー内LLM_MODEL変数でClaudeモデル指定可
  • タイムアウト: ワークフロー内timeout_minutesで調整
  • 信頼ディレクトリ: .config/openhands/config.tomlで変更可
  • 除外ルール: .SourceSageignoreを編集

🔒 セキュリティ

  • 最小権限: 必要な権限のみ付与
  • シークレット管理: API Keyは暗号化
  • 実行制限: タイムアウト設定
  • サンドボックス: 信頼ディレクトリ外はアクセス不可

🐛 トラブルシューティング

  1. API Keyエラー
    ANTHROPIC_API_KEYが正しく設定されているか確認

  2. 権限エラー
    → Actionsに必要な権限が付与されているか確認

  3. タイムアウト
    timeout_minutesを増やすか、プロンプトを簡潔に


🤝 コントリビューション

  1. このリポジトリをフォーク
  2. フィーチャーブランチを作成 (git checkout -b feature/your-feature)
  3. 変更をコミット (git commit -m 'Add your feature')
  4. ブランチにプッシュ (git push origin feature/your-feature)
  5. プルリクエストを作成

📜 ライセンス

このプロジェクトはMITライセンスの下で公開されています。詳細は LICENSE を参照してください。


🙏 謝辞


🚀 セルフホストGitでAI自動化をはじめよう!

Made with ❤️ by the Open Source Community

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages