https://github.com/unit-mesh/autodev-remote-agent-action
🤖 Automated GitHub issue analysis using AI-powered code analysis. This action automatically analyzes GitHub issues when they are created or updated, providing intelligent insights and recommendations.
https://github.com/unit-mesh/autodev-remote-agent-action
Last synced: about 1 year ago
JSON representation
🤖 Automated GitHub issue analysis using AI-powered code analysis. This action automatically analyzes GitHub issues when they are created or updated, providing intelligent insights and recommendations.
- Host: GitHub
- URL: https://github.com/unit-mesh/autodev-remote-agent-action
- Owner: unit-mesh
- License: mit
- Created: 2025-06-09T01:42:51.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-09T04:17:14.000Z (about 1 year ago)
- Last Synced: 2025-06-09T04:19:50.496Z (about 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 160 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AutoDev Remote Agent
🤖 Automated GitHub issue analysis using AI-powered code analysis. This action automatically analyzes GitHub issues when they are created or updated, providing intelligent insights and recommendations.
## Features
- 🔍 **Intelligent Issue Analysis**: AI-powered analysis of GitHub issues with code context
- 💬 **Automated Comments**: Automatically add analysis results as comments to issues
- 🏷️ **Smart Labeling**: Automatically apply relevant labels based on analysis
- 🌐 **Webhook Support**: Standalone webhook server for real-time issue processing
- ⚙️ **Configurable**: Flexible configuration options for different workflows
- 🔗 **Integration Ready**: Built on top of the proven AutoDev GitHub Agent
- 🔍 **Process Transparency**: Detailed analysis process information and file filtering insights
- 🛠️ **Diagnostic Information**: Clear explanations when analysis results are limited
- 🍽️ **Dogfooding**: We use our own action to analyze issues in this repository!
## Quick Start
### Prerequisites
Before using this action, you need:
1. A GitHub repository
2. An API key from one of the supported LLM providers (OpenAI, DeepSeek, or GLM)
### Setup Steps
1. **Add API Key Secret**:
- Go to your repository's **Settings** → **Secrets and variables** → **Actions**
- Click **New repository secret**
- Add `DEEPSEEK_TOKEN` (or `OPENAI_API_KEY`/`GLM_TOKEN`) with your API key
2. **Create Workflow File**:
- Create `.github/workflows/issue-analysis.yml` in your repository
3. **Configure the Action**:
- Use the configuration examples below
### GitHub Actions Usage
Add this action to your workflow file (e.g., `.github/workflows/issue-analysis.yml`):
```yaml
name: Analyze Issues
on:
issues:
types: [opened, edited, reopened]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Analyze Issue
uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }} # or use openai-api-key/glm-token
analysis-depth: medium
auto-comment: true
auto-label: true
```
### Standalone Webhook Server
```bash
# Install dependencies
npm install
# Set environment variables
export GITHUB_TOKEN="your-github-token"
export WEBHOOK_SECRET="your-webhook-secret"
export DEEPSEEK_TOKEN="your-deepseek-token" # or OPENAI_API_KEY/GLM_TOKEN
# Start the server
npx autodev-github-action server --port 3000
```
### CLI Usage
```bash
# Analyze a specific issue
npx autodev-github-action analyze \
--owner unit-mesh \
--repo autodev-workbench \
--issue 81 \
--depth deep
# Start webhook server
npx autodev-github-action server --port 3000
# Validate configuration
npx autodev-github-action validate
```
## Configuration
### Action Inputs
| Input | Description | Default | Required |
|-------|-------------|---------|----------|
| `github-token` | GitHub token for API access | `${{ github.token }}` | Yes |
| `deepseek-token` | DeepSeek API token for LLM analysis | `` | No* |
| `openai-api-key` | OpenAI API key for LLM analysis | `` | No* |
| `glm-token` | GLM API token for LLM analysis | `` | No* |
| `workspace-path` | Path to repository workspace | `${{ github.workspace }}` | No |
| `analysis-depth` | Analysis depth (shallow/medium/deep) | `medium` | No |
| `auto-comment` | Add analysis comment to issues | `true` | No |
| `auto-label` | Add labels based on analysis | `true` | No |
| `trigger-events` | Events that trigger analysis | `opened,edited,reopened` | No |
| `exclude-labels` | Labels to exclude from analysis | `` | No |
| `include-labels` | Labels to include for analysis | `` | No |
| `include-config-files` | Include configuration files in analysis | `true` | No |
| `include-test-files` | Include test files in analysis | `true` | No |
| `include-patterns` | File patterns to force include | `` | No |
| `exclude-patterns` | File patterns to exclude | `` | No |
| `force-include-files` | Specific files to always include | `` | No |
| `webhook-secret` | Secret for webhook verification | `` | No |
*At least one LLM API key is required for AI analysis
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `GITHUB_TOKEN` | GitHub personal access token | Required |
| `DEEPSEEK_TOKEN` | DeepSeek API token for LLM analysis | Optional* |
| `OPENAI_API_KEY` | OpenAI API key for LLM analysis | Optional* |
| `GLM_TOKEN` | GLM API token for LLM analysis | Optional* |
| `WEBHOOK_SECRET` | Secret for webhook verification | Optional |
| `WORKSPACE_PATH` | Repository workspace path | `process.cwd()` |
| `AUTO_COMMENT` | Auto-add comments | `true` |
| `AUTO_LABEL` | Auto-add labels | `true` |
| `ANALYSIS_DEPTH` | Analysis depth | `medium` |
| `TRIGGER_EVENTS` | Trigger events | `opened,edited,reopened` |
| `EXCLUDE_LABELS` | Exclude labels | `` |
| `INCLUDE_LABELS` | Include labels | `` |
*At least one LLM API key is required for AI analysis
## LLM Configuration
This action supports multiple LLM providers. You need to configure at least one API key:
### DeepSeek (Recommended)
```yaml
- uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }}
```
### OpenAI
```yaml
- uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
```
### GLM (ChatGLM)
```yaml
- uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
glm-token: ${{ secrets.GLM_TOKEN }}
```
### Setting up API Keys
1. Go to your repository's **Settings** → **Secrets and variables** → **Actions**
2. Click **New repository secret**
3. Add one of the following secrets:
- `DEEPSEEK_TOKEN`: Your DeepSeek API token from [DeepSeek Platform](https://platform.deepseek.com/)
- `OPENAI_API_KEY`: Your OpenAI API key from [OpenAI Platform](https://platform.openai.com/api-keys)
- `GLM_TOKEN`: Your GLM API token from [GLM Platform](https://open.bigmodel.cn/)
## Analysis Depths
### Shallow
- Quick analysis focusing on obvious patterns
- Fast execution (< 30 seconds)
- Basic code references
- Suitable for high-volume repositories
### Medium (Default)
- Balanced analysis with meaningful insights
- Moderate execution time (30-60 seconds)
- Comprehensive code exploration
- Good for most use cases
### Deep
- In-depth analysis including dependencies
- Longer execution time (60-120 seconds)
- Architectural pattern analysis
- Best for complex issues
## 🔍 Analysis Transparency
This action provides detailed information about the analysis process to help you understand what happened:
### Process Information
- **Files Scanned**: Total number of files found in your repository
- **Files Analyzed**: Number of files the AI determined were relevant
- **Files Filtered**: Number of files excluded from analysis and why
- **Analysis Steps**: Detailed breakdown of each analysis phase
- **LLM Calls**: Information about AI service calls and their success/failure
### When Analysis Results Are Limited
If the analysis produces limited results, the action will provide:
- **Diagnostic Information**: Explanation of what might have gone wrong
- **File Filtering Details**: Which types of files were excluded and why
- **Improvement Suggestions**: How to write better issue descriptions for more comprehensive analysis
- **Troubleshooting Tips**: Common issues and how to resolve them
### Common File Filtering Scenarios
The AI may filter out files that seem unrelated to your issue:
- Configuration files (jest.config.js, rollup.config.mjs, etc.) unless specifically mentioned
- Test setup files unless the issue is about testing
- Build and package files unless the issue mentions dependencies or build problems
- Documentation files unless the issue is about documentation
💡 **Tips for Better Analysis Results**:
1. **Mention specific files**: "Error in `jest.config.js`" vs "Configuration problem"
2. **Include error messages**: Copy-paste actual error text
3. **Reference functions/classes**: "Issue in `getUserData()` function"
4. **Specify file types**: "Test configuration issue" includes test files
5. **Use keywords**: "build", "config", "test", "dependency" help include relevant files
### Understanding Analysis Comments
When the action analyzes your issue, it will add a comment with sections like:
```markdown
## 🤖 Automated Issue Analysis
### 🔍 Analysis Process
- Files scanned: 45
- Files analyzed: 8
- Files filtered: 37 (see details below)
- Analysis steps: 5
### ⚠️ Files Filtered from Analysis
37 files were not included in the analysis. This may include:
- jest.config.js - Configuration files often filtered by LLM as not directly relevant
- rollup.config.mjs - Build configuration files typically excluded from issue analysis
- __tests__/setup.ts - Test setup files may be filtered if issue doesn't mention testing
💡 Suggestions to include these files:
- Mention "configuration", "config files", or specific config file names if your issue relates to build/setup
- Include "test", "testing", or "test failure" if your issue involves test problems
```
This transparency helps you understand why certain files weren't considered and how to improve your issue description for better analysis.
## Examples
### Basic Issue Analysis
```yaml
- name: Analyze Issues
uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }}
```
### Advanced Configuration
```yaml
- name: Advanced Issue Analysis
uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }}
analysis-depth: deep
auto-comment: true
auto-label: true
exclude-labels: 'wontfix,duplicate'
include-labels: 'bug,enhancement'
```
### File Filtering Configuration
Control which files are included in the analysis:
```yaml
- name: Custom File Filtering
uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }}
# File inclusion settings
include-config-files: true # Include jest.config.js, rollup.config.mjs, etc.
include-test-files: true # Include __tests__/, *.test.js, etc.
# Custom patterns (comma-separated)
include-patterns: "*.config.js,*.config.ts,docker-compose.yml"
exclude-patterns: "*.min.js,*.bundle.js"
force-include-files: "important-config.js,critical-setup.ts"
```
### Transparency and Diagnostics
The action now provides detailed process information in comments:
```yaml
- name: Analysis with Full Transparency
uses: unit-mesh/autodev-remote-agent-action@v0.3.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deepseek-token: ${{ secrets.DEEPSEEK_TOKEN }}
auto-comment: true # Comments will include process details
analysis-depth: medium
```
**What you'll see in analysis comments:**
- 📊 **Process Summary**: Files scanned vs. analyzed vs. filtered
- ⚠️ **Filtered Files**: Specific files that were excluded and why
- 🔄 **Analysis Steps**: Each step's success/failure with timing
- 🧠 **LLM Calls**: AI service calls and any errors
- 💡 **Improvement Suggestions**: How to get better analysis results
### Webhook Server Setup
```javascript
const { startWebhookServer } = require('@autodev/github-agent-action');
const server = await startWebhookServer({
port: 3000,
webhookSecret: process.env.WEBHOOK_SECRET,
githubToken: process.env.GITHUB_TOKEN
});
```
## API Reference
### GitHubActionService
Main service class for processing issues.
```typescript
const service = new GitHubActionService({
githubToken: 'your-token',
workspacePath: '/path/to/repo',
autoComment: true,
autoLabel: true
});
const result = await service.processIssue({
owner: 'unit-mesh',
repo: 'autodev-workbench',
issueNumber: 81
});
```
### IssueAnalyzer
Core analysis engine.
```typescript
const analyzer = new IssueAnalyzer(context);
const result = await analyzer.analyzeIssue({
depth: 'medium',
includeCodeSearch: true,
includeSymbolAnalysis: true
});
```
### WebhookHandler
Webhook server for real-time processing.
```typescript
const handler = new WebhookHandler(actionService, {
port: 3000,
secret: 'webhook-secret',
onIssueOpened: async (payload) => {
console.log('Issue opened:', payload.issue.number);
}
});
await handler.start();
```
## Development
### Setup
```bash
# Clone the repository
git clone https://github.com/unit-mesh/autodev-remote-agent-action.git
cd autodev-remote-agent-action
# Install dependencies (using pnpm for better dependency management)
pnpm install
# or use npm
npm install
# Build the package
npm run build
# Run tests
npm test
# Test locally
node dist/index.js --help
```
### Build Process
```bash
# Clean build (removes dist/ and rebuilds)
npm run build:clean
# Development build with watch mode
npm run dev
# Lint code
npm run lint
# Test locally
node dist/index.js --help
```
### Project Structure
```
autodev-remote-agent-action/
├── src/ # Source code (TypeScript)
│ ├── action.ts # Main action service
│ ├── issue-analyzer.ts # Issue analysis logic
│ ├── webhook-handler.ts # Webhook server
│ ├── types/ # Type definitions
│ └── index.ts # Main entry point
├── dist/ # Build output (committed to git)
├── bin/
│ └── action.js # CLI entry point
├── action.yml # GitHub Action definition
├── package.json
└── README.md
```
### Release Process
1. Make your changes and test locally
2. Run `npm run build:clean` to ensure clean build
3. Test the built action: `node dist/index.js`
4. Update version in `package.json`
5. Commit all changes including `dist/` files
6. Create a git tag: `git tag v0.3.3 && git push origin v0.3.3`
7. The new version will be available for use in GitHub Actions
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request
## License
MIT License - see [LICENSE](LICENSE) for details.
## Related Projects
- [AutoDev GitHub Agent](https://github.com/unit-mesh/autodev) - Core analysis engine
- [AutoDev Context Worker](https://github.com/unit-mesh/autodev) - Code context analysis
- [AutoDev Worker Core](https://github.com/unit-mesh/autodev) - Core utilities
## Support
- 📖 [Documentation](https://github.com/unit-mesh/autodev-remote-agent-action)
- 🐛 [Issue Tracker](https://github.com/unit-mesh/autodev-remote-agent-action/issues)
- 💬 [Discussions](https://github.com/unit-mesh/autodev-remote-agent-action/discussions)