Skip to content

feat: Voyage-4-Nano backend + project-scoped coding "walking mode" (#758) - #759

Closed
igun997 wants to merge 5 commits into
codecoradev:developfrom
igun997:feat/voyage-coding-mode-walking-ui
Closed

feat: Voyage-4-Nano backend + project-scoped coding "walking mode" (#758)#759
igun997 wants to merge 5 commits into
codecoradev:developfrom
igun997:feat/voyage-coding-mode-walking-ui

Conversation

@igun997

@igun997 igun997 commented Jul 21, 2026

Copy link
Copy Markdown

Closes #758

Implements both asks from #758: (1) an optional large-context local model, and (2) a project-scoped "walking mode" that lets a coding agent navigate a codebase file-to-file with precise file:line provenance instead of fragmented summaries.


Before → After

Dimension Before (develop) After (this PR)
Embedding model EmbeddingGemma-300M only (768d, ~2k ctx) EmbeddingGemma or Voyage-4-Nano (2048d, 32k ctx) — local ONNX, selectable in config
Store scoping Single global store (~/.uteke) DB-per-repo: project .uteke/ auto-scoped by cwd; global store still used outside repos
Code awareness Prose/markdown memories only Code indexing: source tree → chunked memories with file:line, incremental via content hash
Chunking Regex heuristics tree-sitter AST (rust/go/py/ts/js/java/c/cpp) with regex fallback
Recall on code Summary fragments, no location Exact symbol + file:line, jump-to-definition ready
Onboarding General memory only Coding-vs-general usage-mode prompt; coding defaults to Voyage + per-project store
Visibility CLI text only uteke ui: single-binary local web UI — live chunking feed + zero-dep WebGL 3D code graph
Config Global file Layered: CLI args > project .uteke/uteke.toml > global > defaults
MCP memory tools + uteke_index / uteke_index_status for agents
Agent flow recall summaries walk file-to-file, build a persistent project "mental map"

Recall, before vs after (same repo)

Before — no code in the store; a query like "how does treesitter AST chunking work" returns nothing actionable.
After — top hits are the exact functions, correctly ranked, each with file:line:

1. (1.000) function collect_chunk   [crates/uteke-core/src/chunker_ts.rs:182-219]
2. (0.984) function chunk_code_ts   [crates/uteke-core/src/chunker_ts.rs:156-176]
3. (0.968) function chunk_code      [crates/uteke-core/src/chunker.rs:303-316]

What's in it

Embedding (#758 part 1)

  • Multi-model ONNX engine; Voyage-4-Nano (qwen3, q4, dim 2048, pre-pooled) as a local, offline alternative to Gemma — no cloud API.
  • Hardened the OpenAI embedder against the 8192-token limit (char budget + shrink-and-retry).

Walking mode (#758 part 2)

  • code_index engine: walks a tree, chunks each file, stores chunks as recallable memories with file:line.
  • tree-sitter AST grammars with regex fallback; unsafe stays isolated in grammar crates (unsafe_code = "forbid" in consumer code).
  • Incremental: indexed_files table + content hashing; only changed files re-embed; deleted files pruned.
  • DB-per-repo isolation via layered config, auto-scoped by cwd.

Surface area

  • CLI: uteke init --project, streaming uteke index [PATH], uteke index --status, coding-vs-general onboarding.
  • uteke ui: single Rust binary, embedded HTML, zero npm/offline; live IndexProgress feed + WebGL 3D force-directed graph (orbit/zoom/pan, depth-shaded glow nodes, hover to file:line).
  • MCP: uteke_index, uteke_index_status.

Verification

  • Build green with --features treesitter.
  • Tests: uteke-core 394 (treesitter), uteke-cli 55 — all passing.
  • End-to-end recall verified on this repo (see table above).

Notes for reviewers

  • Schema migration v15 -> v16 adds indexed_files (idempotent, existing DBs auto-migrate).
  • Per-repo store DB/index artifacts are gitignored; the small .uteke/uteke.toml project config is intended to travel with the repo.
  • Voyage scores compress into ~0.96-1.0 (qwen3 anisotropy) — ranking is correct, but absolute scores aren't a usable threshold. Per-backend dedup tuning is a sensible follow-up.
  • Both features are additive; default behavior (Gemma, global store, prose memories) is unchanged unless coding mode is selected.

igun997 added 5 commits July 21, 2026 13:19
…mit guard

Introduce a multi-model ONNX engine supporting Voyage-4-Nano (qwen3, q4,
dim 2048, 32k context) as a local alternative to EmbeddingGemma, per codecoradev#758.
Also guard the OpenAI embedder against the 8192-token context limit via a
conservative char budget plus shrink-and-retry on context-length 400.
Add an indexed_files tracking table (schema v15->v16 migration) for
incremental code indexing, plus supporting CRUD. Guard the batch memory-edge
insert against ghost endpoints (orphaned usearch vectors) so auto-linking can
never trip a FOREIGN KEY constraint and abort the batch.
Add source-tree indexing that chunks code into recallable memories with
file:line provenance (codecoradev#758 walking mode). Chunking uses tree-sitter AST
grammars (rust/go/python/typescript/javascript/java/c/cpp) with a regex
fallback, streamed via IndexProgress events, and is incremental via
content hashing against the indexed_files table.
Add layered config (CLI > project .uteke/uteke.toml > global > defaults) with
DB-per-repo isolation auto-scoped by cwd, `uteke init --project`, a streaming
`uteke index` command, and a coding-vs-general usage-mode onboarding prompt
(codecoradev#758). Add `uteke ui`: a single-binary local web UI streaming live chunking
progress and rendering a zero-dependency WebGL 3D force-directed code graph.
… store

Expose uteke_index and uteke_index_status MCP tools so agents can trigger and
inspect code indexing (codecoradev#758). Document the code-indexing workflow and `uteke ui`
in the skill guide, and gitignore per-repo project store DB/index artifacts.
@ajianaz ajianaz closed this Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Add Voyage-4-Nano as an optional model and implement project-scoped "walking mode" for coding agents

2 participants