ForcePilot/backend/package/yuxi/channels/plugins/wechat_woc/manifest.json
Kris cfc42f5f06 feat: 完成渠道传输与权限体系多维度迭代
此提交包含多项核心功能迭代与问题修复:
1.  新增多操作权限配置,完善权限控制覆盖范围
2.  重构出站流水线适配器参数,优化组件依赖关系
3.  新增渠道账号配置变更事件,支持动态重建传输 worker
4.  实现全链路 trace_id 透传,优化调试追踪能力
5.  新增传输任务最大重启次数配置,避免无限崩溃循环
6.  优化幂等冲突错误体系,重构错误继承与提示信息
7.  增强 bridge_url 安全校验,新增 SSRF 防护与 HTTPS 强制校验
8.  完善 SSE 断线补全逻辑,新增分页与消息数限制
9.  重构 WeChatWoc 插件生命周期与资源管理,优化连接池与缓存清理
10. 修复多处代码逻辑bug,提升系统稳定性与可维护性
2026-07-09 20:26:49 +08:00

108 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,
"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,
"network_access": true
},
"capability_requirements": [
["supports_image_inbound", ["bridge_url", "bridge_token"]],
["supports_video_inbound", ["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}
]
}