DeepSeek Harness Hub
← 返回列表

Emacs 聊天客户端vritser/dsh-emacs

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

dsh-emacs — DeepSeek Harness 的 Emacs 客户端

暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/18 · 已提供中文文档

一个用于 DeepSeek Harness 的 Emacs 客户端

综合分
45
GitHub 分
45
用户评分
★ Stars
26
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add vritser/dsh-emacs
仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-emacs(未发布到 npm,仅可源码安装)
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件缺少入口声明

仓库缺少 package.json,无法用 dsh 插件安装命令安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 15:50:21

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-emacs — DeepSeek Harness 的 Emacs 客户端

dsh-emacs 将 DeepSeek Harness
(dsh)带入 Emacs:流式回复、工具调用、思考块、斜杠命令、文件/会话引用以及模型选择。它使用 Emacs 内置功能(Emacs 27.1+),无第三方依赖。

带有流式回复和工具调用的聊天缓冲区

0.4.1 面向 dsh 0.1.5 通信协议(服务器 0.1.5-rc.1 或更新版本)。

快速开始

你需要 Emacs 27.1+,并在 dsh 中配置好提供商/模型才能发送消息。dsh-emacs 可以为你安装并启动 dsh 服务器;提供商凭据和模型配置仍保留在 dsh 中。对于已有的本地或远程服务器,请在连接前按服务器设置中所述设置其地址。

1. 克隆仓库:

git clone https://github.com/vritser/dsh-emacs.git ~/dsh-emacs

2. 将以下内容添加到你的 Emacs 配置中并求值,或重启 Emacs:

