vb2250158/dsh-chat-enhancement ↗★ 0
dsh-chat-enhancement
Inline previews for DSH chat tool results 适合需要优化聊天列表加载速度、增强会话异常恢复能力的场景。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:vb2250158/dsh-chat-enhancementREADME
Read the full README ↗DSH Chat Enhancement
0.3.71:恢复能力与重试分类
主会话和子会话通过配套宿主接口续跑原轮次,保留身份、模型、队列和父子关系,不添加恢复消息。临时错误只重试失败项;宿主接口缺失时提示“需更新并重启”,停用无效重试和后台轮询,悬停可查看成功数量及每项错误。
在当前 Harness 根目录应用 host-patches/prompt-free-recovery.patch,重建 agent、agent-loop、subagent 包并重启 Host。更新 Harness 后应重新检查配套接口;该补丁按当前源码适配,不可直接覆盖不匹配的版本。
设置 DSH_SOURCE_ROOT 指向已构建的 Harness,运行 node --test tests/session-recovery-profile.test.mjs 可用正式 SDK profile 验证恢复、原输入、父子关系与持久化回读。两种 SDK 共用宿主场景,预期输出分别保存;Python 场景在 Windows 运行,需要 Python 与 pydantic。
0.3.69:聊天列表分批加载
配套源码补丁先显示各工作区最近会话,旧会话随后按活动时间分批补齐;JSONL 目录扫描使用限量并行与 header 缓存。加载期间可打开已显示的会话,实时更新和删除不会被后续页覆盖。应用、重建和验收步骤见 聊天列表加载。
The companion source patch displays recent workspace Sessions before older pages arrive, with bounded JSONL reads and revision-validated header caching. Received rows remain interactive and later pages preserve concurrent updates and removals. See Session-list loading for application, rebuild and validation.
0.3.67:Desktop 提问图片
提问图文中的绝对本地路径通过 Web 或 Desktop 自身的 /api/file 路由读取。Desktop 仅接受 dsh-app://app,不使用原始 Host 地址或复制认证信息。问题选择、提交及图片失败回退保持一致。
This release requires DSH 0.2.1-alpha.1 or a compatible 0.2 release. See compatibility details.
0.3.64:自动重命名
会话菜单提供“自动重命名”,从已有用户消息重新生成标题;首条消息的自动命名仍保留。空会话使用工作区、创建时间和短身份命名。命名通过正式 Host 标题服务保存,不发送提示词或启动对话轮次。批量调用 chatTitles/read 时使用 onlyUnnamed: true,写前保留已有名称,并在写后回读标题。
The session menu provides Auto-rename using existing human messages. First-message naming remains enabled; empty sessions use their workspace, creation time and short identity. Titles persist through the Host title service without submitting prompts or starting turns. Batch callers set onlyUnnamed: true on chatTitles/read, preserving existing titles and reading accepted values back.
批量列表返回现有投影中的候选;写入前仍通过当前标题服务保留已命名会话。空会话依据正式 titleInput 聚合判断,列名与命名判断不重复载入历史日志。
Batch lists expose existing projection candidates; each write rechecks the current title owner. Empty-session detection uses the registered titleInput aggregate without an additional historical-log observation.
0.3.63:工作区文件夹吸顶
工作区列表滚动时保留当前父级文件夹;嵌套文件夹按层级停在父级下方。保留原文件夹的折叠、新建、菜单和拖拽操作,背景使用当前主题的侧栏颜色。配套工作区补丁与安装步骤见 工作区吸顶。
Workspace headers remain visible while their sessions scroll. Nested headers stack below ancestors and retain the original controls. The companion patch and installation commands are documented in Workspace sticky headers.
0.3.61:中断扫描加速
中断检查默认只读取启动前 24 小时内活动过的会话日志,同时读取 4 个会话;recoveryLookbackMs 可调整时间窗口,recoveryScanConcurrency 可设置为 1–16。旧会话按文件修改时间或实时活动筛选,不按创建时间排除。目录仍保留全部 header,供子会话恢复原父 Agent。原会话恢复保持既有顺序,失败项可单独重试。
Interruption checks read logs active within the 24 hours before startup, with four concurrent reads by default. Configure the window through recoveryLookbackMs and concurrency through recoveryScanConcurrency (1–16). Artifact modification times and live activity retain recently reused older sessions; all headers remain available for parent recovery. Resumption keeps the existing order and failed reads remain individually retryable.
先应用配套补丁 patches/2026-10-09-recovery-scan-window.patch,再重建 JSONL 持久化包并重启 Host。补丁为公开的 stat() / list() 快照增加可选文件修改时间 modifiedAt,无需读取日志正文。没有时间元数据的第三方后端继续检查未知记录,避免遗漏最近续用的旧会话。
Apply patches/2026-10-09-recovery-scan-window.patch, rebuild the JSONL persistence package, and restart the Host. The patch adds optional artifact modification timestamps to public stat() / list() snapshots without reading event bodies. Backends lacking time metadata continue checking unknown records so recently reused sessions are retained.
现有 Host 的完整历史缓存默认只保留 5 个会话。本次保持缓存容量,限制同时读取的历史数量。跨重启的恢复摘要需要与当前日志核对版本,旧投影缓存可能落后于日志,不能直接据此跳过检查。
The current Host caches five complete cold sessions by default. This release keeps that capacity and bounds concurrent history reads. A recovery summary reused across restarts must establish freshness against the current log; a stale projection checkpoint cannot safely exclude a session from scanning.
0.3.55:Markdown 弹窗流程图与大视图
文件引用中的 Markdown 弹窗优先使用 Markdown 增强插件的完整渲染器,流程图可切换图形与源码并缩放;未安装 Markdown 增强时保留通用 Markdown 预览。弹窗默认占据接近整个窗口,文档内容独立滚动。配套 Markdown 增强 0.1.7。
0.3.54:批注附件修复
选区批注通过「添加为附件」进入附件栏,保持草稿正文不变,也不自动发送。已支持新版 DSH 的 addAttachmentFiles;在尚未提供该方法的现有安装版本上,复用文件选择器的草稿附件入口。添加失败时保留批注内容供重试。已在原安装版本的真实页面验证 JSON 附件上传,并移除验收时的临时附件。
0.3.53:额度耗尽会话免消息续作
CLI 支持 recover-quota --targets ;文件内容为 [{"id":"原会话 ID","startSeq":原轮次序号}]。先完成当前重启恢复批次,再显式提交额度目标。Host 校验最终 QUOTA 或历史 PI_AI_ERROR 402、原轮次及空闲状态,保留原 ID 和队列且不新增用户消息。正在运行、已换轮次的会话跳过;主动结束、其他错误、目标及子会话拒绝普通额度续作。失败项通过原 recover 命令重试。
需要依次应用 host-patches/prompt-free-recovery.patch 和 host-patches/quota-failure-continuation.patch 并构建 Host。自动重启扫描不会恢复历史额度错误。CLI 的完成数量表示原生续作已启动;后续额度仍不足时会话会记录新的错误。
0.3.51:工作区外 Markdown 预览
文件卡片和文件引用中的 Markdown 预览支持本机绝对路径,也支持以当前会话工作目录解析的相对路径及上级目录路径。无工作目录的会话仍可预览绝对路径。文件必须存在、为普通 Markdown 文件且使用 UTF-8 编码;继续执行 maxMarkdownBytes 大小上限。补齐预览原语所需的本地化文案,代码块和脚注可正常渲染。
Markdown previews accept local absolute paths and paths resolved relative to the session workspace, including parent directories. Sessions without a workspace may preview absolute paths. Regular-file, Markdown extension, UTF-8 and maxMarkdownBytes checks remain enforced.
0.3.49:正文代码定位链接
Agent 可在回复正文使用 [73–74 行]() 引用已核验的代码范围;单行写 #L73,路径也可相对当前会话工作区。点击后打开 DSH 原有右侧代码预览器,加载到末行、定位起始行,并使用主题颜色短暂高亮。再次点击会重新定位。chat-enhancement.codeReferenceHighlightMs 设置高亮时间,默认 1600 毫秒,范围 100–10000。
正文链接渲染配套 Markdown 增强 0.1.5;只处理显式本地文件行号链接,不猜测裸行号对应文件。HTTP 链接仍按普通网页链接处理。文件读取、分页、重新加载及折行继续由原预览器管理;文件不存在时显示原预览器错误。代码高亮适用于 DSH 代码预览格式,其他文档仍由各自预览器显示。
0.3.48:恢复阶段与超时重试
恢复行显示读取列表、检查记录、核验、挂载或续作阶段,以及本阶段处理数量和当前会话等待秒数。细线使用当前阶段的实际计数;未知总量显示流动线。悬停可查看当前会话身份及失败原因。
列表读取、观察、挂载和子会话续作的等待使用 recoveryReadTimeoutMs(默认 30000 毫秒)。超时后保留原批次供重试;未完成的挂载或续作调用复用原 Promise,观察句柄迟到时释放。检查重试只重读失败项。客户端请求超时后解除按钮禁用,可重新查询;自动恢复仍不投递提示消息。
The recovery row reports listing, scanning, validation, loading and resumption stages with processed counts and elapsed waiting time. The thin line reflects the current stage; unknown totals remain indeterminate. Hover reveals the session identity and failure detail. recoveryReadTimeoutMs bounds each Host wait (default 30000 ms). Retry retains the batch and reuses unresolved loading/resumption calls, disposes late observation handles and rescans only failed records. A client timeout enables querying again. Recovery continues without synthetic prompts.
0.3.47:目标耗时与完成统计
耗时显示最多两个带名称的单位,例如 2小时23分、6分55秒;不足一分钟只显示秒。
Elapsed time uses at most two named units, such as 2h23m or 6m55s; durations under one minute show seconds only.
目标栏实时显示从创建起的耗时,编辑目标不会重置时间。复用公开 GoalBar 和编辑弹窗,保留暂停、恢复、编辑和清除。完成轮次的最后一条回复显示“目标已完成”、累计 token 和总耗时;刷新、分页、新建目标后仍保留历史统计。
时间包含等待和暂停,完成时计至收尾轮结束。token 来自本会话目标创建后到收尾轮结束的已记录请求,包含重试、输入、缓存和输出,不重复累加 reasoning,不包含子会话。提供商缺少用量时标为“已记录 ≥”,不把缺失量当作零消耗。
The goal bar shows elapsed wall time from creation, retaining the public goal controls and edit dialog. The final reply of the completion turn displays goal completion, cumulative tokens and elapsed time. Full-log projections retain summaries across reloads, pagination and replacement goals. Time includes waiting and pauses through the closing turn. Tokens cover recorded input, cache and output usage, including retries, in this session only; missing provider usage is explicitly marked as a lower bound.
0.3.43:保留队列的中断恢复
冷恢复保留的子会话回报和待处理输入继续在原会话消费,不再把空闲队列误判成正在运行。中断轮次身份检查仍阻止重复启动。
Persisted pending input resumes in the original interrupted session. An idle queue no longer counts as an active run; exact turn checks still reject duplicate starts.
0.3.42:自动续跑中断迭代
宿主启动后自动扫描并恢复最近中断的会话,不投递恢复提示。已有活动目标复用官方目标迭代;普通会话与可续作子会话使用 continueInterrupted,保留原会话及父子关系。手动暂停、取消、完成及运行中的任务不重复启动。recoveryAutoResume 默认为 true,可在插件配置中关闭。
需要配套宿主公开续跑能力,补丁在 host-patches/prompt-free-recovery.patch。缺少能力时报告恢复失败,不回退为提示投递。已存在的恢复消息保留在历史中。
The Host automatically resumes interrupted sessions without a recovery prompt. Active goals reuse the official goal driver; ordinary and continuable child sessions retain their original identities through continueInterrupted. Paused, cancelled, completed and running work is not restarted. The required Host patch is bundled; unsupported drivers fail explicitly. Set recoveryAutoResume: false to disable automatic recovery.
0.3.41:停止重复分组刷新
操作与思考分组仅更新变化的文字、属性和样式;忽略两个分组自身的按钮变更及聊天以外的 DOM 更新,避免互相触发扫描。推理自动展开仅监听状态与展开属性,不再被其他插件的样式写入触发。
Activity groups update changed presentation values and ignore their own buttons and unrelated page mutations. Reasoning expansion observes state and expansion attributes instead of all styling changes.
0.3.40:恢复进度线
恢复提示底部显示 2px 细线,按服务端已恢复与待恢复数量更新;等待首个回执时显示流动效果,完成或失败后收起。支持减少动态效果偏好。进度表示会话续作已接收,不表示业务任务完成。
A 2px line below the recovery prompt tracks accepted session resumptions. It animates while waiting for the first result, respects reduced motion, and disappears on completion or failure. It does not track task completion.
0.3.39:恢复时间判定
冷会话重启后挂载会追加元数据;恢复检查改用中断轮次的结束时间,避免漏掉已挂载但未续作的会话。CLI 返回逐会话检查或恢复错误,便于定位部分失败。保留 0.3.38 的提问图文、图片识别及对话控件。
0.3.38:提问图文与对话控件
配合主动提问 0.1.6,问题说明和选项说明支持 Markdown 图文混排。此版本同时包含图片真实格式识别、后台任务说明、推理结束延迟 3 秒折叠及主题开关。保留 0.3.37 的中断会话恢复功能。
0.3.37:重启恢复会话
进入网页后异步检查 DSH 启动前一小时内意外中断的会话,在会话列表底部显示一行「是否恢复意外中断会话 ✓ ×」。勾选向原会话提交续作,叉号忽略当前 Host 插件实例的提示;多标签页共享批次。检查不阻塞页面,恢复前重读记录并检查运行状态及输入队列,避免重复续作。
已完成、主动取消、一次性子会话不进入候选。可续作子会话保留原父身份,已完成的普通父会话只挂载 Agent;无法挂载的父会话和部分失败保留重试入口。恢复回执表示已接收,不是任务业务完成。默认查启动前 24 小时,可在插件 config 设置 recoveryLookbackMs(86400000)、recoveryPollIntervalMs(1500)、recoveryReadTimeoutMs(30000),均为正整数毫秒。
运维 CLI 复用同一检查和恢复接口:
node
/scripts/recover-sessions.mjs check --base-url --dsh-home
node
/scripts/recover-sessions.mjs recover --base-url --dsh-home
check 等待检查结束,recover 自动确认一次并等待批次结束;默认总超时十分钟,可用 --timeout-ms 调整。失败退出码为 2,连接和参数错误为 1。CLI 仅访问本机地址,认证留在内存。本版包含 Host 服务,安装后重启并刷新网页。
验证覆盖合成中断、主动取消、继承历史、双击去重、失败重试、原父子身份、CLI 和实际 Cordis/Typert 注册卸载,以及构建产物的真实 UI 原语。
0.3.36: 模型与提供商标签
运行状态扩展槽 conversation.chat.running-status 可显示当前轮最近一次实际请求的模型与提供商,等待首个请求记录时不借用上一轮模型;工具执行期间保留该轮最后一次实际调用。目录只提供显示名称,下一轮选择不改变正在运行的路由标签。此位置需要宿主提供该扩展槽;没有槽时不会插入运行标签。
存在模型重定向存档时,尾注显示“已重定向 · 实际模型 · 提供商”,悬停查看“原模型 · 提供商 → 实际模型 · 提供商”。来源读取 dsh-provider-visibility 的历史投影,目标必须与该回复的实际请求路由一致才显示重定向。改规则、移除规则或切换当前模型不会改变旧回复的路由;旧记录缺少来源时只显示已记录的实际模型。
消息尾部显示“模型名称 · 提供商”,与输入框使用相同目录名称,保留大小写、空格和连字符。模型和提供商身份取自该条助手消息的历史 requestConfig;切换输入框模型不会改写历史标签。目录中找不到对应名称时显示记录的 ID。
公开的 DSH 插件,为聊天中的媒体和 Markdown 文件提供页内预览。
更新日志
0.3.35
- 图片预览顶部的下载、悬浮/全屏切换、关闭按钮改为图标,保留悬停提示和无障碍名称。
- 已构建客户端产物,现有测试 21 项通过、1 项跳过;无需配置或数据迁移,安装后重新加载插件并刷新页面。
0.3.34
show_image卡片不再显示「展示图片 · 路径」和「宽 × 高」,只保留可点击预览图。音频/视频卡片的标题和大小仍保留。- 验证:构建客户端产物后跑现有测试;升级后需重新加载插件并刷新页面。未新增持久化迁移。
Unreleased
- 非阻塞提问支持图文混排:问题说明
detail和选项description使用;本地文件使用绝对路径,如![示意图]()。文字可写在图片前后,标签label保持短纯文本。此功能需要同时更新dsh-proactive-questioning的公开内容插槽;图片加载失败显示替代文字,点击图片不会选择答案。
调用示例:queue_user_question({"questions":[{"id":"layout","question":"选择哪个布局?","detail":"下面是整体位置。\n\n\n\n请比较两种布局。","options":[{"label":"方案 A","description":"按钮靠左。\n\n\n\n适合单手操作。"},{"label":"方案 B","description":"按钮居中。\n\n"}]}]})。
-
DSH 启动后自动检查启动前一小时内意外中断的会话,并在原会话直接续跑,不投递恢复消息。检查不阻塞页面;多标签页共享同一批次,失败项保留重试入口。关闭
recoveryAutoResume后可手动检查和恢复。 -
已完成、主动取消、正在运行及一次性子会话不会重复恢复。可续作子会话通过原父会话地址恢复;无法挂载的父会话、读取失败和部分恢复失败保留重试入口。恢复成功指请求已接收,不代表原任务已完成。窄侧栏隐藏该行,展开后显示。
-
在
chat-enhancement插件的config中可调整recoveryLookbackMs(默认86400000)、recoveryPollIntervalMs(默认1500)和recoveryReadTimeoutMs(默认30000),均为正整数毫秒。检查先筛选时间窗口,再限量并行读取会话日志;不会改写历史记录。此功能包含 Host 服务,安装后须重启 DSH 并刷新网页。 -
对话增强设置中的四个勾选框改用官方主题化
Switch,保留设置值、禁用状态和可访问名称。 -
推理自动展开的行在结束后默认保持 3 秒再折叠;重新开始推理时取消旧计时,重复界面更新不延长等待。关闭开关立即折叠,卸载或移除行会清理计时器。配置字段为
chat-enhancement.reasoningCollapseDelayMs,默认3000。 -
后台任务列表支持 bash、pwsh 的调用说明,复用“显示模型自述的本次调用说明”开关。说明来自当前会话中与任务编号、原命令和启动时间匹配的工具记录;记录缺失或开关关闭时显示命令。悬停保留原命令及状态,列表继续展示耗时、失败原因和已结束任务。通过公开 header action 替换入口实现,卸载后恢复官方列表。
-
支持内容与扩展名不一致的 PNG、JPEG、WebP、GIF 图片,例如 QQ 保存的
.png文件实际包含 JPEG。按文件签名纠正 MIME,保留原文件名;损坏图片和超限图片仍由官方附件服务拒绝。 -
bundle 停用
attachment-local,由chat-enhancement-attachments继承官方存储实现。保存、历史读取、普通文件、压缩和存储目录保持官方行为。自定义附件限制或dshHome配置应移到chat-enhancement-attachments条目;卸载后恢复原条目。 -
安装更新并重载宿主后生效。
0.3.33
- 修复「长链路任务里选了中文、几十步之后又变回英文思考」:光靠系统提示约束不住。一次漂移会让那条英文回复进入历史,之后每一步读到的上下文都以英文为主,于是自我强化——实测有一轮 157 步的会话再也没回到中文。
- 新增语言漂移提醒(插件 → 聊天增强 → 配置 → 语言漂移提醒,默认「发现漂移时才提醒」)。插件在
agent/pre-step里检查上一步助手输出的汉字占比(只统计汉字与拉丁字母,忽略数字、标点、emoji 与代码符号),低于0.2就判定为漂移,把一句目标语言原话的极短提醒挂到下一条消息上。三个可选值:onDrift(默认)/always(每一步都提醒)/off(完全不注入)。 - 提醒写成目标语言本身,这是关键:一句英文的「请用中文」正是模型跟着跑偏的东西。默认
onDrift而非每步注入,因为提醒会留在对话历史里、之后每一步都要重发,always更稳但更费上下文。 - 注入走官方
agent-instructions范式——改写decision.messages,而不是往agent.inbox里 prepend。后者要到下一步才被 claim,晚一步就拦不住刚检测到的漂移。同一时刻只保留一条提醒:新的替换旧的,模型回到目标语言后不再产生新的。 - 语言分区 order 从 9800 调到 10300(
DEPLOYMENT_PERSONA_SUFFIX10200 之后,即除 persona 后缀外最后一个)。单步 A/B 实测无差别,成本为零,但长上下文里语言规则不再排在约 1.9k 字符英文之前。 - 语言指令增补一条反漂移规则:输出语言不跟随工具结果、代码或更早的其它语言回复。
- 设置页的两行选择器合并为一个
SettingPicker;语言为「跟随对话」时漂移提醒行显示为禁用,并就地说明原因。 - 验证:22 项单元测试通过,另有
scripts/verify-anchor-wiring.mjs的 18 项接线检查——它驱动apply()真正注册出来的agent/pre-stephandler,覆盖「漂移才注入 / 干净不注入 / 已有提醒被替换而非累加 /reject决策原样透传 / 各模式读实时设置」等纯函数测不到的路径。未新增持久化迁移;升级后需重新加载插件并刷新页面。
0.3.32
- 新增「对话增强 → 思考行」开关:推理中自动展开。默认关闭。开启后,思考进行中的 Thinking 行自动展开显示全文并跟随最新内容;思考一结束立即恢复成默认的折叠摘要。
- 完全由插件实现,不需要官方补丁,也不需要重启宿主——浏览器侧读设置即时生效。
- 实现取的是「驱动 DSH 自带控件」而不是「接管渲染」:DSH 的 Think 行把展开态存在 React 的
useState里,data-expanded只是它的投影,因此插件点的是那一行自己的[data-disclosure-row][data-expandable]展开目标(DisclosureRow在expandOnRowClick下把整行作为按钮)。展开内容、折叠态 24px 定高、aria-expanded与hidden="until-found"仍全部由官方渲染器决定,插件不改任何官方源码、不写data-expanded。 - 只碰它自己开过的行:控制器用
WeakSet记住自动展开的实例,结算时只收起这些。你手动展开的行不会被自动收起;关闭开关同样只收起自动展开的那批。 - 设置项由 Host 持久化(
chat-enhancement命名空间的expandReasoningWhileRunning,默认false),因此与其它偏好一样跨刷新、跨标签页、跨浏览器一致。 - 选区批注改走附件:批注不再拼成草稿文本,而是作为一份
批注-.json文件进入附件栏。ctx.conversation.addAttachmentFiles(sessionId, files)与用户选文件使用同一草稿接收路径,草稿文本、引用芯片和其它附件都不受影响,也不会自动发送。载荷是带schema标记的 JSON,记录引用原文、批注内容与目标坐标(msgKey/msgKind/seq)。 - 验证:18 项测试通过(含思考行「展开 → 结算 → 收起」全链路行为测试,以及批注附件载荷、JSON 往返、拒绝路径的契约测试)。未新增持久化迁移;升级后需重新加载插件并刷新页面。
0.3.31
- 新增「对话增强 → 工具行」开关:给每个工具声明一个可选的
description参数,模型用一句话说明本次调用要做什么,工具行就显示这句话(bash 一直是这样显示的)。默认打开。 - 模型那一半完全由插件完成:在
system-prompt/assemble瀑布里把该属性注入装配后的工具 schema,不碰任何官方工具定义。执行侧安全——parameterSchemaSpecToJsonSchema的参数根对象不写additionalProperties,JSON Schema 视为开放,各工具自己的解析只取认识的键,所以带上 description 的调用与不带的行为完全一致。属性排在最前,因为客户端对未知工具的摘要回退是按位置取「第一个字符串参数」。 - 显示那一半需要官方补丁:
patches/2026-09-16-tool-row-description.patch(4 个文件,基线 commitc291e7961a)。内容是SUMMARY_KEYS各 variant 前置description,以及ToolRow把「描述」与「可点击的文件路径」拆成两个元素——原先行的折叠行只有一个文本槽,文件行里它就是那个可点开的路径标签。官方packages/client/ui-tool的 307 项测试在打补丁后全过。 - 补丁不参与任何安装流程:它与 pin/Import 无关,要按下面「官方补丁」一节手工 apply 并重建客户端产物;
lib/被官方 gitignore,所以每台机器都得自己构建。 - 未打补丁时模型仍会填写 description,只是界面上看不到(设置页那段说明已经写明),所以开关打开不会造成错误显示。
0.3.30
- 修复「选了简体中文、思考仍然是英文」:原先的指令整段是英文写的(
Write everything you say to the user in Simplified Chinese),而模型看到的是满屏英文指令加英文工具输出,于是思考语言跟着上下文走。现在每个语言都自带用该语言书写的祈使句(native字段),排在分区第一行,指令本身就是目标语言。 - 语言分区的 order 从 30 移到 9800(
DELIVERABLE_FILE_REFERENCES9000 与STRUCTURED_OUTPUT9900 之间,即提示词末尾附近)。语言是与满屏英文指令竞争的输出规则,实测排在部署指令段(25–30)里时被忽略;DSH 把 persona suffix 放在最后(10200)也是同一个理由。 - 指令新增「Do not fall back to English for thinking」,直接堵掉「上下文是英文所以我用英文想」这条退路;仍明确点名 reasoning 与可见回复都要用目标语言,并保留代码、路径、命令、日志、引文不翻译的约束。
- 测试补齐:每个可选语言必须自带非空
native(缺一条就等于那个语言选了没用)、母语句必须排在分区首行、分区 order 必须 > 9000。 - 未新增持久化数据或配置迁移;升级后需重新加载插件并刷新页面。
0.3.29
- 语言下拉