ABCoder, an AI-oriented Code-processing Framework, is designed to enhance and extend the coding context for Large-Language-Model (LLM), finally boosting the development of AI-assisted-programming applications.
-
Universal Abstract-Syntax-Tree (UniAST), a language-independent, AI-friendly specification of code information, providing a boundless, flexible and structural coding context for both AI and humans.
-
General Parser, parses arbitrary-language codes to UniAST.
-
General Writer transforms UniAST back to code.
-
Code-Retrieval-Augmented-Generation (Code-RAG), provides a set of MCP tools to help the LLM understand code repositories precisely and locally. And it can support both in-workspace and out-of-workspace third-party libraries simultaneously -- I guess you are thinking about DeepWiki and context7, but ABCoder is more reliable and confidential -- no need to wait for their services to be done, and no worry about your codes will be uploaded!
Based on these features, developers can easily implement or enhance their AI-assisted programming applications, such as reviewing, optimizing, translating, etc.
ABCoder provides deep integration with Claude Code through the AST-Driven Coding workflow, enabling hallucination-free code analysis and precise execution. Check Claude Code Specification for more details.
Use the init-spec command to automatically configure Claude Code integration for your project:
# Install ABCoder
go install github.com/cloudwego/abcoder@latest
# Run init-spec in your project directory (optional: specify target path)
cd /path/to/your/project
abcoder init-specThe init-spec command will:
- Copy
.claudedirectory to your project root - Configure MCP servers in
~/.claude.json:abcoder: for code analysis using ASTsequential-thinking: for complex problem decomposition
- Replace all
{{CLAUDE_HOME_PATH}}placeholders with actual project paths
Once setup, you can start coding with Claude Code:
- Start Claude Code in your project directory
- Use slash common
/abcoder:schedule <problem_desc>to address your feature/requirement/issue, and ABCoder will help you analyze the codebase and design a technical solution. - Once all questions are set, use slash common
/abcoder:task <task_name>to create a coding task(specification) - Recheck the task using
/abcoder:recheck <task_name>before real implementation - Begin coding! Claude Code will process the task step by step according to the specification, leveraging the power of AST-driven analysis.
.claude/hooks provide a 4-layer analysis chain from repository to node details:
list_repos → get_repo_structure → get_package_structure → get_file_structure → get_ast_node
│ │ │ │ │
└── repo_name └── mod/pkg list └── file list └── node list └── dependencies/references
.claude/commands provide three custom slash commands to streamline development:
| Command | Function | Description |
|---|---|---|
/abcoder:schedule <task_desc> |
Design implementation | Analyze codebase by using ABCoder, design technical solution |
/abcoder:task <name> |
Create coding task | Generate standardized CODE_TASK document |
/abcoder:recheck <task> |
Verify solution | Critically check CODE_TASK feasibility, useful when a CODE_TASK contains external dependencies |
User Request
│
▼
/abcoder:schedule ──────────→ Design Solution (ABCoder Analysis)
│ │
▼ ▼
/abcoder:task ─────────→ CODE_TASK (with Technical Specs, including accurate `get_ast_node` call args)
│ │
▼ ▼
/abcoder:recheck ────→ Verify Solution (ABCoder Validation. After `/abcoder:task` Claude Code will tell you what the external dependencies CODE_TASK contains, use `/abcoder:recheck` to analyze external ast_node and technical detail with ABCoder)
│ │
▼ ▼
Start coding(sub-agent) ─────────→ Execute Implementation
| File | Purpose |
|---|---|
CLAUDE.md |
Core AST-Driven Coder role definition |
settings.json |
Hooks and permissions configuration |
hooks/ |
Automation scripts (parse/prompt/reminder) |
commands/ |
Slash command definitions (abcoder:task/abcoder:schedule/abcoder:recheck) |
tmpls/ABCODER_CODE_TASK.md |
Coding task template |
- Claude Code CLI
- ABCoder MCP server (provides
mcp__abcodertools) - Sequential-thinking MCP server (provides
mcp__sequential_thinkingtools, automatically configured by init-spec)
For detailed configuration, see claude-code-spec.md
Watch the demo video here
-
Install ABCoder:
go install github.com/cloudwego/abcoder@latest
-
Use ABCoder to parse a repository to UniAST (JSON)
abcoder parse {language} {repo-path} -o xxx.jsonABCoder will try to install any dependency automatically. In case of failure (or if you want to customize installation), refer to the docs.
For example, to parse a Go repository:
git clone https://github.com/cloudwego/localsession.git localsession abcoder parse go localsession -o /abcoder-asts/localsession.json
-
Integrate ABCoder's MCP tools into your AI agent.
{ "mcpServers": { "abcoder": { "command": "abcoder", "args": [ "mcp", "{the-AST-directory}" ] } } } -
Enjoy it!
Try to click and watch the video below:
-
You can add more repo ASTs into the AST directory without restarting abcoder MCP server.
-
Try to use the recommended prompt and combine planning/memory tools like sequential-thinking in your AI agent.
You can also use ABCoder as a command-line Agent like:
export API_TYPE='{openai|ollama|ark|claude}'
export API_KEY='{your-api-key}'
export MODEL_NAME='{model-endpoint}'
abcoder agent {the-AST-directory}For example:
$ API_TYPE='ark' API_KEY='xxx' MODEL_NAME='zzz' abcoder agent ./testdata/asts
Hello! I'm ABCoder, your coding assistant. What can I do for you today?
$ What does the repo 'localsession' do?
The `localsession` repository appears to be a Go module (`github.com/cloudwego/localsession`) that provides functionality related to managing local sessions. Here's a breakdown of its structure and purpose:
...
If you'd like to explore specific functionalities or code details, let me know, and I can dive deeper into the relevant files or nodes. For example:
- What does `session.go` or `manager.go` implement?
- How is the backup functionality used?
$ exit- NOTICE: This feature is Work-In-Progress. It only supports code analysis at present.
ABCoder currently supports the following languages:
| Language | Parser | Writer |
|---|---|---|
| Go | ✅ | ✅ |
| Rust | ✅ | Coming Soon |
| C | ✅ | Coming Soon |
| Python | ✅ | Coming Soon |
| JS/TS | ✅ | Coming Soon |
| Java | ✅ | Coming Soon |
We encourage developers to contribute and make this tool more powerful. If you are interested in contributing to ABCoder project, kindly check out our guide:
Note: This is a dynamic README and is subject to changes as the project evolves.
- How to become a member: COMMUNITY MEMBERSHIP
- Issues: Issues
- Lark: Scan the QR code below with Register Feishu to join our CloudWeGo/abcoder user group.
Thank you for your contribution to ABCoder!
This project is licensed under the Apache-2.0 License.


