Skip to content

fix(picker): surface Kimi Coding k3 when searching kimi across all pickers (salvage of #67409) - #68153

Merged
teknium1 merged 4 commits into
mainfrom
fix/kimi-k3-search-alias
Jul 27, 2026
Merged

fix(picker): surface Kimi Coding k3 when searching kimi across all pickers (salvage of #67409)#68153
teknium1 merged 4 commits into
mainfrom
fix/kimi-k3-search-alias

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Typing "kimi" in any model picker now finds Kimi Coding's flagship, which is live-discovered under the bare wire id k3 — previously every picker surface (CLI curses, TUI, dashboard, desktop) fuzzy-filtered on the wire id alone, so the flagship vanished from "kimi" searches while every kimi-* sibling matched.

Salvages #67409 (@HexLab98) onto current main with one follow-up fix.

Changes

Cherry-picked (authorship preserved):

  • New picker-only search-alias layer: hermes_cli/model_search.py + model-search-text.ts mirrored in ui-tui / web / desktop (k3kimi-k3 / kimi), with keep-in-sync headers
  • search_labels haystack support threaded through curses_radiolist so the CLI setup picker benefits too
  • Wire id never changes; no static catalog entry for k3 (respects the feat(models): add k3 to kimi-coding and kimi-coding-cn model lists #65969 rejection — discovery stays endpoint-scoped)
  • Python + TUI test coverage

Follow-up fix (ours):

Validation

Check Result
Python suites (search, dedup, preferred-merge, models, catalog, curses fuzzy) 160 passed, 0 failed
TUI vitest model-search-text.test.ts 5/5
web tsc --noEmit clean
E2E haystack (Python + TS parity) k3"k3 kimi-k3 kimi", non-alias ids identity
E2E picker merge (Coding Plan key, live k3) one k3-family row (kimi-k3), live-only models retained

Infographic

kimi-k3-search-alias

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard comp/desktop Electron desktop app (apps/desktop/*) comp/tui Terminal UI (ui-tui/ + tui_gateway/) comp/dashboard Web dashboard / control panel UI (dashboard/, landing) provider/kimi Kimi / Moonshot labels Jul 20, 2026
@teknium1
teknium1 force-pushed the fix/kimi-k3-search-alias branch from c7102e4 to 3d97929 Compare July 27, 2026 01:33
@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on a82c15c

all good!

HexLab98 and others added 4 commits July 26, 2026 21:00
Kimi Coding discovers the flagship as wire id `k3`. Picker search used
only that id, so typing "kimi" hid it next to every other kimi-* model.
Add picker-only search aliases without changing the wire id.
Assert the picker haystack keeps ordinary ids unchanged, surfaces wire
id k3 for "kimi"/"k3" queries, and accept search_labels in curses mocks.
Follow-up to the salvaged #67409 search aliases: with kimi-k3 now in
the curated kimi-coding list (#68108), a Coding Plan key rendered TWO
rows for one model — curated 'kimi-k3' plus live-discovered bare 'k3'
(merge dedup was exact-string). Add model_alias_canonical() derived
from the same alias table and use it as the merge dedup key, so the
curated public slug wins and live-only models still surface.
@teknium1
teknium1 force-pushed the fix/kimi-k3-search-alias branch from 3d97929 to a82c15c Compare July 27, 2026 04:03
@teknium1
teknium1 merged commit 91d69c4 into main Jul 27, 2026
48 checks passed
@teknium1
teknium1 deleted the fix/kimi-k3-search-alias branch July 27, 2026 04:22
zengzheqing pushed a commit to zengzheqing/hermes-agent that referenced this pull request Aug 19, 2026
Kimi Coding Plan's flagship is configured/discovered as the bare wire id
k3 while the curated picker catalog carries the public slug kimi-k3. The
catalog merge already dedups k3 into kimi-k3 via model_alias_canonical
(NousResearch#68153), but the post-pass that injects the active model into its
provider row used an exact-string membership check. With model.default:
k3 the row only contains kimi-k3, so the bare id was re-injected and the
picker rendered the same model twice ("K3" + "Kimi K3") across every
surface consuming list_authenticated_providers() (CLI/TUI/dashboard/
desktop/gateway pickers, MoA slot pickers).

Extract the post-pass into _inject_current_model_row() and fold both
sides through the same alias canonicalisation before deciding to
inject. Genuine uncurated models are still prepended; distinct live ids
(k3-256k) are not folded.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/desktop Electron desktop app (apps/desktop/*) comp/tui Terminal UI (ui-tui/ + tui_gateway/) P3 Low — cosmetic, nice to have provider/kimi Kimi / Moonshot type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants