An open API service indexing awesome lists of open source software.

https://github.com/cloudwego/abcoder

deep, reliable and confidential coding-context
https://github.com/cloudwego/abcoder

ai-agent ai-coding ast context-engineer lsp mcp-server

Last synced: 22 days ago
JSON representation

deep, reliable and confidential coding-context

Awesome Lists containing this project

README

          

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

![ABCoder](images/ABCoder.png)

# 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](https://deepwiki.org) and [context7](https://github.com/upstash/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](docs/uniast-zh.md)

# Quick Start

## Claude Code Integration

ABCoder provides deep integration with [Claude Code](https://claude.ai/code) through the AST-Driven Coding workflow, enabling hallucination-free code analysis and precise execution. Check [Claude Code Specification](docs/claude-code-spec.md) for more details.

### Setup

Use the `init-spec` command to automatically configure Claude Code integration for your project:

```bash
# 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-spec
```

The `init-spec` command will:
1. Copy `.claude` directory to your project root
2. Configure MCP servers in `~/.claude.json`:
- `abcoder`: for code analysis using AST
- `sequential-thinking`: for complex problem decomposition
3. Replace all `{{CLAUDE_HOME_PATH}}` placeholders with actual project paths

### Start Coding with Claude Code

Once setup, you can start coding with Claude Code:

1. Start Claude Code in your project directory
2. Use slash common `/abcoder:schedule ` to address your feature/requirement/issue, and ABCoder will help you analyze the codebase and design a technical solution.
3. Once all questions are set, use slash common `/abcoder:task ` to create a coding task(specification)
4. Recheck the task using `/abcoder:recheck ` before real implementation
5. Begin coding! Claude Code will process the task step by step according to the specification, leveraging the power of AST-driven analysis.

### AST-Driven Coding Workflow

[`.claude/hooks`](internal/cmd/assets/.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 Code Slash Commands

[`.claude/commands`](internal/cmd/assets/.claude/commands) provide three custom slash commands to streamline development:

| Command | Function | Description |
|---------|----------|-------------|
| [`/abcoder:schedule` ](internal/cmd/assets/.claude/commands/abcoder/schedule.md) | Design implementation | Analyze codebase by using ABCoder, design technical solution |
| [`/abcoder:task `](internal/cmd/assets/.claude/commands/abcoder/task.md) | Create coding task | Generate standardized CODE_TASK document |
| [`/abcoder:recheck `](internal/cmd/assets/.claude/commands/abcoder/recheck.md) | Verify solution | Critically check CODE_TASK feasibility, useful when a CODE_TASK contains external dependencies |

### Workflow

```
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
```

### Configuration Files

| File | Purpose |
|------|---------|
| [`CLAUDE.md`](internal/cmd/assets/.claude/CLAUDE.md) | Core AST-Driven Coder role definition |
| [`settings.json`](internal/cmd/assets/.claude/settings.json) | Hooks and permissions configuration |
| [`hooks/`](internal/cmd/assets/.claude/hooks/) | Automation scripts (parse/prompt/reminder) |
| [`commands/`](internal/cmd/assets/.claude/commands/) | Slash command definitions (abcoder:task/abcoder:schedule/abcoder:recheck) |
| [`tmpls/ABCODER_CODE_TASK.md`](internal/cmd/assets/.claude/tmpls/ABCODER_CODE_TASK.md) | Coding task template |

### Dependencies

- Claude Code CLI
- ABCoder MCP server (provides `mcp__abcoder` tools)
- Sequential-thinking MCP server (provides `mcp__sequential_thinking` tools, automatically configured by init-spec)

> For detailed configuration, see [claude-code-spec.md](docs/claude-code-spec.md)

> Watch the demo video [here](https://github.com/cloudwego/abcoder/pull/141)

## Use ABCoder as a MCP server

1. Install ABCoder:

```bash
go install github.com/cloudwego/abcoder@latest
```

2. Use ABCoder to parse a repository to UniAST (JSON)

```bash
abcoder parse {language} {repo-path} -o xxx.json
```

ABCoder will try to install any dependency automatically.
In case of failure (or if you want to customize installation), refer to the [docs](./docs/lsp-installation-en.md).

For example, to parse a Go repository:

```bash
git clone https://github.com/cloudwego/localsession.git localsession
abcoder parse go localsession -o /abcoder-asts/localsession.json
```

3. Integrate ABCoder's MCP tools into your AI agent.

```json
{
"mcpServers": {
"abcoder": {
"command": "abcoder",
"args": [
"mcp",
"{the-AST-directory}"
]
}
}
}
```

4. Enjoy it!

Try to click and watch the video below:



[MCP](https://www.bilibili.com/video/BV14ggJzCEnK)


## Tips:

- You can add more repo ASTs into the AST directory without restarting abcoder MCP server.

- Try to use [the recommended prompt](llm/prompt/analyzer.md) and combine planning/memory tools like [sequential-thinking](https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking) in your AI agent.

## Use ABCoder as an Agent (WIP)

You can also use ABCoder as a command-line Agent like:

```bash
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:

```bash
$ 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 |
| JS/TS | ✅ | Coming Soon |
| Java | ✅ | 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:
- [Parser Extension](docs/parser-zh.md)

> Note: This is a dynamic README and is subject to changes as the project evolves.

# Contact Us
- How to become a member: [COMMUNITY MEMBERSHIP](https://github.com/cloudwego/community/blob/main/COMMUNITY_MEMBERSHIP.md)
- Issues: [Issues](https://github.com/cloudwego/abcoder/issues)
- Lark: Scan the QR code below with [Register Feishu](https://www.feishu.cn/en/) to join our CloudWeGo/abcoder user group.

    LarkGroup

# Contributors
Thank you for your contribution to ABCoder!

[![Contributors](https://contrib.rocks/image?repo=cloudwego/abcoder)](https://github.com/cloudwego/abcoder/graphs/contributors)

# License
This project is licensed under the [Apache-2.0 License](LICENSE-APACHE).