Communitygithub.com

chuspeeism/doubaoplot

DoubaoPlot — En 豆包/豆包工作, dibuja gráficos científicos editables con Origin, compatible también con Codex y Claude Code. Basado en hang-jin/editaplot, añade un selector de 45 gráficos.

¿Qué es doubaoplot?

DoubaoPlot es una habilidad para agentes AI (como Claude Code, Cursor, Codex) que transforma una pregunta científica y una tabla de datos de solo lectura en una figura científica editable y auditable generada con Origin. Está basada en el proyecto hang-jin/editaplot y ha sido extendida para los asistentes 豆包 (Doubao) y 豆包工作 (Doubao Work), así como para entornos de desarrollo como Codex o Claude Code. La principal adición es un selector de 45 tipos de gráficos reales de Origin, clasificados por tipo, que permite al usuario elegir visualmente el gráfico deseado sin necesidad de describirlo. El flujo de trabajo guía al usuario paso a paso: inspección de datos, entendimiento de columnas, planificación, renderizado y verificación, todo manteniendo un enfoque conversacional para principiantes. La habilidad gestiona permisos estrictos en Windows, evitando acciones peligrosas como elevación de privilegios o control del mouse, y asegura que el proceso sea determinista y reproducible.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add chuspeeism/doubaoplot

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

EditaPlot

Convierte una pregunta científica y una tabla de solo lectura en una figura de Origin auditable y editable. Mantén la experiencia conversacional para principiantes; usa el motor determinista para inspección, planificación, renderizado, exportación y lectura de vuelta.

先决定走哪条路(豆包工作版新增)

Al entrar el usuario, primero mira qué tiene y luego decide cómo proceder. No empieces a adivinar el tipo de gráfico sin que el usuario dé una dirección.

¿Qué ha dado el usuario?¿Qué camino tomar?¿Cómo hacerlo?
Una imagen de referencia ("dibuja esto", "replica este estilo")Modo imagen de referenciaSigue el flujo original, entrando desde el paso 10 reference-inspect. La referencia solo afecta la gramática de gráficos y los estilos seguros que los datos pueden soportar; no añade nueva evidencia ni oculta elementos necesarios.
Ha nombrado el tipo de gráfico ("dibuja un diagrama de lluvia", "curva ROC")Modo directoSigue el flujo original. Primero consulta references/not-covered.md; si el gráfico solicitado está en esa lista, indícale directamente que no existe esa ruta, no insistas.
Solo tiene datos, sin decir qué gráfico, o dice explícitamente "no sé qué tipo dibujar"Modo selectorVer más abajo. Esta es la nueva ruta añadida y la más común.

Modo selector

Cuando el usuario no sabe qué gráfico quiere, que mire y elija es mucho más preciso que hacer que describa.

  1. Ejecuta python selector/selector.py. Esto abrirá una página local: 45 ejemplos de gráficos reales de Origin se muestran, clasificados por tipo; cuando el usuario hace clic en uno, la derecha muestra qué columnas de datos necesita y genera automáticamente una solicitud completa.
    • Si el host tiene un panel de navegador integrado, usa python selector/selector.py --print-path para obtener la ruta y abrirla en el panel, sin abrir otra ventana.
  2. El usuario hace clic en "Enviar a Doubao" y el script captura la solicitud generada y la envía a la salida estándar; si hace clic en "Copiar", el contenido queda en su portapapeles, pídele que lo pegue. Ambas rutas funcionan, no esperes solo una.
  3. Una vez obtenida la solicitud, vuelve al paso 6 del flujo original (start → understand → confirmar → plan → renderizar → verificar). El selector solo se encarga de aclarar la necesidad, no cambia ningún comportamiento de dibujo ni omite ningún paso de confirmación.

Las "columnas necesarias" que da el selector son una sugerencia, no una conclusión. Si los datos del usuario realmente carecen de esas columnas, el paso 7 understand las verificará una por una; si faltan, indícaselo al usuario como de costumbre, no asumas que los datos están completos solo porque hizo clic en la página.

Si selector.py no arranca (todos los puertos ocupados, sin interfaz gráfica): no te detengas; da la ruta de la página al usuario, que la abra haciendo doble clic, haga clic en "Copiar" y pegue el contenido; el flujo continúa igual.

