Skip to content

congwa/wechat-translate

 
 

Repository files navigation

wechat-pc-auto

一进项目建议先看 rust/ 目录里的 macOS Rust 原生版。当前仓库里最完整、最接近产品形态的体验在这里。

macOS 版本界面预览

浮窗功能

跟随微信窗口模式 独立置顶模式
浮窗跟随模式 浮窗独立模式

查词功能

点词查询 词典窗口 音标释义 例句展示
点词查询 词典窗口 音标释义 例句展示

设置中心

主设置页 工具栏设置 完整设置
主设置 工具栏设置 完整设置

AI 能力预览

AI 总结卡片 Text2SQL AI Agent
AI 总结卡片 Text2SQL AI Agent
  • AI 总结卡片:支持按群聊、按成员、按时间范围生成结构化总结,把关注议题、主要观点、承诺待办和未决问题直接整理出来,适合快速回看当天讨论。
  • Text2SQL AI Agent:可以直接用自然语言提问消息库,例如“谁最近在聊这个话题”“某人昨天说过什么”,Agent 会自动生成 SQL、执行查询并返回解释结果。

现在主推的功能

  • 原生 macOS 浮窗,支持跟随微信窗口或独立置顶
  • AI Agent 对话式检索消息库,支持 Text2SQL 问答
  • AI 总结,可按群聊、成员或跨群生成阶段总结
  • 系统 TTS 朗读,消息卡片带“正在朗读”动画反馈
  • 监听异常时托盘图标闪动提醒,方便第一时间发现掉线

查看 macOS Rust 完整说明

Windows / Python 监听版

这个分支已经收窄成纯监听链路,不再假装支持一堆主动操作。

  • 只维护 session-only 监听
  • 只维护单 worker 扫描左侧会话预览
  • 只维护侧边栏展示 + DeepLX 翻译
  • 不再提供发送消息、发送文件、自动回复、写输入框等主动操作能力

如果你要的是“低打扰抓群消息预览,顺手翻成英文练习”,这条路对。
如果你要的是“完整消息流、自动回复、自动发文件”,这个分支不做。

安装

pip install -r requirements.txt

启动

监听目标、翻译策略、侧边栏参数都从 config/listener.json 读取;当前默认 TTS provider 是腾讯云,provider 的私有参数拆到独立 JSON(例如 config/tencent_tts.json / config/doubao_tts.json):

python listener_app/sidebar_translate_listener.py --config ".\config\listener.json"

接入 DeepLX / 云 TTS 时,推荐把真实密钥放进项目根目录的 .env.local

DEEPLX_URL=http://127.0.0.1:1188/translate
VOLCENGINE_TTS_APPID=<your-appid>
VOLCENGINE_TTS_ACCESS_TOKEN=<your-access-token>
TENCENTCLOUD_SECRET_ID=<your-secret-id>
TENCENTCLOUD_SECRET_KEY=<your-secret-key>

如果你不想依赖云 TTS,把 config/listener.json 里的 tts.provider 改回 windows_system 即可。 当前默认已经是腾讯云;如果你之前改过 provider,确保 tts.provider=tencent_cloud,并把 tts.config_path 指到 config/tencent_tts.json。 当前默认腾讯云配置示例里的英文音色是 WeJames,代号 VoiceType=501008;这不是 SampleRate

或者临时在 PowerShell 中设置:

$env:DEEPLX_URL="http://127.0.0.1:1188/translate"
python listener_app/sidebar_translate_listener.py --config ".\config\listener.json"

打包成 Windows 应用

这条分支支持直接打包成 Windows 应用,主程序和 worker 会一起构建:

powershell -ExecutionPolicy Bypass -File .\scripts\build_windows_exe.ps1

如果你确认这是本机自用包,想把仓库根目录 .env.local 一起复制到产物目录:

powershell -ExecutionPolicy Bypass -File .\scripts\build_windows_exe.ps1 -CopyDotEnvLocal

默认不复制。别把这个开关当默认配置,否则你就是在主动把本机环境变量跟着产物一起打出去。

默认产物目录:

artifacts\windows-app\wechat_sidebar\

更完整的打包说明见:

  • docs/windows-packaging.md

当前架构

  • listener_app/sidebar_translate_listener.py 负责主入口编排:配置读取、配置校验、翻译线程、去重和事件分发。
  • listener_app/sidebar_translate_runtime.py 负责 translate provider、DeepLX runtime 与失败 fallback。
  • listener_app/sidebar_runtime_support.py 负责日志轮转、worker 生命周期支撑、运行时锁与 stdout/stderr reader。
  • listener_app/sidebar_ui.py 负责 Tk 侧边栏 UI、消息缓存、快捷键、原文显示与 TTS 交互入口。
  • listener_app/sidebar_tts.py 负责 Windows System / 豆包 / 腾讯云 TTS runtime、依赖探测与播放器工厂。
  • listener_app/sidebar_shared.py 负责共享常量、路径/配置工具、文本归一化与通用校验。
  • listener_app/group_listener_worker.py 负责单进程多目标监听;一次 UIA 扫描覆盖全部 listen.targets
  • wechat_auto/window.py 负责定位并激活微信主窗口。
  • wechat_auto/controls.py 负责 UIA 控件树定位与会话列表文本解析。

你必须接受的限制

  • 当前抓的是左侧会话预览,不是右侧聊天区全文。
  • 长消息会被微信预览截断,程序拿不回后半段。
  • 连续刷屏时只能抓到轮询时刻露出来的那些预览变化,不可能零漏。
  • 这套东西适合“低打扰监听 + 翻译学习”,不适合“完整审计 / 完整归档”。

配置与排障

  • 配置字段说明看 config/listener.md
  • 监听坑位和恢复机制看 docs/wechat-listening-pitfalls.md

项目结构

config/
├── doubao_tts.json
├── tencent_tts.json
├── listener.json
└── listener.md
docs/
└── wechat-listening-pitfalls.md
listener_app/
├── group_listener_worker.py
├── sidebar_runtime_support.py
├── sidebar_shared.py
├── sidebar_translate_runtime.py
├── sidebar_translate_listener.py
├── sidebar_tts.py
└── sidebar_ui.py
wechat_auto/
├── __init__.py
├── core.py
├── controls.py
├── logger.py
└── window.py

致谢

💝 特别感谢

本项目的 macOS 版本灵感来源于 Loveyless 的天才想法和卓越的动手能力。

Loveyless 创建的 wechat-pc-auto 项目开创了先河,其创新的思路和扎实的技术实现为本项目奠定了坚实的基础。

正是因为有了这样优秀的原版项目作为起点,才得以让 macOS 版本顺利诞生,为广大 Mac 用户带来同样便捷的英语学习体验。

🌟 致敬原作

  • 原版项目: wechat-pc-auto
  • 原作者: Loveyless
  • 贡献: 开创性的解决方案,为整个项目生态提供了宝贵的思路和技术积累

感谢 Loveyless 的开源精神和技术分享,让更多人能够受益于英语学习的便利。愿这份技术的火种继续传递,照亮更多开发者的创新之路。


"一个人的灵感,点燃了另一个人的梦想;一个人的分享,成就了更多人的可能。"

—— 向所有开源先驱者致敬

开源协议

MIT License

交流群

欢迎加入我们的交流群,一起探讨技术、分享经验,共同让这个项目变得更好!

交流群二维码

About

使用微信在生活中学习英语,英语的学习来源于生活

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Rust 57.7%
  • TypeScript 37.2%
  • Python 4.3%
  • Other 0.8%