ABCoder: AI-Based Coder(AKA: A Brand-new Coder)

Overview
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.
Features
-
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.
Universal Abstract-Syntax-Tree Specification
see UniAST Specification
Quick Start
Use ABCoder as a MCP server
-
Install ABCoder:
go install github.com/cloudwego/abcoder@latest
-
Use ABCoder to parse a repository to UniAST (JSON)
abcoder parse {language} {repo-path} > xxx.json
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
To parse repositories in other languages, install the corresponding langauge server first.
-
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:
Tips:
Use ABCoder as an Agent (WIP)
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.
Supported Languages
ABCoder currently supports the following languages:
Language |
Parser |
Writer |
Go |
✅ |
✅ |
Rust |
✅ |
Coming Soon |
C |
✅ |
Coming Soon |
Python |
✅ |
Coming Soon |
Getting Involved
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.

License
This project is licensed under the Apache-2.0 License.