支持
遇到问题
先运行一次 doctor(在可选的 @baoyx/dsh-agent-kit-admin 中),它会指出缺什么、怎么修。仍然解决不了时,欢迎在 GitHub 上提 issue。
提交 issue
请在 GitHub Issues 提交,并附上以下信息:
- 下面这条命令的输出(其中不包含任何密钥;没装 admin 包时先用
dsh plugin --profile <名字> add @baoyx/dsh-agent-kit-admin加入):
$npx @baoyx/dsh-agent-kit-admin doctor --profile <名字> --json - 操作系统、Node 版本、dsh 版本。
- 相关的日志片段。本包的日志已脱敏,但提交前仍请检查是否含有业务数据。
常见问题
为什么各个 Service 默认都是禁用的?
未启用的 Service 不会被加载,也不会校验配置,所以只用其中一两个时,不需要为其余的准备配置或环境变量。在 Profile 的 cordis.patch.yml 中按 id 启用即可;装了可选的 @baoyx/dsh-agent-kit-admin 时,也可以用 setup 或设置页勾选。
doctor 提示 dws 未登录怎么办?
在运行 Profile 的同一个系统用户下执行 dws auth login。admin 包的 setup 也可以拉起登录;业务包可以调用 ctx.dingtalk.login(),把授权链接交给要登录的人。dryRun 模式不检查登录态。
Windows 上提示找不到 dws?
本包会在 PATH 中查找 dws.exe,或把 npm 全局安装生成的 dws.cmd 定位到它背后的 dws.js。仍然找不到时,在钉钉配置中把 dwsPath 设为 dws.exe 或 dws.js 的绝对路径;不要指向 .cmd 或 .bat。
一定要装 @baoyx/dsh-agent-kit-admin 吗?
不需要。五类能力的实现都在 @baoyx/dsh-agent-kit 里,业务包也只依赖它;配置直接写在 Profile 的 cordis.patch.yml 中即可。admin 包是可选的运维工具:doctor 检查、setup 交互式配置、dsh Web「设置 → Agent Kit」页,以及业务包设置入口的登记。需要时用 dsh plugin --profile <名字> add @baoyx/dsh-agent-kit-admin 加入 Profile。
claude-code 任务报 unsupported_permissions?
claude-code 和 codex 不支持按任务过滤工具,本包无法替它们强制只读,因此要求你在 agent-tasks 配置的 declaredPermissions 中如实声明 provider 实例的权限上限。claude-code 默认的 permissionMode: dontAsk 下不能执行命令或写文件,可以声明为 read-only。
TypeSafe Key 应该放在哪里?
读取顺序是环境变量 TYPESAFE_API_KEY、macOS 钥匙串(默认服务名 ai.typesafe.api-key)、dsh 凭据文件 $DSH_HOME/.credentials.yaml。用 admin 包的 setup 与设置页保存时,macOS 默认写入钥匙串,Linux 与 Windows 写入 dsh 凭据文件。
为什么设置页是只读的?
设置页由可选的 @baoyx/dsh-agent-kit-admin 提供。只有 dsh Web 绑定在 127.0.0.1 时设置页才可修改。绑定到其他地址,或没有加载 Web 服务时,设置页一律只读,避免把配置写入接口暴露到网络上。页面上会显示具体原因。
没有 dws 或 Agent 登录态,怎么在本地开发业务包?
把钉钉设为 dryRun: true,并使用 @baoyx/dsh-agent-kit/testing 导出的本地 WebSocket 测试服务端、假 subagent provider、Jev mock 和假 dws 脚本(createFakeDws)。
没有 TypeSafe Key,能在本地跑 Jev 判断吗?
可以。把 Jev 行配置为 provider: laya,并给出 baseURL 指向本地部署的 Laya(例如 laya-serve,默认 http://127.0.0.1:8000)。Laya 与 Jev 接口相同,ctx.jev.judge() 用法不变;此时不需要 TypeSafe Key,也不会发送它。Laya 的准确率与 Jev 不同,切换前请用同一批问题对比结果与阈值。
可以和 gitflow-cli 共用 TypeSafe Key 吗?
可以。两者在 macOS 上都读取钥匙串中服务名为 ai.typesafe.api-key 的条目。如果你的 Key 还在旧名 gitflow-cli-typesafe 下,可以复制一份到新名,或在 Jev 配置中写 keychainService: [ai.typesafe.api-key, gitflow-cli-typesafe]。
Agent 任务为什么不出现在 dsh Web 的会话列表里?
claude-code 与 codex 以不持久化会话的方式运行,本包也不为每个任务创建根会话。审计依赖本包的结构化日志(prompt 与答案只记录长度与哈希)和业务包自己的记录。