配置引导

doctor、setup 与设置页

本页介绍的都来自可选的运维工具 @baoyx/dsh-agent-kit-admin,不在基础包 @baoyx/dsh-agent-kit 中。业务包不需要依赖它;不装它时,五类能力照常工作,直接编辑 cordis.patch.yml 即可。需要时把它加入 Profile:

$dsh plugin --profile my-agent add @baoyx/dsh-agent-kit @baoyx/dsh-agent-kit-admin

admin 包以常驻行 agent-kit-admin 注册(ctx.agentKitAdmin,即设置页调用的服务端接口),不影响基础包各行的启停。

三种方式读写的是同一份配置:Profile 目录下 cordis.patch.yml 中 id 为 agent-kit-* 的几行,以及业务包登记进来的行(见下文「业务包的行」)。手动编辑这个文件,效果也完全一样。

doctor:检查

$npx @baoyx/dsh-agent-kit-admin doctor --profile my-agent

setup:交互式配置

$npx @baoyx/dsh-agent-kit-admin setup --profile my-agent
  1. 选择 Profile。Profile 没装基础包时,会提示要执行的 dsh plugin --profile <名字> add @baoyx/dsh-agent-kit @baoyx/dsh-agent-kit-admin。
  2. 多选要启用的 Service,已启用的默认勾选。
  3. 安装缺少的 dws:启用了钉钉、而 dws 不在 PATH 中时,展示将要运行的安装命令并请你确认。跳过或安装失败时只打印手动命令。
  4. 逐个配置,当前值作为默认值:
    • 钉钉:固定使用 user 身份;可以按群名搜索群,或直接输入群 ID;未登录时可以拉起 dws auth login;最后可以发送测试消息。
    • 通知:固定使用钉钉;未启用钉钉行时会提示。
    • Agent 任务:工作目录;为 claude-code、codex 声明权限上限。
    • Jev:先选服务(TypeSafe Jev 或本地 Laya)。TypeSafe:Key 输入时不回显;显示将保存到哪里;已有 Key 时可以保留。本地 Laya:填写服务地址;Laya 开启了鉴权时可保存 Key 到 dsh 凭据文件。
  5. 以差异视图展示 cordis.patch.yml 的改动,确认后才写入。密钥单独保存,不出现在差异中。
  6. 自动运行 doctor。

任何一步取消都不会写入文件;已保存的密钥保留。

设置页:在 dsh Web 中操作

Profile 中装了 admin 包时,启动后进入 dsh Web 的「设置 → Agent Kit」:

Agent Kit 最新设置页预览,显示 WebSocket 参数、钉钉群消息路由和登录状态
当前设置页组件的本地预览:群 ID 与登录状态均为示例数据;真实 dsh Web 会显示当前 Profile 的配置。
最新 Agent Kit 设置页的只读状态预览
只读状态的本地预览:编辑控件禁用,页面说明原因;群与账号均为示例数据。

业务包的行

业务包可以把自己的 loader 行登记进来:设置页多出一张同样的卡片(启用开关、运行状态、检查结果、配置表单和密钥),doctor 也会列出它的检查,scope 为该行的 id。

写法见 README 的「把业务包的配置接入设置页与 doctor」。

密钥保存在哪里

平台setup 与设置页的默认保存位置读取顺序
macOS钥匙串,服务名 ai.typesafe.api-key环境变量 → 钥匙串 → dsh 凭据文件
Linux$DSH_HOME/.credentials.yaml环境变量 → dsh 凭据文件
Windows$DSH_HOME/.credentials.yaml,写入后收紧为仅当前用户可访问环境变量 → dsh 凭据文件

dsh 凭据文件与 .env 一样是明文,只靠文件权限保护;Agent 子进程以同一用户运行,理论上可以读到它。