dsh-1tempo:用 Sarashina 把模糊需求转成 MiL,经确认后再交给当前模型

前言

在 DSH 里直接写自然语言需求,模型往往要猜意图、补细节。若你已有 MiL(Machine Instruction Language)这类更结构化的表述习惯,手工改写又费时。社区插件 dsh-1tempo(仓库 puyokura/dsh-1tempo,维护者 puyokura,分类为工作流)走另一条路:只有在你显式执行 /onetempo 时,才把依頼文交给 Sarashina API 转成 MiL,在界面里展示并让你编辑、确认,再把确认后的 MiL 作为用户消息交给 DSH 当前选中的模型(TUI 与 Web UI 均支持)。平时聊天不会被动触发,避免误转换。

这是什么

dsh-1tempo(npm 包名 dsh-plugin-1tempo,显示名 1tempo,命令与配置命名空间为 onetempo)是 DSH 的 bundle 插件:模糊请求 → Sarashina 转 MiL → 人工审阅 → 送入会话中的主模型。简介与 README 一致:convert a request into MiL with Sarashina, review it, then hand it to the model dsh is running。

整体流程如下(README 原文示意):

/onetempo 3Dモデルを作って
  ↓ sarashina が MiL へ変換(mil-spec を system に渡す)
  ↓ 原文と MiL を表示し、承認(必要なら修正)
  ↓ 承認済みの MiL を、dsh で選択中のモデルへ渡す

核心功能

下面按 README 已写明的行为归纳,不展开未公开的本地企划文档。

触发与转换

  1. 仅 /onetempo 启动时工作;普通消息不会触发。
  2. 依頼文调用 Sarashina API,按同捆的 mil-spec 等指令转为 MiL。
  3. 展示原文与 MiL,请求确认;确认前可在对话框中编辑。
  4. 确认后,将 MiL 以 source.kind: 'user' 的用户消息交给当前模型(会话里看到的是正文 content,默认仅为 MiL)。转换来龙去脉记在插件 storage 与通知里;若 storage 不可用会明确提示未保存,不会假装已持久化。
  5. 原文、MiL、逆翻译、所用转换模型、调用次数、是否批准等写入 DSH storage(能力因 TUI / Web 宿主而异,见后文)。

命令行用法

/onetempo [mini|nano] [back] <依頼文>
参数 含义
mini / nano 覆盖转换模型:sarashina3-mini(6 RPM)或 sarashina3-nano(60 RPM,默认)
back 同时显示 MiL 的逆翻译(自然语言回读);省略时用配置默认
<依頼文> 转换对象,写在标志之后的整段文字

无参数执行 /onetempo 会打印用法。项目名是 1tempo,但 DSH 要求命令名以小写字母开头,故命令为 onetempo(README 有实测说明)。

展示、审批与失败策略

  • 转换结果主要出现在通知栏(DSH 对命令结果有约 200 单元格上限);较长 MiL 在 TUI 的编辑对话框初始值中可读(最长约 490 单元格)。超过 490 单元格时只展示、不打开编辑框。
  • TUI:一个带初始值的输入对话框——Enter 发送(可改内容),Esc / Ctrl+C 或超时(默认 dialogTimeoutMs 3 分钟)则取消,不会静默发送。
  • Web UI:通过 userQuestions.ask 自由输入;detail 中展示当前 MiL,留空提交则使用该 MiL。
  • 转换失败时按配置 failureMode 处理(默认 confirm:询问是否仍发原文,不自动发送)。

可配置项(节选)

在 config 或 /settings 对应段落中调整;未知键会警告并回退默认。常用项包括:

键 默认 含义
model sarashina3-nano 转换模型
backtranslate off always 时固定显示逆翻译
failureMode confirm confirm / abort
specPreamble off prepend 时在 MiL 前加定义行
includeOriginalInMessage false 为 true 时正文含原文+MiL,便于 /rewind 识别,但削弱 MiL 压缩效果

完整表格见 GitHub README。

依赖与凭证

