🐳 第一章 Harness不只是另一个Coding Agent
📄 一句话概括

DSH 一直挂着开发者预览——版本号以 0 开头、后缀带 alpha 或 rc,意思是【接口随时会改】;正确的用法是学结构,别背接口。

📝 本节和前面几节的关系

1.4 讨论的是行业路线(看长期),这一节回到当下(现在能不能用)。它是第 1 章的收尾,也是第 2 章真的动手跑起来之前,最后一次提醒。

一、从版本号读出状态

版本号不是随便编的,它是一句承诺。按通行的语义化版本规矩:

DSH 现在的版本号是 0 开头。主版本是 0,就是明说:接口不承诺稳定。 所以看到版本从 0.1 涨到 0.2,不要以为只是加了些功能—— 它也可能改了配置的写法,升级要重新对一遍。

二、预览期要知道的三件事

官方自己列过预览期该知道的事,归纳成三条:

  1. 接口会变。升级小版本也可能要改配置——这是主版本 0 的直接后果。
  2. 能力会动。插件可能改名、改行为、被拆开或者合并。 (这里可以看个真事:早期资料里 PTC 模式的标识写作 code, 而当前版本的实际配置里它是 ptc——同一套东西,标识在版本之间就变过。)
  3. 安全边界要自己看。沙箱不等于自动隔离。Agent 能执行命令这件事是真的, 官方反复提醒先读安全说明,不要把密钥和重要项目直接交给它。

这三条里,第三条最容易被忽略,也最容易出事。

三、一条真实的时间线

把 DSH 自己的发布节奏摊开,能看出预览期是什么速度:

从 0.1 首发到 0.2 预览,间隔 47 天。 这个速度说明两件事:一是在快速长,二是别指望它今天稳定。

顺便注意一个细节:latest 指向的是 rc(候选发布)而不是正式版。 这说明连【当前推荐用哪个】都还在移动中。

四、那这本书该怎么读

既然接口天天变,这本书怎么读才不白读?答案在第 0.2 节说过,这里再收一次:

一句话:把这本书当成【一套架构的说明书】,不是【一套命令的手册】。

五、动手 Demo:把版本号拆开读

把几个真实版本号拆成四段,看每一段在说什么:

vers = ["0.1.0", "0.1.7-rc.1", "0.2.0-rc.2", "0.2.1-alpha.2"]
for v in vers:
    core, _, tag = v.partition("-")
    a, b, c = core.split(".")
    print("%-14s 主版本=%s  次版本=%s  补丁=%s  后缀=%s"
          % (v, a, b, c, tag or "无"))
print()
print("主版本号是 0 → 接口不承诺兼容")
print("latest 指向 rc 而不是正式版 → 推荐版本还在移动")

实跑输出:

--------------------------------------------------------------------
Developer Preview 是个什么状态
--------------------------------------------------------------------
  DSH 一直挂着五个字:开发者预览(developer preview)。
  这不是谦虚,是一条关于【现在能不能上生产】的明确提示。
  先从版本号本身读起:

  版本号            主版本     次版本     补丁     后缀
  --------------------------------------------------------------------
  0.1.0             0          1          0
  0.1.7-rc.1        0          1          7        rc = 候选发布
  0.2.0-rc.2        0          2          0        rc = 候选发布
  0.2.1-alpha.2     0          2          1        alpha = 更早的试版
  --------------------------------------------------------------------

  按语义化版本的规矩:主版本号 0 意味着接口不保证兼容。
  再叠加 alpha / rc 后缀,就是【随时可能改、别拿它当成品】。
  官方自己列了预览期要知道的三件事:

  要知道的             具体意思
  ------------------------------------------------------
  接口会变             升级小版本也可能要改配置
  能力会动             插件可能改名、改行为、被拆并
  安全边界要自己看     沙箱不自动等于隔离,要读安全说明
  ------------------------------------------------------

  对照它自己的时间线,能看出预览期的节奏:

  日期                   版本              变化
  ----------------------------------------------------------------
  2026-08-13             0.1.x             首次开发者预览
  2026-09-25             0.1.7-rc.1        桌面预览版出现
  2026-09-29             0.2.0 预览        插件管理器、自动化任务
  当前(本课写作时)     0.2.0-rc.2        npm latest 标签
  同步在跑               0.2.1-alpha.2     下一个小版本试版
  ----------------------------------------------------------------

  小算例:从 0.1 首发到 0.2 预览,间隔 47 天。
  这个速度说明两件事:一是在快速长,二是别指望它今天稳定。
  所以这本书的正确用法是——
  学它的结构(这一层很少变),而不是背它的接口(这一层天天变)。

四行的【主版本】那一列全是 0,这就是这本书所有【会变】的源头。 而【latest 指向 rc】这一条更说明问题——连官方推荐用哪个版本,都还在动。 所以读完这篇,请记住一句话: 在这门课里,凡是涉及具体命令和配置的地方,都请以你装到的那一版的官方文档为准。

30 秒实验

  1. 在终端跑一次 dsh --version,看你实际装到的是哪个版本号。
  2. 打开包管理页面搜 @deepseek-ai/dsh,看 latest 标签当前指向哪个版本。
  3. 想一下:如果你现在要基于它做点东西,怎么设计才能让将来升级时没那么痛。

常见误区

  1. 错误:0.2 都发了,应该算稳定了。——纠正:主版本号是 0,就表示接口不承诺兼容;次版本号涨了,配置写法也可能跟着变。
  2. 错误:预览版就是不能用。——纠正:能用,而且很多人已经用它干真活;只是不该把关键业务押在【它会保持现状】上。
  3. 错误:等它出 1.0 再学。——纠正:等到 1.0 的时候,结构这一层别人已经学完了;而结构恰恰是现在就能学、以后不用重学的部分。
自测三问(点开对答案) 1. 从版本号 0.2.0-rc.2 里能读出什么? —— 主版本 0(**接口不保证兼容**)、次版本 2、补丁 0,后缀 rc 表示候选发布、还没正式发。 2. 预览期要知道的三件事是什么? —— 接口会变、能力会动(插件可能改名改行为)、**安全边界要自己看**(沙箱不自动等于隔离)。 3. 预览版的正确用法是什么? —— **学它的结构(很少变),而不是背它的接口(天天变)**;并随时以你实际装到的那一版的官方文档为准。

相关笔记