🐳 第二章 从零开始运行DSH
📄 一句话概括

模型配置里只有两个词要分清——Provider(连哪家)和 Model(用哪个);密钥单独存,不进配置文件。

📝 本节和前面几节的关系

2.2 圈定了活动范围,这一节给它接上脑子。配好模型,才算真正能开始干活——这也是【换模型只改一行】那句话第一次落地。

一、两个词:Provider 与 Model

真实配置树里,默认模型这三行是这么写的:

- id: agent-default-model
  name: '@deepseek-ai/dsh-agent-default-model'
  config:
    provider: deepseek-official
    model: deepseek-flash

两个词分清楚,配模型这件事就没有难度了:

换家就改 provider,换档就改 model。两件事不要混着做, 一次只动一个,出问题才知道是哪儿的问题。

二、密钥为什么不写在配置里

注意上面那段配置里没有密钥。密钥单独存在 DSH_HOME 下的一个凭证文件里。

为什么非要分开?因为配置文件的使用方式和密钥完全相反:

分开存,才能让【配置可以公开、密钥不能公开】这件事成立。 这也是所有正经工具的通行做法——看到哪个工具让你把密钥写进配置文件,都要多问一句。

三、两种配法

配模型有两条路,日常用哪条看场景:

两条路改的是同一份东西,不存在【界面改的不算数】这种事。 区别只在改动的场合:一次性的调整走界面,要长期固化的走配置。

四、换模型到底要动几处

第 1 章说过【换模型只改一行配置】。现在可以把它拆开算了:

这就是第 1 章那句【产品与 Runtime 分开】最直接的兑现。 密钥第一次用还是得填一次,但那是凭证的事,不是结构的事—— 结构上,它真的就只是一行。

五、动手 Demo:模型是怎么配上的

把【配置里有什么】和【两种配法的区别】摆在一张表上:

items = [("Provider", "连哪家服务(官方 / 兼容接口 / 本地)", "provider 那一行"),
         ("Model", "具体用哪一个模型", "model 那一行"),
         ("凭证", "API 密钥", "存在 DSH_HOME 下的凭证文件")]
for a, b, c in items:
    print("  %-9s %-32s 改 %s" % (a, b, c))
print()
print("换模型要动几处:")
print("  改 model 一行 + 换家再加 provider 一行")
print("  界面 / 工具 / 会话 / 工作区 都 0 处")

实跑输出:

--------------------------------------------------------------------
模型是怎么配上的
--------------------------------------------------------------------
  真实配置树里,默认模型是这么写的:

        - id: agent-default-model
          name: '@deepseek-ai/dsh-agent-default-model'
          config:
            provider: deepseek-official
            model: deepseek-flash

  三行里,两个词要分清:

  概念         含义                                     改哪里
  ---------------------------------------------------------------------------------
  Provider     连哪家服务(官方 / 兼容接口 / 本地)     provider 那一行
  Model        具体用哪一个模型                         model 那一行
  凭证         API 密钥                                 存在 DSH_HOME 下的凭证文件
  ---------------------------------------------------------------------------------

  密钥为什么不写在配置里?因为配置文件会被分享、会被提交到仓库。
  分开存是为了让【配置可以公开、密钥不能公开】这件事成立。

  两种配法,用途不同:

  方式         怎么做                      什么时候用
  --------------------------------------------------------------------
  界面里改     设置 → 模型,填密钥保存     日常,最省事
  配置里改     改 profile 的配置层         要固定、要批量、要进版本库
  --------------------------------------------------------------------

  算一笔账:想换个模型,要动几处?

    model 那一行        1 处
    如果换的是另一家      再加 provider 1 处
    界面、工具、会话      0 处

  这就是第 1 章说过的【换模型只改一行】的实物。
  密钥第一次用还是得填一次,但那是凭证的事,不是结构的事。

注意表里第三行:凭证也在配置体系里,但它不是一个【配置项】,是一个独立文件。 这个区别,就是【配得对不对】和【会不会泄露】的分界线。 本机 dump 出来的默认组合是 deepseek-official + deepseek-flash 这一对—— 官方把【便宜快】的那档设成了默认,不是最强的那档。

30 秒实验

  1. 在界面里把模型配上,密钥存好。
  2. 看一眼凭证文件的位置,理解【配置能公开、密钥不能】这条分界线。
  3. 在配置层里找到默认模型那一段,试着改成另一个模型,看界面和工具有没有变化。

常见误区

  1. 错误:密钥写进配置文件最方便。——纠正:配置文件会被分享、被提交,分开存是为了让【配置可以公开】成立。
  2. 错误:Provider 和 Model 是一回事。——纠正:Provider 是【哪家服务】,Model 是【哪一个模型】;换家换 provider,换档换 model。
  3. 错误:换模型要重装或者重配工具。——纠正:改一行配置,界面和工具都不动。
自测三问(点开对答案) 1. Provider 和 Model 分别管什么? —— Provider 管【连哪家服务】(官方/兼容接口/本地),Model 管【具体用哪一个】。 2. 密钥存在哪? —— 存在 DSH_HOME 下的凭证文件里,**不写进配置文件**——这样配置可以随便分享,密钥不会跟着走。 3. 换模型要动几处? —— `model` 一行;换家的话再加 `provider` 一行;界面、工具、会话、工作区都不动。

相关笔记