← 返回 Skills 市场
coorops25

smart asistant mail

作者 Coorops25 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
158
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install emailagy
功能描述
All-in-one Gmail agent for OpenClaw. Fuses email-reader, email-organizer, email-analyzer, email-responder, email-scheduler, and email-reporter into a single...
使用说明 (SKILL.md)

Smart Email Agent v3 — Gmail All-in-One

Un solo skill que reemplaza los 6 skills del pack original. Punto de entrada único para toda la gestión de correo.

Lazy loading activo: este skill se carga completo (~500 tokens). NO cargues los 6 skills individuales — sería 4.800 tokens desperdiciados.


PARTE 1 — LEER CORREOS (email-reader)

Herramienta principal: gog CLI

# Verificar prerequisitos
which gog || echo "Instalar: npm i -g gogcli  OR  brew install gogcli"
echo $GOG_ACCOUNT  # debe estar configurado

# Autenticar si es la primera vez
gog auth add $GOG_ACCOUNT

Comandos esenciales

# No leídos en inbox (acción por defecto cuando el usuario dice "revisa mi correo")
gog gmail search 'in:inbox is:unread' --max 5 --format minimal --json

# Buscar por criterio — usar sintaxis Gmail
gog gmail search 'from:[email protected] newer_than:3d' --max 10 --format minimal --json
gog gmail search 'subject:factura has:attachment' --max 10 --format minimal --json
gog gmail search 'in:spam is:unread' --max 20 --format minimal --json

# Leer correo completo
gog gmail get \x3Cmessage_id> --format full --json

# Leer hilo completo
gog gmail thread \x3Cthread_id> --format minimal --json

Operadores de búsqueda Gmail

from: to: subject: label: is:unread is:starred has:attachment newer_than:Nd older_than:Nd in:inbox in:sent in:spam in:trash filename:ext

Flujo estándar de lectura

  1. Verificar gog en PATH y GOG_ACCOUNT configurado
  2. Construir query desde la intención del usuario (preguntar si es ambiguo)
  3. Ejecutar con --format minimal --json --max N
  4. Parsear JSON → presentar lista formateada:
📬 5 correos no leídos:
1. De: Juan García \[email protected]> | Asunto: Propuesta Q2 | Hace 2h
   Vista previa: Hola, te mando el resumen de... | ID: msg_abc123
  1. Ofrecer: leer completo / buscar más / actuar sobre el mensaje

Reglas de lectura

  • SIEMPRE usar --format minimal --json --max N (N=5 por defecto)
  • Nunca mostrar JSON crudo; nunca leer contenido completo sin pedirlo
  • Preservar IDs para acciones de seguimiento
  • Sin resultados → confirmar criterios, sugerir términos más amplios
  • Solo lectura — enviar/responder requiere la sección RESPONDER (Parte 4)
  • No guardar contenido de correos en MEMORY.md salvo que el usuario lo pida

Errores comunes

Error Causa Solución
gog: command not found gog no instalado npm i -g gogcli o brew install gogcli
GOG_ACCOUNT not set Variable no configurada Pedir al usuario su email Gmail
Token expirado OAuth vencido gog auth add \x3Cemail>
API error 429 Rate limit Esperar 60s, reintentar con backoff

PARTE 2 — ORGANIZAR (email-organizer)

Jerarquía corporativa Corp/ (azul)

Corp/
├── Interno/
│   ├── Management      ← Gerencia, Directores
│   ├── Tech & Ops      ← Desarrollo, Soporte, Operaciones
│   ├── Commercial      ← Ventas, Marketing
│   ├── Admin & HR      ← Jurídica, RRHH, Contabilidad
│   └── Team            ← Resto del equipo @empresa.com
├── Partners & Clientes/
│   └── [empresa]       ← Wolkvox, Masiv, Unisanitas, Nuva, etc.
├── Proveedores/
│   └── [proveedor]     ← Google, Microsoft, AWS, etc.
└── Sistema/
    ├── DMARC
    ├── Notificaciones
    ├── Alertas
    └── No-Reply

Comandos de organización con gog

# Crear etiqueta
gog gmail label create "Corp/Interno/Tech & Ops"

