v1.27.13 [稳定版]
v1.27.13 更新日志
本次更新重点包括:启动期存储容错升级、共享中继站(Relay Station)注册表上线、记忆库多租户与隔离收尾、组织(Organizations)任务在 IM 与桌面端的统一接入、新版 HappyHorse Video 创作插件首发、对话并发与中断处理加固、首次启动密码与认证流程改进,以及桌面端启动、反馈与发布链路的多项稳定性修复。
重要变化
- 存储与启动容错升级 - 后端在 SQLite 或 JSON 文件损坏时不再阻塞启动,会自动隔离损坏数据并保留可恢复线索,让桌面端、CLI、服务端都能继续可用。
- 统一中继站注册表(Relay Station) - 新增可在 LLM、PPT Maker、Manga Studio、Tongyi Image、Seedance、Avatar Studio、Subtitle Craft、Clip Sense、Idea Research、Ecommerce Image、Media Post、HappyHorse Video 等内置插件之间共享的中继站配置;支持模型清单探测、按模型过滤端点、定向回退链等能力。
- 记忆库多租户与隔离收尾 - 记忆查询、写入、生命周期、轨迹文件、UI 提示全部按租户隔离;新增
memory_isolation别名让被隔离的子智能体使用独立MEMORY.md;提供升级与回滚指南。 - 组织与多智能体协作再次扩展 - IM 用户可以按组织名直接调用;桌面
/agent切换成为真正的开关;新增/org cancel、/org running、/org last等原生快捷命令;命令中心统一汇聚 IM、桌面、控制台的活动记录与附件。 - 新增 HappyHorse Video 创作插件 - 接入阿里云百炼(DashScope)的图生视频、视频编辑、长视频拼接、CosyVoice 语音、字幕等能力,并完整重构编排模板、UI、计费、协议适配与稳定性。
- 安全策略默认值切换为信任模式(Trust) - 全新安装将默认采用低打扰的信任模式,但破坏性 / 未知工具仍保留独立确认;并对旧版
POLICIES.yaml在无显式confirmation.mode时输出 INFO 日志,便于操作员审计与按需固定。 - 对话并发与中断处理加固 - 引入推理就绪契约、并发推理终止竞态防护,并把工具调度纳入可中断作用域,让对话可以在助手回复中被安全打断、不留悬挂任务。
新增功能
存储、记忆与认证
- 启动容错 - 在 SQLite 或 JSON 文件损坏时改为可恢复降级:损坏数据会被隔离到 quarantine 目录,启动流程继续,原始文件保留以便排查。
- 记忆库 SQLite 单源持久化 - 取消旧的多源缓存层,
iter_cached默认隐藏 quarantine 桶,避免历史脏数据回流到对话上下文。 - 租户隔离贯通生命周期 - 会话级生命周期写入、Episode / Turn 查询、JSONL 与 ReAct 轨迹文件、
trace by id接口都按租户和所有者做范围限制。 - 桌面工作区可哈希化 - 新增可选的桌面工作区 ID 哈希;REST 新增
migrate-workspace接口;UI 在迁移完成后清理遗留快照。 memory_isolation智能体别名 - 在AgentProfile中声明隔离的子智能体会获得一份独立的MEMORY.md种子,彻底避免父级私人记忆外溢。- 首启认证与密码加固 - 新增首次启动的密码持久化与设置向导,避免重启后默认凭据被反复使用。
- 更精简的提示词预算 - Memory Guide 默认压缩;闲聊路径跳过多路检索;
MEMORY.md引入缓存,降低长会话开销。
中继站与 LLM 端点管理
- Relay Station 共享注册表 - 中继站配置复用
EndpointManager,同一份中继站凭据可被多家插件复用。 - 模型清单探测与同步 -
EndpointConfig新增supported_models字段;新增POST /api/config/sync-endpoint-models与 UI 的 "Sync Models" 按钮;前端会对端点目录不匹配给出警告。 - 按模型过滤端点 - 当中继站清单不含目标模型时直接跳过该端点,避免请求几秒后再以 404 失败。
- 定向回退链(一跳) - 端点可选
fallback_enabled+fallback_endpoint,在主端点失败时立即尝试指定端点,无需调整其他优先级。 - 单端点部署支持 - 单一端点部署不再强制要求配置回退。
- 插件
_settings桥接 - 新增apply_relay_override辅助函数,统一插件设置面板与共享中继站的覆盖语义。
插件接入中继站
- PPT Maker / Manga Studio / Avatar Studio / Tongyi Image / Seedance / Subtitle Craft / Clip Sense / Idea Research / Ecommerce Image / Media Post / HappyHorse Video 等内置插件全部对接共享中继站,无需在每个插件单独维护 API Key。
- HappyHorse Video - 单独接入 DashScope 客户端,并启用 CosyVoice v2 HTTP 链路用于 TTS。
HappyHorse Video 创作插件(新插件)
- 完整生成链路 - 覆盖文生视频、图生视频、视频编辑、长视频拼接、Storyboard、Figures、Settings 等流程,UI 全面重构。
- 官方协议对齐 -
wan2.7-i2v、happyhorse-1.0-video-edit等改用官方input.media[]/media[video]协议;价格表对齐 2026-05 阿里云百炼官方单价。 - 稳定性增强 - 串行化
wan2.2-s2v提交、超时未完成的 DashScope 任务在重启后自动失败、素材规格前置校验、长视频组合与 SSE 契约对齐。 - UI 与编排模板 - 新增 Aliyun 风格主图标、刷新插件 UI 资产、暴露 Wan 2.6 / 2.7 高级参数到 UI、新增 t2v duration 边界处理与端到端 smoke 测试。
- AIGC 工作室默认模板 - 默认 AIGC 工作室模板重建在 HappyHorse Video 之上;老的内置 AIGC 视频模板归档。
组织与多智能体
- 唯一组织名 - 组织名称强制唯一,IM 用户可以直接
@<organization>或/org <name>调用。 - IM 原生快捷命令 - 新增
/org cancel、/org running、/org last等无需路由模型即可命中的快捷指令。 - 命令中心活动汇聚 - IM、桌面、控制台三端的命令进展统一写入命令中心,并将命令产物(含附件)回投到关联 IM 通道。
- 桌面
/agent真切换 - 桌面端/agent现在是一次真实的智能体切换,UI 中暴露当前组织 ID 以便诊断。 - 轻量化 Agent 复用 - 轻量 Agent 默认复用父级的技能与插件注册表;子 Agent 在权限允许时默认
share_from主智能体,减少重复初始化。 - AIGC 美术总监 Prompt 升级 - 在 AIGC 工作室美术总监 Prompt 中编入 HappyHorse 路由规则;阻止舞蹈类镜头委派给
wb-hh-human节点;新增 "优先复用已交付素材" 的提示注入。 - per-org 运行时覆盖 - 每个组织可拥有独立的
runtime_overrides;引入SkillLoader全局缓存;AIGC 组织 profile 进一步聚焦。
安全与策略治理
- 工厂默认 = 信任模式 - 全新安装在 schema、setup-center 与审计 fallback 三处统一为信任模式,破坏性 / 未知工具的拦截门与每块的最终安全开关保持不变。
- 统一工厂安全配置表 - 在
policy_v2/defaults.py中集中定义 trust / protect / strict / off 四档安全档位,避免三处分散重复声明导致漂移。 - 向后兼容提示 - 在加载未声明
security.confirmation.mode的旧版POLICIES.yaml时输出 INFO 日志,提示操作员当前继承的工厂默认与如何回到旧行为。 org_*工具的精确分类 - 为组织相关工具补齐精确的策略分类;CONFIRM决策不再触发回滚。- 安全确认 trace 本地化 - 安全确认轨迹支持中文展示。
对话并发与中断处理
- 可中断的助手回复 - 工具调用纳入可中断作用域:用户在助手回复过程中触发中断时,正在进行的工具调用会被干净取消,不再留下悬挂任务。
- 推理就绪契约 - 在进入推理前显式校验任务状态,遇到不合法的进入条件会给出明确错误,而不是悄悄进入半成品状态。
- 推理流终止竞态防护 - 修复了多并发场景下推理流终止态可能被覆写的问题。
桌面端与发布链路
- 冷启动加速 - 缩短打包后端的冷启动时间。
- 进程与超时防御 - 桌面端对子进程超时与强制结束流程做更强的边界保护。
- 嵌入式后端 PID 同步 - 设置中心心跳/健康探测与嵌入式后端 PID 同步,修复 TS 作用域 Bug。
- 崩溃工件随反馈上报 - Windows 崩溃工件会自动附加到在线反馈。
open-external桥接能力 - setup-center 新增插件桥接能力,可由插件触发外部链接。- Windows 安装器 - 资源锁探测降级为诊断级别,不再阻断安装。
问题修复
记忆库与对话
- 修复记忆库写入时的缓存一致性问题(改为基于 Observer 的失效)。
- 修复 trace 文件名按会话 ID 精确匹配(不再误命中前缀冲突的会话)。
- 修复跨租户的 episode 与 turn 搜索泄漏;persona、dedup 流程会自动跳过 quarantine 桶。
- 修复升级后旧
conversation_turns缺少session_tenants的回填问题。 - 修复并发场景下 core memory 缓存的安全性,并在 UI 导入完成后清理遗留 snooze 状态。
- 修复长会话的尾部渲染窗口与后端历史匹配,避免越长越卡。
- 修复切换会话时悬挂的 pending scroll target。
LLM / 中继 / 端点
- 修复中继插件 UI 与模型目录覆盖不完整的问题。
- 修复中继 fallback 与目录探测的若干边界。
- 修复部分插件设置面板未识别中继覆盖、
list[str]工具注册时资产 Hook 不触发等问题。
组织、插件与 IM
- 修复
org_*工具调用被自治节点意外拦截的问题。 - 修复组织命令产物(含附件)未带回根命令结果的问题。
- 修复 IM 进度流中频繁出现的空 idle node_status 摘要。
- 修复 WeWork WebSocket 在组织控制消息上多余的 "正在思考" 提示。
- 修复 Feishu 等 IM 通道在组织快捷命令后仍误打字的问题,并统一组织进度展示。
- 修复 IM 通道在频道列表中泄漏底层离线原因的问题。
- 修复同 ID 插件被
PluginManager._load_single重复加载的问题。 - 修复 happyhorse-inline 的依赖安装策略(避免
--upgrade误覆盖宿主依赖)与扫描时遇到不可读目录的崩溃。 - 修复 inference.sh web-search skill 与同名 manifest 冲突的问题。
- 修复 setup-center 在复用组织聊天分段时失败状态未重置、tasks tab 在 SSE 断流时的 fallback 轮询缺失等问题。
HappyHorse Video
- 修复运行时契约(语音、存储、设置)、UI 衔接、长视频拼接、价格预览、转场别名、素材元数据、SSE 与流水线回调等多处缺口。
- 修复任务路由对图像任务的支持、长视频校验门、t2v duration 类型边界等。
桌面端、安装与 CI
- 修复设置中心嵌入式后端 PID 与健康探测脱节、TS 作用域 Bug。
- 修复 Windows 安装器把资源锁探测当作硬错误的情况。
- 修复 macOS CI 在
create-dmg异常退出时仍误把不完整 DMG 当作发布产物的问题。 - 在 pytest 期间禁用桌面通知 helper,避免单元测试触发桌面弹窗。
测试与协作
- 优化聊天后端历史 patch 测试的匹配策略,使其更稳健。
- 修复推理流并发终止态竞态。
体验优化
- 更安心的启动 - 即使 SQLite 或 JSON 损坏,后端也能继续启动并指引修复,桌面端不会被一次脏数据卡死。
- 更少打扰 - 新装默认信任模式 + 共享中继 + 唯一组织名,让 "装好就能用、IM 里就能调" 更接近开箱即用。
- 更顺手的多智能体 - 桌面
/agent真切换、IM/org快捷命令、命令中心活动汇聚,让多智能体协作过程更可见、可控。 - 更稳的 AIGC 工作流 - HappyHorse Video 重构与共享中继接入,让 PPT、漫画、图像、视频、字幕等工作流共用一条经过校验的供给链。
- 更可解释的安全 - 工厂安全默认有明确日志告知、
org_*工具有精确分类、确认轨迹支持本地化。 - 更可控的中断 - 用户可以在助手回复过程中安全打断,不再担心残留任务继续消耗资源。
其他
- 更新版本号到 v1.27.13,并同步桌面端、前端、Python 包和运行时相关元数据。
- 更新
AGENTS.md提交信息规范,要求描述代码变更本身,而不是阶段计划编号。 - 更新记忆库升级与回滚指南、租户搜索与去重说明、智能体记忆隔离文档。
- 更新 AIGC 视频工作室手册以对齐 HappyHorse 七节点模板;记录 happyhorse-video v1.1 工作室 UX 与组织工作流。
- 更新对话并发架构文档与配套的遥测分析脚本。
- 更新微信群图片。
What's Changed in v1.27.13
This release focuses on boot-time storage fault tolerance, the shared Relay Station registry, the memory tenancy and isolation cleanup, unified Organizations across IM and desktop, the new HappyHorse Video creation plugin, hardened conversation interrupt handling, improved first-run authentication, and a long list of desktop / feedback / release stability fixes.
Highlights
- Storage and boot fault tolerance - The backend no longer fails to start when SQLite or JSON stores are corrupted. Bad data is quarantined and the originals are preserved so desktop, CLI, and server entry points stay usable.
- Unified Relay Station registry - A single relay registry is now shared across LLM endpoints, PPT Maker, Manga Studio, Tongyi Image, Seedance, Avatar Studio, Subtitle Craft, Clip Sense, Idea Research, Ecommerce Image, Media Post, HappyHorse Video, and more. It supports model catalog discovery, model-aware endpoint filtering, and a one-hop directed fallback chain.
- Memory tenancy and isolation finalization - Memory reads, writes, lifecycle, trace files, and UI banners are all tenant-scoped. The new
memory_isolationprofile alias gives isolated sub-agents their ownMEMORY.md, with a documented upgrade and rollback path. - Organizations and multi-agent collaboration expansion - IM users can now invoke organizations by name; desktop
/agentis a real switch; new/org cancel,/org running, and/org lastnative fast-paths; the command center now aggregates IM / desktop / console activity and attachments. - New HappyHorse Video creation plugin - Built on Aliyun DashScope, it covers image-to-video, video editing, long-video concatenation, CosyVoice TTS, and subtitles, with a fully rebuilt orchestration template, UI, pricing, protocol adapters, and stability hardening.
- Security default switched to Trust mode - Fresh installs now start in low-interrupt Trust mode end-to-end, while DESTRUCTIVE / UNKNOWN gates and per-block fail-safes still apply. Loading a legacy
POLICIES.yamlwithout an explicitconfirmation.modenow logs an INFO line so operators can audit and pin the previous behaviour. - Hardened conversation interrupts - In-flight tool calls are now tracked inside an abortable scope, so users can safely interrupt the assistant mid-reply without leaving orphan tasks; reasoning entry now validates state explicitly and the reasoning stream is guarded against concurrent terminal-state races.
New Features
Storage, Memory, and Auth
- Boot fault tolerance - Corrupted SQLite or JSON files are quarantined instead of crashing startup; the backend continues to run while the original files are preserved for analysis.
- SQLite-only memory persistence - The legacy multi-source cache layer is gone;
iter_cachedhides quarantine buckets by default so old dirty rows can no longer leak back into context. - Tenant-scoped lifecycle and traces - Lifecycle writes, episode and turn search, JSONL files, ReAct trace files, and
trace by idreads now share consistent tenant and owner scoping. - Hashable desktop workspace IDs - A new optional hashed desktop workspace ID, a
migrate-workspaceREST endpoint, and a UI banner driven by the migration status with localized quarantine tags. memory_isolationprofile alias - Isolated sub-agents declared viaAgentProfileget a seeded privateMEMORY.md, preventing parent-level private notes from leaking.- First-run authentication hardening - A new first-run setup flow persists passwords properly, so default credentials are not reused after restart.
- Leaner prompt budget - The memory guide is compact by default, chit-chat skips multi-retrieval, and
MEMORY.mdis cached.
Relay Station and LLM Endpoints
- Shared Relay Station registry - Relay configuration is reused via
EndpointManager, so the same relay credential can serve multiple plugins. - Model catalog discovery and sync -
EndpointConfiggains asupported_modelsfield, a newPOST /api/config/sync-endpoint-modelsAPI, and a "Sync Models" button with catalog-mismatch warnings in the UI. - Model-aware endpoint filtering - If a relay catalog does not include the target model, the endpoint is skipped early instead of failing with a 404 several seconds later.
- Directed one-hop fallback - An endpoint can opt into
fallback_enabled+fallback_endpointto try a specific endpoint immediately after itself, without reshuffling priorities. - Single-endpoint deployments - Single-endpoint setups no longer require a fallback configuration.
- Plugin
_settingsbridge - A newapply_relay_overridehelper unifies how plugin settings panels consume shared relay overrides.
Plugins Wired to the Relay Registry
- PPT Maker / Manga Studio / Avatar Studio / Tongyi Image / Seedance / Subtitle Craft / Clip Sense / Idea Research / Ecommerce Image / Media Post / HappyHorse Video are now wired to the shared relay registry, so API keys no longer need to be duplicated per plugin.
- HappyHorse Video also wires the DashScope client and enables the CosyVoice v2 HTTP path for TTS.
HappyHorse Video Creation Plugin (New)
- Full generation pipeline - Covers text-to-video, image-to-video, video editing, long-video concatenation, Storyboard, Figures, and Settings flows, with a fully rebuilt UI.
- Official protocol alignment -
wan2.7-i2vandhappyhorse-1.0-video-editswitch to the officialinput.media[]/media[video]protocols; pricing is aligned with the 2026-05 Aliyun DashScope rate card. - Stability hardening -
wan2.2-s2vsubmissions are serialized, orphaned pending DashScope rows fail cleanly after restart, asset specs are validated up front, and long-video assembly and SSE contracts are aligned. - UI and orchestration template - New Aliyun-inspired app icon, refreshed bundled UI assets, exposed Wan 2.6 / 2.7 advanced parameters in the UI, fixed t2v duration boundaries, and a green end-to-end smoke test.
- Default AIGC studio template - The default AIGC studio template is now rebuilt on HappyHorse Video; the legacy AIGC video builtin template has been archived.
Organizations and Multi-agent
- Unique organization names - Names are enforced unique so IM users can invoke an organization directly by name or via
/org <name>. - Native IM fast-path commands - New
/org cancel,/org running, and/org lastshortcuts that bypass model-based routing. - Command center aggregates activity - IM, desktop, and console command progress all flow into one command center, and command outcomes (including attachments) are mirrored back to linked IM channels.
- Desktop
/agentis a real switch - The desktop/agentcommand now performs a real agent switch and exposes the active organization ID in the UI for diagnostics. - Lightweight Agent reuse - Lightweight agents reuse the parent's skill and plugin registries by default, and sub-agents default to
share_fromthe primary agent when their profile allows. - AIGC art-director prompt upgrades - HappyHorse routing rules are now encoded in the AIGC studio art-director prompt; dance-style shots are blocked from
wb-hh-humandelegations; a "prefer delivered assets" hint is prepended toorg_delegate_task. - Per-org runtime overrides - Each organization can carry its own
runtime_overrides;SkillLoadergains a global cache; the AIGC organization profile is further focused.
Security and Policy Governance
- Factory default = Trust mode - Fresh installs land in Trust mode across schema, setup-center, and audit fallbacks; DESTRUCTIVE / UNKNOWN gates and per-block fail-safes remain.
- Centralized factory profile table -
policy_v2/defaults.pyis now the single source of truth for trust / protect / strict / off, removing drift across three previously redundant declarations. - Backward-compatibility notice - Loading a legacy
POLICIES.yamlwithout an explicitsecurity.confirmation.modenow logs an INFO line describing the inherited factory default and how to pin the previous behaviour. - Precise classes for
org_*tools - Organization-related tools get precise policy classifications;CONFIRMdecisions no longer trigger a rollback. - Localized security confirmation traces - Security confirmation traces are now properly localized.
Conversation and Interrupt Handling
- Interruptible assistant replies - In-flight tool calls now live inside an abortable scope, so a user-triggered interrupt during a reply cleanly cancels the running tool instead of leaving an orphan task.
- Reasoning entry contract - Tasks are explicitly validated as ready before entering reasoning; illegal entries surface a clear error instead of slipping into a half-initialized state.
- Reasoning stream race protection - Fixed an issue where the terminal state of a reasoning stream could be overwritten under concurrent finishers.
Desktop and Release
- Faster cold start - Packaged backend cold start has been shortened.
- Defensive process and timeout handling - The desktop shell now applies stricter bounds around subprocess timeouts and kill paths.
- Embedded backend PID synced with health probes - Setup-center heartbeats now stay in sync with the embedded backend PID; a TS scope bug was fixed along the way.
- Crash artifacts in feedback - Windows crash artifacts can be attached to online bug reports automatically.
- Plugin
open-externalbridge - setup-center exposes anopen-externalcapability so plugins can launch URLs. - Windows installer - The resource lock probe is now treated as diagnostic only and no longer blocks installs.
Bug Fixes
Memory and Conversation
- Fixed cache coherence on memory writes via an observer-based invalidation path.
- Fixed boundary-aware session id matching in trace filenames so unrelated sessions are not pulled in.
- Fixed cross-tenant leaks in episode and turn search; persona and dedup paths now skip quarantine buckets.
- Fixed missing
session_tenantsbackfill for legacyconversation_turnsafter upgrade. - Fixed core-memory cache safety under concurrency and cleared legacy snooze state after a memory import.
- Fixed the tail render window and backend history matching for long chat threads.
- Fixed lingering pending scroll targets when switching conversations.
LLM / Relay / Endpoints
- Fixed gaps in relay plugin UI and model catalog coverage.
- Fixed several relay fallback and catalog discovery edge cases.
- Fixed plugin asset hooks not firing when tools were registered as
list[str].
Organizations, Plugins, and IM
- Fixed
org_*tool calls being blocked from autonomous nodes. - Fixed file attachments missing from root command results.
- Fixed noisy idle
node_statussummaries appearing in the IM progress feed. - Fixed WeWork WebSocket sending unnecessary "thinking" presend messages on organization control messages.
- Fixed extra typing indicators after the organization fast-path and unified the organization progress display for Feishu and similar adapters.
- Fixed leaked offline adapter reasons in the IM channel list and extended user-facing error sanitization for IM surfaces.
- Fixed duplicate plugin loads via
PluginManager._load_singlefor the same id. - Fixed
happyhorse-inlinedependency installation to prefer non-upgrade pip installs, and made plugin storage scans skip unreadable directories. - Fixed an
inference.shweb-search skill manifest collision. - Fixed setup-center not resetting failure state when reusing an organization chat segment, and added a fallback polling path for the tasks tab when SSE stalls.
HappyHorse Video
- Fixed runtime contracts across voices, storage, and settings, plus UI wiring, long-video concat, pricing preview, transition aliases, asset metadata, and SSE / pipeline callbacks.
- Fixed image-task routing, long-video validation gates, and t2v duration type boundaries.
Desktop, Installer, and CI
- Fixed embedded backend PID drift in setup-center heartbeats and a TS scope bug in the PID merge.
- Fixed the Windows installer treating the resource lock probe as a hard failure.
- Fixed macOS CI accepting incomplete DMGs when
create-dmgexited with a non-zero status. - Disabled desktop notification helpers under pytest to prevent unit tests from raising native dialogs.
Testing and Reasoning
- Aligned chat backend-history patch tests with a safer matching design.
- Fixed a concurrent terminal-state race in
reason_stream.
UX Improvements
- Calmer startup - Corrupted SQLite / JSON no longer hold the backend hostage; the desktop survives one bad write.
- Fewer interruptions - Trust-mode defaults plus the shared relay plus unique organization names get installs closer to "ready out of the box and usable from IM".
- Smoother multi-agent collaboration - A real desktop
/agentswitch, IM/orgfast-path commands, and a unified command center make multi-agent work observable and controllable. - More reliable AIGC workflows - The HappyHorse Video rebuild and the shared relay let PPT, manga, image, video, and subtitle workflows share one validated supply chain.
- Clearer security explanations - Factory security defaults are explicitly announced in logs,
org_*tools have precise classifications, and confirmation traces are localized. - Safer to interrupt - Users can safely cancel the assistant mid-reply without worrying about lingering background work.
Other
- Bumped the version to v1.27.13 across desktop, frontend, Python packaging, and runtime metadata.
- Tightened the
AGENTS.mdcommit message convention to describe what changed in code rather than which plan stage was completed. - Updated the memory migration and rollback guide, the tenant search and dedup notes, and the agent memory isolation documentation.
- Updated the AIGC video studio manual to match the HappyHorse seven-node template, and documented the happyhorse-video v1.1 studio UX and organization workflow.
- Updated the conversation concurrency architecture document and the companion telemetry analysis script.
- Updated the WeChat group image.