Introduction

The core design philosophy of DeepSeek Harness is “everything is a plugin,” allowing developers to expand the capability boundaries of models through plugins. dsh-sms-webhook is an online tool plugin that addresses a common scenario: a locally running agent or model cannot directly access SMS data on a phone. This plugin starts a local HTTP service on a computer, receives messages pushed by a phone-side SMS forwarding app, persists them to disk, and exposes two tools for model queries.

Plugin Overview

This plugin is maintained by the user huaxiren6 under the MIT open source license. It does not include SMS forwarding logic itself; instead, it acts as a server endpoint for receiving and storing SMS data. With it, models in the DSH environment can access phone SMS content, enabling tasks such as automatic verification code recognition, SMS archiving, or querying by specific keywords.

Core Features

The plugin mainly provides the following capabilities:

  1. sms_recent: Retrieves the list of recently received SMS messages. Supports keyword filtering via the URL parameter q.
  2. sms_search: Performs full-text search on stored SMS messages.
  3. Automatic OTP extraction: The plugin automatically scans SMS content and extracts the first consecutive numeric sequence of 4 to 8 digits as the otp field. This is very useful for verification code scenarios, allowing the model to use the field directly.
  4. Persistent storage: Data is written to a local file in JSONL format (one JSON object per line). Data is not lost after restarting the service. To prevent excessive file size, the storage limit is 5,000 entries; once the limit is reached, older data is automatically pruned.
  5. Keyword whitelist: Supports the keywords configuration item. If a non-empty list is configured, only SMS messages containing these keywords will be accepted and stored.

Installation

The installation process requires that the DeepSeek Harness environment has Node.js dependencies correctly configured. Use the official command to add the plugin:

dsh plugin --profile web add dsh-sms-webhook

Configuration

The plugin reads its configuration file at startup. The main parameters are as follows:

Configuration item Default Description
host 0.0.0.0 Listening address. By default, it listens on all network interfaces, meaning any device on the local network can access it.
port 8899 HTTP service listening port.
store $DSH_HOME/data/dsh-sms-webhook/messages.jsonl File path where SMS data is persisted.
keywords [] Keyword whitelist. When non-empty, only SMS messages containing the specified keywords are accepted.

Note: Because the default listening address is 0.0.0.0, any device that can reach the IP and port can send POST requests to it. It is recommended to use it only within trusted networks or to restrict source IPs in the phone-side forwarding app.

Usage

1. Phone Setup

Use any app that supports HTTP forwarding (such as SMS Forwarder, Tasker, or iOS Shortcuts) to configure the forwarding destination:

  • URL: POST http://<computer IP>:8899/
  • Headers: Content-Type: application/json

The JSON payload should include the following fields (common aliases are supported):

{
  "from": "10086",
  "body": "您的验证码是 123456,5 分钟内有效。",
  "receivedAt": 1787180000000,
  "device": "Pixel 8"
}
  • from: Sender number (also accepts sender, number, phone).
  • body: SMS content (also accepts text, message, content).
  • receivedAt: Received timestamp (optional; if omitted, the server’s current time is used).

2. Model Query Endpoints

After installation and execution, the plugin exposes HTTP endpoints and DSH tools:

  • Receive SMS: POST http://<computer IP>:8899/
    • Returns 200: The SMS has been stored successfully.
    • Returns 202: The SMS content was not stored due to keyword filtering.
  • Query recent SMS: GET http://<computer IP>:8899/?limit=20&q=验证码
    • limit: Number of items to return.
    • q: Search keyword (optional).
  • Health probe: GET http://<computer IP>:8899/health

Use Cases

This plugin is suitable for scenarios that need to integrate phone SMS data into a local LLM workflow. Typical applications include:

  • Automatically extracting and reading received verification codes.
  • Archiving and searching SMS messages from specific senders (such as banks or couriers).
  • Filtering out irrelevant promotional SMS messages using the keyword whitelist.

Conclusion

dsh-sms-webhook connects phone SMS data with local DeepSeek Harness through simple HTTP endpoints and file storage. Its automatic OTP extraction feature lowers the barrier for handling verification codes. For more technical details and source code, see its GitHub repository.