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:
- sms_recent: Retrieves the list of recently received SMS messages. Supports keyword filtering via the URL parameter
q. - sms_search: Performs full-text search on stored SMS messages.
- Automatic OTP extraction: The plugin automatically scans SMS content and extracts the first consecutive numeric sequence of 4 to 8 digits as the
otpfield. This is very useful for verification code scenarios, allowing the model to use the field directly. - 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.
- Keyword whitelist: Supports the
keywordsconfiguration 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 acceptssender,number,phone).body: SMS content (also acceptstext,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.
- Returns
- 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.