Solicitar solo permisos limitados de Windows

  • Lee el repositorio completo, la tabla seleccionada y una imagen de referencia local opcional.
  • Escribe solo en el repositorio de EditaPlot, el directorio de habilidades del usuario actual (豆包工作 o Codex) y la carpeta principal del archivo fuente seleccionado para entregables adjuntos.
  • Ejecuta el lanzador local, subprocesos de PowerShell/Python y una instancia de Origin propiedad de EditaPlot en la misma sesión de usuario activa de Windows interactivo.
  • Un comando normal del host puede ejecutarse primero bajo una cuenta aislada. Si el trabajador de Origin devuelve origin_codex_sandbox_context, envía una solicitud formal y de alcance limitado para ejecutar exactamente ese comando origin-smoke o render. Vuelve a ejecutarlo solo si se aprueba esa solicitud exacta, ya sea por el usuario cuando se le solicite o por el revisor automático configurado del host. La aprobación no está garantizada, y esta transferencia no es un bypass del sandbox. Nunca pidas al usuario que copie el comando en una ventana separada de PowerShell o que amplíe la solicitud a acceso de administrador o configuración del sistema.
  • Usa acceso a red solo para descarga/actualización del repositorio y recuperación de dependencias bloqueadas. Trata una instalación de Python con winget de ámbito de usuario como un cambio separado del sistema que aún requiere consentimiento explícito.
  • No solicites derechos de administrador, control del mouse, acceso de escritura a todo el disco, carga en la nube de entradas privadas, ni cambios en DCOM, registro, firewall, grupos de usuarios o instalación de Origin. Cuando el Control de Acceso a Carpetas, una política organizativa, sincronización en la nube o una ubicación de solo lectura bloqueen escrituras, solicita acceso solo a la carpeta afectada o pide una carpeta de salida alternativa explícita.

