NanoCoder

agent
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested
Purpose
This project is a minimalist, educational AI coding agent written in Python. Inspired by Andrej Karpathy's nanoGPT, it serves as a blueprint that distills the complex architecture of Claude Code into a highly readable ~1,300-line framework, allowing developers to easily read, fork, and build their own coding agents.

Security Assessment
Overall Risk: Low. The light code scan of 12 files found no dangerous patterns and confirmed there are no hardcoded secrets or malicious code. However, by its very nature as a coding agent, the tool does process user inputs and executes shell commands to perform file edits and run code. It also makes standard external network requests to connect to OpenAI-compatible LLM APIs (such as OpenAI, Claude, or local Ollama instances). Standard environment variables are used for API authentication, which is a safe practice.

Quality Assessment
The codebase is distributed under the highly permissive MIT license and is clearly documented with a detailed, bilingual README. The repository is actively maintained, with the most recent push occurring today. The only notable drawback is its extremely low community visibility—the project currently has only 5 GitHub stars. While this indicates it is an early-stage or niche personal project, its educational value and clean code structure remain high.

Verdict
Safe to use. The clean code scan, active maintenance, and MIT license make it a trustworthy educational tool and starting point for developers, though its low community engagement means it is best suited for personal or experimental use rather than production environments.
SUMMARY

Minimal AI coding agent (~950 LoC Python) inspired by Claude Code. Works with any LLM. Think nanoGPT for coding agents.

README.md

NanoCoder

PyPI
Python
License: MIT
Tests

中文 | English | Claude Code Architecture Deep Dive (7 articles)

512,000 lines of TypeScript → 1,300 lines of Python.

I spent a weekend reverse-engineering the leaked Claude Code source — all half a million lines. Then I stripped it down to the load-bearing walls and rebuilt them in Python. The result: every key architectural pattern from Claude Code, in a codebase you can read in one sitting.

NanoCoder is not another AI coding tool. It's a blueprint — the nanoGPT of coding agents. Read it, fork it, build your own.


$ nanocoder -m kimi-k2.5

You > read main.py and fix the broken import

  > read_file(file_path='main.py')
  > edit_file(file_path='main.py', ...)

--- a/main.py
+++ b/main.py
@@ -1 +1 @@
-from utils import halper
+from utils import helper

Fixed: halper → helper.

What You Get

Claude Code's 512K lines distilled to 7 patterns that actually matter:

Pattern Claude Code NanoCoder
Search-and-replace editing (unique match + diff) FileEditTool tools/edit.py — 70 lines
Parallel tool execution StreamingToolExecutor (530 lines) agent.py — ThreadPool
3-layer context compression HISTORY_SNIP → Microcompact → CONTEXT_COLLAPSE context.py — 145 lines
Sub-agent with isolated context AgentTool (1,397 lines) tools/agent.py — 50 lines
Dangerous command blocking BashTool (1,143 lines) tools/bash.py — 95 lines
Session persistence QueryEngine (1,295 lines) session.py — 65 lines
Dynamic system prompt prompts.ts (914 lines) prompt.py — 35 lines

Every pattern is a real, runnable implementation — not a diagram or a blog post.

Install

pip install nanocoderagent

Pick your model — any OpenAI-compatible API works:

# Kimi K2.5
export OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://api.moonshot.ai/v1
nanocoder -m kimi-k2.5

# Claude Opus 4.6 (via OpenRouter)
export OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://openrouter.ai/api/v1
nanocoder -m anthropic/claude-opus-4-6

# OpenAI GPT-5
export OPENAI_API_KEY=sk-...
nanocoder -m gpt-5

# DeepSeek V3
export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://api.deepseek.com
nanocoder -m deepseek-chat

# Qwen 3.5
export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
nanocoder -m qwen-max

# Ollama (local)
export OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1
nanocoder -m qwen3:32b

# One-shot mode
nanocoder -p "add error handling to parse_config()"

Architecture

The whole thing fits in your head:

nanocoder/
├── cli.py            REPL + commands               160 lines
├── agent.py          Agent loop + parallel tools    120 lines
├── llm.py            Streaming client + retry       150 lines
├── context.py        3-layer compression            145 lines
├── session.py        Save/resume                     65 lines
├── prompt.py         System prompt                   35 lines
├── config.py         Env config                      30 lines
└── tools/
    ├── bash.py       Shell + safety + cd tracking    95 lines
    ├── edit.py       Search-replace + diff            70 lines
    ├── read.py       File reading                     40 lines
    ├── write.py      File writing                     30 lines
    ├── glob_tool.py  File search                      35 lines
    ├── grep.py       Content search                   65 lines
    └── agent.py      Sub-agent spawning               50 lines

Use as a Library

from nanocoder import Agent, LLM

llm = LLM(model="kimi-k2.5", api_key="your-key", base_url="https://api.moonshot.ai/v1")
agent = Agent(llm=llm)
response = agent.chat("find all TODO comments in this project and list them")

Add Your Own Tools (~20 lines)

from nanocoder.tools.base import Tool

class HttpTool(Tool):
    name = "http"
    description = "Fetch a URL."
    parameters = {"type": "object", "properties": {"url": {"type": "string"}}, "required": ["url"]}

    def execute(self, url: str) -> str:
        import urllib.request
        return urllib.request.urlopen(url).read().decode()[:5000]

Commands

/model <name>    Switch model mid-conversation
/compact         Compress context (like Claude Code's /compact)
/tokens          Token usage
/save            Save session to disk
/sessions        List saved sessions
/reset           Clear history
quit             Exit

How It Compares

Claude Code Claw-Code Aider NanoCoder
Code 512K lines (closed) 100K+ lines 50K+ lines 1,300 lines
Models Anthropic only Multi Multi Any OpenAI-compatible
Readable? No Hard Medium One afternoon
Purpose Use it Use it Use it Understand it, build yours

The Deep Dive

I wrote 7 articles breaking down Claude Code's architecture — the agent loop, tool system, context compression, streaming executor, multi-agent, and 44 hidden feature flags. If you want to understand why NanoCoder is designed this way, start there.

License

MIT. Fork it, learn from it, ship something better. A mention of this project is appreciated.


Built by Yufeng He · Agentic AI Researcher @ Moonshot AI (Kimi)

Claude Code Source Analysis — 170K+ reads, 6000 bookmarks on Zhihu

Yorumlar (0)

Sonuc bulunamadi