-
Notifications
You must be signed in to change notification settings - Fork 374
Add guide for automating code review with OpenCode and Inference Providers #2023
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
davanstrien
merged 7 commits into
main
from
open-code-github-actions-inference-providers-guide
Nov 4, 2025
Merged
Changes from 6 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
fcb302c
Add guide for automating code review with OpenCode and IP
davanstrien 4076737
Add guide for automating code review with GitHub Actions
davanstrien 1502d31
formatting
davanstrien 7f22779
Update docs/inference-providers/guides/github-actions-code-review.md
davanstrien a3603f5
Update docs/inference-providers/guides/github-actions-code-review.md
davanstrien 0144a62
Add images for visual examples in GitHub Actions code review guide
davanstrien 2ed7b80
Update image URLs in GitHub Actions code review guide to use main branch
davanstrien File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
196 changes: 196 additions & 0 deletions
196
docs/inference-providers/guides/github-actions-code-review.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,196 @@ | ||
| # Automating Code Review with GitHub Actions | ||
|
|
||
| [OpenCode](https://opencode.ai) is an AI coding agent that runs in your terminal and can work with open models via Hugging Face Inference Providers. | ||
|
|
||
| You can also install OpenCode as a GitHub App to help automate GitHub workflows! | ||
|
|
||
| In less than 5 minutes, you can set it up to respond to issues and pull requests using powerful open source language models. | ||
|
|
||
| <div class="flex justify-center"> | ||
| <img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/recording-light.gif"/> | ||
| <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/recording-dark.gif"/> | ||
| </div> | ||
|
|
||
| This guide shows you how to use Hugging Face Inference Providers with OpenCode to power GitHub automation. You'll be able to triage issues, implement features, and review code using models like DeepSeek, GLM-4.5, and Kimi K2. | ||
|
|
||
| > [!TIP] | ||
| > This guide assumes you have a Hugging Face account and a GitHub repository. You can create a free Hugging Face account at [huggingface.co](https://huggingface.co). | ||
|
|
||
| ## What the OpenCode GitHub App Does | ||
|
|
||
| Once set up, OpenCode will respond to `/oc` or `/opencode` commands in GitHub issues and pull requests: | ||
|
|
||
| - **Triage and explain issues** - Ask OpenCode to analyze an issue and explain it | ||
| - **Implement features** - Request a fix or feature, and OpenCode creates a PR with the changes | ||
| - **Review and modify PRs** - Request changes on pull requests and OpenCode commits them | ||
|
|
||
| The entire workflow runs securely in your GitHub Actions runners, and you maintain full control over which repositories you install the OpenCode GitHub app on. | ||
|
|
||
| ## Step 1: Install OpenCode | ||
|
|
||
| First, install OpenCode on your local machine following the [installation instructions](https://opencode.ai/docs/#install). | ||
|
|
||
| ## Step 2: Configure OpenCode for GitHub | ||
|
|
||
| Navigate to your local clone of your GitHub repository and run the setup command: | ||
|
|
||
| ```bash | ||
| cd your-repository | ||
| opencode github install | ||
| ``` | ||
|
|
||
| This triggers an interactive setup process that will guide you through: | ||
|
|
||
| 1. **Installing the GitHub app** - Your browser opens to authorize OpenCode for your repositories. You can choose specific repositories or all repositories. | ||
| 2. **Selecting a provider** - Choose **Hugging Face** from the list | ||
| 3. **Choosing a model** - Select a model like **GLM-4.5-Air** or **Kimi-K2-Instruct** | ||
| 4. **Creating the workflow** - Generates `.github/workflows/opencode.yml` automatically | ||
|
|
||
davanstrien marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Once the `.github/workflows/opencode.yml` file is created, you'll need to commit and push it to your repository: | ||
|
|
||
| ```bash | ||
| git add .github/workflows/opencode.yml | ||
| git commit -m "Add OpenCode workflow" | ||
| git push | ||
| ``` | ||
|
|
||
| After the setup completes, you'll need to add your Hugging Face token as a repository secret: | ||
|
|
||
| 1. Get a token from your [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained). The token needs permissions to `Make calls to Inference Providers`. | ||
| 2. In your GitHub repository, go to **Settings → Secrets and variables → Actions** | ||
| 3. Click **New repository secret** | ||
| 4. Name it `HF_TOKEN` and paste your token | ||
|
|
||
| > [!TIP] | ||
| > Make sure your Hugging Face token has Inference Providers permissions enabled. We recommend creating a separate token specifically for OpenCode usage. | ||
|
|
||
| ## Step 3: Try It Out | ||
|
|
||
| Once your workflow is set up and your token is configured, test it by commenting on any issue: | ||
|
|
||
| ``` | ||
| /oc summarize | ||
| ``` | ||
|
|
||
| OpenCode will analyze the issue and provide a summary. Here are other commands you can try: | ||
|
|
||
| **Explain an issue:** | ||
|
|
||
| ``` | ||
| /opencode explain this issue | ||
| ``` | ||
|
|
||
| **Implement a fix:** | ||
|
|
||
| OpenCode creates a new branch, implements the changes, and opens a pull request. | ||
|
|
||
| **Request changes on a PR:** | ||
|
|
||
| ``` | ||
| /oc please add error handling | ||
| ``` | ||
|
|
||
| > [!TIP] | ||
| > Use `/oc` (short) or `/opencode` (long) to trigger commands. OpenCode understands natural language, so feel free to be specific about what you need. | ||
|
|
||
| ## Security Considerations | ||
|
|
||
| > [!WARNING] | ||
| > On public repositories, anyone can trigger the bot by commenting `/oc` or `/opencode`. This could lead to unexpected inference costs or unwanted PRs. Consider: | ||
| > | ||
| > - **Using a separate Hugging Face token** specifically for OpenCode (not your main token), so you can revoke it if needed without affecting other services | ||
| > - Monitoring your Hugging Face usage to track costs | ||
| > - Adding workflow conditions to restrict who can trigger the bot (e.g., only repository collaborators) | ||
davanstrien marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| > - Starting with a private repository or test repo to control access | ||
|
|
||
| ## Example Workflow in Action | ||
|
|
||
| Here's a real example from a [fork of the Hugging Face datasets repository](https://github.com/davanstrien/datasets). The issue requests adding `uv` installation support: | ||
|
|
||
| <div class="flex justify-center"> | ||
| <img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-example-issue-light.png"> | ||
| <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-example-issue-dark.png"/> | ||
| </div> | ||
|
|
||
| When someone comments `/oc fix this`, OpenCode analyzes the issue, creates a new branch, implements the changes, and opens a pull request: | ||
|
|
||
| <div class="flex justify-center"> | ||
| <img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-bot-created-pr-light.png"/> | ||
| <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-bot-created-pr-dark.png"/> | ||
| </div> | ||
|
|
||
| The PR includes all the necessary changes: | ||
|
|
||
| <div class="flex justify-center"> | ||
| <img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-pr-diff-light.png"/> | ||
| <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/refs%2Fpr%2F565/hub/inference-providers-github-actions-code/opencode-pr-diff-dark.png"/> | ||
| </div> | ||
|
|
||
| ## Switching Models | ||
|
|
||
| Different models offer different trade-offs between speed, cost, and capability. You can experiment with various models by editing the workflow file. | ||
|
|
||
| Edit `.github/workflows/opencode.yml` and update the `model` parameter: | ||
|
|
||
| ```yaml | ||
| with: | ||
| model: huggingface/deepseek-ai/DeepSeek-V3 # Powerful reasoning | ||
| # or | ||
| model: huggingface/zai-org/GLM-4.5-Air # Balanced performance | ||
| ``` | ||
|
|
||
| Commit and push the changes: | ||
|
|
||
| ```bash | ||
| git add .github/workflows/opencode.yml | ||
| git commit -m "Switch to the DeepSeek model" | ||
| git push | ||
| ``` | ||
|
|
||
| ## Understanding the Workflow | ||
|
|
||
| The setup wizard generates `.github/workflows/opencode.yml`, which defines when and how OpenCode runs: | ||
|
|
||
| ```yaml | ||
| name: opencode | ||
|
|
||
| on: | ||
| issue_comment: | ||
| types: [created] # Trigger on new comments | ||
|
|
||
| jobs: | ||
| opencode: | ||
| # Only run if comment contains /oc or /opencode | ||
| if: | | ||
| contains(github.event.comment.body, ' /oc') || | ||
| startsWith(github.event.comment.body, '/oc') || | ||
| contains(github.event.comment.body, ' /opencode') || | ||
| startsWith(github.event.comment.body, '/opencode') | ||
|
|
||
| runs-on: ubuntu-latest | ||
|
|
||
| permissions: | ||
| id-token: write # Required for OpenCode authentication | ||
| contents: read # Read repository contents | ||
| pull-requests: read # Access PR information | ||
| issues: read # Access issue information | ||
|
|
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Run opencode | ||
| uses: sst/opencode/github@latest | ||
| env: | ||
| HF_TOKEN: ${{ secrets.HF_TOKEN }} # Your Hugging Face token | ||
| with: | ||
| model: huggingface/zai-org/GLM-4.5-Air # The model to use | ||
| ``` | ||
|
|
||
| The workflow triggers whenever someone comments on an issue or PR with `/oc` or `/opencode`, checks out your repository code, and runs OpenCode with your chosen model from Hugging Face Inference Providers. | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - Explore the [OpenCode GitHub documentation](https://opencode.ai/docs/github/) for advanced configuration | ||
| - Browse [models available through Inference Providers](https://huggingface.co/models?pipeline_tag=text-generation&inference_provider=cerebras,together,fireworks-ai,nebius,novita,sambanova,groq,hyperbolic,nscale,fal-ai,cohere,replicate,scaleway&sort=trending) to find the best model for your needs | ||
| - Try OpenCode in a private repository first to test with controlled access | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it'd be cool to showcase how to use opencode locally in your terminal as well. I like the fact that the main topic of the guide is about GitHub Actions but I do think a first "local opencode" example would be great.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For this maybe it would be good to create a separate guide for open code more generally which then links to this + shows some terminal examples? Can do that in a follow up PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes sure! So having a "automating code review guide" under the "guides" section + "OpenCode" page under the new "integrations" section we discussed lately?