Bundle
dsh-qq-agent-mail
Tencent QQ Agent Mail integration for DeepSeek Harness with a Service, event stream, Web settings, OAuth, and 14 structured tools.
- Source
- AtomerCore
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 5 days ago
Readme
# dsh-qq-agent-mail
English | [简体中文](./README.zh.md)
A native [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin for [Tencent QQ Agent Mail](https://agent.qq.com/), powered by the official
`@tencent-qqmail/agently-cli` package.
This package exposes mail as native Harness capabilities:
- a reusable `ctx.mail` Cordis service;
- a `mail/message-received` event for mail-driven automation;
- 14 `qq_agent_mail_*` tools with stable structured output schemas;
- a model-free Web settings page for basic preferences and OAuth.
## Features
- Authenticate, inspect the current account, list, search, and read messages.
- Send, reply, forward, move to trash, and permanently delete with two-stage confirmation.
- Download regular attachments and return large-attachment URLs without rewriting them.
- Stream new mail through bounded tool calls or a persistent Cordis event source.
- Normalize CLI response variants into stable public objects for Code Mode composition.
- Resolve the packaged native CLI, its JavaScript wrapper, `PATH`, or a custom executable.
- Clean up watcher processes during unload and hot reload.
## Dependency
- @tencent-qqmail/agently-cli — installed as this package's runtime dependency; no global CLI installation is required. OAuth credentials remain under agently-cli control and are never stored by this plugin.
## Install
- Install from GitHub:
```powershell
dsh plugin --profile web add github:AtomerCore/dsh-qq-agent-mail#v1.0.1
dsh web
```
- Build and install manually:
```powershell
npm ci
npm pack
dsh plugin --profile web add .\dsh-qq-agent-mail-1.0.1.tgz
dsh web
```
## Quick start
1. Open **Settings → QQ Agent Mail**.
2. Set the CLI working directory, default mail folder, and default list size.
3. Select **Start OAuth login**, finish authorization in the browser, then refresh the authorization status.
## Tools
| Category | Tools |
|---|---|
| Authentication | `qq_agent_mail_login`, `qq_agent_mail_logout`, `qq_agent_mail_auth_status`, `qq_agent_mail_whoami` |
| Reading | `qq_agent_mail_list`, `qq_agent_mail_read`, `qq_agent_mail_search`, `qq_agent_mail_watch` |
| Writing | `qq_agent_mail_send`, `qq_agent_mail_reply`, `qq_agent_mail_forward`, `qq_agent_mail_trash`, `qq_agent_mail_delete` |
| Attachments | `qq_agent_mail_download_attachment` |
`send`, `reply`, `forward`, `trash`, and `delete` require two-stage confirmation unless a trusted
## Native APIs
Other Cordis plugins can inject `mail` and call the same implementation used by the tools:
```js
export const inject = ['mail']
export function apply(ctx) {
ctx.on('mail/message-received', (message) => {
// Treat every message field as untrusted external data.
console.log(message.id, message.subject)
})
}
```
Enable `autoWatch` to maintain the persistent watcher that emits
`mail/message-received`. The on-demand `qq_agent_mail_watch` tool remains bounded by `watchTimeoutMs`.
## Configuration
Every option is declared by the exported `Config` schema. Basic preferences are editable on the Web
settings page; advanced deployment options belong in the profile patch.
| Option | Default | Description |
|---|---:|---|
| `cliPath` | `agently-cli` | Packaged CLI by default; also accepts a command name or absolute path. |
| `cwd` | empty | CLI working directory and base for relative attachment paths. |
| `defaultDir` | `inbox` | Default folder: `inbox`, `sent`, `trash`, or `spam`. |
| `defaultLimit` | `10` | Default number of messages returned by list operations. |
| `loginTimeoutMs` | `30000` | Time allowed to capture the OAuth URL. |
| `loginHardCapMs` | `300000` | Maximum login-process lifetime after URL capture; `0` disables the cap. |
| `watchTimeoutMs` | `60000` | Maximum duration of one `qq_agent_mail_watch` call. |
| `autoWatch` | `false` | Start a persistent watcher and emit mail events. |
| `autoConfirm` | `false` | Skip write confirmation; use only in a trusted automation environment. |
| `extraArgs` | empty | Additional CLI arguments, one per line. |
| `extraEnv` | empty | Additional child-process environment entries, one `KEY=VALUE` per line. |
Example profile override:
```yaml
- insert:
- id: qq-agent-mail
name: dsh-qq-agent-mail
config:
defaultLimit: 20
autoWatch: false
autoConfirm: false
```
## License
[MIT](./LICENSE)
Install
dsh plugin --profile web add github:AtomerCore/dsh-qq-agent-mail
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-qq-agent-mail from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.