AI와 모델
어시스턴트의 능력은 뒷단 모델에 의존하므로 Powerduck은 특정 제공업체에 당신을 고정하지 않습니다. 당신이 모델을 선택해 구성하면 앱이 안전한 로컬 경로로 호출하고 모든 변경은 같은 검토 가능한 카드를 통과합니다.
모델 가져오기
설정에서 어떤 OpenAI 호환 Chat Completions 엔드포인트에든 어시스턴트를 구성합니다.
- 내장 제공업체 프리셋을 선택하거나 사용자 지정 제공업체를 정의.
- 표시 이름, 베이스 URL, API 키, 모델 ID 제공.
- 여러 프로필을 구성하고 선택 가능.
앱은 모델이 특정 제공업체에서 온다고 가정하지 않습니다. 자체 호스팅이나 제3자 OpenAI 호환 엔드포인트도 동일하게 동작해 자체 모델 전략을 가진 팀에 중요합니다.
고급 기능과 우아한 폴백
각 프로필에는 고급 기능 옵션이 있고 기본 켜짐입니다.
- 켜면 앱이 모델의 네이티브 함수 호출을 사용해 도구 카탈로그를 네트워크로 보내 모델이 적절한 도구를 직접 선택해 호출하게 합니다.
- 어떤 엔드포인트가 네이티브 도구 인수를 거부하면——도구 미지원 작은 모델 등——그 엔드포인트가 기억되고 콘텐츠 기반 폴백 프로토콜로 한 번 재시도합니다.
목표는 항상 결과를 반환하는 것입니다. 강력한 모델은 정확한 네이티브 경로를 타고, 도구 미지원 모델은 더 단순한 프로토콜로 강등돼 이 턴을 실패시키지 않습니다. 항상 기본 경로를 써야 하는 프로필에서는 고급 기능을 끌 수 있습니다.
도구 구동 작업에도 경계가 있습니다. 에이전트는 제한된 수의 도구 턴(기본 3)을 실행하고 호출을 중복 제거해 도구가 루프에서 두 번 실행되지 않습니다.
왜 요청을 메인 프로세스로 보내는가
데스크톱 클라이언트에서 완성 요청은 WebView가 아닌 Node 메인 프로세스에서 발행됩니다. 두 가지 구체적 이점이 있습니다.
- 브라우저 CORS 벽 없음. 웹에 적용되는 크로스 오리진 제한이 모델 엔드포인트 호출을 막지 않습니다.
- 프롬프트와 키가 브라우저 콘솔에서 멂. 요청 URL, 인증 헤더, 시스템 프롬프트, 도구 목록이 렌더러 네트워크 패널에 보이지 않습니다.
게이트웨이는 개방 프록시가 아니라 의도적으로 제한됩니다.
- 대상을 검증하고(루프백과 허용 호스트) 헤더를 정제하며 응답 헤더를 통한 응답 분할을 방지합니다.
- 요청은 취소 가능합니다(
ai:cancel).
데스크톱과 Web
같은 어시스턴트가 두 실행 환경에서 동작하고 각각에 맞는 경로를 씁니다.
- 데스크톱(Electron): 능력이 로컬로 import되어 실행되고 완성 요청이 메인 프로세스로 프록시됩니다.
- Web: 같은 워크플로가 HTTP로 실행되고 로컬 모듈이 아닌 서비스 API를 호출합니다.
이것이 앱이 Electron 경로에 더해 Web 호환 경로를 유지하는 이유입니다. 의도 처리와 카드 표현은 일치하고 전송만 실행 환경에 따라 바뀝니다.
의도 식별 방식
의도는 기능마다 키워드를 나열해 처리되지 않습니다. 대신 앱은 명확하고 잘 설명된 도구 카탈로그를 모델에 제시합니 다——각 도구의 ID, 인수, 어떤 정확한 상황에서 쓰는지. 모델이 카탈로그에서 최적 도구를 선택하고 결정론적 호스트가 검증해 실행하며 쓰기 작업은 확인을 요청합니다.
그래서 기능 추가는 더 긴 키워드 목록 유지가 아니라 카탈로그에 도구 추가(와 정확한 기술)를 의미합니다. 같은 카탈로그는 MCP 서버를 통해 외부 에이전트와 공유돼 제품과 다른 도구 간 능력이 정렬됩니다.
프라이버시 자세
- 데스크톱에서 API 키와 프롬프트는 로컬에 유지되고 렌더러에 노출되지 않습니다.
- 각 변경을 검증해 적용하는 것은 모델이 아닌 결정론적 호스트입니다.
- 모든 쓰기는 실행 전 당신의 승인을 받습니다.
관련: 어시스턴트로 설계하기、설정、Cloud 접근 제어.