MothX v1.1.82 已经发布,单文件的 code agent 工具。
更新日志
Unreleased
v1.1.82
✨ 新功能
- 交互式 TUI 国际化
settings.json 新增 tuilang 配置,支持 auto、zh 和 en。auto 仅在 UTC+08:00 使用中文;/settings 菜单支持全局/项目保存范围,修改成功后立即生效。
- 无论选择哪种界面语言,slash 命令语法始终保持英文。
改进
-
统一任务终态
- 每次 agent 运行都会发出唯一的规范事件
EventRunFinished,并携带 success、incomplete、failed 或 canceled 之一的 TaskStatus。
- TUI、Web UI/Serve、channels、A2A、ACP、子代理和 workflow 现在都基于该事件判定结果;旧版
EventDone/EventError 事件仍保留以兼容现有消费者。
- 用户中断、超时或 context 取消现在明确报告为
canceled;TUI 显示状态提示,不再显示红色错误。
- 事件流在未发出终态事件时关闭,现在报告协议失败,不再被视为成功完成。
-
Provider 稳定性
- OpenAI Responses 流现在会对流事件报告的可重试失败进行重试。
-
调试体验
- 交互式 TUI 启用
--debug 时,会在启动阶段向终端打印一次 pprof 服务地址;持续的 provider 调试输出仍通过 VIBECODING_DEBUG_LOG_ONLY 写入 debug.log。
v1.1.79
不兼容变更
- Workflow DSL 迁移到 JavaScript
- 将基于 Emacs Lisp 的 workflow DSL 替换为使用 goja 运行时的 JavaScript 实现。
- 移除了
vibeEmacsLispVm 依赖和 Elisp 解释器。
- 提供内置函数:
agent、phase、parallel、series 用于 workflow 定义。
- 不兼容变更:Workflow DSL 语法从 Elisp 变为 JavaScript。用户需要相应地更新他们的 workflow 定义。
- 保持了现有的 workflow 语义和 API 兼容性。
问题修复
- Channel 运行状态同步
- 修复 channel(微信/飞书)运行状态不同步:取消 channel run 现在会同时 Abort agent(与 background 运行时对齐),不响应 context 取消的等待不再永久持有 session 运行时锁,
/new 不再误报任务仍在执行。
- 根治子代理终态事件丢失:
AgentManager 新增终态生命周期监听器,channel dispatcher 将每次运行的根 agent 映射到所属会话;当子代理比父事件流活得更久(异步 subagent_spawn、运行取消、强制轮转)时,done/error 终态仍会送达观察者,子代理不再永远卡在 “运行中”;外部子代理接收端对事件流与监听器双路径投递的终态事件去重。
- 修复测试基件竞态:channel 子代理测试 provider 原先按全局调用顺序分发响应,而父 agent 的后续调用与子的首个调用存在先后竞争;现改为按请求内容路由,子代理观察者相关测试转为确定性。
✨ 新功能
- Channel 运行管理
- 新增 channel 运行看门狗:超过
agent.run_stale_timeout_secs(默认 600s)无 agent 事件、或总时长超过 agent.run_max_duration_secs(默认 4h)的 run 会被强制停止,持久化 run 状态收敛到终态。
- 新增 channel
/stop 命令、/new force 与 /clear force(先取消当前任务并等待宽限期再轮转)、非强制轮转时的占用提示、/status 展示运行状态,以及上一条消息仍在执行时的排队提示。
- dispatcher 回退路径的会话轮转不再阻塞等待运行时锁;两条轮转路径统一为 try-lock + force 语义。
- durable background 轮询新增全局上限(
api.backgroundRunMaxSeconds,默认 6h),实时循环与重启恢复循环均生效;远端永不终态的 run 会以 incomplete 收尾并释放运行时锁。
- agent 提问等待现在同时响应 context 取消,无人值守的运行时不会因等不到回答而永久挂起 run。
v1.1.78
- 后台 run 的
Idempotency-Key 现在会在已有 run event 中记录非敏感请求指纹;同一 key 搭配不同消息会明确返回冲突,兼容重试仍复用原 run,不新增表结构。
- 工具执行记录复用前新增 session/turn/provider/tool/args 一致性校验;execution key 碰撞时拒绝复用,避免损坏记录导致错误的副作用结果。
- 工具结果写回增加状态条件保护;旧进程在 abandon 或新恢复后迟到的结果不会覆盖当前记录。
- TUI 现在会从共享 session 数据库发现未终态的 durable background run,并在终态回放提交后的 assistant 文本,重启后不再丢失后台结果。
- Channels background 完成事件现在记录 canonical assistant entry 和待投递标记;dispatcher 重启后收到下一条入站消息时会补投最终文本/附件,并通过 run event 防止重复投递。
- Channels background 的受限工具开始/结束状态也会写入 run event,重启补投时按事件顺序恢复后再发送最终结果。
- Channels background 运行期间也会通过原有
ProgressFunc 实时收到受限工具状态,断线后仍以 run event 补投。
- Responses attachment 的 provider 归一化与 WebUI 现在都会拒绝 localhost、私网、loopback 和 link-local HTTPS URL,同时保留 provider reference 供审计。
- 新增可选 provider-specific file resolver:Serve 仅允许 session 已归档的 file ref 下载,WebUI 提供文件附件下载入口,不把任意 URL 或 ref 变成代理。
- 附件下载入口增加非 OpenAI provider 的可选 resolver 回归验证,公共 Provider 接口仍保持不变。
- OpenAI Responses hosted item 现在由包内 descriptor registry 统一声明 capability、恢复策略和 attachment policy;未知上游类型仍保留归档但不会被猜测执行或下载。
- Background Responses 的
incomplete 终态现在保留已生成的部分文本、附件和 incomplete_reason,不会再被错误转换为 failed。
- Background poll/recovery 遇到明确的远端状态失效(权限、404/410、lineage 或 expired)现在也会复用本地 replay;普通 429/5xx 不会误触发回退,单个本地 run 最多自动 replay 一次。
- Code Interpreter 支持现有 hosted 配置 map 内的 MothX 私有
mothx.maxCalls/mothx.timeoutSecs;这些字段不会发送给上游,超额后台结果保留为 incomplete,超时会取消 runtime。
- Remote MCP hostname 增加确认式 DNS 私网预检;明确解析到私网/loopback/link-local 才拒绝,DNS 失败或超时保持放行,不把本地预检冒充上游 egress 控制。
- Code Interpreter file citation 现在保留
container_id provenance,并在 OpenAI resolver 中使用容器文件下载接口;普通 file ref 行为不变。
- WebUI 现在读取
/api/capabilities 的 Responses attachment download 能力;只有服务端明确报告不支持时才隐藏下载入口,未知 provider 不会被误判为不支持。
- WebUI capability 请求现在独立降级;旧服务或 capability API 不可用时不会阻断会话列表和聊天数据加载。
/api/capabilities 现在同时暴露 provider-neutral attachmentDownload;非 OpenAI provider 只要实现可选 resolver 也能正确声明下载能力。
改进
- Responses hosted 生命周期与恢复审计
- hosted item 的 added/done 生命周期现在贯通 provider、agent、Serve、TUI、channels、WebUI 和 public SDK;状态可通过 SSE/transcript 观察,并在 run event 中重连重放。
- hosted 状态投影使用统一的字段白名单、标量限制和长度限制;工具执行中断会明确显示为
interrupted,不会伪装成普通失败或隐式重试。
- 工具恢复会记录自动只读恢复或用户确认恢复原因;channels 平台提供稳定消息 ID 时支持作用域幂等键。
测试
- 增加 hosted lifecycle fixture、capability profile、恢复审计、跨入口事件 bridge 和 race 测试覆盖。
✨ 新功能
改进
-
Provider 流式响应空闲超时与自动重试
- 流式 HTTP client 不再设置固定的 30 分钟总时长限制,只有上游长时间没有发送数据时才会超时,因此持续输出的长 SSE 流可以继续运行。
- 在产生可见输出前发生流式超时的 agent 回合会自动重试最多两次,并向消息 channel 展示进度;重试耗尽后返回友好的错误信息。
-
上下文压缩超时与配置清理
- 压缩不再使用独立的五分钟截止时间;改由 provider 流式超时和调用方取消信号统一控制。
- 移除未使用的空闲压缩配置和 UI 控件。上下文压缩现在仅在上下文压力达到阈值或显式请求时触发。
测试
- 新增流式空闲超时处理、自动重试与恢复、大工具结果压缩、限流重试及更新后上下文压缩行为的测试覆盖。
✨ 新功能
- Web UI 中展示 Channel 子 Agent
- Channel 自有的子 Agent 事件现在会桥接到 Web UI 会话运行时;现有子 Agent 页面和 API 可以查看实时进度、工具调用、结果、完成状态及 transcript。
- Channel 命令新增
/help,并同步子 Agent 生命周期更新,同时不转移 channel dispatcher 对运行时的所有权。
改进
- 微信消息投递
- 长回复现在会在安全的 UTF-8 边界拆分,并显示剩余投递次数。达到单条消息推送上限后,额外内容会排队,可通过
/more 继续接收。
- 进度消息也会共用同一投递额度,并保留入站微信消息 ID,用于 channel 作用域的幂等与投递跟踪。
- 截断的 HTTP/SSE 响应(
io.ErrUnexpectedEOF)现在会被视为可重试的 provider 失败。
测试
- 增加 channel 子 Agent 集成、外部子 Agent HTTP、dispatcher 生命周期、MCP editor、session view、微信分片/投递及截断流重试测试覆盖。
v1.1.77
✨ 新功能
- 模型级
disableSamplingParams 兼容标志(默认开启)
- 模型配置新增
compat.disableSamplingParams(三态)。默认开启:除非模型显式设置 "disableSamplingParams": false 选择启用,否则不再向任何模型发送 temperature/top_p。
- 可在 TUI(
/auth → 模型 → E. Compatibility → Disable Sampling Params,循环 auto → enabled → disabled)和 Web UI 设置的模型表格(允许采样列,勾选 = 发送参数)中配置。
- 注意:通过 serve API 传递
temperature/top_p 的 OpenAI 兼容客户端,现在需要模型显式 opt-in 后这些值才会传给 provider。
改进
-
Web UI 历史会话排序与时间显示
- 会话列表现在按最后使用时间倒序排列,最近回复的会话显示在最上方。
- Web UI 会话管理页面显示每个会话的最后回复时间;左侧历史会话仅保留最新优先的排序,不额外显示时间。
-
思考/推理模型自动抑制采样参数
- Anthropic:开启 extended thinking 时自动丢弃
temperature/top_p,符合 API 对 thinking 与采样参数互斥的要求。
- OpenAI:chat completions 使用 OpenAI 风格
reasoning_effort、以及 Responses API 携带 reasoning 块时,自动省略 temperature/top_p(OpenAI 推理模型会拒绝这些参数)。
测试
- 为 Anthropic、OpenAI(chat completions + Responses)、Google 三个 provider 增加采样参数抑制测试,覆盖默认丢弃、显式 opt-in 透传与 deepseek 格式保留场景。
修复
✨ 新功能
-
完整的 OpenAI Responses 运行时
api: "openai-responses" 从基础流式支持扩展为完整的 Responses 运行时:支持原生 response item 回放、previous_response_id 与 conversation 状态模式、reasoning context/mode、prompt cache 控制、service tier、结构化输出、hosted tools 及工具调用控制;请求发送前会按当前模型的兼容能力进行校验。
- Responses 会以原生 item 形式归档并关联到本地 turn,在 session 回放中保留 reasoning、引用/产物、工具输入和 response lineage。工具执行以 response turn 为幂等范围,provider 重复发送 function-call item 时不会重复执行工具。
- Provider 配置
responses.background: true 可在 Serve 中启用可持久恢复的远程 Responses 后台运行。MothX 会轮询任务、在服务重启后恢复、执行本地 function/custom tool、持久化生命周期事件和结果,并通过 Responses run API 支持查询、取消、重连和放弃任务。
-
-P --json 打印模式流式 NDJSON 输出
- 在
-P(打印模式)下新增 --json 标志,将响应以 JSON Lines / NDJSON 流式输出到 stdout——每个事件一行 JSON,消费方可在事件到达时逐行读取,无需等待运行结束。
- 每个 agent 事件各占一行:
start(provider/model/mode)、text_delta、think_delta、tool_call、tool_execution_start、tool_execution_end、tool_result(含 name/arguments/result/error/diff)、plan_update、usage(token 与费用)、context_usage、compaction_start/compaction_end,以及作为流结束信号的 done 或 error 事件。所有进度、调试与诊断信息仍走 stderr,stdout 始终为纯 NDJSON。
- 适用于 CI、自动化脚本和与外部程序集成场景。拼接助手文本:
mothx -P --json "总结" | jq -r 'select(.type=="text_delta").text' | tr -d '\n'。以类型化对象查看整条流:mothx -P --json "总结" | jq -s '.'。
-
Serve 状态与能力中的 Web Search 可用性
- serve API 现在在
/api/status、session capabilities 和默认 session 创建中同时反映 serve.json 与 app-level settings.json 的 web search 配置。
- Web UI 工具开关和状态快照在保存设置或 serve 配置后保持同步刷新。
-
桌面端 Release Workflow
- 新增
.github/workflows/desktop-release.yml,在推送 tag 时自动构建并发布桌面端安装包。
- 支持 macOS 代码签名(
CSC_LINK 支持 base64 或文件路径)、Windows 和 Linux 构建,使用 electron-builder。
- 自动生成 SHA-256 checksums,并根据 tag 是否包含
pre 自动设置 prerelease 与 release notes,上传到 GitHub Releases。
-
新增模型:deepseek-v4-flash-0731
- 在 Gitee 与 Moark 供应商中新增
deepseek-v4-flash-0731 快照模型,支持 1M 上下文窗口与推理(最大输出 token 上限由供应商发布)。
改进
-
Responses 可靠性与重试处理
- Responses 流错误现在会纳入共享 provider 重试策略,而非立即失败。Cloudflare HTTP
524 源站超时同样可重试,提升了短暂上游或网关异常时的稳定性。
-
Web UI 设置体验优化
- 保存 provider、app 和 serve 配置后立即刷新相关设置视图,使功能标志和运行时状态即时更新。
- 聊天 Composer 的工具开关增加 title 提示,提升可发现性。
-
桌面端构建加固
- 提升 Electron 安装重试次数,并增加镜像源 fallback(
ELECTRON_MIRROR → npmmirror → 默认源),提高 CI 稳定性。
- 修复构建脚本中的 ESM 路径解析,并修正 macOS Electron 可执行文件路径检测。
- 新增
version:set 脚本,从 release tag 同步更新 package.json、package-lock.json 和 runtime 版本元数据。
-
Serve Session 创建一致性
- 统一
getOrCreateSession、defaultSessionCapabilities 和 channel runtime status snapshot 中的 web search 能力解析逻辑。
-
Channels 会话选择器改为原生下拉框
- 将 Channels 设置页面的自定义会话下拉菜单替换为原生
<select> 控件,提升可访问性、键盘导航和移动端体验。
测试
- 新增
settings.json 和 serve config 对 getOrCreateSession 及 status handler 中 web search 行为的覆盖测试。
修复
详情查看:https://gitee.com/startvibecoding/mothx/releases/v1.1.82