Skip to content

Releases: UNLINEARITY/dsh-code

dsh-code 0.9.0

Choose a tag to compare

@UNLINEARITY UNLINEARITY released this 17 Aug 10:30

dsh-code 发布说明 - 0.9.0

概览

0.9.0 聚焦会话管理与委派流程。/resume 选择器默认只显示当前目录、按最近活动排序,并支持经输入框确认后永久删除会话及其子代理线程。子代理运行期间可观测,且继承当前选定的模型:新增的 /agents 信息流、/subagent 面板与 agent/request 监听将委派请求路由到当前模型选择。模型选择会持久化为全局部署默认,审批提示重建为决策对话框,补全支持 Enter 确认,并修复了子代理面板的两处缺陷(React hooks 崩溃与重复的档位后缀)。

新特性

会话管理

  • /resume 默认只显示当前目录的根会话,路径经 realpath 归一化比较;cwd 过滤可将列表扩展至全部工作区。
  • 列表按最近活动排序——以 JSONL 构件的修改时间为准,缺失时回退创建时间——并显示相对时间(5m ago2d 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

Choose a tag to compare

@UNLINEARITY UNLINEARITY released this 17 Aug 02:56

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