Skip to content

DeepSeek CR

Actions
πŸš€ Sharpen Your Code, Ship with Confidence – Elevate Your Workflow with DeepSeek Code Review πŸš€
v1.7
Latest
StarΒ (103)

DeepSeek Code Review

δΈ­ζ–‡θ―΄ζ˜Ž

deepseek-review also offers seamless integration with DeepSeek models on SiliconCloud. Sign Up Now to Claim Your Free 20 Million Tokens and start exploring its capabilities!

Features

  • Automate PR Reviews with DeepSeek via GitHub Action
  • Review Remote GitHub PRs Directly from Your Local CLI
  • Analyze Commit Changes with DeepSeek for Any Local Repository with CLI
  • Fully Customizable: Choose Models, Base URLs, and Prompts
  • Supports Self-Hosted DeepSeek Models for Enhanced Flexibility
  • Perform Code Reviews for Changes That either Include or Exclude Specific Files
  • Add skip cr or skip review to PR title or body to disable code review in GitHub Actions
  • Cross-platform Support: Compatible with GitHub Runners across macOS, Ubuntu, and Windows.

Planned Features

  • Trigger Code Review on Mention: Automatically initiate code review when the github-actions bot is mentioned in a PR comment.

Code Review with GitHub Action

Initiate Code Review When PR was Created

Add a GitHub workflow with the following contents:

name: Code Review
on:
  pull_request_target:
    types:
      - opened      # Triggers when a PR is opened
      - reopened    # Triggers when a PR is reopened
      - synchronize # Triggers when a commit is pushed to the PR

# fix: GraphQL: Resource not accessible by integration (addComment) error
permissions:
  pull-requests: write

jobs:
  setup-deepseek-review:
    runs-on: ubuntu-latest
    name: Code Review
    steps:
      - name: DeepSeek Code Review
        uses: hustcer/deepseek-review@v1
        with:
          chat-token: ${{ secrets.CHAT_TOKEN }}
CHAT_TOKEN Config

Follow these steps to config your CHAT_TOKEN:

  • Click on the "Settings" tab in your repository navigation bar.
  • In the left sidebar, click on "Secrets and variables" under "Security".
  • Click on "Actions" -> "New repository secret" button.
  • Enter CHAT_TOKEN in the "Name" field.
  • Enter the value of your CHAT_TOKEN in the "Secret" field.
  • Finally, click the "Add secret" button to save the secret.

When a PR is created, DeepSeek code review will be automatically triggered, and the review results(depend on your prompt) will be posted as comments on the corresponding PR. For example:

Trigger CR When a Specific Label was Added

If you don't want automatic review on PR creation, you can choose to trigger code review by adding a label. For example, create the following workflow:

name: Code Review
on:
  pull_request_target:
    types:
      - labeled     # Triggers when a label is added to the PR

# fix: GraphQL: Resource not accessible by integration (addComment) error
permissions:
  pull-requests: write

jobs:
  setup-deepseek-review:
    runs-on: ubuntu-latest
    name: Code Review
    # Make sure the code review happens only when the PR has the label 'ai review'
    if: contains(github.event.pull_request.labels.*.name, 'ai review')
    steps:
      - name: DeepSeek Code Review
        uses: hustcer/deepseek-review@v1
        with:
          chat-token: ${{ secrets.CHAT_TOKEN }}

With this setup, DeepSeek code review will not run automatically upon PR creation. Instead, it will only be triggered when you manually add the ai review label.

Input Parameters

Name Type Description
chat-token String Required, DeepSeek API Token
model String Optional, the model used for code review, defaults to deepseek-chat
base-url String Optional, DeepSeek API Base URL, defaults to https://api.deepseek.com
max-length Int Optional, Maximum length(Unicode width) of the content for review, if the content length exceeds this value, the review will be skipped. Default 0 means no limit.
sys-prompt String Optional, system prompt corresponding to $sys_prompt in the payload, default value see note below
user-prompt String Optional, user prompt corresponding to $user_prompt in the payload, default value see note below
include-patterns String Optional, The comma separated file patterns to include in the code review. No default
exclude-patterns String Optional, The comma separated file patterns to exclude in the code review. Default to pnpm-lock.yaml,package-lock.json,*.lock
github-token String Optional, The GITHUB_TOKEN secret or personal access token to authenticate. Defaults to github.token.

