When deploying a DeepSeek Harness agent locally, the model usually cannot directly access smartphone SMS. To solve this problem, a local HTTP service is needed to receive data from SMS forwarding apps and expose the stored data for model queries. huaxiren6/dsh-sms-webhook is exactly such a plugin.
What It Is¶
This is an SMS forwarding Webhook plugin for DeepSeek Harness, maintained by user huaxiren6. It receives pushes from mobile SMS forwarding apps (such as SMS Forwarder), stores SMS content on disk, and provides the sms_recent and sms_search tools for the model to call.
Core Features¶
- Receive and Store: Receives SMS messages and persists them.
- Model Tools: Provides the
sms_recenttool to query recent SMS messages and thesms_searchtool for full-text search. - Verification Code Extraction: Automatically extracts verification codes (generates an
otpfield). - Filtering Mechanism: Supports filtering by a keyword whitelist.
- Data Format: Stored in JSONL format, with automatic trimming supported (limit of 5000 messages).
Installation and Enablement¶
Install it with the official command:
dsh plugin --profile web add dsh-sms-webhook
After installation, the plugin listens on a local port and waits for POST requests sent from the mobile device.
Typical Usage¶
Mobile Device Configuration¶
Use any app that supports “forwarding SMS to HTTP”, such as SMS Forwarder, Tasker, or iOS Shortcuts. Set the forwarding target address to:
POST http://<电脑IP>:8899/
Content-Type: application/json
The JSON data being sent supports common aliases:
{
"from": "10086",
"body": "您的验证码是 123456,5 分钟内有效。",
"receivedAt": 1787180000000,
"device": "Pixel 8"
}
The from field can be written as sender, number, or phone, and body can be written as text, message, or content. If no timestamp is provided, the server uses the current time.
HTTP Interface¶
| Method/Path | Purpose |
|---|---|
POST / |
Receive SMS (200=stored, 202=filtered by keywords) |
GET /?limit=20&q=验证码 |
Query recent SMS (optional q filter) |
GET /health |
Health check probe |
Configuration Description¶
The plugin supports the following configuration options (usually set in a configuration file):
| Key | Default Value | Meaning |
|---|---|---|
host |
0.0.0.0 |
Listening address |
port |
8899 |
Listening port |
store |
$DSH_HOME/data/dsh-sms-webhook/messages.jsonl |
Storage file path |
keywords |
[] |
When not empty, only accepts messages containing these words (e.g., ["验证码", "code"]) |
Use Cases and Notes¶
- Use Scenarios: Suitable for developers who need to read SMS verification codes or historical SMS content with a local model.
- Security Note: A listening address of
0.0.0.0means anyone on the local network can initiate POST requests. It is recommended to restrict the source in the mobile app or use it only in trusted networks. - Storage Limit: The storage file is limited to 5000 messages; older data is automatically trimmed when the limit is exceeded.
The plugin is released under the MIT License.
Summary¶
This plugin solves the pain point of reading SMS with a local agent by implementing SMS reception, storage, and query through a simple Webhook interface. For scenarios requiring processing of verification codes or SMS information, this is a ready-to-use solution.