fix(models): surface Kimi Coding k3 when searching kimi - #67409
Conversation
1da5fbf to
307a166
Compare
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.
df2ce32 to
0a7dfab
Compare
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.
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.
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.
GottZ
left a comment
There was a problem hiding this comment.
This was generated by AI during triage.
Summary
Two PRs address the same picker-search failure: #67409 adds picker-only aliases so the live k3 wire ID matches “kimi” across CLI, TUI, web, and desktop, while #68153 carries that fix onto current main and additionally deduplicates live k3 against curated kimi-k3.
Related pull requests
- #67409
related— (+243/-8) — superseded duplicate: Adds synchronizedk3search aliases across all picker surfaces without changing the wire ID or adding a static catalog entry, directly addressing the reported search failure. Its implementation was salvaged into #68153, whose diff also handles the resultingk3/kimi-k3duplicate-row case. - #68153 [merged]
duplicate— (+354/-12) — merged reference implementation: Preserves #67409’s cross-picker search-alias fix and adds canonical alias-based merge deduplication so curatedkimi-k3and livek3do not appear as two rows; it remains relevant because it is the merged implementation that supersedes #67409.
Duplicates
#67409 and #68153 implement substantially the same cross-picker k3 ↔ kimi search-alias change; #68153 is the superseding version with additional alias-aware deduplication.
Suggested consolidation
Close #67409 as duplicate of #68153: #68153 explicitly salvages its picker-search fix, includes the same affected surfaces and tests, and extends it with regression coverage and canonical deduplication for k3 versus kimi-k3. The duplicate chain is #67409 → #68153, with #68153 already serving as the merged reference implementation.
Complex graph
flowchart LR
classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
classDef best stroke-width:3px,stroke:#b45309
classDef target stroke-width:3px,stroke:#4338ca
subgraph Dup67409 ["PRs duplicating each other"]
P67409["PR #67409 (open)"]
P68153["PR #68153 (merged)"]
end
class P67409 open
class P68153 merged
class P67409 target
click P67409 "https://github.com/NousResearch/hermes-agent/pull/67409"
click P68153 "https://github.com/NousResearch/hermes-agent/pull/68153"
Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label).
Cross-PR triage: Reviewed 2 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 37 kB of PR diffs, 3 kB of issue/PR text, <1 kB of discussion (2 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.
Follow-up to the salvaged NousResearch#67409 search aliases: with kimi-k3 now in the curated kimi-coding list (NousResearch#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.
Summary
k3(notkimi-k3). Model pickers (dashboard MoA / Change, TUI, CLI, desktop) fuzzy-filtered on that id only, so typing kimi hidk3while every siblingkimi-*model stayed visible.k3↔kimi-k3/kimi) without changing the wire id or puttingk3in the static catalog (that approach was deliberately rejected in feat(models): add k3 to kimi-coding and kimi-coding-cn model lists #65969 / feat(kimi): discover K3 on the Kimi Coding endpoint (salvage #65725) #65922).Test plan
scripts/run_tests.sh tests/hermes_cli/test_model_search.py tests/hermes_cli/test_curses_ui_fuzzy_rank.py -qcd ui-tui && npm test -- --run src/lib/model-search-text.test.tskimi→ confirmk3appearsk3→ still finds itk3still only appears via live discovery (not a static catalog entry)