收到,我先不再改代码。下面是根据本次对话记录整理出来的修改清单(仅基于聊天内容,不查看当前文件;如果某条在中途被回滚/覆盖,已在备注里说明)。 整体新增/变更汇总(按功能模块) 1. 底部状态栏 + 保留空行 ✓ - 新增“永久底部状态栏”概念:最底行显示提示信息,上一行留空;输入行位于其上方。 - 左侧文案在输入时为“输入/查看所有指令”,运行时变为“按下Esc停止”。 - 右侧显示“当前上下文 0/256k”,且数字>1000时显示 1.1k 格式。 - 需要窗口缩放时自适应,不增加新底层显示行。 2. ESC 取消行为与记录落盘时机 - 按 Esc 需要立即中断运行: - 若模型思考中:显示“∙ 停止思考”,并在思考内容下方打印红色“已取消本次响应”,上下各留一行空行。 - 若工具执行中:立即停止工具执行,工具结果为红色“任务被用户取消”,且不再继续执行工具结果处理。 - 数据落盘更细:用户输入后、模型完整输出后(不含工具)、工具调用后、工具结果后都应写入内存+落盘。 - 取消时如果输出未完成,未完成内容不入记录。 3. 工具输出显示 - “任务被用户取消”不带“└”或“失败:”前缀;左侧对齐。 - 工具执行完后输出与下一行 prompt 之间空一行。 - “取消响应”也需红色且左侧对齐,上一行留空。 4. /new 与 /resume token 复位 - /new 需要把右下角“当前上下文”重置(逻辑同 /resume)。 - 修复了 /new 未被识别的问题(与命令菜单注入有关)。 5. 只读权限提示文案 - 只读模式提示文案最后一句改为“请告知当前无权限需要用户输入 /allow 切换权限”。 - 只读模式下工具结果文案也需更新。 6. /allow、/model 等“Update”提示清理 - /allow /model /thinking 等菜单里不显示“Update …”。 7. /model 交互逻辑 - 需求最终定为: - 选择模型后,隔一行显示“模型已切换为: xxx”; - 隔一行再显示思考模式选择; - 选择思考模式后,在选项下面隔一行显示“思考模式: xxx”; - 不再要求清除菜单残留(因为清理和状态栏冲突)。 8. 命令菜单 / 无效指令 - 当 / 输入无匹配结果: - 菜单显示“无效的指令”(替换 No results found)。 - 按 Enter 后不发送给模型,只显示“无效的命令“/app””。 9. 多模态(图片/视频) - 输入路径或拖拽可自动插入蓝色 token [图片 #1] / [视频 #1]。 - 删除时 token 作为整体删除。 - 最多 9 张图片、1 个视频。 - 发送时:文本里包含 [图片 #n] 显示;实际请求使用 image_url/video_url base64 发送。 - 识别单引号路径 '/path/to/file.png'。 - 修复“只发送文本而未发送真实图片”的问题,最终要求按示例把图片作为 content list 的一部分发送。 10. 文件编辑工具创建文件 - 编辑文件时自动创建不存在的文件与目录,不再报错 ENOENT。 11. 提示信息空行规范 - 所有提示信息(如“已创建新对话/权限切换/模型切换/思考模式切换”)上下各空一行。 - Banner 与 prompt 之间需保持空行。 12. 思考完成标记 - 思考完成行使用 ∙ 而不是 ○。 - ∙ 行与思考内容整体左移一个空格以对齐工具调用的 • 前缀。 13. /system.txt 增加模型变量 - system prompt 里加入当前使用模型(用请求模型名称)。 14. 取消时错误显示 - 在思考时按 Esc,不能重复显示思考内容;只显示“停止思考 + 已取消本次响应”。 15. 运行指令取消空行 - 工具取消输出行与后续 prompt 之间需空一行。