Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Capture descriptions: support any OpenAI-compatible vision endpoint

Abierto
#4,846 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@FenjuFu ya está trabajando en esto.

Desde el 1/10/2026.

  • #4849 de @FenjuFu — abierto

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
Área
ai, cli

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/completions with 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.
  • postExtractionPhase counts 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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de heygen-com/hyperframes

Todos los issues de heygen-com/hyperframes

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.