- models/: GGUFs (Git LFS), manifest.json, model card, Apache-2.0 LICENSE + NOTICE - extensions/vscode/: the Local Autocomplete extension (v0.5.0, publisher harvmaster) - daemon/: acd completion daemon (bundled into the extension; also runs standalone) - shared/: prompt layout + symbol extraction shared with the training pipeline - scripts/: make-model-release.mjs, publish-extension-release.mjs (Gitea releases) - README with quick start, settings, architecture, build and release instructions; MIT license for code; CHANGELOG The default model manifest URL moves to models/manifest.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
2.0 KiB
Markdown
43 lines
2.0 KiB
Markdown
# Models
|
||
|
||
Q8_0 GGUF fill-in-the-middle models for the [Local Autocomplete](../extensions/vscode) extension, fine-tuned from
|
||
[Qwen2.5-Coder-0.5B](https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B) for **TypeScript, Vue and Node.js**.
|
||
|
||
| model | description | prompt order | context modes | size |
|
||
|---|---|---|---|---|
|
||
| `stage-c` | Suffix-first FIM with repo/symbol-context headers (default) | spm | symbols, simple | 531 MB |
|
||
| `stage-b` | Suffix-first FIM without context headers (previous stage) | spm | raw | 531 MB |
|
||
|
||
The extension reads [`manifest.json`](manifest.json), downloads the selected model once, verifies its SHA-256 and
|
||
runs it locally with llama.cpp. The files are stored with Git LFS; download links use Gitea's `/media/` route:
|
||
|
||
https://git.harvmaster.com/Harvmaster/autocomplete-model/media/branch/main/models/<file>
|
||
|
||
## Evaluation (612 held-out samples from private repos the model never saw, suffix-first prompts)
|
||
|
||
| | exact match | edit similarity | still parses |
|
||
|---|---:|---:|---:|
|
||
| Qwen2.5-Coder-0.5B (base) | 0.270 | 0.506 | 0.783 |
|
||
| Qwen2.5-Coder-1.5B (base) | 0.366 | 0.623 | 0.882 |
|
||
| `stage-b` | 0.391 | 0.689 | 0.952 |
|
||
| `stage-c` (with symbol context) | 0.397 | 0.681 | 0.954 |
|
||
|
||
The base models were evaluated in their native prefix-first order (they can't do suffix-first). Suffix-first prompts
|
||
let the editor reuse the KV cache while typing: about 2 tokens re-processed per keystroke, ~90–100 ms end-to-end on a
|
||
laptop CPU.
|
||
|
||
## Using the files directly
|
||
|
||
Any llama.cpp-based runtime works, but the prompt must match the training layout. The
|
||
[daemon](../daemon) and [`shared/prompt.ts`](../shared/prompt.ts) are the reference.
|
||
Suffix-first (`spm`) order:
|
||
|
||
<|fim_prefix|><|fim_suffix|>{suffix}<|fim_middle|>{prefix} → model generates the middle, then <|endoftext|>
|
||
|
||
`stage-c` additionally expects a repo-level header: `<|repo_name|>{repo}\n<|file_sep|>{path}\n`, optionally with a
|
||
`__symbols__.d.ts` pseudo-file of available symbols before it.
|
||
|
||
## License
|
||
|
||
Apache-2.0 ([LICENSE](LICENSE), [NOTICE](NOTICE)), as a derivative of Qwen2.5-Coder.
|