npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

qw-edit

v0.3.2

Published

为千问办公 (QwenWork) macOS / Windows 客户端加上「编辑撤回 / 重新生成 / 消息时间」能力 —— CDP 注入,不修改客户端本体,更新免疫

Readme

qw-edit — 千问办公:编辑撤回 & 重新生成 & 消息时间 & 会话删除

给千问办公 (QwenWork) macOS / Windows 客户端的已发送消息补上官方还没有的动作:

| 能力 | 一句话说清 | |---|---| | ① 编辑撤回 | 把发错的那条消息连同它之后的所有内容一起撤回,原文回到输入框,改完重新发送 | | ② 重新生成 | 把某条回答连同它之后的所有内容撤回,用原提问让模型重跑一次 | | ③ 消息时间 | 给每条 AI 回答 补上发送时间(与用户消息官方时间同款小灰字),一眼看清对话时序 | | ④ 会话删除 · 回收站 | 官方只有归档没有删除:悬停任意会话条目 → 🗑 移入回收站(可恢复);顶部「🗑 回收站」弹窗支持多选恢复 / 彻底删除(双重确认)/ 一键清空 |

关键点:撤回是"真撤回" —— 模型对被撤回的内容真正失忆,而不是只在界面上把它藏起来。机制见下。

这不是官方工具。 作者因为自己日常使用中经常发错消息、又没有编辑入口,顺手写给自己用的。与千问办公团队没有任何关系。

自用项目,维护随缘:这是作者自用的小工具,不会跟随客户端版本随时迭代。遇到问题(按钮不出现 / 点击报错 / 界面不适配)请先自行排查,或到仓库提交 issue 等待处理——作者会看,但不承诺处理时间表。

本地插件,不联网:本工具只在你的电脑上本地运行——不联网、不上传也不收集任何数据、没有云端服务。它唯一的连接是本机调试端口(127.0.0.1:9222)到客户端之间的本地通信;客户端本身联网调用模型属官方行为,与本工具无关。

如果官方客户端日后原生支持了消息编辑/回退,本项目将停止维护并归档。 建议同时通过客户端内「反馈」渠道向官方表达这个需求——官方做,永远比第三方 hack 更好。

① 编辑撤回

鼠标悬停任意一条自己发送的消息 → 浮现「✎ 编辑重发」→ 点击后,该消息及其之后的全部内容被撤回,原文回到输入框,改完直接发送。

它到底做了什么(REBUILD 方案,macOS 1.2.5 实测定稿):

  1. 截断投影 —— 用客户端官方原语把回退点之后的消息从会话记录中截断(界面即时同步);
  2. 复活波收敛 —— 客户端会在此后 1~3 秒把个别行重新物化一次,工具自动再截断直到稳定(最多 4 轮);
  3. 会话指向全新 id —— 下次发送时,客户端自动从截断后的投影重建模型转录:被撤回的内容按构造不可能进入上下文 ⇒ 模型真正失忆;
  4. 原转录不动 —— 旧会话文件保留在磁盘作审计轨迹;后台另有异步诊断记录重建转录的行数变化(不弹窗打扰)。

② 重新生成

鼠标悬停任意一条回答 → 浮现「↻ 重新生成」→ 点击后,该回答及其之后的全部内容被撤回,并用原提问重新跑一次。

⚠️ 这会真实消耗一次模型调用额度 —— 这就是「重新生成」的语义,不是本地重放。

③ 消息时间

每条 AI 回答 下方补上发送时间(本地时区,格式 YYYY-MM-DD HH:mm:ss,与用户消息官方自带的时间小灰字完全同款),不需要悬停,常驻可见。数据来自客户端会话记录,不写任何文件、不碰磁盘。

用户消息的时间是客户端官方本来就有的,本项目只补 AI 回答那一半,两边格式统一,一眼看清对话时序。

工作方式

  • 不修改客户端本体:不改安装目录、不重签名,客户端自动更新不受影响(更新免疫)
  • 纯本地运行,不联网:所有功能都在本机完成,不访问任何网络服务、不上传不收集任何数据、没有云端依赖;本工具自身不发起任何网络连接
  • 不改动你的既有文件:工具不修改也不删除客户端的任何既有数据文件(旧转录原样保留作审计);所有操作都通过客户端内部的消息接口完成
  • 安全护栏:回答生成中会先自动停止再操作;操作目标与当前会话交叉验证,防止误伤其他会话;同一会话同时只允许一个回退操作
  • 无常驻占用:辅助进程的生命周期跟随客户端——客户端没运行时它不存在,客户端启动时自动就位,客户端退出后随之退出

