97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
"""群聊人设卡 —— 基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡
|
|
|
|
消息入口:on_message 监听全部消息事件,类型注解过滤出群聊,两级闸门(群开关 +
|
|
个人 opt-in)通过后,治理层处理落库。采集编排已下沉到 services/collector.py。
|
|
|
|
当前进度:数据层 + 采集层(消息路径)完成;总结路径(印象/画像)待实现。
|
|
"""
|
|
|
|
from nonebot import get_driver, require
|
|
|
|
require("nonebot_plugin_orm")
|
|
|
|
from nonebot.adapters.onebot.v11 import GroupMessageEvent # noqa: F401
|
|
from nonebot.plugin import PluginMetadata
|
|
|
|
# ── 禁用 nonebot_plugin_orm 的启动自动同步 ─────────────────────────────
|
|
from nonebot import logger as _logger
|
|
|
|
try:
|
|
import nonebot_plugin_orm.migrate as _orm_migrate
|
|
|
|
def _safe_sync(*_args, **_kwargs):
|
|
_logger.debug("galgame_card | 已禁用 orm 自动同步(schema 演进由 ensure_schema 接管)")
|
|
|
|
_orm_migrate.sync = _safe_sync
|
|
except ImportError:
|
|
_logger.warning("galgame_card | 无法禁用 orm 自动同步,请检查 nonebot_plugin_orm 是否安装")
|
|
|
|
from . import models # noqa: F401 # 确保表结构注册
|
|
from . import repository, processor
|
|
from . import handlers as _handlers # noqa: E402
|
|
|
|
from hexi.web_hub.web_config import register_plugin_config # noqa: E402
|
|
from hexi.web_hub.web_plugin_registry import register_web_plugin # noqa: E402
|
|
from . import web_hub # noqa: E402
|
|
|
|
|
|
def _apply_galgame_config(values: dict) -> None:
|
|
import sys
|
|
conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config")
|
|
if conf_mod is None:
|
|
return
|
|
conf = getattr(conf_mod, "config", None)
|
|
if conf is None:
|
|
return
|
|
for key, value in values.items():
|
|
try:
|
|
setattr(conf, key, value)
|
|
except Exception: # noqa: BLE001
|
|
pass
|
|
|
|
|
|
def _get_galgame_config_values() -> dict:
|
|
import sys
|
|
conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config")
|
|
conf = getattr(conf_mod, "config", None) if conf_mod else None
|
|
if conf is None:
|
|
return {}
|
|
keys = ("image_vision_enabled",)
|
|
return {k: getattr(conf, k, None) for k in keys}
|
|
|
|
|
|
register_plugin_config(
|
|
__name__,
|
|
{
|
|
"fields": [
|
|
{"key": "image_vision_enabled", "label": "图片识别启用", "type": "bool", "default": False},
|
|
]
|
|
},
|
|
apply=_apply_galgame_config,
|
|
getter=_get_galgame_config_values,
|
|
)
|
|
|
|
# 注册到统一 Web 管理台(/hub):hub 启动时挂载 /api/galgame_card
|
|
register_web_plugin(
|
|
"galgame_card",
|
|
"群聊人设卡",
|
|
"user",
|
|
lambda: web_hub.build_admin_app(),
|
|
module_name=__name__,
|
|
)
|
|
|
|
__plugin_meta__ = PluginMetadata(
|
|
name="群聊人设卡",
|
|
description="基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡",
|
|
usage="开发中……",
|
|
type="application",
|
|
)
|
|
|
|
_driver = get_driver()
|
|
|
|
|
|
@_driver.on_startup
|
|
async def _ensure_schema():
|
|
"""老库迁移(persona_group.group_name 列),幂等"""
|
|
await repository.ensure_schema()
|