Skip to content

config: onboarding.provider_suffix_map 등 4개 키가 런타임에서 전혀 읽히지 않음 — 레지스트리 하드코딩(-gm)이 yaml(-gem)을 조용히 이김 #5717

Description

@itismyfield

증상

agentdesk.yamlonboarding 절(config.rs:2628 OnboardingConfig)에 값을 적어도 런타임이 전혀 읽지 않는다. 운영 yaml 현재 값:

onboarding:
  guild_id: 1469870512812462284
  default_categories: {content: …, cookingheart: …, dev: …, notify: …, yunhone: …}
  provider_suffix_map: {-cc: claude, -cdx: codex, -gem: gemini, -qw: qwen}
  default_provider: claude
  • config.onboarding.*를 읽는 코드가 src/config.rs 밖에 0곳이다 (rg "config\.onboarding" 기준). src/services/onboarding/*config.discord.guild_idconfig.agents만 본다.
  • 소비자 메서드 OnboardingConfig::provider_from_channel_suffix(config.rs:2694)와 resolve_category(:2727)는 #[allow(dead_code)]이고 호출처 0.
  • 실제 접미사→provider 매핑은 src/services/provider/registry.rs:243-413channel_suffix 상수(-cc, -cdx, -gm, -oc, -qw, -gx)이며 dispatch_channel.rs:65cli/run.rs:758ProviderKind::from_channel_suffix로 이 상수만 쓴다.

증거: yaml은 gemini 접미사를 -gem으로 적었지만 레지스트리는 -gm이다. 운영자는 -gem이 동작한다고 믿고 있고 실제로는 -gm만 동작한다. 오류도 경고도 없다.

결정 (사용자, 2026-09-05)

하드코딩을 없애고 yaml을 진짜 설정으로 연결한다. (대안이었던 "yaml 절 삭제 + 코드 정본 문서화"는 기각. provider가 늘어나는 중이라 코드 수정 없이 접미사를 바꿀 수 있어야 한다.)

수정

  1. ProviderKind::from_channel_suffix가 레지스트리 상수 대신 설정에서 병합된 접미사 표를 본다. 병합 규칙: 레지스트리 기본값 위에 onboarding.provider_suffix_map을 덮어쓴다(키 추가·변경·null로 제거). 기본값이 남아 있어야 yaml이 비어도 오늘과 동일하게 동작한다.
  2. default_provider도 같은 경로로 ProviderKind::default_channel_provider()에 반영.
  3. default_categories는 소비자가 없으므로 resolve_category를 실제 호출처(온보딩 채널 생성 services/onboarding/channel.rs)에 연결하거나, 이번 범위에서 빼고 별도 이슈. 설계 시 판단하되 dead_code 허용은 남기지 않는다.
  4. 부팅 시 검증: provider_suffix_map의 값이 알려진 provider id가 아니거나(오타), 접미사가 다른 접미사의 접미사인 경우(예: -c-cc) WARN. deny_unknown_fields를 이 절에 붙여 오타 키를 조기 거부.
  5. 운영 yaml의 -gem-gm 정정 또는 -gem을 추가 접미사로 등록 (배포 시 결정).

완료 정의

  • yaml에 접미사를 추가·변경하면 재시작 후 그 접미사 채널이 해당 provider로 디스패치된다 (통합 테스트 + 운영 실측 1건)
  • yaml onboarding 절이 비어 있을 때 동작이 오늘과 바이트 동일 (레지스트리 기본값 테스트)
  • config.rs#[allow(dead_code)]가 붙은 OnboardingConfig 메서드 0개
  • 알 수 없는 provider id·오타 키에 부팅 WARN 또는 거부
  • README 설정 표에 onboarding.provider_suffix_map 병합 규칙 명시

관련

  • 인벤토리 CFG T2 (설정 키 ↔ 소비자 대조), docs/source-of-truth.md
  • 기준: main 01c0c078d8

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:project-agentdeskAuto-assign follow-up work to project-agentdeskbugSomething isn't workingpriority:P1P1: high

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions