Contributing Guide
Thank you for your interest in the Mini Agent project! We welcome contributions of all forms.
How to Contribute
Reporting Bugs
If you find a bug, please create an Issue and include the following information:
- Problem Description: A clear description of the problem.
- Steps to Reproduce: Detailed steps to reproduce the issue.
- Expected Behavior: What you expected to happen.
- Actual Behavior: What actually happened.
- Environment Information:
- Python version
- Operating system
- Versions of relevant dependencies
Suggesting New Features
If you have an idea for a new feature, please create an Issue first to discuss it:
- Describe the purpose and value of the feature.
- Explain the intended use case.
- Provide a design proposal if possible.
Submitting Code
Getting Started
Fork this repository.
Clone your fork:
git clone https://github.com/MiniMax-AI/Mini-Agent mini-agent cd mini-agentCreate a new branch:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fixInstall development dependencies:
uv sync
Development Process
Write Code
- Follow the project's code style (see the Development Guide).
- Add necessary comments and docstrings.
- Keep your code clean and concise.
Add Tests
- Add test cases for new features.
- Ensure all tests pass:
pytest tests/ -v
Update Documentation
- If you add a new feature, update the README or relevant documentation.
- Keep documentation in sync with your code.
Commit Changes
Use clear commit messages:
git commit -m "feat(tools): Add new file search tool" # or git commit -m "fix(agent): Fix error handling for tool calls"Commit message format:
feat: A new featurefix: A bug fixdocs: Documentation updatesstyle: Code style adjustmentsrefactor: Code refactoringtest: Test-related changeschore: Build or auxiliary tools
Push to Your Fork
git push origin feature/your-feature-nameCreate a Pull Request
- Create a Pull Request on GitHub.
- Clearly describe your changes.
- Reference any related Issues if applicable.
Pull Request Checklist
Before submitting a PR, please ensure:
- The code follows the project's style guide.
- All tests pass.
- Necessary tests have been added.
- Relevant documentation has been updated.
- The commit message is clear and concise.
- There are no unrelated changes.
Code Review
All Pull Requests will be reviewed:
- We will review your code as soon as possible.
- We may request some changes.
- Please be patient and responsive to feedback.
- Once approved, your PR will be merged into the main branch.
Code Style Guide
Python Code Style
Follow PEP 8 and the Google Python Style Guide:
# Good example ✅
class MyClass:
"""A brief description of the class.
A more detailed description...
"""
def my_method(self, param1: str, param2: int = 10) -> str:
"""A brief description of the method.
Args:
param1: Description of parameter 1.
param2: Description of parameter 2.
Returns:
Description of the return value.
"""
pass
# Bad example ❌
class myclass: # Class names should be PascalCase
def MyMethod(self,param1,param2=10): # Method names should be snake_case
pass # Missing docstring
Type Hinting
Use Python type hints:
from typing import List, Dict, Optional, Any
async def process_messages(
messages: List[Dict[str, Any]],
max_tokens: Optional[int] = None
) -> str:
"""Process a list of messages."""
pass
Testing
- Write tests for new features.
- Keep tests simple and clear.
- Ensure tests cover critical paths.
import pytest
from mini_agent.tools.my_tool import MyTool
@pytest.mark.asyncio
async def test_my_tool():
"""Test the custom tool."""
tool = MyTool()
result = await tool.execute(param="test")
assert result.success
assert "expected" in result.content
Community Guidelines
Please follow our Code of Conduct and be friendly and respectful.
Questions and Help
If you have any questions:
- Check the README and documentation.
- Search existing Issues.
- Create a new Issue to ask a question.
License
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you again for your contribution! 🎉