Skip to content

simuleite/abcoder

 
 

Repository files navigation

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

ABCoder

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

Claude Code Integration

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.

Setup

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-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 <problem_desc> 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 <task_name> to create a coding task(specification)
  4. Recheck the task using /abcoder:recheck <task_name> 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 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 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

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

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

Watch the demo video here

Use ABCoder as a Skill

The Skill interface provides native Claude Code integration without MCP protocol overhead. It uses Claude Code's built-in skill system for a more streamlined workflow.

Setup

The Skill is automatically configured when you run abcoder init-spec. The skill definitions are located in internal/cmd/assets/.claude/skills/.

Available Tools

Tool Description
list_repos List all available repositories
tree_repo Get repository file structure
get_file_structure Get all symbols in a file
get_file_symbol Get symbol details with dependencies and references
search_symbol Search symbols by name pattern

Usage Example

# List all repositories
abcoder cli list_repos

# Get repository file tree
abcoder cli tree_repo 'repo_name'

# Get file structure
abcoder cli get_file_structure 'repo_name' 'path/to/file.go'

# Get symbol details
abcoder cli get_file_symbol 'repo_name' 'path/to/file.go' 'SymbolName'

# Search symbols
abcoder cli search_symbol 'repo_name' 'Pattern*'

For Claude Code integration, the skill tools are invoked directly via slash commands like /abcoder:schedule.

Use ABCoder as a MCP server

  1. Install ABCoder:

    go install github.com/cloudwego/abcoder@latest
  2. Use ABCoder to parse a repository to UniAST (JSON)

    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.

    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
  3. Integrate ABCoder's MCP tools into your AI agent.

    {
        "mcpServers": {
            "abcoder": {
                "command": "abcoder",
                "args": [
                    "mcp",
                    "{the-AST-directory}"
                ]
            }
        }
    }
  4. Enjoy it!

    Try to click and watch the video below:

    MCP

Tips:

Skill vs MCP

ABCoder provides two integration methods with Claude Code:

Feature MCP (mcp__abcoder) Skill (skill__abcoder)
Invocation mcp__abcoder__tool_name skill__abcoder__tool_name
Definition MCP protocol .claude/skills/
Use Case General AI agents Claude Code workflow
Auto Detection - Auto-detect current_repo from cwd
Memory Efficient - Sonic lazy-load, on-demand parsing
Pipeline Support - rg filter, jq extract
Symbol Search - Regex pattern support
Example mcp__abcoder__get_file_symbol skill__abcoder__get_file_symbol

The Skill interface is the recommended approach for Claude Code users, providing a more streamlined workflow:

  • Auto-detect current repo: list_repos automatically detects repos that match current working directory
  • Memory efficient: Uses Sonic for lazy JSON parsing, only loads needed data
  • Pipeline friendly: Output can be piped to rg for filtering or jq for extraction
  • Regex search: search_symbol supports regex patterns to precisely locate symbols

Pipeline Examples:

# Filter current repo(s) only
abcoder cli list_repos | jq '.current_repo'

# Search with regex
abcoder cli search_symbol myrepo "^Get.*User$"

# Filter related file
abcoder cli tree_repo myrepo | rg 'related-file'

# Filter dependencies only
abcoder cli get_file_symbol myrepo src/main.go MyFunc | jq '.node.dependencies'

For detailed usage, see Skill Definitions.

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

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

Contact Us

    LarkGroup

Contributors

Thank you for your contribution to ABCoder!

Contributors

License

This project is licensed under the Apache-2.0 License.

About

deep, reliable and confidential coding-context

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 54.9%
  • TypeScript 43.0%
  • Other 2.1%