安装(macOS / Windows,需要 Node.js ≥ 22)

从源码安装

git clone https://github.com/yamingmou/qw-edit.git qw-edit
cd qw-edit
node bin/qw-edit.js install

安装后正常使用客户端即可(点 Dock 图标、开机自启均可):若客户端启动时未带调试端口,会弹出一个询问框——「编辑撤回 / 重新生成」尚未加载,是否重启客户端来加载?由你决定:

  • 立即重启:辅助进程重启客户端并注入功能(运行中的任务会被中断);
  • 暂不:本次运行不再询问,下次启动客户端时会再问一次;询问框 60 秒无响应会自动消失(视为暂不)。
  • 连续 3 次重启失败会暂停询问(避免打扰),客户端下次重新启动后恢复。

日志见 ~/.qw-edit/daemon.log。

Windows 说明(任务计划程序)

Windows 与 macOS 等价:install 会把守护进程注册为任务计划程序(每 1 分钟拉起一次,机器上无常驻进程),并生成隐藏窗口启动器 %USERPROFILE%\.qw-edit\daemon-run.vbs。安装后正常使用客户端即可:若客户端启动时未带调试端口,会弹出系统询问框(60 秒无响应自动消失),选「是」即带端口重启客户端并注入。

status 可查看任务计划注册状态 / 客户端进程 / 调试端口就绪情况。

卸载

cd qw-edit
node bin/qw-edit.js uninstall

命令

node bin/qw-edit.js install    安装并启动
node bin/qw-edit.js uninstall  卸载
node bin/qw-edit.js status     查看运行状态
node bin/qw-edit.js enable     开启加载询问(默认:未带端口启动时询问是否重启加载)
node bin/qw-edit.js disable    关闭加载询问(需手动以调试端口启动客户端才生效)
node bin/qw-edit.js --version  打印版本号
node bin/qw-edit.js --help     显示帮助

⚠️ 安全提示(请先读)

本工具依赖客户端的 Chrome DevTools Protocol 调试端口(默认 127.0.0.1:9222)。开启它意味着:

  • 本机上的任何程序(不只是本工具)都能连上该端口,对客户端做近乎任意的控制:读写页面、执行脚本、读取会话数据;
  • 该端口只绑定本机回环地址(不会暴露到局域网或公网),但「本机其他程序」这条威胁面是真实存在的;
  • 因此:不要在不受信任 / 多人共用的机器上安装并开启;不用时可以 qw-edit disable 关掉自动接管,改成需要时手动带端口启动客户端;
  • 本工具不会把该端口改成对外监听,也不会替你放宽客户端的其它安全设置。

不能接受明示风险,就不要安装本工具。

已知限制

  • 版本耦合:macOS 已在 QwenWork 1.2.5 实测(当前「REBUILD」回退机制即在此版本定稿);Windows 曾在 1.1.52、1.2.0 实测通过旧回退机制,新机制待回归验证。客户端更新后界面结构若有变化可能需要小幅适配(表现为按钮不出现或点击报错),等待更新适配即可,不影响客户端本身
  • 时间展示依赖消息容器结构:AI 回答的时间戳插入到消息内容容器内;若个别版本该容器类名变化,时间可能不显示(不影响编辑撤回 / 重新生成)
  • 会话第一组对话没有更早的回退锚点,此时回退为「重置本会话并回填原文」由你修改后重新发送
  • 重新生成会真实消耗一次模型调用额度(见 ②)
  • 回退即移除:该消息之后的所有记录(包括回答、工具执行记录)都会从本会话中移除,这是回退的语义,点击前请确认(原转录文件保留在磁盘上作为审计轨迹,但不进入模型上下文)
  • 需要调试端口:自动接管需要以调试端口运行客户端(仅绑定本机 127.0.0.1)—— 见上方「安全提示」;介意请 disable 改为按需手动启动

免责声明

本工具为个人自用项目,按「现状」提供,不附带任何保证;作者不会跟随客户端版本随时迭代,遇到问题请自行处理,或在仓库提交 issue 等待处理(不承诺处理时间表)。本工具为纯本地插件,不联网;使用第三方工具增强客户端产生的任何后果(包括功能失效、会话数据变化)由使用者自行承担。千问办公及 QwenWork 名称归其官方团队所有,本项目与官方无关联。

许可

MIT