前言¶
DeepSeek Harness 的核心设计理念是“一切皆插件”,允许开发者通过插件扩展模型的能力边界。dsh-sms-webhook 是一个联网工具类插件,它解决了一个常见场景:本地运行的智能体或模型无法直接访问手机的短信数据。该插件在电脑上起一个本地 HTTP 服务,接收手机端短信转发 App 推送的消息,将其落盘存储,并暴露两个工具供模型查询。
插件简介¶
这个插件由用户 huaxiren6 维护,开源协议为 MIT。它本身不包含短信转发逻辑,而是作为服务器端点,用于接收和存储短信数据。通过它,DSH 环境内的模型可以获取手机短信内容,实现验证码自动识别、短信归档或特定关键词查询等操作。
核心功能¶
插件主要提供以下能力:
- sms_recent:获取最近收到的短信列表。支持通过 URL 参数
q进行关键词过滤。 - sms_search:对已存储的短信进行全文搜索。
- OTP 自动提取:插件会自动扫描短信内容,提取第一个 4 到 8 位的连续数字作为
otp字段。这对于处理验证码场景非常实用,模型可直接调用该字段。 - 持久化存储:数据以 JSONL(每行一个 JSON 对象)格式写入本地文件。重启服务后数据不丢失,但为了防止文件过大,存储上限为 5000 条,达到上限后自动裁剪旧数据。
- 关键词白名单:支持配置
keywords配置项。如果配置了非空列表,只有包含这些关键词的短信才会被接收和存储。
安装¶
安装过程需要 DeepSeek Harness 环境已正确配置 Node.js 依赖。使用官方命令添加插件:
dsh plugin --profile web add dsh-sms-webhook
配置说明¶
插件在启动时读取配置文件,主要参数如下:
| 配置项 | 默认值 | 说明 |
|---|---|---|
host |
0.0.0.0 |
监听地址。默认监听所有网络接口,意味着局域网内任何设备均可访问。 |
port |
8899 |
HTTP 服务监听端口。 |
store |
$DSH_HOME/data/dsh-sms-webhook/messages.jsonl |
短信数据落盘文件路径。 |
keywords |
[] |
关键词白名单。非空时,只接收包含指定词的短信。 |
注意:由于默认监听地址为
0.0.0.0,任何能访问该 IP 和端口的设备都可以向其发送 POST 请求。建议仅在可信网络内使用,或在手机端的转发 App 中限制来源 IP。
使用方法¶
1. 手机端设置¶
使用任何支持 HTTP 转发的 App(如 SMS Forwarder、Tasker、iOS 快捷指令)配置转发目标:
- URL:
POST http://<电脑IP>:8899/ - Headers:
Content-Type: application/json
发送的 JSON 数据需包含以下字段(支持常见别名):
{
"from": "10086",
"body": "您的验证码是 123456,5 分钟内有效。",
"receivedAt": 1787180000000,
"device": "Pixel 8"
}
from: 发送方号码(也可用sender,number,phone)。body: 短信内容(也可用text,message,content)。receivedAt: 接收时间戳(可选,省略则使用服务器当前时间)。
2. 模型查询接口¶
安装并运行后,插件会暴露 HTTP 接口和 DSH 工具:
- 接收短信:
POST http://<电脑IP>:8899/- 返回
200: 短信已成功存储。 - 返回
202: 短信内容因关键词过滤未存储。
- 返回
- 查询最近短信:
GET http://<电脑IP>:8899/?limit=20&q=验证码limit: 返回条数。q: 搜索关键词(可选)。
- 存活探针:
GET http://<电脑IP>:8899/health
适用场景¶
该插件适合需要将手机短信数据引入本地 LLM 流程的场景。典型应用包括:
- 自动提取并读取收到的验证码。
- 对特定来源(如银行、快递)的短信进行归档和检索。
- 通过关键词白名单过滤无关广告短信。
结语¶
dsh-sms-webhook 通过简单的 HTTP 接口和文件存储,打通了手机短信与本地 DeepSeek Harness 之间的数据链路。其自动提取 OTP 的特性降低了验证码处理的门槛。更多技术细节和源码,可查看其 GitHub 仓库。