# Aplicar etiqueta a mensaje
gog gmail label apply \x3Cmessage_id> "Corp/Interno/Management"

# Mover correo (quitar INBOX + aplicar etiqueta)
gog gmail modify \x3Cmessage_id> --add-label "Corp/Partners & Clientes/Wolkvox" --remove-label INBOX

# Archivar (quitar INBOX sin borrar)
gog gmail modify \x3Cmessage_id> --remove-label INBOX

# Mover a spam
gog gmail modify \x3Cmessage_id> --add-label SPAM --remove-label INBOX

# Mover a papelera
gog gmail trash \x3Cmessage_id>

# Operación batch (múltiples IDs)
gog gmail batch-modify --ids id1,id2,id3 --add-label "Corp/Sistema/No-Reply" --remove-label INBOX

Reglas de routing automático

Antes de llamar a la IA, aplicar estas reglas sin costo:

from_domain @empresa.com + from_name contiene [Linda, Rafael, Director] → Corp/Interno/Management
from_domain @empresa.com + from_name contiene [Tech, Dev, Soporte]      → Corp/Interno/Tech & Ops
from_domain @empresa.com                                                  → Corp/Interno/Team
from contiene noreply / no-reply / donotreply                            → Corp/Sistema/No-Reply
subject contiene DMARC / SPF / DKIM                                      → Corp/Sistema/DMARC
subject contiene alerta / alert / warning                                → Corp/Sistema/Alertas

Guardar y mantener estas reglas en corp_routing_rules.json.

Protocolo de confirmación

NUNCA ejecutar acciones destructivas sin confirmación explícita:

⚠️ Pendiente de confirmación:
   → Mover 22 correos a Corp/Sistema/No-Reply
   → Eliminar etiqueta "noreply" (ya vacía)
   Esto NO borra correos, solo reorganiza etiquetas.
   ¿Confirmas? (sí/no)

PARTE 3 — ANALIZAR Y CLASIFICAR (email-analyzer)

Decisión de modelo ANTES de analizar

¿Tarea es clasificar / detectar spam / routing?
  → claude-haiku-4-5-20251001   (batch de 10-20 correos, ~$0.00009/correo)

¿Tarea es extraer tareas y fechas de correos importantes?
  → claude-haiku-4-5-20251001   (body[:800], ~$0.00015/correo)

¿El presupuesto está > 80% gastado?
  → forzar haiku para TODO, sin borradores automáticos

¿El presupuesto está > 95% gastado?
  → cero llamadas IA, solo reglas locales

Opus: PROHIBIDO para tareas de email. Sonnet: solo para borradores (ver Parte 4).

Pipeline de reducción de tokens (aplicar siempre)

# 1. Pre-filtro sin IA (resolver antes de gastar tokens)
#    - Dominio en corp_routing_rules.json → etiquetar directo
#    - from en known_spam_domains.txt → spam directo
#    - message_id ya en analysis_cache → reutilizar resultado
#    Objetivo: resolver 60-70% a costo $0.00

# 2. Recortar campos al mínimo necesario
CAMPOS = {
    'clasificacion': ['from', 'subject', 'snippet[:100]'],   # ~30 tokens
    'prioridad':     ['from', 'subject', 'body[:400]'],      # ~150 tokens
    'tareas_fechas': ['from', 'subject', 'body[:800]'],      # ~250 tokens
}

# 3. Limpiar texto
def limpiar(texto, limite):
    texto = re.sub(r'\x3C[^>]+>', '', texto)             # quitar HTML
    texto = re.sub(r'https?://\S+', '[URL]', texto)   # comprimir URLs
    texto = re.sub(r'\s+', ' ', texto).strip()
    return texto[:limite]

# 4. Batch: NUNCA menos de 10 correos por llamada
#    Esperar hasta tener 10-20 correos pendientes
BATCH_MIN = 10
BATCH_MAX = 20

Prompt de análisis en batch (Haiku)

