F4:新 lib/errors/messages.ts —— friendlyError(code, fallback) 把错误码映射为 中文文案 + 可选「去设置提供商」动作;覆盖后端 ErrorCode + 前端 NETWORK/ STREAM_FAILED;未知码回退原 message。写作页与审稿页错误块改用之,不再暴露 raw error code。+4 vitest。 F3:写作页工具条字数计数器流式时显示「生成中… N 字」+ 朱砂脉冲 (motion-safe:animate-pulse,尊重 prefers-reduced-motion),停后回「字数 N」。 纯 text.length,无后端改动。 前端门禁绿:lint/typecheck/vitest 171/build。无契约变更。