XEChat - VSCode Extension
XEChat 摸鱼聊天面板的 VSCode 插件版。前端逻辑完整复用
xechat-idea-webview/frontend(Vue3 + Vite),不重复开发。
仓库地址
使用教程
| 命令 |
描述 |
| ctrl+alt+shift+x |
打开聊天面板 |
| ctrl+alt+shift+h |
隐藏聊天面板 |
命令列表
| 命令 |
说明 |
命令 |
说明 |
|
|
|
| #help |
显示此帮助 |
#clean |
清屏 |
|
|
|
| #login {昵称} [-s 编号 -h IP -p 端口 -c] |
登录鱼塘 |
#exit |
退出登录 |
|
|
|
| #showServer [-c] |
鱼塘列表,-c 清理缓存 |
#showStatus |
查看可用状态值 |
|
|
|
| #setStatus {状态值} |
设置当前状态 |
#showGame |
跳转游戏页面 |
|
|
|
| #play {编号} |
开始游戏 |
#join |
加入游戏,后接任意字符拒绝邀请 |
|
|
|
| #over |
结束游戏/工具 |
#showMode |
查看模式选项 |
|
|
|
| #mode {编号} |
模式设置 |
#open [{编号}] |
打开工具 |
|
|
|
| #moyu |
摸鱼办生成 |
**#weather {地名} [-d 0\ |
3\ |
7]** |
天气查询 |
|
| **#alive {0\ |
1}** |
活着,0关闭 / 1开启 |
**#notify {1\ |
2\ |
3}** |
通知:1正常 / 2隐晦 / 3关闭 |
| #mask [-@ -a -u 昵称 -r 省份 -i IP -c -n] |
屏蔽管理,-c 解除所有 |
#backgroundImage |
切换背景图片 |
|
|
|
| #admin |
管控 |
#showKey |
查看当前快捷键 |
|
|
|
快捷键说明
| 序号 |
快捷键 |
说明 |
| 1 |
`ctrl alt -` |
降低透明度 |
| 2 |
`ctrl alt =` |
提高透明度(= 键) |
| 3 |
`ctrl alt 0` |
全透明 |
| 4 |
`ctrl alt 9` |
全不透明 |
| 5 |
`ctrl alt L` |
切换主题 |
| 6 |
`ctrl alt P` |
紧急模式(老板键)预设图片或网址一键覆盖摸鱼页面 |
Tips: 录制了自定义快捷键则优先使用,未录制使用上表默认键位;输入 `#showKey` 可查看当前生效键位。
Tips: `{ }` 必填参数,`[ ]` 可选参数,参数以空格分隔。
开源 · 更多`
项目结构
xechat-vscode-extension/
├── src/
│ └── extension.ts # 插件入口:注册命令、创建 webview 面板、桥接消息处理
├── media/
│ ├── bridge.js # 注入 webview 的 window.xechat 兼容层(VSCode 桥接)
│ └── webview/ # 前端构建产物(由 build:webview 自动同步,不入库)
├── scripts/
│ ├── build.js # esbuild 打包主进程代码(支持 --watch)
│ └── sync-webview.js # 构建前端并同步产物到 media/webview
├── package.json # 插件 manifest:命令 + 快捷键
├── tsconfig.json
└── .vscode/ # 调试配置(F5 直接启动 Extension Host)
前端复用方式
- 前端源码:
../xechat-idea-webview/frontend
- 前端构建输出:
../xechat-idea-webview/xechat-webview-plugin/src/main/resources/web
(vite.config.js 中 outDir 指向该目录,IIFE 格式、base ./)
npm run build:webview 会执行前端构建并把产物拷贝到 media/webview/
首次使用
npm install
npm run build:webview # 构建前端并同步 webview 资源(首次必须执行)
npm run build # 打包主进程代码
然后在 VSCode 中按 F5 启动调试(Extension Development Host), 按 Ctrl+Alt+Shift+X 打开聊天面板,Ctrl+Alt+Shift+H 隐藏。
桥接设计
webview 内通过 media/bridge.js 注入 window.xechat 兼容层:
| 前端调用 |
VSCode 侧处理 |
getState() |
返回 '{}',前端判定为非 JSBridge,登录走 WebSocket 直连 |
httpGet(url, cb) |
经 postMessage 转发主进程,用 Node http/https 请求(无 CORS),回传 body |
testConnection(host, port, timeout, cb) |
主进程 net.connect TCP 探测,回传 true/false |
execCommand('#hidePanel') |
关闭 webview 面板 |
updateServerList(data) |
vscode.setState 持久化 |
登录会话(WebSocket)由前端直接建立,CSP 已放行 ws: / wss:。
打包发布
npm install -g @vscode/vsce
vsce package
注意事项
media/webview/ 是构建产物目录,已加入 .gitignore,提交代码无需包含
- 前端改动后重新执行
npm run build:webview 即可生效
| |