(add-to-list 'load-path (expand-file-name "~/dsh-emacs"))
(require 'dsh-emacs)

3. 运行 M-x dsh-emacs 打开会话列表。如果没有本地服务器在运行,dsh-emacs 会启动一个;如果缺少 CLI,会提示安装。在全新的 dsh 设置中,发送消息前请使用 M-x dsh-emacs-open-web 配置你的提供商和模型。
4. 在会话列表中按 c 创建会话。如有需要,在聊天缓冲区中使用 C-c C-m 选择模型。
5. 在 ❯ 提示符后输入内容,按 C-c C-c 发送你的第一条消息。

可选的 use-package 配置,请参见
示例配置。

使用它

会话列表

M-x dsh-emacs 打开你的会话,按工作区分组。按 c 创建会话,或按 RET 打开一个会话。列表管理和导航请参见
会话与工作区控制。

按工作区分组的会话列表

在聊天缓冲区中

| 按键 | 功能 |
|---|---|
| C-c C-c | 发送输入或中断;见下文 |
| C-c C-b | 中断正在运行的回合 |
| C-c C-q | 管理待处理队列 |
| C-c C-g | 打开目标-动作前缀 |
| C-c C-m | 切换模型 / 推理强度 |
| C-c C-a | 附加图片 |
| C-c C-s / C-c M-s | 在此工作区 / 所有工作区中切换会话 |
| C-c C-r | 刷新 |
| C-c C-o | 在当前记录上方加载更早的消息 |
| C-c C-w | 复制(区域 → 代码块 → 光标处的消息 → 最后一条回复) |
| C-c C-f | 切换模式行统计信息 |
| C-c C-! | 停止所跟踪的本地 shell 进程 |
| M-p / M-n | 上一条 / 下一条输入 |
| TAB | 补全斜杠命令 |

在回合运行期间发送: 默认情况下,C-c C-c 会将非空消息排队到下一回合。C-u C-c C-c 则改为引导当前运行的回合;在输入为空时按 C-c C-c 会中断它。可通过以下方式配置
dsh-emacs-busy-enter-behavior。C-c C-q 队列菜单作用于高亮项;x 删除所有待处理项。

输入 @ 以选择文件、目录或会话引用:@src/ 深入某个目录,@session-title 提及另一个会话。参见 @ 引用。

输入 /,然后按 TAB 补全斜杠命令。自动弹出取决于你的补全前端及其设置:corfu/company 在启用自动补全时可提供弹出;原生补全、vertico 和 icomplete 需要按 TAB。参见 斜杠命令。

编写器在 ❯ 上方显示当前目标和下一条待处理消息。将鼠标悬停在预览上可查看其完整文本,或使用 C-c C-q 管理待处理消息。目标快捷方式和内联控件在 目标操作 中描述。

回答问题

Agent ask 提示通过一次 minibuffer 读取来回答。问题文本即提示,选项即补全候选(每个候选都带有其描述作为注解),问题详情显示在回显区。

- 单选:选择一个候选,RET 接受它。空输入跳过该问题。
- 多选:以逗号分隔输入选项——2,3 或 alpha,beta——然后 RET 提交它们(completing-read-multiple,Emacs 标准的逗号分隔输入路径)。无歧义的前缀也可以(alph),而有歧义的前缀会保留为你的答案文本,而不是被猜测。
- 任何不指向选项的内容都会被当作你的答案文本,就像在任何 Emacs 补全提示中一样——没有单独的“输入答案”步骤,部分匹配的答案也绝不会被静默裁剪。
- C-c C-s 跳过该问题(空输入效果相同);C-g 放弃整个组。

不会就地切换任何内容,读取器也绝不会重新打开:每个问题只读取一次,因此菜单不会闪烁或重新排序。

(setq dsh-emacs-question-help-display 'echo-area) ; default; nil hides the detail
在本地尝试 M-x dsh-emacs-question-preview,无需联系服务器。详情参见 问题提示。

工作区

工作区按项目/目录对会话进行分组。

从工作区标题、其空的 New Session 行或现有聊天创建新会话时,新会话使用当前工作区。没有该上下文时,本地服务器可以使用当前缓冲区目录的 Emacs 项目,并在首次使用时创建其工作区。此检测由 dsh-emacs-new-session-auto-project 控制,且不会对远程服务器运行。否则,新会话使用当前缓冲区的目录。

本地 shell 命令

输入 !git status 并按 C-c C-c,在会话的工作区目录中本地运行命令。输出会出现在记录中,包括在模型回合运行期间。C-c C-! 停止被跟踪的 shell 进程。
Shell 输出不会发送给模型,也不会保存在服务器历史记录中;刷新
记录会将其移除。对于附件,开头的 ! 是发送给模型的说明文字。
关于多行脚本、shell 选择和进程处理,请参阅 Shell 命令。

模型与预设

在 dsh 中配置提供方、模型和代理预设,可通过
M-x dsh-emacs-open-web 或 dsh 自身的配置文件进行。使用 C-c C-m
选择会话的模型和推理强度。

dsh-emacs-default-preset 选择新会话的预设;nil 表示使用
主机默认值。dsh-emacs-default-model 是模式行的显示回退值,
并不会选择会话所使用的模型。详情请参阅
模型选择器。

服务器设置

默认情况下,dsh-emacs 管理一个本地服务器。若要使用你自己运行的服务器,请将
dsh-emacs-base-url 设置为其地址。远程地址(包括 HTTPS 和
带有 user:pass@ Basic 认证的 URL)永远不会触发本地服务器启动。将
dsh-emacs-server-auto-start 设置为 nil 可在本地禁用自动启动。

对于 dsh-emacs 启动的服务器,启动令牌认证是自动的。
对于你自己启动的服务器,请提供其打印的 URL 中的启动令牌
(dsh web: …/?token=…)。你可以将 dsh-emacs-server-auth-token 设置为
该令牌,或将整个 URL 粘贴到 dsh-emacs-base-url 中。
如果反向代理还要求 Basic 认证,请将其单独的
凭据以 http://user:pass@host:port 形式包含在内;dsh 启动令牌仍然
是必需的。RPC 认证失败会报告 HTTP 401,而不是询问
用户名和密码,并在下一次尝试前清除被拒绝的 cookie。

当提示输入外部服务器的令牌时,成功的回答会被保存
以供复用。服务器重启后,先前的令牌可能已过期,需要
替换。请参阅 服务器选项。

流式传输与外观

回复和思考内容会在到达时显示。大型 Markdown 区域会在 Emacs 空闲时
完成样式设置;有关调优选项,请参阅
Markdown 响应性。

使用 M-x customize-face 或 custom-set-faces 更改外观。
UI 样式 列出了活动 face 并解释了渲染方式;
流式传输性能审计 记录了
测量结果和剩余限制。

文档

- 自定义 — 配置示例和选项
- @ 引用 — 文件、目录和会话提及
- 斜杠命令 — 目录、补全和执行
- Shell 命令 — 本地 !command 执行
- 模型选择器 — 模型、提供方和推理强度
- 模式行 — 状态、上下文使用情况和待处理队列
- UI 样式 — face 和 Markdown 渲染
- 开发与测试 — 工作流程和验证
- 架构 — 模块归属与事件流
- RPC 协议 — 方法、事件与投影
- Fragment 扩展 API — 快照与卡片样式
- 更新日志

贡献

开发工作流与提交约定见 AGENTS.md。
请让拉取请求聚焦于单一主题;对于非平凡的工作,请先开一个 issue
以对齐范围。推送前请运行 scripts/verify.sh。它会检查
语法、检查器自测、字节编译、完整单元测试套件、静默
加载、diff 空白以及生成文件的清理。

致谢

UI 镜像了 dsh web,
包括其工具图标、会话列表和上下文计量器。Markdown 渲染
与折叠构建于 agent-shell 之上;
mode-line 统计信息与紧凑 token 格式化遵循
pi-mono。

许可证

GPL-3.0-or-later — GNU 通用公共许可证 v3 或更高版本。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群