QwenPaw 编写插件让 会话(频道) 支持 分支(fork),回退(rewind),重新生成(regen)

QwenPaw 编写插件让 会话(频道) 支持 分支(fork),回退(rewind),重新生成(regen) 前言QwenPaw 太久没有增加这个支持但是这个功能非常需要。我只能靠AI辅助下手动写一个插件来实现这个功能了。实现3个基础功能支持 fork rewind 和 regen。仓库https://github.com/one-sixth/qwenpaw-plugin-session-tools️ QwenPaw会话增强工具 (qwenpaw-plugin-session-tools)为 QwenPaw 提供会话管理能力回退对话、分叉会话、重新生成回复。 功能命令功能说明/rewind [N]⏪ 回退 N 轮对话删除最后 N 组用户助手消息默认 1 轮/fork [N] 分叉新会话从 N 轮前分叉出新会话默认 0全部分叉/regen 重新生成回复删掉最后一轮让 AI 重新生成使用示例/rewind → 回退 1 轮 /rewind 3 → 回退 3 轮 /fork → 完整复制当前会话为新会话 /fork 2 → 从 2 轮前分叉保留最后 2 轮上下文 /regen → 重新生成上一条回复 安装方法一官方命令安装推荐qwenpaw plugininstall插件目录路径--force例如qwenpaw plugininstallD:/插件测试/qwenpaw-plugin-session-tools--force方法二QwenPaw的插件管理安装QwenPaw版本大于v1.8.1 推荐前往QwenPaw的webui中的插件管理点击安装插件然后把下载的插件压缩包拖放进去方法三手动复制到插件目录将qwenpaw-plugin-session-tools目录复制到插件目录cp-rqwenpaw-plugin-session-tools ~/.qwenpaw/plugins/加载插件使用官方命令安装方法立即生效。手动复制方法重启 QwenPaw 后生效。️ 架构session-tools/ ├── plugin.json # 插件元数据名称、版本、入口等 ├── plugin.py # 入口文件命令拦截、monkey patch、命令分发 ├── session_ops.py # 核心操作会话文件的读写、消息解析、rollback/fork/regen └── README.md # 本文件关键设计命令拦截通过 monkey patchAgentRunner.query_handler拦截/fork、/rewind、/regen命令在命令到达 Agent 之前处理会话操作SessionOperator类封装了会话文件的读取、解析、写入自动处理多 agent 工作区隔离消息格式实际消息存储在agent.memory.content中每条消息为[{msg_dict}, {extra}]的列表对格式WebUI 集成/fork通过ChatManager.create_chat()注册新会话自动命名Fork #N 原名称编号递增/rewind提示刷新页面以显示更新后的会话/regen即时重跑 AI 流程无需刷新⚙️ 工作原理/rewind [N]1. 读取会话文件中的消息列表 2. 找到最后 N 个用户消息的索引位置 3. 截断保留该位置之前的所有消息 4. 写回会话文件/fork [N]1. 读取源会话文件 2. 若 N0保留最后 N 轮对话的消息 3. 生成新会话 ID基于源 ID 时间戳 4. 写入新会话文件 5. 通过 ChatManager 注册WebUI 可见/regen1. 截断会话删除最后一条用户消息及之后的所有内容 2. 提取该用户消息的文本 3. 用该文本替换 /regen 命令 4. 走原始 Agent 处理流程 → AI 重新生成回复 会话文件位置{workspace_dir}/sessions/{channel}/{user_id}_{sanitized_session_id}.json示例C:/Users/ABC/.qwenpaw/workspaces/default/sessions/wecom/企微会话1.json 技术细节运行目录~/.qwenpaw/plugins/qwenpaw-plugin-session-tools/插件类型command内部 API使用SafeJSONSession的update_session_state/get_session_state_dict方法多 agent 支持SessionOperator按agent_id缓存每个 agent 工作区独立消息存储state.agent.memory.content列表对格式新会话注册通过ChatManager.create_chat(ChatSpec)确保 WebUI 可见 注意事项/rewind后请刷新 WebUI 页面以查看更新后的会话/regen会丢弃上一轮的所有上下文包括 tool_call、搜索结果等请确保确认后再使用/regen在第一条用户消息时不可用会话文件修改前会自动备份到{workspace_dir}/sessions_backup/目录 依赖QwenPaw 1.1.0Python 3.10 许可MIT License 作者one-sixth