在本地运行 DSH

唯一的先决条件是 Node 18 或更高版本。最快的方法是不进行任何全局安装。

启动 Web UI

只需一条命令即可下载包、启动内核并在你的机器上提供界面服务。

terminal
npx @deepseek-ai/dsh web
UI 服务运行在 127.0.0.1,因此默认情况下不会向你的网络暴露任何内容。

或者从源码构建

克隆可以让你获得插件工作区、docs 目录和可供阅读的预设。

terminal
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm build

添加插件

插件是一个 npm 包。添加插件会将其写入你的配置中,并让内核解析其依赖关系。

terminal
npx @deepseek-ai/dsh plugin add <package-name>
npx @deepseek-ai/dsh plugin list

编写你的第一个插件

最小的实用插件是一个声明其所需内容并注册一个项的函数。这个插件向表中添加了一个工具。

greet-tool.ts
import type { Context } from 'cordis'

export const name = 'greet-tool'
export const inject = ['tools']

export function apply(ctx: Context) {
  return ctx.tools.register('greet', async ({ name }) => {
    return `Hello, ${name}.`
  })
}
返回的 disposer 是在卸载插件时让工具干净地消失的关键。

选择一个预设

预设会改变智能体的接触面大小。从 Standard 开始,当你想要更干净的测量时,可以向下移动。

  • Standard

    全功能编码智能体:文件编辑、shell 访问、检索以及完整的工具表。

  • PTC

    工具使用 TypeScript 进行组合,而不是逐个选择,因此一个轮次就可以表达一个完整的程序。

  • Minimal

    Bash 和一个编辑器。别无他物。用于基准测试模型的真实基线。

  • Creative

    构建您自己的预设,并在其运行时逐个查看每个 Service 的执行情况。

如果无法启动

Node 版本错误

检查 node -v。任何低于 18 的版本都会在运行时使用的语法上失败。

端口 3080 已被占用

在命令行中传递一个不同的端口,或者停止任何占用该端口的进程。

插件无法加载

这通常是因为 inject 未得到满足。插件会保持 pending 状态,直到它所声明的每个 Service 都存在,因此请检查依赖的插件是否已首先加载。

完整指南、架构说明以及 AGENTS.md 均位于仓库的 docs 目录中。 文档

Cordis 是来自 Koishi 社区的 TypeScript plugin 框架。DSH 没有实现自己的 plugin 系统。它直接使用此框架,这就是为什么 DSH plugin 同时也是 Cordis plugin。

了解内核