deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DSHACP 是 DeepSeek Harness(DSH)的一个插件。装好之后,你就能在 Zed 编辑器里直接和 DeepSeek 对话、让它帮你读文件、写代码、跑命令。
一句话:DSHACP 是 Zed 和 DeepSeek 之间的"翻译官"。
你(在 Zed 里打字提问)
│
▼
Zed 编辑器(代理面板)
│ ← 用 ACP 协议对话
▼
dsh --profile acp(装了 DSHACP 插件的 DSH)
│
▼
DeepSeek(真正回答问题、写代码的大模型)
Zed 自带的是 Claude、GPT 等模型的连接方式。给 DSH 装上 DSHACP 插件之后,Zed 会 多出一个叫 DSH 的"外部代理",它背后就是 DeepSeek。
打开终端(Terminal),输入:
dsh --version
到 https://zed.dev 下载安装。本插件只配合 Zed 使用。
打开终端,输入这一条命令:
dsh plugin --profile acp add @hanxu131/dshacp
首次安装会直接装到 npm 上的最新版(
latest),无需指定版本号。
已装过的用户升级时,推荐直接用 update 命令(无需手动写版本号):
dsh plugin --profile acp update @hanxu131/dshacp
为了让它稳定生效,先在 profile 目录的 pnpm-workspace.yaml 里永久关闭发布年龄门控,
加一行 minimumReleaseAge: 0:
# 打开 ~/.dsh/profiles/acp/pnpm-workspace.yaml,在 autoInstallPeers 那行下面加上:
minimumReleaseAge: 0
没有这行时,npm 上刚发布的新版本(官方默认"发布年龄"需满数天)会被 pnpm 的 供应链门控挡下,
update会误报Already up to date。设为0即永久关闭门控, 之后update会正常追到最新版。
升级完成后,退出并重开 Zed 里的 DSH 会话(或重启 dsh --profile acp 进程),
新代码才会被加载。
备选:若不想改配置,也可显式带版本号
dsh plugin --profile acp add "@hanxu131/dshacp@^0.1.4";但由于add存在 lock 锁定、update更省心,日常仍建议用上面的update方式。
Cmd + ,(macOS)或 Ctrl + , 打开 Settings(设置)。{
"agent_servers": {
"DSH": {
"type": "custom",
"command": "dsh",
"args": ["--profile", "acp"],
"env": {}
}
}
}
这里
command是dsh(不是dshacp):Zed 会用dsh --profile acp启动 我们刚才装好的那个 profile。env留空即可。
成功的样子:Zed 的代理列表里出现一个叫 DSH 的选项。
你好,请告诉我你能做什么。
command not found: dsh说明 DSH 没装好,回到"开始之前"第 1 条,先 npm install -g @deepseek-ai/dsh。
如果用的是 nvm 管理 Node,装完 重开一个新终端窗口 再试。
密钥是 DSH 侧配置的(由维护者负责),不是这个插件的问题——找维护者在 DSH 里补上 DeepSeek API Key 即可。
dev: open acp logs,看有没有报错信息每次对话都保存在当前项目目录下的 .sessions 文件夹里(换项目 = 新一批对话)。
想统一存到别处,可以设置环境变量 DSH_SESSIONS_ROOT(见下文)。
add 插件却没升级到新版本这是 pnpm 的版本锁定/发布年龄门控导致的,不是命令写错:
dsh plugin add 底层就是 pnpm 的 add。只要 profile 目录里的 pnpm-lock.yaml
已经锁定了某个版本,即使 npm 上出了更新版,add 也不会主动跳版本——它会返回
Already up to date。update 也会被供应链安全门控挡下,同样显示 Already up to date。推荐做法:永久关闭门控 + 用 update 追新(见「第 1 步 → 更新到新版本」)。
在 ~/.dsh/profiles/acp/pnpm-workspace.yaml 加一行 minimumReleaseAge: 0 后,
升级命令就固定为:
dsh plugin --profile acp update @hanxu131/dshacp
若不愿改配置,也可以临时显式带版本号(profile 名 acp、包名 @hanxu131/dshacp,
从 0.1.3 升到 0.1.4):
# ✅ 临时可行:显式带上目标版本范围
dsh plugin --profile acp add "@hanxu131/dshacp@^0.1.4"
# ❌ 无效:不带版本、或只写 @latest,都会被锁定/门控挡住
dsh plugin --profile acp add @hanxu131/dshacp
dsh plugin --profile acp add "@hanxu131/dshacp@latest"
升级完记得重启 Zed 里的 DSH 会话(或重启 dsh --profile acp 进程)让新代码生效。
| 变量 | 作用 |
|---|---|
DSH_SESSIONS_ROOT |
会话保存目录(默认 ./.sessions) |
DSH_PERMISSION_MODE |
workspace-write(默认,会弹确认框)或 danger-full-access(不再弹确认框) |
DSHACP_HYBRID |
设成 1 开启混合模式:写文件时交给 Zed 展示 diff 供你审查 |
装好之后,Zed 的 DSH 面板里可以直接选 model、thinking strength、mode。 也可以在配置里写死默认值(下面是示例,模型名以面板里实际显示的为准):
"DSH": {
"type": "custom",
"command": "dsh",
"args": ["--profile", "acp"],
"env": {},
"default_config_options": {
"model": "deepseek-official:deepseek-v4-pro",
"thought_level": "high"
}
}
model 的写法是 提供商:模型;只写模型名也可以,程序会自动找到对应的提供商。
如果你不想用 DSH profile,也可以直接装成独立的 dshacp 命令:
npm install -g @hanxu131/dshacp
然后在 Zed 里把 command 改成 dshacp、args 留空。功能与插件方式一致。
git clone git@github.com:ECHOUniverse/dshacp.git
cd dshacp
npm install
npm run build # 编译 TypeScript
npm test # 跑测试
uv/uvx 和 qwenmm 插件后,可以直接把截图粘进
Zed 让模型"看图"。详见 docs/P5-image-paste-qwenmm.md。dsh plugin --profile acp add @linxin666/dsh-ssh。DSHACP_HYBRID=1,文件改动以 diff 形式呈现,逐块审查。initialize、session/new、session/load、session/resume、
session/list、session/delete、session/close、session/set_config_option、
session/prompt、session/cancelsession/request_permission、session/request_elicitation、
session/updateauthenticate/logout、session/set_mode、fs/*、terminal/*src/bin.ts — 独立二进制的启动入口src/index.ts — 应用主体(ACP 桥接)src/bridge.ts — ACP v1 桥接(会话、流式、审批等)src/codec.ts — 编解码cordis.yml / cordis.patch.yml / dshacp.patch.yml — 组合配置(cordis.patch.yml
是插件安装时生效的那一层)tests/ — 测试docs/DESIGN.mddocs/ 目录下的各 *-fact-sheet.mdMIT —— 见 LICENSE。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。