Releases: UNLINEARITY/dsh-code
Releases · UNLINEARITY/dsh-code
Release list
dsh-code 0.9.0
dsh-code 发布说明 - 0.9.0
概览
0.9.0 聚焦会话管理与委派流程。/resume 选择器默认只显示当前目录、按最近活动排序,并支持经输入框确认后永久删除会话及其子代理线程。子代理运行期间可观测,且继承当前选定的模型:新增的 /agents 信息流、/subagent 面板与 agent/request 监听将委派请求路由到当前模型选择。模型选择会持久化为全局部署默认,审批提示重建为决策对话框,补全支持 Enter 确认,并修复了子代理面板的两处缺陷(React hooks 崩溃与重复的档位后缀)。
新特性
会话管理
/resume默认只显示当前目录的根会话,路径经 realpath 归一化比较;cwd 过滤可将列表扩展至全部工作区。- 列表按最近活动排序——以 JSONL 构件的修改时间为准,缺失时回退创建时间——并显示相对时间(
5m ago、2d ago、日期)。 - 新增
/delete命令与d键,经输入框确认(y delete · any other key cancels,y 在输入框中键入)后永久删除会话及其子代理线程;选择器保持打开并立即重载。当前会话与存活会话被拒绝,删除前校验 JSONL 布局,无构件后端(SQLite)明确拒绝。
子代理
- 运行中的子代理可观测:有界活动信息流将每个子会话折叠为一行(标签、状态、最近活动),输入框上方显示单行汇总;新增
/agents面板列出 live 与持久化子会话,Enter 或t打开完整转录。 - 委派代理运行在当前模型而非启动默认:插件级
agent/request监听将内核的模型选择语义镜像到子代理请求,新增/subagent面板选择显式覆盖(inherit 行、模型列表、effort 阶段)。 - 委派类工具卡包含有界 prompt 预览,结果落地前即可在转录中看到子代理被要求做什么。
审批
- 审批提示改为决策对话框而非裸 y/n 条:粗体问句标题、带溢出标记的命令正文、编号选项(允许 / 拒绝并说明不同做法 / 拒绝继续执行),支持方向键加 Enter、y/n/d 快捷键、数字直选、Esc 显式拒绝;并发问询在屏幕后 FIFO 排队。
模型默认
- 每次
/model选择都经与 web 壳相同的agentDefaultModel服务保存为全局部署默认,重启后保留且其他界面可读;保存失败不回滚会话内的切换。 /model与/effort打开时光标定位在当前选择上;选择即时经resolveCallConfig校验,对不提供档位的模型执行/effort显示明确空态。
改进
- 补全菜单(斜杠命令、提及、裸路径)支持 Enter 确认,与 Tab 等价;完整输入的命令在回车时仍直接提交。
/resume搜索由 Ctrl+F 门控,输入不再与导航快捷键冲突(Esc 或再次 Ctrl+F 退出,Enter 提交)。
修复
- 进入/退出
/subagent的 effort 阶段不再触发 React 的 "Rendered fewer hooks than expected"(输入 hook 保持无条件调用)。 /subagent选择通知不再重复档位后缀(…flash@max@max变为…flash@max)。
行为变化
/resume默认只显示当前目录;切换 cwd 过滤可查看全部工作区。- 会话按最近活动而非创建时间排序。
- 选择器中的删除键为小写
d;确认在输入框中键入。 - 新命令:
/delete、/agents、/subagent。
重要说明
- 从 0.8.0 升级无需配置或持久会话迁移;未移除任何命令或设置。
- 运行时要求不变:Node
^22.19 || >=24与兼容的@deepseek-ai/dsh安装。 - 删除会话会同时删除其子代理线程,且不可撤销。
- 发布首日,pnpm 用户应使用精确版本
dsh-code@0.9.0,因为 pnpm 会忽略发布不足 24 小时的包。
Full Changelog: 0.8.0...0.9.0
dsh-code 0.8.0
dsh-code 发布说明 - 0.8.0
概览
0.8.0 将 Provider 配置升级为一等终端工作流,并增强 dsh-code 在长时间会话中的可靠性。DeepSeek API key 不再被列为启动前置条件,/model 可通过 Harness 管理 Provider 凭据,会话前的 /mode 与 /permission 控制随全新状态栏一并落地,GFM 表格和多行 reasoning 获得清晰排版,大型持久转录也能以近线性的工作量恢复。流式可靠性修复消除了重思考模型上的嵌套更新警告刷屏;会话切换、输入历史持久化、终端文本边界和已定稿历史渲染同时得到针对性修复。
新功能
Provider 与凭据管理
DEEPSEEK_API_KEY不再被文档列为启动前置条件。Harness 既有的无 Key 路径继续支持打开 TUI、检查或恢复会话、使用非模型功能并浏览模型目录;只有实际发起推理时才会因缺少凭据失败,并直接提示打开/model。- 在
/model中按a可打开 Provider 面板。它支持遮蔽输入的 API key 新增或轮换、移除可写 key、激活可配置 Provider,以及删除用户添加的 Provider profile,同时不会引入第二套凭据存储。 - 凭据状态刻意保持无值:面板只显示 key 是否已配置、来源和可写性。由环境提供的 key 可见但只读;面板打开期间,credential、settings 或 adapter 变化会自动刷新。
会话前的 mode 与 permission 控制
- 全新启动的 TUI 会在尚未创建 session 时显示配置中的默认 Agent mode 与 permission preset。
/mode、/permission <preset>和 Shift+Tab 均可修改待应用选择,且不会创建空的持久 session;第一条真实消息会使用所选值组合会话。两个命令均已收录进/补全与/help。 - 直接输入
/permission会打开仿照/mode的有界预设选择面板——输入过滤、方向键移动、Enter 应用、r刷新、Esc 关闭;/permission <preset>仍保留单行直接生效路径。 - 首个持久 turn 开始后,Agent mode 仍按 Harness preset 契约锁定。session 创建后 permission preset 仍可继续修改,并保持通过 Harness 管理的 session event 写入。
终端渲染
- 状态栏第一行现在依次显示模型、工作目录、
/mode <value>、Git branch、context,以及右侧固定的 permission preset 与 Shift+Tab 提示。session 标题、计数、耗时、cache、token、goal、plan 和 sandbox 状态移入第二行,并缩进到与模型名左缘对齐,享有独立的宽度预算。 - context 占用表改为无极连续条:实心填充段、点状空闲轨道加用量读数(
32K/128K 25%,空间变窄时退化为纯百分比),替代原先按内容类型分段的条形。读数在 90% 告警阈值时变为琥珀色。 - GFM pipe table 现在以按列测量的无外框终端网格呈现,支持强调表头、列对齐、escaped pipe 和单元格内 Markdown。终端窄到无法形成可读网格时,同一份数据会切换为字段记录布局,而不会丢弃单元格内容。
- 已完成、历史详情、实时尾部和 streaming reasoning 统一使用悬挂缩进,显式换行与自动折行的续行都与助手回答正文对齐。
- 欢迎区现在通过紧凑的三行鲸鱼 Header 显示已安装包版本,并加入双语 slogan
Into the Unknown 探索未至之境;短或窄终端保留安全单行降级。
可靠性与性能
会话生命周期与输入历史
- 会话组合改为串行执行,异步 mention、命令和 skill 结果由活动 Agent epoch 约束,陈旧任务不会跨越会话切换边界。
- 恢复流程统一拒绝子代理对话和 session ID 冲突,按平台规则匹配工作目录,并安全处理自动生成的导出文件后缀。
- 全局提示词历史限制为 100 条,并通过串行队列写入最新内存快照。退出流程会等待有序清理,即使单个清理步骤失败也仍会到达进程退出。
长转录与终端安全
- 持久转录重放改为带索引的可变累积状态,最后只生成一次最终视图,替代逐事件写时复制数组。长日志和大量孤立事件日志以近线性方式扩展,同时保留直播 reducer 对重复 ID 与中断记录的行为。
- 流式 token 突发(Provider 以亚毫秒级批次排空缓冲)现在合并为每次突发一次重渲染。此前逐 token 的同步通知会让 React 的 store 一致性检查连锁突破嵌套更新上限,在 GLM 等重思考模型上刷屏 "Maximum update depth exceeded" 警告。
- 运行中命令在完成前保留在可变尾部,因此最终状态会立即出现,不再等待 resize。已定稿转录行采用增量缓存,排队消息只扫描可变尾部,输入框动画帧也不再重建整段历史。
- 外部工具名、命令名、面板和历史文本在进入终端前统一转义与规范化,覆盖 OSC/CSI 字节、双向控制符、不可见 Unicode、多行文本和 tab。diff 展开、read/source 元数据和大型结构化工具参数会在昂贵解析或分配前受到限制。
细节改进
- DeepSeek Wave、Aurora、Pulse 模型切换动画统一延长 200ms,并按比例重新映射完整时间线,使波形、边框呼吸、wordmark 与尾部火花更易看清,而不是在结尾增加静止等待。
- 可恢复的 Provider 和模型失败继续限制在有界面板内,包括五行短终端布局;不会清除 scrollback,也不会暴露提交过的 secret。
行为变化
- 全局提示词历史现在保留最新 100 条,而不是 500 条;下一次提交时,持久历史会压缩到该上限。
/resume与--continue只选择 root session;子代理对话仍可只读检查。--session请求的 ID 已存在时会明确报错,不再与持久状态冲突。/export默认文件名会安全处理显式 session ID;退出会等待有序的持久化与 Agent 清理,单个清理步骤失败也不再阻止进程退出。
重要说明
- 从 0.7.0 升级无需迁移配置或持久会话;本版本未移除命令或设置。
- 运行时要求保持 Node
^22.19 || >=24与兼容的@deepseek-ai/dsh安装。 - 模型推理仍需要 key。可通过
/model添加,或在启动时提供DEEPSEEK_API_KEY;环境提供的凭据不能在 TUI 中覆盖或删除。 - 欢迎 Header 中显示的版本来自已安装
dsh-code包清单。 - 发布首日 pnpm 用户请使用精确版本
dsh-code@0.8.0(pnpm 会忽略发布不足 24 小时的包)。
Full Changelog: 0.7.0...0.8.0