Comienza con el camino para principiantes

  1. Rechaza plataformas no compatibles antes de instalar nada. Soporta la capa de CLI/dependencias solo en Windows 10/11 x64 físico con CPython 3.10–3.12 de 64 bits. Destina Origin/OriginPro 2021 y posteriores a través de originpro externo; Origin 2020b y anteriores no son compatibles con esta ruta. La línea base completamente verificada en vivo es CPython 3.10 + Origin 2024b / 10.15. Trata cualquier otra versión 2021+ como limitada por capacidad, no verificada automáticamente, hasta que superen su humo y artefactos completos. Indica claramente que macOS (Intel/Apple Silicon), Linux, WSL, Wine/CrossOver, Parallels y otras máquinas virtuales no son compatibles en V1. doctor no puede detectar de forma fiable todas las VM, así que pide al usuario que confirme un host Windows físico cuando ese hecho sea desconocido.
  2. Localiza editaplot.cmd en el directorio de Habilidades instalado; cuando trabajes desde un repositorio clonado, usa editaplot.cmd en la raíz del repositorio. Usa una ruta absoluta al lanzador en los comandos. No hagas que los principiantes seleccionen un ejecutable de Python o invoquen scripts/editaplot.py directamente.
  3. Requiere el repositorio completo para la primera instalación. Ejecuta editaplot.cmd setup en la raíz del repositorio; nunca instruyas al usuario para copiar solo skill/editaplot, porque eso omite el tiempo de ejecución. Lee references/runtime.md para detalles de configuración, descubrimiento y comandos.
  4. Reutiliza un Python compatible existente. Si no existe ninguno, explica en chino que instalar Python es un cambio a nivel de sistema. Primero ejecuta winget show y explica el editor exacto, la fuente y los acuerdos. Solo una confirmación explícita del usuario permite una instalación no interactiva posterior de Python.Python.3.12 con ámbito de usuario y arquitectura x64. Si winget no está disponible, proporciona las instrucciones de instalación oficiales de python.org para Windows y espera al usuario; nunca uses un espejo no confiable ni instales Python en silencio.
  5. Ejecuta editaplot.cmd doctor para cada nuevo flujo de trabajo. Permite doctor --repair solo para la reparación de dependencias de Python locales al proyecto reportadas. Mantén todos los paquetes de Python en .editaplot-venv. Trata a Origin como una aplicación administrada por el usuario instalada localmente; nunca la instales ni la modifiques durante la reparación.
  6. Ejecuta editaplot.cmd start <archivo-de-datos> para una nueva tabla. Agrega --intent "<intención-del-usuario>" cuando el usuario indique un objetivo. Trata su carga de inspección y recomendación como estado interno de trabajo. Usa la ruta fuente local original expuesta por el adjunto. Si el host solo proporciona una copia temporal del adjunto y la carpeta original no se puede recuperar, pregunta una vez por la carpeta fuente/salida local prevista antes de renderizar; nunca adivines un destino de espacio de trabajo no relacionado.
  7. Después de seleccionar una plantilla candidata, ejecuta editaplot.cmd understand <archivo-de-datos> --template-id <id> con la misma asignación confirmada que se usará para la planificación. Agrupa su resultado en una lista de verificación corta: tipo de datos; columnas a dibujar; columnas usadas solo para soporte o validación; columnas retenidas pero no dibujadas; elementos de figura propuestos; y cálculos que no se realizarán. Cada columna fuente debe aparecer exactamente una vez. Si algún elemento es uncertain, pide una asignación corregida y ejecuta understand de nuevo; no confirmes ni planifiques.
  8. Informa a un principiante solo de: lo que se reconoció, la mejor opción de uno a tres gráficos, por qué se ajustan y la decisión científica más pequeña que aún se requiere. No vuelques todo el pipeline inspect → recommend → understand → plan ni JSON sin procesar a menos que pidan detalles técnicos.
  9. Pide al usuario que confirme tanto un propósito científico de una frase como la lista de verificación concisa de elementos. Congela el proposal_hash exacto, los IDs de elementos derivados aprobados y las elecciones de ambigüedad resueltas en --semantic-confirmation-json. Nunca reutilices una confirmación después de que cambie la fuente, la asignación, el propósito o el hash de la propuesta. Cuando la confianza sea baja, los márgenes de los candidatos sean pequeños, los roles o las unidades sean ambiguos, o se proponga una transformación de visualización, haz solo las preguntas adicionales enfocadas necesarias.
  10. Si el usuario proporciona una figura de referencia, ejecuta primero reference-inspect. Luego puedes describir solo su gramática de panel/marca/codificación/diseño/estilo en el estricto JSON ReferenceFigureSpec y ejecutar reference-review; el tiempo de ejecución no realiza OCR ni inferencia de modelos. Muestra las características adoptadas y rechazadas, vincula cada marca esencial a datos de usuario confirmados y renderizables, y obtén una confirmación separada vinculada al hash. Nunca copies valores de referencia, etiquetas, ajustes, asignaciones de fase, texto del autor, logotipos, marcas de agua ni el mapa de bits en el proyecto de Origin. Prefiere template_adaptation verificado; mantén controlled_composition bloqueado hasta que esa composición exacta haya pasado la puerta de evidencia completa de Origin. Una referencia no puede agregar evidencia faltante ni cambiar la lista de elementos científicos confirmados. Trata el estilo inferido de la referencia como una sugerencia, no como una instrucción del usuario. Pide al usuario que elija uno de tres modos: mantener la plantilla predeterminada verificada; usar una aproximación confirmada y permitida sugerida por la referencia; o proporcionar valores personalizados exactos. Para el modo exacto, pregunta por separado por colores, ancho de línea físico, transparencia de relleno, tamaño de página y visibilidad, marco o posición de la leyenda. Una elección explícita del usuario tiene prioridad sobre un token de referencia conflictivo. Congela cada sugerencia de referencia como applied, retained_template_default o rejected; nunca afirmes que se aplicó una solicitud a menos que la plantilla seleccionada tenga la misma vista previa verificada/ruta de Origin y la lectura de vuelta del objeto de Origin requerida.
  11. Cuando el color sea seleccionable por el usuario, ejecuta editaplot.cmd palettes, muestra assets/palettes/palette-selector-public.zh-CN.png, y recomienda no más de dos valores palette_id compatibles. Lee references/palettes.md antes de congelar uno.
  12. Congela internamente la elección confirmada con editaplot.cmd plan; nunca edites manualmente un plan ni escribas una decisión de vuelta al archivo fuente. Para una solicitud XPS exacta, escribe los valores confirmados en un objeto JSON separado y pasa su ruta con --visual-style-json. Los campos exactos soportados son series_colors, line_width_pt, fill_transparency_percent, page_size_cm, legend_visible, legend_position y legend_frame. Los campos o valores explícitos no válidos deben fallar rápidamente y corregirse con el usuario; nunca los descartes en silencio ni recurras a un estilo de referencia/predeterminado. El comando de renderizado copia este plan aprobado en la carpeta de salida final como render-plan.json.
  13. Trata la preparación de Origin solo como estado técnico. Doctor realiza descubrimiento de solo lectura de Origin.Application, Origin.ApplicationSI, candidatos instalados, Python, originpro y OriginExt; nunca inicia Origin y ready_for_render nunca significa que una conexión en vivo haya tenido éxito. Si el registro de lanzamiento predeterminado está presente, procede a la humo real previo al renderizado sin preguntar al usuario que abra Origin o lo confirme de nuevo. Mantén la salida para principiantes en una a tres oraciones en lenguaje sencillo; deja CLSIDs, vistas de registro, candidatos y etapas en JSON. Lee el origin_execution_context redactado por separado de ready_for_render. Un estado codex_sandbox requiere la transferencia de aprobación de comando exacto anterior antes de que se llame a COM; solo una solicitud aprobada puede ser reejecutada. La revisión automática evalúa esa solicitud individual y no otorga acceso a Origin por adelantado. Un contexto de ejecución de Windows unknown es de cierre seguro y no es una solicitud de aprobación: detente antes de COM e informa que la identidad actual de Windows no pudo ser verificada.
  14. Ejecuta editaplot.cmd origin-smoke --output-dir <directorio-smoke-único> con launch_isolated: inicia y posee una instancia dedicada de Origin, realiza el humo en vivo y la verificación de versión, luego aplica la decisión de capacidad de la plantilla. Este comando es obligatorio después de planificar y antes del renderizado formal. attach_existing es un modo avanzado explícito solo; nunca restablezcas, sobrescribas ni cierres un proyecto propiedad del usuario, y desconéctate en lugar de salir. Reporta fallos por etapa técnica y el siguiente paso sin especulaciones. Nunca uses automatización del mouse ni proporciones parches de aplicación o instrucciones de bypass. El tiempo de ejecución debe intentar limpiar una activación parcial propiedad de EditaPlot y puede intentar una instancia aislada fresca para un código de inicio reintentable solo si la limpieza tiene éxito. El fallo de limpieza devuelve origin_activation_cleanup_failed y se detiene. Luego debe esperar con sec -poc 30 y confirmar run.isOCready() antes de leer la versión o crear un proyecto. Nunca hagas bucle, cambies a ApplicationSI, edites permisos de DCOM/registro, ni le digas a un principiante que ejecute todo el flujo de trabajo como administrador. Después de agotar el intento automático, solicita aprobación para, como máximo, un reintento en el mismo contexto de usuario activo de Windows y usa un directorio de humo hermano vacío fresco para que el primer informe permanezca intacto. origin_com_class_not_registered y origin_com_activation_access_denied se detienen sin reintento automático. No termines a la fuerza un trabajador de Python solo porque ha estado ejecutándose durante mucho tiempo: puede poseer una instancia oculta de Origin. Conserva diagnósticos e informa la última etapa de progreso antes de proponer cualquier cancelación controlada por el usuario. Mantén la transferencia de aprobación del sandbox distinta de un reintento de activación: la primera ocurre antes de COM, mientras que la segunda está disponible solo después de que la política de activación/limpieza limitada se haya ejecutado. Cuando la activación primaria y la limpieza fallen ambas, expón solo primary_activation_code, primary_activation_stage, cleanup_error_code y cleanup_error_stage. Nunca incluyas un nombre de cuenta de Windows, ruta local, HRESULT sin procesar ni texto de COM sin procesar en esa carga útil de diagnóstico estructurada, y nunca reintentes porque ambos pares están presentes. Los trabajadores actuales de EditaPlot serializan solo su sección activa de Origin origin-smoke / render dentro de una sesión de Windows iniciada; la inspección de datos, recomendación y planificación pueden permanecer concurrentes. Respeta el progreso de origin_job_queue, que se emite inmediatamente al esperar y luego aproximadamente cada 30 segundos. No se garantiza que el orden sea FIFO estricto. El límite de 30 minutos se aplica solo al trabajo en espera: detiene a ese esperador sin matar ni interrumpir al titular activo. No envíes un duplicado mientras un mensaje de cola sea visible. Scripts manuales, versiones antiguas de EditaPlot y programas no relacionados están fuera de este límite de coordinación.
  15. Solo después de que el humo pase, renderiza una ruta de plantilla permitida con editaplot.cmd render <plan>. Mantén una instancia de Origin propiedad de EditaPlot abierta después del éxito a menos que el usuario solicite lo contrario. Por defecto, deja que el tiempo de ejecución cree un directorio hermano directo del archivo fuente llamado <nombre_base>_EditaPlot_YYYYMMDD_HHMMSS; mantén todos los artefactos formales en esa carpeta. No redirijas ejecuciones normales al repositorio, directorio de habilidades, directorio de trabajo actual o una carpeta de salida global compartida. Usa --output-dir solo cuando el usuario solicite explícitamente otra ubicación.
  16. ...

[truncado para traducción]

Skills relacionados