Observed since 20 Oct, 16:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
AI Coding Assistant based on ReAct architecture with file-based context management
中文 |
🚀 AI Programming CLI Agent based on DeepSeek - A lightweight ReAct architecture that borrows and adopts advanced concepts from current popular Agents, 100% python.
This project is primarily developed and tested on Linux and MacOS. It is recommended to use Linux or MacOS. Windows users may encounter Python path issues; please configure accordingly.
git clone https://github.com/kandada/aacode.git
cd aacode
python3 init.py # Python 3.12 or higher is recommended
# Check if the .venv environment is activated; if not, run:
source .venv/bin/activate
Note: Before starting a task, you can create an init.md file in your task directory as a detailed task description file. The more detailed your design ideas, the better results you can get.
# Using the convenient startup script
./run.sh -p examples/my_project "Your task description"
# Or run manually
source .venv/bin/activate
export LLM_API_KEY="your-api-key"
export LLM_API_URL="your-api-url"
export LLM_MODEL_NAME="your-model-name"
python3 main.py -p examples/my_project "Your task description"
# Advanced Mode
## Plan-First Mode
python main.py -p examples/my_project "Complex task" --plan-first
## Interactive Continuous Conversation
python main.py -p examples/my_project "Initial task" --interactive
## Specify Session
python main.py --session session_20250128_123456_0 "Continue task"
After pip install, you can use the aacode command. The default workspace is the current directory — no need to specify -p unless you want a different location. It's recommended to wrap your task in quotes.
# Install
pip install aacode
# Initialize configuration
aacode init
# Enter interactive session mode (no task required)
aacode
# Run a single task in current directory
aacode "your task"
# Or explicitly with aacode run (same as above)
aacode run "your task"
# Specify a different project directory
aacode run -p /your/project/path "your task"
If you prefer a graphical interface, try AACode Desktop:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | AACode_1.8.13_aarch64.dmg |
| Windows | AACode_1.8.13_x64-setup.exe |
The desktop client still requires Python and dependencies (not required for the mobile app). See 👉 DESKTOP.md for full setup instructions.
| Platform | Download |
|---|---|
| Android | aacode.apk |
| iOS | App Store |
Android users outside mainland China can also install via Google Play.
# OpenAI
export LLM_API_KEY="your-openai-key"
export LLM_API_URL="https://api.openai.com/v1"
export LLM_MODEL_NAME="gpt-4"
export LLM_GATEWAY="openai"
export LLM_MULTIMODAL="false"
# Other OpenAI API compatible models (deepseek, etc.)
export LLM_API_KEY="your-api-key"
export LLM_API_URL="https://your-api-endpoint/v1"
export LLM_MODEL_NAME="your-model-name"
export LLM_GATEWAY="openai"
export LLM_MULTIMODAL="false"
# Multimodal models (e.g., MiniMax, Kimi, etc.)
export LLM_API_KEY="your-kimi-key"
export LLM_API_URL="https://api.moonshot.cn/v1"
export LLM_MODEL_NAME="kimi-k2.5"
export LLM_GATEWAY="anthropic"
export LLM_MULTIMODAL="true"
Supports various multimodal models (e.g., Kimi K2.5, MiniMax M2.5, etc.). Configure in .env file or aacode_config.yaml:
MULTIMODAL_API_KEY: Multimodal model API keyMULTIMODAL_API_URL: Multimodal model API address (optional, defaults to model-specific address)Currently only supports SearXNG. Users need to deploy their own and configure the URL in aacode_config.yaml, but it is recommended to configure via environment variable SEARCHXNG_URL.
Skills are placed under aacode/skills/ directory. No configuration file changes needed — auto-discovered on restart.
aacode/skills/<skill_name>/
├── SKILL.md # Skill description (fastclaw template format)
└── main.py # Implementation (public functions auto-registered as tools, excluding _ prefix and main)
## Description
Skill description. Required imports auto-injected.
## Parameters
- param1: Parameter 1 description
- param2: Parameter 2 description
## Example
run_skills("skill_name", {"param1": "value1", "param2": "value2"})
See skills/pandas/, skills/numpy/, skills/playwright/.
./run.sh -p examples/hello_demo "Create a hello.py file with content print('Hello, World!')"
./run.sh -p examples/calculator "Create a calculator program supporting addition, subtraction, multiplication, and division with test cases"
./run.sh -p examples/web_app "Create a simple Flask web application with home and about pages"
./run.sh -p examples/data_analysis "Create a data analysis script that reads CSV files in the project directory and generates statistical charts"
✅ Good description:
"Create a Python program that uses the requests library to fetch weather API data
and saves the results to a weather.json file"
❌ Poor description:
"Make a weather program"
For complex projects, execute in multiple steps:
# Step 1: Create basic structure
python3 main.py -p examples/app "Create Flask application basic structure"
# Step 2: Add features
python3 main.py -p examples/app "Add user authentication features"
# Step 3: Test
python3 main.py -p examples/app "Write tests for all features"
Edit the init.md file and add project-specific rules:
# Project Guidelines
## Code Style
- Use PEP 8 standards
- Function names use snake_case
- Class names use PascalCase
## Testing Requirements
- Every feature must have unit tests
- Test coverage must be at least 80%
## Documentation Requirements
- All public functions must have docstrings
- README.md must include usage examples
📁 Core Architecture
├── 🤖 MainAgent # Main controller, task decomposition and coordination
├── 🔄 ReActLoop # Intelligent thinking-action loop
├── 📚 ContextManager # File-based context management
├── 🛠️ AtomicTools # Atomic toolset (files, commands, search)
├── 💻 CodeTools # Code toolset (execute, test, debug)
├── 🛡️ SafetyGuard # Comprehensive safety guardrail system
└── 🔧 ConfigManager # Flexible configuration management
| Metric | Value | Description |
|---|---|---|
| Task Success Rate | 98%+ | Complex programming task completion rate |
| Average Response Time | 2-5s | Tool call response time |
| Code Quality | Production-level | Includes error handling and testing |
| Security | 100% | Zero security vulnerabilities record |
| Supported Languages | Python-first | Extensible multi-language support |
aacode/skills/Contributions of code, bug reports, or suggestions are welcome!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Scan the QR code below to join our WeChat group and discuss with other developers:
Copyright (c) 2024-2026 xiefujin 490021684@qq.com. All rights reserved.
This project is initiated and developed by xiefujin (github: kandada, email: 490021684@qq.com) as the first version, licensed under GPL3.0. All derivative works must also be open source under GPL. [license][https://github.com/kandada/aacode/blob/main/LICENSE]
🚀 Start your AI programming journey today!
Made with ❤️ by xiefujin
pypistats · 87 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 14 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-18 – 2026-10-18 | 6 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-17 – 2026-10-17 | 17 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-16 – 2026-10-16 | 9 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-15 – 2026-10-15 | 13 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-14 – 2026-10-14 | 15 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-13 – 2026-10-13 | 6 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-12 – 2026-10-12 | 13 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-11 – 2026-10-11 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-10 – 2026-10-10 | 13 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-09 – 2026-10-09 | 27 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-08 – 2026-10-08 | 134 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-07 – 2026-10-07 | 12 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-06 – 2026-10-06 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-05 – 2026-10-05 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-04 – 2026-10-04 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-03 – 2026-10-03 | 1 | 2026-10-20T16:57:03.0030104Z |
| 2026-10-01 – 2026-10-01 | 11 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-30 – 2026-09-30 | 13 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-29 – 2026-09-29 | 18 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-28 – 2026-09-28 | 14 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-27 – 2026-09-27 | 17 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-26 – 2026-09-26 | 32 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-25 – 2026-09-25 | 29 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-24 – 2026-09-24 | 28 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-23 – 2026-09-23 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-20 – 2026-09-20 | 5 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-19 – 2026-09-19 | 2 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-18 – 2026-09-18 | 100 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-17 – 2026-09-17 | 41 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-16 – 2026-09-16 | 30 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-15 – 2026-09-15 | 6 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-14 – 2026-09-14 | 26 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-13 – 2026-09-13 | 10 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-12 – 2026-09-12 | 55 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-11 – 2026-09-11 | 1 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-09 – 2026-09-09 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-08 – 2026-09-08 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-07 – 2026-09-07 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-06 – 2026-09-06 | 1 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-05 – 2026-09-05 | 6 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-04 – 2026-09-04 | 13 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-03 – 2026-09-03 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-02 – 2026-09-02 | 3 | 2026-10-20T16:57:03.0030104Z |
| 2026-09-01 – 2026-09-01 | 44 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-31 – 2026-08-31 | 5 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-30 – 2026-08-30 | 5 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-29 – 2026-08-29 | 1 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-28 – 2026-08-28 | 2 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-27 – 2026-08-27 | 84 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-26 – 2026-08-26 | 7 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-25 – 2026-08-25 | 7 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-24 – 2026-08-24 | 17 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-23 – 2026-08-23 | 6 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-22 – 2026-08-22 | 98 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-21 – 2026-08-21 | 2 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-20 – 2026-08-20 | 17 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-19 – 2026-08-19 | 83 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-18 – 2026-08-18 | 69 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-17 – 2026-08-17 | 9 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-16 – 2026-08-16 | 8 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-15 – 2026-08-15 | 9 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-14 – 2026-08-14 | 25 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-13 – 2026-08-13 | 79 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-12 – 2026-08-12 | 64 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-11 – 2026-08-11 | 21 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-10 – 2026-08-10 | 9 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-09 – 2026-08-09 | 14 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-08 – 2026-08-08 | 16 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-07 – 2026-08-07 | 75 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-06 – 2026-08-06 | 145 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-05 – 2026-08-05 | 88 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-04 – 2026-08-04 | 10 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-03 – 2026-08-03 | 134 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-02 – 2026-08-02 | 38 | 2026-10-20T16:57:03.0030104Z |
| 2026-08-01 – 2026-08-01 | 59 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-31 – 2026-07-31 | 15 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-30 – 2026-07-30 | 66 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-29 – 2026-07-29 | 63 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-28 – 2026-07-28 | 110 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-27 – 2026-07-27 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-26 – 2026-07-26 | 4 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-25 – 2026-07-25 | 8 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-24 – 2026-07-24 | 12 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-23 – 2026-07-23 | 98 | 2026-10-20T16:57:03.0030104Z |
| 2026-07-22 – 2026-07-22 | 103 | 2026-10-20T16:57:03.0030104Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.8.13 | 8 Oct 2026 | 19 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 16:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:182cc27fcca3a14f466ae67cbc4ada7d73de63969275514558ce5a442bf6677b