安装与运行前需要:

  • 已包含 @deepseek-harness-tui/dsh-tui 等组件的 dsh 配置;
  • Node.js 24+(README 写明用于测试与测量工具);
  • SARASHINA_API_KEY(在 sarashina.ai 签发;README 称无偿 beta、Google 登录、无需事先申请)。

密钥优先级(README):

  1. ~/.dsh/.credentials.yaml(推荐)
  2. 环境变量 SARASHINA_API_KEY(或用 node --env-file=.env)

安装与启用

本仓库是 dsh bundle 包(package.json 中 dsh.bundle.patch → cordis.patch.yml),通过插件管理指定 spec 即可,无需手工展开仓库。

方式一:Web UI Plugins(推荐)

在侧边栏 Plugins 页面,安装源填写:

github:puyokura/dsh-1tempo

插件管理会 pnpm add 到当前 profile 并默认启用 bundle、应用 cordis.patch.yml。若 profile 开启 patchReload: live 则即时生效,否则重启 dsh。卸载在同一页面操作。

方式二:CLI 安装 bundle

cd ~/.dsh/profiles/<プロファイル名>
pnpm add github:puyokura/dsh-1tempo

并在该 profile 的 package.json 的 dsh.profile.bundles 末尾增加 "dsh-plugin-1tempo"(仅 pnpm add 不会自动启用 bundle)。示例:

      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-plugin-1tempo"
      ]

回滚:pnpm remove dsh-plugin-1tempo 并从 bundles 删除该项。在服务器跑 Web UI 时,把 SARASHINA_API_KEY 放在该服务器的 ~/.dsh/.credentials.yaml,无需重启即可被命令读取。

方式三:手动 patch(传统)

在 profile 的 cordis.patch.yml 的 insert: 增加插件条目(name 为 index.mjs 绝对路径)。不要与 bundle 方式重复注册同一 id: onetempo。细节见 README「インストール」第三节。

Web profile(web)步骤相同;TUI 与 Web 共用插件逻辑,差异在对话框与 storage 宿主(README 对照表)。

典型用法示例

  1. 在 DSH 中配置好 SARASHINA_API_KEY。
  2. 安装并启用 bundle(见上)。
  3. 在会话输入(示例来自 README 风格,可依頼文换成中文):
/onetempo nano 用 TypeScript 写一个 CLI,读取 stdin 并统计行数
  1. 等待 Sarashina 转换,在通知与审批 UI 中查看 MiL;必要时编辑后确认。
  2. 确认后,当前选中模型收到的用户消息正文为 MiL(默认不含原文),继续 usual 对话与工具调用。

需要逆翻译对照时:

/onetempo back 实现一个简单的 HTTP 健康检查端点

或在设置里将 backtranslate 设为 always。

适用场景与注意

适合:你希望把口语化、含糊的任务先压成 MiL,再交给 DSH 里正在用的强模型执行;且愿意在发送前人工看一眼结构。不适合:期望每条普通聊天都自动改写,或无法接受依赖外部 Sarashina 服务与 API 配额(如 nano 60 RPM、mini 6 RPM)。

安全与权限:插件在 当前 dsh 进程权限下运行,会调用外网 API 并可能写入本机 storage。安装前请查看 源码与 MIT 许可证(package.json 版本 0.1.2),确认凭证存放方式符合你的环境策略。

会话语义:为让 MiL 出现在对话行并支持 /rewind,插件刻意以 source.kind: 'user' 发送,会话日志上会像用户本人所发;溯源依赖 storage 与通知,而非会话里的 plugin 行。

生态说明:DSH 社区插件目录(如 SkillHub 条目)由社区维护,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与已公开元数据为准。

结尾

dsh-1tempo 把「结构化意图」嵌进 DSH 工作流:显式 /onetempo、Sarashina 转 MiL、确认后再交给当前模型,在 TUI 与 Web UI 上路径一致。若要进一步了解设计取舍,可阅读仓库内的 architecture.md 与 dsh-feature-request.md。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye