DeepSeek Harness
DeepSeek Harness(命令 dsh)是 DeepSeek 开源的 Agent 框架,采用"一切皆插件"的架构,自带 Web 界面。EduWork@ECNU 也以它作为上游运行时(详见 开源与项目关系)。学校的大模型通过 OpenAI 兼容接口接入。
注意:DeepSeek Harness 目前处于开发者预览阶段,后续版本可能出现不兼容的变更;官方也提示它尚未经过安全审计,可能执行模型生成的命令并访问授予它的文件。使用前请阅读其安全说明,建议在虚拟机、容器等隔离环境中运行,并只授权需要的目录。
启动 DeepSeek Harness
需要安装 Node.js。在要让 Agent 工作的项目目录中执行:
npx @deepseek-ai/dsh@latest web命令会在 http://127.0.0.1:3080 启动 Web 界面,并自动用浏览器打开;通过 SSH 登录的机器只会打印地址,加上 --no-open 则不会打开浏览器。如果浏览器没有自动打开,请使用终端打印的完整地址(其中带有 token 参数)。首次运行会自动创建 ~/.dsh 目录(Windows 为 %USERPROFILE%\.dsh)。命令中的 @latest 用来确保使用最新版本,而不是机器上已有的旧版 dsh。
配置 ChatECNU 模型
在 我的令牌 中创建并复制您的 API Key。
方式一:使用配置文件(推荐)
首先把 API Key 写入 ~/.dsh/.env(把 your_api_key 替换为您的 API Key):
CHATECNU_API_KEY=your_api_key再将下面的内容保存为 ~/.dsh/profiles/web/cordis.patch.yml。如果该文件中已有内容,请把这一段合并进去,不要删除其他配置:
- id: llm-pi-ai
config:
providers:
chatecnu:
displayName: ChatECNU
apiKeyEnv: CHATECNU_API_KEY
api: openai-completions
baseURL: https://chat.ecnu.edu.cn/open/api/v1
compat:
supportsDeveloperRole: false
maxTokensField: max_tokens
thinkingFormat: deepseek
models:
- id: ecnu-max
name: ecnu-max
contextWindow: 512000
maxTokens: 64000
input: [text, image]
reasoningEfforts:
off:
low: low
high: high
max: max
- id: ecnu-plus
name: ecnu-plus
contextWindow: 256000
maxTokens: 32000
input: [text, image]
reasoningEfforts:
off:
low: low
medium: medium
xhigh: xhigh刷新 Web 界面,在会话输入框的模型选择器中选择 ecnu-max 或 ecnu-plus。选择后会成为新会话的默认模型。配置修改后无需重启,会在下一次请求时生效。
方式二:在界面中添加
- 打开 设置 → 模型,选择 添加模型提供商,把卡片切换到 自定义模型 API;
- 按下表填写:
| 设置项 | 填写内容 |
|---|---|
| Provider ID | chatecnu(创建后不可修改) |
| 显示名称 | ChatECNU |
| API 地址 | https://chat.ecnu.edu.cn/open/api/v1 |
| API 协议 | OpenAI Chat Completions |
| API 密钥 | 您的 API Key |
- 在 模型目录 中添加模型
ecnu-max和ecnu-plus。点击 获取可用模型 可以从平台读取列表,列表中还包含向量、重排序、文生图等非对话模型,只勾选这两个对话模型即可; - 展开每个模型的 模型选项:上下文窗口填
512000(ecnu-max)或256000(ecnu-plus),输入类型勾选 图片;需要思考强度菜单时,再打开 推理等级,按下方reasoningEfforts的档位配置。
注意:界面表单没有
compat相关的选项。如果请求被拒绝,或者选择思考强度后没有生效,请改用方式一。
配置说明
| 字段 | 说明 |
|---|---|
apiKeyEnv | 保存 API Key 的环境变量名,值取自系统环境变量或 ~/.dsh/.env |
api | 接口协议,openai-completions 对应 /chat/completions 对话接口。一个提供商只能使用一种协议 |
baseURL | 平台的 OpenAI 兼容端点 |
compat.supportsDeveloperRole | 设为 false,系统提示词使用 system 角色发送 |
compat.maxTokensField | 设为 max_tokens,输出上限使用 max_tokens 字段发送 |
compat.thinkingFormat | 设为 deepseek。学校接口的思考参数(thinking 与 reasoning_effort)与 DeepSeek 一致,设置后选择的思考强度才会生效,选择 off 则会明确关闭思考,详见 思考模式 |
contextWindow / maxTokens | 上下文窗口与单次输出上限。输出上限取 64K / 32K 是 Agent 场景的推荐值(模型最大输出为 256K / 128K),把更多窗口留给输入,详见 模型介绍 |
input | 模型接受的输入类型,两个主模型均支持图片 |
reasoningEfforts | 模型选择器里的思考强度菜单:键是菜单中的档位,值是实际发送的 reasoning_effort。ecnu-max 支持 low / high / max,ecnu-plus 支持 low / medium / xhigh;off 留空表示关闭思考 |
无界面模式
无界面模式(dsh headless,回答一个任务后退出)使用 ~/.dsh/profiles/headless/cordis.patch.yml,不会读取 web 下的配置。把上面的提供商配置复制到这个文件中,并追加下面一段指定默认模型(无界面模式无法在界面里选择模型):
- id: agent-default-model
config:
provider: chatecnu
model: ecnu-max之后即可运行:
npx @deepseek-ai/dsh@latest headless "你好"终端界面等其他启动方式同样使用各自 profile 下的配置,请参考 DeepSeek Harness 官方文档。
数据上传与隐私
DeepSeek Harness 默认带有两类会话上传:使用 DeepSeek 官方模型 API 时上传 Session Log;在您主动给出反馈(消息评分、编辑、撤回消息)时,通过 OTel 上传会话日志。上传内容可能包含消息文本、工具参数和结果以及工作区路径。使用学校模型处理敏感内容时,建议关闭:
- 在 Web 界面的 设置 → 通用 中关闭 在使用官方模型 API 时上传 Session Log;
- 启动时设置环境变量
DSH_TELEMETRY_MODE=DISABLED:
DSH_TELEMETRY_MODE=DISABLED npx @deepseek-ai/dsh@latest webWindows PowerShell:
$env:DSH_TELEMETRY_MODE = "DISABLED"
npx @deepseek-ai/dsh@latest web注意:
ecnu-max同时最多处理 3 个请求,ecnu-plus为 5 个,超出会返回 429,详见 配额限制。
您的请求将按 credits 配额统一处理,详见 配额限制。