DeepSeek API Call Payload:

{
  // `$model` default value: deepseek-chat
  model: $model,
  stream: false,
  messages: [
    // `$sys_prompt` default value: You are a professional code review assistant responsible for
    // analyzing code changes in GitHub Pull Requests. Identify potential issues such as code
    // style violations, logical errors, security vulnerabilities, and provide improvement
    // suggestions. Clearly list the problems and recommendations in a concise manner.
    { role: 'system', content: $sys_prompt },
    // `$user_prompt` default value: Please review the following code changes
    // `diff_content` will be the code changes of current PR
    { role: 'user', content: $"($user_prompt):\n($diff_content)" }
  ]
}

Note

You can control the language of the code review results by the language of the Prompt. The default Prompt language is currently English. When you use a Chinese Prompt, the generated code review results will be in Chinese.

Local Code Review

Required Tools

To perform code reviews locally(should works for macOS, Ubuntu, and Windows), you need to install the following tools:

  • Nushell. It is recommended to install the latest versions.
  • Once Nushell was installed, simply clone this repository to your local machine, navigate to the repository directory, and run nu cr -h. You should see an output similar to the following:
Use DeepSeek AI to review code changes locally or in GitHub Actions

Usage:
  > cr {flags} (token)

Flags:
  -d, --debug: Debug mode
  -r, --repo <string>: GitHub repository name, e.g. hustcer/deepseek-review
  -n, --pr-number <string>: GitHub PR number
  -k, --gh-token <string>: Your GitHub token, fallback to GITHUB_TOKEN env var
  -t, --diff-to <string>: Diff to git REF
  -f, --diff-from <string>: Diff from git REF
  -l, --max-length <int>: Maximum length of the content for review, 0 means no limit.
  -m, --model <string>: Model name, deepseek-chat by default (default: 'deepseek-chat')
  -b, --base-url <string> (default: 'https://api.deepseek.com')
  -s, --sys-prompt <string>: Default to $DEFAULT_OPTIONS.SYS_PROMPT,
  -u, --user-prompt <string>: Default to $DEFAULT_OPTIONS.USER_PROMPT,
  -i, --include <string>: Comma separated file patterns to include in the code review
  -x, --exclude <string>: Comma separated file patterns to exclude in the code review
  -h, --help: Display the help message for this command

Parameters:
  token <string>: Your DeepSeek API token, fallback to CHAT_TOKEN env var (optional)

Environment Configuration

To perform code reviews locally, you need to modify the configuration file. A sample configuration file .env.example is already provided in the repository. Copy it to .env and adjust it according to your actual setup.

Warning

The .env configuration file is only used locally and will not be utilized in GitHub Workflow. Please securely store any sensitive information in it and avoid committing it to the code repository.

Usage Examples

# Perform code review on the `git diff` changes in the local DEFAULT_LOCAL_REPO repo
nu cr
# Perform code review on the `git diff f536acc` changes in the local DEFAULT_LOCAL_REPO repo
nu cr --diff-from f536acc
# Perform code review on the `git diff f536acc 0dd0eb5` changes in the local DEFAULT_LOCAL_REPO repo
nu cr --diff-from f536acc --diff-to 0dd0eb5
# Perform code review on PR #31 in the remote DEFAULT_GITHUB_REPO repo
nu cr --pr-number 31
# Perform code review on PR #31 in the remote hustcer/deepseek-review repo
nu cr --pr-number 31 --repo hustcer/deepseek-review

License

Licensed under:

DeepSeek CR is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

πŸš€ Sharpen Your Code, Ship with Confidence – Elevate Your Workflow with DeepSeek Code Review πŸš€
v1.7
Latest

DeepSeek CR is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.