SYSTEM (idéntico siempre — para prompt caching):
Eres un clasificador de correos corporativos.
Analiza cada correo y devuelve SOLO JSON array. Sin texto extra.
Para cada ítem: {"idx":N,"corp_label":"...","categoria":"spam|importante|informativo|sistema|otro",
"prioridad":0-10,"es_spam":bool,"necesita_respuesta":bool,
"tiene_phishing":bool,"tareas":[],"fecha_limite":"ISO o null","razon":"máx 10 palabras"}

USER: Analiza: [JSON array de hasta 20 correos con from+subject+snippet[:100]]

Presentación de resultados

🤖 Análisis — 47 correos procesados
⚡ Sin IA (pre-filtro): 31  (66%) → $0.000
🧠 Con Haiku (2 batches): 16     → $0.006

📊 Resultado:
  🔵 Corp/Interno/Management:   2  (prioridad alta)
  🔵 Corp/Partners & Clientes:  8
  🔵 Corp/Sistema/No-Reply:    14
  🗑️  Spam:                    12
  ⚠️  Phishing detectado:        1  → ALERTA
  📋 Con tareas pendientes:      4

Críticos:
  [10/10] [email protected] — "Aprobación contrato urgente"
          Tarea: confirmar antes del viernes

PARTE 4 — RESPONDER Y REDACTAR (email-responder)

Cuándo usar Sonnet vs Haiku para borradores

Prioridad >= 8 → claude-sonnet-4-6       (calidad importa)
Prioridad 5-7  → claude-haiku-4-5-20251001  (suficiente, más barato)
Prioridad \x3C 5  → NO generar borrador automático

Máximo 3 borradores por sesión cuando presupuesto \x3C 60%. Máximo 1 borrador por sesión cuando presupuesto 60-80%. Cero borradores automáticos cuando presupuesto > 80%.

Flujo de respuesta

# 1. Leer el hilo completo
gog gmail thread \x3Cthread_id> --format minimal --json

# 2. Preparar contexto recortado para la IA
#    Solo: from + subject + body[:600] del último mensaje + resumen del hilo anterior

Prompt de generación de borrador

Redacta una respuesta profesional y concisa (máx 150 palabras).
Solo el cuerpo del mensaje, sin asunto ni encabezados.
Tono: profesional pero cercano.
Firma: [NOMBRE_USUARIO]

Hilo: [RESUMEN + ÚLTIMO MENSAJE RECORTADO]

Presentar borrador al usuario

✍️ Borrador para: [email protected]
   Re: Propuesta Q2 2026
────────────────────────
Hola Juan,

Gracias por el resumen. Me parece viable la dirección propuesta.
¿Podemos agendar una llamada esta semana?

Saludos,
[Tu nombre]
────────────────────────
[1] Guardar borrador   [2] Editar   [3] Enviar ahora   [4] Descartar

Enviar con gog

# Guardar como borrador
gog gmail draft create --to "[email protected]" \
  --subject "Re: Propuesta Q2 2026" \
  --body "Hola Juan,..." \
  --reply-to \x3Cmessage_id>

# Enviar borrador guardado
gog gmail draft send \x3Cdraft_id>

# Enviar directamente (SIEMPRE pedir confirmación antes)
gog gmail send --to "[email protected]" --subject "..." --body "..."

Templates de respuesta rápida

acuse_recibo:      "Recibido, te respondo a la brevedad."
confirmar_reunion: "Confirmado para [fecha/hora]. Hasta entonces."
solicitar_info:    "Necesito más información sobre X para proceder."
ausencia:          "Estoy fuera hasta [fecha]. Respondo a mi regreso."

Follow-ups automáticos

# Buscar correos enviados sin respuesta en últimos 5 días
gog gmail search 'in:sent newer_than:5d' --max 20 --format minimal --json
# Cruzar con INBOX para detectar cuáles no tienen respuesta

PARTE 5 — AUTOMATIZAR (email-scheduler)

Heartbeat optimizado: 55 minutos

Por qué 55 min: el caché de Anthropic expira a los 60 minutos. Con heartbeat de 55 min, el agente mantiene el caché caliente → cada mensaje paga cache-read en lugar de cache-write (3.75x más barato).

// ~/.openclaw/openclaw.json
{
  "agents": {
    "email-assistant": {
      "heartbeat": { "every": "55m" },
      "model": "anthropic/claude-haiku-4-5-20251001"
    }
  }
}

