Skip to content

Conversation

yaohaowei0914
Copy link
Contributor

Feature: Project Rules and User Rules Support

Overview

This PR adds comprehensive support for project_rules.md and user_rules.md files, bringing trae-agent in line with the main Trae functionality and addressing issues mentioned in #293.

Motivation

  • Feature Parity: The main Trae application supports project and user rules, but trae-agent was missing this functionality
  • Enhanced Customization: Allows users to define project-specific and personal coding rules that are automatically integrated into agent prompts

###Core Functionality

  • Project Rules (project_rules.md): Project-wide coding standards and conventions
  • User Rules (user_rules.md): Personal coding preferences and habits
  • Automatic Integration: Rules are seamlessly merged into agent prompts during execution
  • Template Support: Includes example templates for easy setup

###CLI Management Tools
New trae rules command group with comprehensive subcommands:

  • list [project|user] - View current rules
  • add [project|user] SECTION RULE - Add new rules
  • remove [project|user] SECTION RULE - Remove existing rules
  • update [project|user] SECTION OLD_RULE NEW_RULE - Update rules
  • add-section [project|user] SECTION - Create new rule sections
  • remove-section [project|user] SECTION - Delete rule sections

Technical Implementation

Files Added/Modified

  • Added: trae_agent/utils/rules_manager.py - Core rule management functionality
  • Modified: trae_agent/cli.py - CLI command integration
  • Modified: trae_agent/utils/config.py - Configuration support
  • Modified: trae_agent/utils/project_rules.py - Enhanced rule loading
  • Modified: trae_agent/agent/trae_agent.py - Agent integration
  • Added: user_rules.md.example - User rule template
  • Modified: .gitignore - Ignore personal user rules

Key Features

  • Security: Directory permission validation and path security checks
  • Error Handling: Graceful error handling with user-friendly messages
  • Cross-Platform: Works on Windows, macOS, and Linux
  • Flexible: Supports custom working directories via --working-dir option

Usage Examples

# View current project rules
trae rules list project

# Add a new coding standard
trae rules add project "Code Style" "Use meaningful variable names"

# Update user preferences
trae rules update user "Preferences" "Old preference" "New preference"

# Create a new rule section
trae rules add-section project "Testing Guidelines"

Related Issues

  • Brings feature parity with main Trae application
  • Provides foundation for enhanced agent customization

Documentation

  • CLI help documentation included
  • Example templates provided
  • Clear error messages for user guidance

This PR provides code reference and solution for Project_rules.md related problems mentioned in #293

Fix TypeError in ModelConfig dataclass where non-default arguments followed default arguments.

The issue occurred because 'max_tokens' (with default value None) was positioned before
required parameters like 'temperature', 'top_p', 'top_k', 'parallel_tool_calls', and
'max_retries' which have no default values.

Python dataclasses require all parameters without default values to be declared before
parameters with default values.

Changes:
- Moved required parameters (temperature, top_p, top_k, parallel_tool_calls, max_retries)
  to the beginning of the dataclass
- Moved optional parameters (max_tokens, supports_tool_calling, etc.) after required ones

Fixes the CLI startup error: "TypeError: non-default argument 'temperature' follows default argument"
- Add load_project_rules() method to safely load rules from project directory
- Add format_rules_for_prompt() method to format rules for system prompts
- Add validate_rules_file() method with enhanced validation:
  * Limit file size to 10,000 characters
  * Validate file contains only text content (no binary/control characters)
  * Ensure UTF-8 encoding compatibility
- Include security checks to prevent path traversal attacks
- Support both absolute and relative file paths
This enables the agent to dynamically load project-specific rules and guidelines
from Project_rules.md files, enhancing customization capabilities.
Implement user personal coding rules feature, allowing developers to create personal coding preference files

Main changes:
- Extend TraeAgentConfig class, add user_rules_enabled and user_rules_path configuration options
- Enhance ProjectRulesLoader class, add load_user_rules and load_combined_rules methods
- Modify TraeAgent class to support loading both project rules and user rules simultaneously
- Refactor _get_project_rules method to use combined rules functionality
- Update configuration example file trae_config.yaml.example
- Create user_rules.md.example template file
- Update .gitignore to ignore personal user rules files

Features:
- Support independent enable/disable of project rules and user rules
- Automatically merge project rules and user rules
- User rules files are not version controlled, protecting personal preference privacy
- Provide complete configuration examples and usage templates

Affected files:
- trae_agent/utils/config.py
- trae_agent/utils/project_rules.py
- trae_agent/agent/trae_agent.py
- trae_config.yaml.example
- .gitignore
- user_rules.md.example (new)
… user_rules.md command-line operations

feat: add CLI rules management functionality for project_rules.md and user_rules.md command-line operations

New Features:
- Implement RulesManager class providing comprehensive rule file management functionality
- Add rules command group with 6 subcommands: list, add, remove, update, add-section, remove-section
- Support unified management of project rules (project_rules.md) and user rules (user_rules.md)
- Integrate permission validation and error handling mechanisms

Main Changes:
- Added: trae_agent/utils/rules_manager.py - Core rule management class
- Modified: trae_agent/cli.py - Added rules command group and all subcommands

Command Usage:
- trae rules list [project|user] - View rule content
- trae rules add [project|user] SECTION RULE - Add new rules
- trae rules remove [project|user] SECTION RULE - Remove rules
- trae rules update [project|user] SECTION OLD_RULE NEW_RULE - Update rules
- trae rules add-section [project|user] SECTION - Add new sections
- trae rules remove-section [project|user] SECTION - Remove sections

Security Features:
- Directory write permission validation
- File path security checks
- Graceful error handling with user-friendly error messages

Test Coverage:
- All CRUD operations have passed functional tests
- Permission validation and error handling verified
- Support for custom working directory parameters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant