Recipes

little-coder: 소형 LLM에 맞춰 튜닝된 로컬 모델 코딩 에이전트 스캐폴드

README 링크에서 발견 · yesterday

Research & KnowledgeSoftware & DevOps

로컬 소형 모델에 맞춰 튜닝된 30개의 확장 기능과 스킬을 갖춘 pi 기반 코딩 에이전트

What they did

그들은 pi(에이전트 루프, 멀티 프로바이더 API, TUI, 세션 트리, 컴팩션, 확장 모델을 갖춘 최소한의 에이전트 기반) 위에 계층화된 코딩 에이전트 스캐폴드인 little-coder를 만들었습니다. pi를 포크하는 대신 pi를 일반 의존성으로 유지하고 little-coder에 특화된 모든 것을 .pi/extensions/, skills/, benchmarks/ 아래에 두었습니다. 대략 30개의 확장, 30개의 스킬 마크다운 파일, 그리고 Python 벤치마크 하네스입니다. 런처는 --no-extensions로 pi를 실행하고 정확히 번들된 세트만 연결하여 콜드 스타트 컨텍스트를 약 7k 토큰 근처로 유지하고 동작을 예측 가능하게 만듭니다. 즉, 로드되는 세트가 곧 배포되는 세트입니다. 그들은 이 스캐폴드를 특히 소형 로컬 모델에 맞게 튜닝했으며, 기본값으로 Qwen3.6-35B-A3B를 호스팅하는 로컬 llama.cpp 서버를 사용하고, 9.7B Qwen이 Aider Polyglot에서 프런티어 항목들을 이긴 연구 스토리를 문서화했습니다. 그들은 Plan Mode(ctrl+q 또는 --plan-mode) 같은 대화형 기능을 추가했는데, 여기서 에이전트는 서브 코더들과 함께 조사하고, 1-3개의 명확화 질문을 하고, 편집하는 대신 계획을 작성합니다. 승인하면 .pi/approved-plan.md에 저장되고, /implement는 계획으로 시드된 새 세션을 열어 조사와 Q&A가 구현 컨텍스트를 소비하지 않도록 합니다. 그들은 또한 옵트인 확장 탈출구도 제공했습니다. 사용자 확장 디렉터리, 추가 확장 파일을 가리키는 환경 변수, 그리고 --with-pi-extensions 플래그입니다.

How it went

한 줄 설치(curl 또는 npm/bun global)로 배포되며, 클론이나 워크스페이스 npm install 없이 설치되고 little-coder는 어느 디렉터리에서든 작동하도록 PATH에 등록됩니다. 이 스캐폴드 덕분에 9.7B Qwen이 Aider Polyglot에서 프런티어 항목들을 이길 수 있었다고 하며, 설계상 콜드 스타트 컨텍스트를 약 7k 토큰으로 유지하고 확장 로딩을 예측 가능하게 합니다. Plan Mode와 /implement는 일급 워크플로로 문서화할 수 있을 만큼 다듬어졌고, 프로젝트에는 전체 확장 가이드와 Substack 글도 포함되어 있습니다.

Worth knowing

bun으로 설치한 경우에도 Node.js 22.19+가 필요합니다. 런처가 node shebang을 사용하는 Node 스크립트이기 때문입니다. 런처가 --no-extensions를 전달하므로, 전역으로 pi install된 패키지는 기본적으로 로드되지 않습니다. ~/.config/little-coder/extensions/, LITTLE_CODER_EXTRA_EXTENSIONS, 또는 --with-pi-extensions를 사용해야 합니다. 표준 설정은 Qwen3.6-35B-A3B를 호스팅하는 로컬 llama.cpp 서버를 전제로 하며, 이는 별도의 서빙 설정이 필요합니다. pi의 --agent-import-path, --mode rpc, .pi/extensions/ 자동 탐색 모델에 대한 이해를 전제로 합니다.

Wiring

curl install.sh | bash, npm install -g little-coder, 또는 bun add -g little-coder로 설치하세요. Node 22.19+가 PATH에 있어야 합니다. 작업 디렉터리로 사용하려는 프로젝트 디렉터리에서 `little-coder`를 실행하세요 — Read/Write/Edit/Bash는 설치 경로가 아닌 해당 디렉터리에서 동작합니다. 인자 없이 실행하면 models.json에 선언된 기본 모델("default": "llamacpp/qwen3.6-35b-a3b")을 사용하며, 시작 시 출력됩니다. 기본값은 첫 실행에만 적용되고, 세션 내에서 선택한 모델이 유지됩니다. --model(예: llamacpp/qwen3.6-35b-a3b, anthropic/claude-haiku-4-5, ollama/qwen3.5, lmstudio/local-model)로 재정의하거나 사용자 오버라이드 파일에 default 키를 설정하세요. 런처는 pi를 --no-extensions로 호출하고 .pi/extensions/ 및 skills/의 번들 세트를 연결합니다. 확장 로딩은 ~/.config/little-coder/extensions/, LITTLE_CODER_EXTRA_EXTENSIONS 환경 변수, 또는 --with-pi-extensions를 통해 확장할 수 있으며, /extensions로 로드된 항목을 확인할 수 있습니다. Plan Mode는 ctrl+q 또는 --plan-mode / LITTLE_CODER_PLAN_MODE=1로 전환되며, 계획을 승인하면 .pi/approved-plan.md가 작성되고, /implement는 계획으로 시드된 새 세션에서 액션 모델로 전환합니다.

Try it yourself

I can't run commands or install packages for you, but here's exactly how to do each step yourself.

## 1. Install little-coder globally

```bash
npm install -g little-coder
```

Requires Node 22.19+. Verify with `node --version` first.

## 2. List available models

From your repo root:

```bash
little-coder --list-models
```

This prints the models little-coder knows about. Look for a local llama.cpp entry (often named something like `llama.cpp/Qwen3.6-35B-A3B` or a custom alias you configured).

## 3. Launch against your project

**If you have a local llama.cpp Qwen3.6-35B-A3B server running** (e.g. `llama-server` on `http://localhost:8080`), point little-coder at it:

```bash
little-coder --model llama.cpp/Qwen3.6-35B-A3B
```

(Use the exact identifier shown by `--list-models`. If your llama.cpp endpoint isn't auto-detected, you may need to set the base URL via config or an env var such as `LITTLE_CODER_BASE_URL=http://localhost:8080/v1` — check `little-coder --help` for the flag name in your version.)

**If you don't have one served**, tell me which model from the `--list-models` output you want to use, and I'll tailor the rest of the workflow to it.

## 4. Plan Mode workflow

Once launched, in the interactive session:

1. Switch to **Plan Mode** (usually `/plan` or a mode toggle — check `/help`).
2. Ask it to research the codebase using sub-coders, e.g.:
   > Use sub-coders to map the repo: entry points, main modules, test setup, and any build/config files. Summarize findings; do not edit anything.
3. It will ask you 1–3 clarifying questions with suggested answers — answer them.
4. It writes the plan **in chat only**, no file edits.

## 5. Save the approved plan and implement

After you approve the plan in chat:

```
Save the approved plan to .pi/approved-plan.md
```

Then:

```
/implement
```

This opens a fresh session seeded with `.pi/approved-plan.md` and begins the work.

## 6. Confirm bundled extensions

```
/extensions
```

This lists which bundled extensions loaded. Review the output to confirm the default set is active.

## 7. Add your own extensions without changing defaults

Drop your extension files into:

```
~/.config/little-coder/extensions/
```

little-coder loads user extensions from this directory **in addition to** the bundled set — the defaults are untouched. Typical layout:

```
~/.config/little-coder/extensions/
└── my-extension/
    ├── manifest.json   (or package.json, depending on version)
    └── index.js        (or index.ts)
```

Restart the session (or re-run `/extensions`) to confirm your extension appears alongside the bundled ones. If it doesn't load, check `little-coder --help` or the docs for the exact manifest schema your version expects.

---

If you paste the output of `little-coder --list-models` and `/extensions`, I can help you pick the right model identifier and verify your extension is being picked up.

Source

English

Tools in this stack