Cron jobs recomendados

{
  "cron": {
    "jobs": [
      {
        "id": "email-priority-check",
        "schedule": "*/55 * * * *",
        "description": "Revisar correos importantes — modelo Haiku",
        "message": "Revisa inbox no leídos. Si hay prioridad >= 8, notifícame.",
        "model": "anthropic/claude-haiku-4-5-20251001",
        "enabled": true
      },
      {
        "id": "email-spam-cleanup",
        "schedule": "0 8 * * *",
        "description": "Limpieza diaria de spam — solo reglas locales, costo $0",
        "message": "Aplica reglas locales de spam. Sin llamadas IA.",
        "model": "anthropic/claude-haiku-4-5-20251001",
        "enabled": true
      },
      {
        "id": "email-weekly-report",
        "schedule": "0 9 * * MON",
        "description": "Informe semanal",
        "message": "Genera informe semanal de correos con email-reporter.",
        "model": "anthropic/claude-haiku-4-5-20251001",
        "enabled": true
      }
    ]
  }
}

Regla de oro para crons: SIEMPRE especificar claude-haiku-4-5-20251001. Usar Opus para un cron de 10 tareas/día = $17.70/mes extra innecesario.

HEARTBEAT.md de correo

## Email Heartbeat — Modelo: claude-haiku-4-5-20251001

### Check de correos (cada 55 min)
1. gog gmail search 'in:inbox is:unread' --max 10 --format minimal --json
2. Aplicar reglas locales de corp_routing_rules.json
3. Si hay correo con keywords urgente/crítico/emergencia → notificar
4. Si no hay urgentes → HEARTBEAT_OK (silencio)

### Check de spam (cada 2h, sin IA)
1. gog gmail search 'in:spam is:unread' --max 50 --format minimal --json
2. Aplicar known_spam_domains.txt → mover a trash directo
3. Sin llamadas a IA

Quiet hours: 23:00–07:00 → HEARTBEAT_OK automático

Gmail Push Notifications (tiempo real)

# Configurar webhook Pub/Sub
python3 scripts/setup_pubsub.py --topic "email-agent-notifications"

# El webhook dispara cuando llega un correo nuevo:
openclaw message "Nuevo correo. Revisa con gog y notifícame si es importante."

Activar automatización completa

Usuario: "Activa el agente de correo en modo automático"
Agente:
  1. Verificar: gog auth status
  2. Crear cron jobs recomendados (ver arriba)
  3. Copiar HEARTBEAT.md al workspace
  4. Preguntar: ¿activar Gmail Push para tiempo real?
  5. Confirmar canal de notificaciones (NOTIFY_CHANNEL)
  6. "✅ Agente activado. Reviso cada 55 min. Te aviso si hay algo importante."

PARTE 6 — INFORMES Y ESTADÍSTICAS (email-reporter)

Tipos de informe

# Resumen del día (al final de sesión — SIEMPRE mostrar)
# Ver sección "Resumen de costos" más abajo

# Estadísticas de spam
gog gmail search 'in:trash newer_than:30d' --max 100 --format minimal --json
# Parsear y agrupar por dominio remitente

# Tareas pendientes en correos
# Consultar analysis_cache donde tareas[] no está vacío y sin respuesta

# Log de prompts IA detectados
cat .learnings/PROMPTS_DETECTADOS.md

# Historial de acciones del agente
cat email_audit.log | tail -50

# Deshacer última acción
gog gmail modify \x3Cids_from_audit_log> --remove-label TRASH --add-label INBOX

Resumen de costos — mostrar al cerrar cada sesión

💰 Sesión de hoy
  Correos procesados:    47
  ├─ Sin IA (reglas):    31  (66%) → $0.000
  ├─ Haiku (2 batches):  14       → $0.005
  └─ Sonnet (borradores): 2       → $0.005

  Tokens consumidos: 5.090
  Costo sesión:     $0.010
  Ahorro estimado:  $0.040 (80% vs. sin optimizar)

  Presupuesto mes:  $X.XX gastado / $Y.YY total (N%)
  Proyección mes:   $Z.ZZ

