Capture descriptions: support any OpenAI-compatible vision endpoint
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
Línea de trabajo
Start in packages/cli/src/capture/contentExtractor.ts, focusing on captionImagesWithGemini and the existing OpenRouter request branch. Trace postExtractionPhase to understand credential detection and degraded reporting. Done means custom endpoint credentials are handled as specified, OpenRouter behavior remains unchanged, and the no-credentials guidance mentions the custom endpoint.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
hyperframes capture describes downloaded images only through OpenRouter, Vertex or the Gemini API (captionImagesWithGemini in packages/cli/src/capture/contentExtractor.ts). None of them is reliably reachable from mainland China, and none can point at a self-hosted vision model. Users in that position get the catalog-fallback asset-descriptions.md on every capture, even when they already pay for an OpenAI-compatible vision endpoint or run one locally.
Proposed solution
Bring back the three variables from #1809 on current main: HYPERFRAMES_VISION_BASE_URL, HYPERFRAMES_VISION_API_KEY and HYPERFRAMES_VISION_MODEL.
- All three set: caption through
<base>/chat/completionswith the OpenAI-style request the OpenRouter branch already sends, ahead of OpenRouter, Vertex and Gemini. - Some but not all set: warn naming the missing variables (never echoing values), skip captioning, and report the phase as degraded. Never fall back to another provider.
- OpenRouter shares the same request helper and keeps its URL, auth header and error text unchanged.
postExtractionPhasecounts a complete custom endpoint as vision credentials, and the no-credentials hint mentions it.
I have this ready and will open a PR that links here.
Alternatives considered
A named preset per regional provider. Every one of them speaks the same chat-completions wire format, so a single base-URL setting covers them all and also covers local Ollama and vLLM.
Additional context
The #1809 review called the base-URL approach "the right shape" and asked for one fix: setting only some of the variables fell through silently and could caption through Gemini, the provider the user is trying to avoid. That PR was closed for merge conflicts and inactivity, before Vertex support (#3561) landed in the same function.
To check that the request shape works outside OpenRouter, I sent exactly what the OpenRouter branch builds today (one image_url data URI, the storyboard prompt, max_tokens: 500) to iFlytek Astron's Token Plan, an OpenAI-compatible endpoint (https://maas-token-api.cn-huabei-1.xf-yun.com/v2). The image was docs/images/image-thumbnail-evidence/after.png.
| Model | HTTP | finish | Caption |
|---|---|---|---|
xopkimik26 (Kimi-K2.6) |
200 | stop | A dark gray webpage displays white text reading "Timeline JPEG thumbnail resource check" with a horizontal strip of rainbow-colored vertical bars beneath it. |
xopqwen35397b (Qwen3.5-397B) |
200 | stop | A dark background displays a horizontal strip of repeating colorful vertical bars labeled "Synthetic JPEG chart" … |
xopqwen36v35b (Qwen3.6-35B) |
200 | stop | A dark-background interface displays a narrow, horizontally stretched bar of repeating rainbow-colored vertical stripes … |
spark-x2.5 (text-only) |
400 | invalid request |
None of the vision models spent the 500-token budget on reasoning. The text-only row is why the docs should say to choose a model that accepts image input.
- Lenguaje dominante
- TypeScript
- Estrellas
- 54.1k
- Forks
- 4.9k
- Merge medio
- 7 h 18 min
- PR fusionados (30 d)
- 784
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de heygen-com/hyperframes
-
Docs: clarify that "Enable auto-update" is only available in the Claude Code terminal (CLI) /plugin UIPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
heygen-com/hyperframes#5027 ·
Los mantenedores suelen responder en 1 día
-
fix(producer): propagate useGpu to HDR layered streaming encoderPosiblemente ocupada @Monster-GM la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
heygen-com/hyperframes#5002 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
heygen-com/hyperframes#4702 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Studio catalog prompt editor has no accessible namePosiblemente ocupada @lorenzozanee la tomó hace 12 días. Abiertobug difficulty/easy triage/ready
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
heygen-com/hyperframes#4384 ·
Los mantenedores suelen responder en 1 día
-
lint: validate composition variables declared on supported root elementsQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug difficulty/easy triage/ready
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
heygen-com/hyperframes#4383 ·
Los mantenedores suelen responder en 1 día
Todos los issues de heygen-com/hyperframes
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
wardian-app/Wardian#1603 ·
Los mantenedores suelen responder en 1 día
-
Sign the pledgeAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
input-output-hk/devx-updates#168 ·
Los mantenedores suelen responder en 1 día
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
github/docs#46222 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
agent-ready area: config area: skills type: chore upstream: brain-kit
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
-
dev experience frontend good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
cuttle-cards/cuttle#1403 ·
Los mantenedores suelen responder en 1 día