ForcePilot/backend/package/yuxi/channels/plugins/wechat_woc/manifest.json
Kris a484844ea1 chore: 汇总完成多模块功能迭代与缺陷修复
此提交包含了大量跨模块的优化与修复:
1.  配置与依赖调整:调整账号列表分页默认值、重试上限、内容审核长度限制,新增出站文件支持
2.  代码结构优化:重构白名单缓存逻辑、移除冗余日志依赖、清理过时TODO注释
3.  功能增强:添加死信计数接口、会话绑定审计、SSE订阅限流、凭据验证服务
4.  契约更新:修正DTO字段命名、完善类型定义、更新审计操作类型
5.  错误处理:优化限流清理逻辑、添加异常捕获与告警
6.  文档与校验:补充字段校验规则、完善注释与文档说明
2026-07-11 21:37:16 +08:00

109 lines
6.2 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"id": "com.yuxi.channels.wechat_woc",
"name": "微信 WechatOnCloud",
"version": "1.0.0",
"channel_type": "wechat_woc",
"icon": "smartphone",
"entry_module": "yuxi.channels.plugins.wechat_woc.entry",
"provides": ["wechat_woc"],
"lifecycle": ["init", "start", "stop", "pause", "resume", "unload", "reconfigure", "fail"],
"compatibility": {
"min_host_version": "1.0.0",
"woc_bridge_version": "1.5.0"
},
"failure_policy": "degrade",
"depends": [],
"critical": false,
"requires_dm_pairing": true,
"requires_outbound_delivery": true,
"credential_strategy": {
"type": "static",
"acquire_method": "manual",
"required_fields": ["bridge_url", "bridge_token"],
"optional_fields": [],
"supports_rotation": false,
"supports_revocation": false
},
"max_message_length": 2000,
"supports_credential_cloning": false,
"transport_mode": "both",
"max_restart_attempts": 10,
"capabilities": {
"rich_message": false,
"streaming": false,
"typing_indicator": false,
"message_edit": false,
"message_recall": false,
"supports_reaction": false,
"supports_pin": false,
"supports_card_update": false,
"supports_card_update_streaming": false,
"supports_image_inbound": true,
"supports_video_inbound": true,
"supports_image_outbound": false,
"supports_video_outbound": false,
"supports_file_outbound": true,
"mention": false,
"command": false,
"directory": true,
"doctor": true,
"whitelist": true,
"wizard": true,
"tools": false,
"status": true,
"probeable": true,
"identity_resolver": false,
"lifecycle": true,
"supports_qr_login": true,
"agent_collaboration": false
},
"capability_requirements": [
["supports_image_inbound", ["bridge_url", "bridge_token"]],
["supports_video_inbound", ["bridge_url", "bridge_token"]],
["supports_file_outbound", ["bridge_url", "bridge_token"]],
["directory", ["bridge_url", "bridge_token"]],
["doctor", ["bridge_url", "bridge_token"]],
["whitelist", ["bridge_url", "bridge_token"]],
["wizard", ["bridge_url", "bridge_token"]],
["status", []],
["probeable", []],
["lifecycle", []],
["supports_qr_login", ["bridge_url", "bridge_token"]]
],
"resource_quota": {
"max_cpu": "15.0",
"max_memory": "128MB",
"max_connections": 10,
"max_calls_per_sec": 10
},
"accessible_ports": [
"ConfigPort",
"LoggerPort",
"PersistencePort",
"CachePort"
],
"injectable_pipelines": ["inbound", "outbound"],
"config_schema": [
{"key": "bridge_url", "type": "string", "required": true, "default": null, "hot_reloadable": true, "sensitive": true, "scope": "account", "constraints": {"pattern": "^https://"}},
{"key": "bridge_token", "type": "string", "required": true, "default": null, "hot_reloadable": true, "sensitive": true, "scope": "account", "constraints": {}},
{"key": "poll_interval_ms", "type": "integer", "required": false, "default": 2000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 1000, "max": 10000}},
{"key": "max_batch_size", "type": "integer", "required": false, "default": 50, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 10, "max": 200}},
{"key": "max_message_length", "type": "integer", "required": false, "default": 2000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 500, "max": 5000}},
{"key": "sse_heartbeat_interval_ms", "type": "integer", "required": false, "default": 30000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 10000, "max": 60000}, "description": "SSE 心跳间隔毫秒bridge 默认 30s 发 heartbeat 事件保活"},
{"key": "sse_connect_timeout_ms", "type": "integer", "required": false, "default": 10000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 5000, "max": 30000}, "description": "SSE 连接建立超时(毫秒)"},
{"key": "sse_read_timeout_s", "type": "integer", "required": false, "default": 120, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 30, "max": 600}, "description": "SSE 流式接收读取超时bridge 30s heartbeat 保活,此处仅兜底防挂死"},
{"key": "allow_insecure_localhost", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}, "description": "开发环境豁免开关true 时允许 http://localhost/127.0.0.1/::1 的 bridge_url生产环境必须为 false"},
{"key": "max_backfill_pages", "type": "integer", "required": false, "default": 50, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 1, "max": 200}, "description": "SSE 断线补全分页上限(页数),超限时中断补全,剩余消息依赖 Puller 兜底"},
{"key": "max_backfill_messages", "type": "integer", "required": false, "default": 500, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 10, "max": 5000}, "description": "SSE 断线补全消息总数上限,超限时中断补全"},
{"key": "signature_required", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}, "description": "是否强制校验 bridge 请求签名true 时 verifySignature 校验 signature_token"},
{"key": "signature_token", "type": "string", "required": false, "default": null, "hot_reloadable": true, "sensitive": true, "scope": "channel", "constraints": {}, "description": "bridge 请求签名共享密钥signature_required=true 时生效"}
],
"env_vars": [
{"name": "WOC_BRIDGE_URL", "description": "bridge 服务默认地址(可被 config_schema 覆盖)", "required": false, "default": "https://localhost:8088", "sensitive": false},
{"name": "WOC_POLL_INTERVAL_MS", "description": "短轮询间隔(毫秒)", "required": false, "default": "2000", "sensitive": false},
{"name": "WOC_MAX_BATCH_SIZE", "description": "单次拉取消息上限", "required": false, "default": "50", "sensitive": false},
{"name": "WOC_MAX_CALLS_PER_SEC", "description": "每秒调用上限", "required": false, "default": "10", "sensitive": false},
{"name": "WOC_HTTP_TIMEOUT_MS", "description": "HTTP 客户端超时(毫秒)", "required": false, "default": "30000", "sensitive": false}
]
}