PARTE 7 — MOTOR DE AUTO-MEJORA

Cuándo capturar un aprendizaje

Evento Archivo ID
Usuario corrige clasificación .learnings/LEARNINGS.md LRN-YYYYMMDD-NNN
Costo sesión > 2x el promedio .learnings/LEARNINGS.md LRN-YYYYMMDD-NNN
Error de API (rate limit, auth) .learnings/ERRORS.md ERR-YYYYMMDD-XXX
Optimización reduce costos >10% .learnings/LEARNINGS.md LRN-YYYYMMDD-NNN
Remitente recurrente sin regla .learnings/LEARNINGS.md LRN-YYYYMMDD-NNN

Formato

## [LRN-YYYYMMDD-NNN] \x3Ctipo>
**Logged**: ISO timestamp
**Priority**: low | medium | high
**Status**: pending | applied | promoted
**Area**: cost | classification | routing | api | spam | drafts

### Summary
Una línea con el aprendizaje y su impacto.

### Details
Qué pasó. Qué se asumía vs. qué era verdad.

### Action
Cambio concreto: qué archivo editar, qué valor cambiar.

### Impact
Ahorro estimado: $X/mes | Tokens -N%
---

Ciclo al cerrar sesión

1. Revisar .learnings/ con Status=pending
2. ¿Learnings con Impact > $0.01/mes?
   → Proponer: "Aprendí que X. ¿Lo aplico a las reglas?"
   → Si acepta → editar corp_routing_rules.json → Status=applied
3. ¿3+ learnings del mismo dominio/patrón?
   → Promover a regla permanente sin preguntar
   → Status=promoted
4. Reportar: "Apliqué N mejoras. Ahorro estimado: $X/mes"

Efecto compuesto del aprendizaje

Mes 1: ~$0.50/mes  (0 reglas)
Mes 2: ~$0.30/mes  (10 reglas aprendidas)
Mes 3: ~$0.18/mes  (25 reglas)
Mes 6: ~$0.10/mes  (60+ reglas)

PARTE 8 — CONTROL DE PRESUPUESTO

Cuatro modos operativos

% gastado Modo Restricciones
0–59% Normal ✅ Todo habilitado
60–79% Ahorro leve 🟡 Avisar. Máx 2 borradores/sesión
80–94% Ahorro fuerte 🟠 Solo Haiku. Sin borradores auto. Batch obligatorio ≥20
95–100% Emergencia 🔴 Cero IA. Solo gog + reglas locales

Diagnósticos con token-optimizer (si está instalado)

/context list    # qué archivos consumen tokens ahora
/usage full      # tokens + costo por respuesta
/usage cost      # resumen acumulado de sesión
/status          # modelo activo, % contexto

python3 scripts/token_tracker.py check   # estado del budget diario
python3 scripts/model_router.py "analizar correos nuevos"  # qué modelo usar

Referencias — leer cuando necesites más detalle

  • references/cost-optimization.md — Técnicas avanzadas: prompt caching, deduplicación semántica, modo emergencia
  • references/learning-patterns.md — Patrones de auto-mejora y ciclo de vida de learnings
  • hooks/openclaw-handler.js — Inyecta estado de presupuesto + modo activo al inicio de sesión
  • scripts/init_orchestrator.py — Setup inicial: verifica gog, crea budget_tracker, SKILLS_INDEX
  • assets/HEARTBEAT.email.md — Plantilla lista para copiar al workspace
