Custom skills are not listed in turn input while host skills are in World State

Aperta Adatta ai principianti
#60,287 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
70/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
tooling

Direzione di ricerca

Il salto avviene nella funzione contribute in codex-rs/ext/skills/src/extension.rs, dove la guardia include_instructions && !host_catalog_in_world_state sopprime l'elenco nell'input del turno anche per le fonti personalizzate. Inizia leggendo quella guardia e il modo in cui le voci del catalogo portano authority.kind, poi controlla i test esistenti dell'estensione skills e i test skills_extension del core. Il lavoro è completo quando le skill personalizzate compaiono nell'input del turno mentre le skill dell'host restano solo in World State, e il comportamento senza fonte personalizzata è invariato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug skills
What issue are you seeing?

While the host skill catalog is listed through World State, the turn-input skills listing is skipped entirely, including skills from custom sources (SkillSourceKind::Custom). Custom skills then appear only in the initial context, and a custom catalog that changes during a thread doesn't reach the model until the initial context is rebuilt, e.g. after compaction. Explicit $skill mentions still resolve.

What steps can reproduce the bug?
  1. Install the skills extension with a host provider and a custom source:
    SkillProviders::new().with_host_provider(host).with_provider(SkillProviderSource::new(SkillSourceKind::Custom("embedder".into()), "embedder", custom))
  2. Run a turn with a HostSkillsSnapshot, so the host catalog is rendered into the host_skills World State section.
  3. The turn input contains no skills listing.
What is the expected behavior?

Host skills are listed only by World State. Custom skills are still listed in turn input, as they are when host skills aren't in World State.

Additional information

Seen on main at 748ab55ca7, using codex-rs as an embedded library.

The cause is this guard in contribute in codex-rs/ext/skills/src/extension.rs, added in #33425 so host skills aren't listed twice:

if config.include_instructions && !host_catalog_in_world_state {

World State doesn't list custom skills, so they should not be skipped with the host ones. A possible fix keeps the existing filter and still renders turn input while custom entries remain:

let lists_turn_skills = !host_catalog_in_world_state
    || catalog
        .entries
        .iter()
        .any(|entry| matches!(entry.authority.kind, SkillSourceKind::Custom(_)));
if config.include_instructions && lists_turn_skills {

Without a custom source, nothing changes.

Related: #60288, which proposes listing custom catalogs through World State and would also fix this.

A fix is available in https://github.com/fpedd/codex/pull/1, which narrows the guard as shown above and leaves behavior without a custom source unchanged. It includes a test that fails without the change, and the existing skills extension and core skills_extension tests give the same results as on main.

Lingua principale
Rust
Stelle
133k
Fork
21.1k
Merge medio
1m
PR unite (30g)
995

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di openai/codex

Tutte le issue di openai/codex

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.