安全使用建议
This skill appears to be what it says: a Gmail assistant that uses the gog CLI plus Anthropic for analysis. Before installing/enabling it, check these points: 1) Registry metadata looks malformed in the listing — confirm which env vars the registry actually requires (so you don't accidentally provide extra secrets). 2) The skill requires an ANTHROPIC_API_KEY (sensitive); prefer a limited key or billing limits, and understand that the skill will call that provider for drafts/analysis. 3) The bootstrap hook reads ~/.openclaw/workspace/budget_tracker.json and .learnings and injects their contents into every agent session when enabled — review those files for any sensitive snippets before enabling the hook. 4) The skill suggests running an init script and enabling a hook; run those manually after reviewing the small Python/JS files included (they are short and readable). 5) If you want to limit blast radius, create a dedicated account/key for this skill or test in a separate user/profile. If you want, I can: (a) extract the exact env vars as parsed from SKILL.md, (b) show the lines that read local files, or (c) produce a short checklist to safely enable this skill.
功能分析
Type: OpenClaw Skill Name: emailagy Version: 1.0.0 The 'smart-email-agent' is a highly sophisticated Gmail management bundle that uses the 'gog' CLI and Anthropic API for email automation. It features advanced cost-optimization logic, such as batching requests and a 55-minute 'heartbeat' to maintain Anthropic's prompt cache. While it implements a 'self-improvement engine' that allows the agent to propose and apply new routing rules to 'corp_routing_rules.json', it includes explicit confirmation protocols and budget-based operational modes (Normal/Ahorro/Emergencia) to mitigate risks. No evidence of malicious intent, data exfiltration, or unauthorized execution was found across the SKILL.md, hooks, or Python scripts.
能力评估
Purpose & Capability
Name/description (Gmail agent) align with the declared binaries (gog) and the declared IA usage (Anthropic). Requested env vars in the SKILL.md (GOG_ACCOUNT, ANTHROPIC_API_KEY, EMAIL_BUDGET_USD) are reasonable for an email agent. Registry metadata display appears corrupted (shows '[object Object]' for required env vars and 'Primary credential: none') — likely a metadata formatting bug but worth verifying in the registry UI.
Instruction Scope
SKILL.md instructs the agent to run gog CLI queries and to use Anthropic for analysis/drafts; that is within scope. It also defines a heartbeat/check pattern and advises lazy-loading/merge of multiple email skills. The included scripts and hook read local workspace files (budget_tracker.json and .learnings) and inject summary text into the agent bootstrap context — this exposes local state to the agent at session start and should be considered when thinking about sensitive local content. There are no instructions to transmit local files to arbitrary external endpoints beyond the expected services (gog and Anthropic).
Install Mechanism
No install spec (instruction-only plus small helper scripts), so nothing is downloaded or extracted during install. The only external dependency is the gog CLI (user-supplied) and standard Node/Python runtime for the hook and script — low install risk.
Credentials
Environment variables requested by the skill (GOG_ACCOUNT, ANTHROPIC_API_KEY, EMAIL_BUDGET_USD; optional GMAIL_CREDENTIALS_PATH, NOTIFY_CHANNEL, SAFE_BROWSING_API_KEY) are plausible for the stated features. ANTHROPIC_API_KEY is sensitive (provider billing/usage) — appropriate for drafting/analysis but you may want to use a limited key or billing controls. The registry metadata rendering bug (env shown as [object Object]) is a minor inconsistency to confirm in the registry before trusting the listing.
Persistence & Privilege
always:false (not forced). The hook (openclaw-handler.js) injects a virtual bootstrap file into every session once the hook is enabled; enabling the hook gives this skill persistent per-session presence (but it is user-enabled, not forced). Consider that enabling the hook will cause the agent to receive budget/learning summaries every bootstrap.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install emailagy
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /emailagy 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Smart Email Agent v3 unifies all core Gmail management features into a single skill. - Combines email reading, organizing, analyzing, responding, scheduling, and reporting in one tool. - Integrates token optimization and a self-improvement engine for efficient performance. - Replaces six separate skills with a single entry point, dramatically reducing token usage. - Provides detailed instructions for setup, inbox management commands, batch actions, and automated routing. - Includes built-in error handling, confirmation for critical actions, and dynamic handling based on budget constraints.
元数据
Slug emailagy
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

smart asistant mail 是什么?

All-in-one Gmail agent for OpenClaw. Fuses email-reader, email-organizer, email-analyzer, email-responder, email-scheduler, and email-reporter into a single... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 158 次。

如何安装 smart asistant mail?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install emailagy」即可一键安装,无需额外配置。

smart asistant mail 是免费的吗?

是的,smart asistant mail 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

smart asistant mail 支持哪些平台?

smart asistant mail 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 smart asistant mail?

由 Coorops25(@coorops25)开发并维护,当前版本 v1.0.0。

💬 留言讨论