Foreword¶
DeepSeek Harness (DSH) modularizes models, tools, and workspaces into pluggable components, but capabilities with account boundaries—such as identity, direct/group messaging, and email—are typically not included in the core package. To reuse the same DID/Handle within an Agent session while enabling the model to read/write sessions and emails via tools, coordinated implementation across the Host-side service, Rust SDK, web client, and Agent tools is required.
Below we introduce the community plugin @awiki/dsh-plugin (SkillHub entry: agentconnect/dsh-awiki). Maintained by AgentConnect and categorized under admin-security, it provides AWiki identity registration/recovery, an instant messaging web UI, and Agent-callable messaging and email tools for DSH.
What Is This¶
In one sentence: An AWiki identity and messaging plugin for DeepSeek Harness—a single npm package that installs the Host Service, production-grade Rust SDK Provider, model tools, and a web client with a draggable “AWiki Me” entry point.
The Rust SDK exclusively manages identity, SecretVault, database, cache, and metadata under stateRoot. This release line uses a clean cutover and does not import the old TypeScript SDK’s identity.json; upgrading from an older version requires creating a new Rust identity.
The current package.json version is 0.3.5; the GitHub repository has approximately 10 stars (as of 2026-08-27).
Core Features¶
Identity & Local State¶
The web UI provides a unified entry for inputting a Handle and phone number. The Host classifies the Handle before sending the verification code: a new Handle triggers registration OTP and creates a deployed identity; an existing Handle triggers Recovery V4 OTP and enters the recovery flow. The root Agent and sub-Agents share the final identity.
The OTP flow preserves the verification code form and disables resend based on server-side cooldowns. The phone number and OTP are not persisted in the browser, controller snapshot, or public Remote results. Once Recovery V4 reaches applied, the Host immediately activates the identity; historical email and model ledger reconciliation currently do not block recovery.
The account menu supports “Sign Out” (locks only the current session, preserving the encrypted identity and message database) and “Re-enter Local Identity.” Switching identities requires confirming permanent deletion of local AWiki data. The dangerous zone in the settings page requires entering a confirmation word before clearing local identity, keys, tokens, registration drafts, and message indexes.
Instant Messaging (Web UI)¶
- Private and group chat lists, unread badges, latest message previews, persistent display names; Core SQLite is the source of truth, with local-first rendering of the local timeline and background backfilling of remote history.
- Web UI group creation: private discovery, open joining, transport protection, 1–50 initial Handle or DID members; immediately enters the session after creation, with individual member failures reported separately.
- Text + single attachment messages, Enter to send, Shift+Enter for newline, optimistic bubbles reconciled by client message ID; image SHA verification and three-tier bounded cache (browser LRU, IndexedDB, Host disk).
- Draggable circular entry, adaptive popup, dark mode, session memory; user-triggered AI summaries (up to 50 recent or unread messages), retained only in memory for the current runtime.
The initial version does not include end-to-end encryption, multi-identity support, post-creation group management, or multi-attachment messages.
Agent Tools¶
Messaging (5 tools): Identity status, conversation list, history, text send with approval, attachment send with approval.
Email v1 (5 tools, on-demand): Email account, inbox, plain text read, mark-as-read with approval, plain text send with approval. No browser inbox UI; does not wake the Agent for new emails; awiki_mail_mark_read and awiki_mail_send require approval each execution; sending attempts only once, returning delivery-unknown on timeout.
Optional real-time listener: When DSH_AWIKI_LISTENER_ENABLED=true and an exact allowlist is configured, private chat peers within the allowlist can resume DSH Agent sessions or use /new, /status, /help. The listener only accepts plaintext private chat text.
Optional Hosted Models (Separate Package)¶
The main package no longer installs the AWiki hosted model provider by default. When needed, install separately outside the main package: @awiki/dsh-model-proxy@latest: only when the Harness has no available models, the first-time setup will offer AWiki hosted DeepSeek options (deepseek-v4-flash, deepseek-v4-pro) before the official API Key step. When only the main package is installed, no model start/stop, recharge, usage, or model onboarding UI will appear.
Installation & Activation¶
Run the Profile installation command in the DSH project root directory (this adds the package and activates the bundle layer; a regular npm i will not activate the bundle):
dsh plugin --profile web add @awiki/dsh-plugin@latest
If AWiki hosted models are needed, install additionally:
dsh plugin --profile web add @awiki/dsh-model-proxy@latest
Apply this package after the regular DSH base and Web app bundle. The main package cordis.patch.yml adds the AWiki Host Service, Rust SDK Provider, and Summary Provider; the browser client is automatically injected by DSH based on package metadata.
The plugin connects to the public tenant awiki.ai by default and requires no environment variables. For self-deployment or overriding defaults, you can set, for example:
| Environment Variable | Purpose | Default Value |
|---|---|---|
DSH_AWIKI_USER_SERVICE_URL |
Absolute URL for AWiki user service | https://awiki.ai |
DSH_AWIKI_STATE_ROOT |
Rust IM Core state directory | Isolated by DSH profile, see README |
DSH_AWIKI_LISTENER_ENABLED |
Enable private chat to Agent listener | false |
DSH_AWIKI_LISTENER_ALLOWED_PEERS |
Exact Handle/DID JSON array | [] |
The complete variable table is available in GitHub README.zh.md.
Typical Usage¶
1. First-time Identity¶
- Install the plugin and start the DSH Web profile.
- Click the draggable AWiki Me entry in the lower-left corner, enter Handle and phone number.
- Complete the registration OTP or Recovery V4 OTP as prompted; after recovering an existing Handle, the Host syncs account projections and attempts to restore group membership.
2. Agent Reads Conversations and Sends (Requires Approval)¶
The Agent can query identity, list conversations, and fetch history via registered tools; text and attachment sending tools require user approval before execution. Specific tool names are subject to plugin registration (the five messaging tools and five email tools listed in the README).
3. Same-Process Plugin Calls ANP Identity Authentication¶
Trusted DSH Host same-process plugins can delegate AWiki to handle external HTTP ANP signing and tokens, without implementing challenge/retry themselves:
const response = await ctx.awiki.externalHttpAuth.dispatch(
new Request('https://api.example.com/orders', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ productId: '123' }),
}),
request => fetch(request),
)
The callback function remains the sole network transport owner; this API does not enter the Browser Remote or Agent tools.
4. Optional: Private Chat Triggers Agent Listener¶
After enabling the listener and configuring the allowlist, plaintext private chats from peers within the allowlist can route to the DSH Session on the shared AWiki Workspace. Production environments should evaluate session isolation and tool approval policies.
Applicable Scenarios & Notes¶
Who Is This For
- DSH users who are already using or plan to use AWiki (
awiki.aior self-deployed tenants) and want to handle identity, IM, and (optional) email within Harness, rather than using a separate client. - Automation scenarios requiring the Agent to read/write mailboxes, query conversations, and send messages within approval boundaries.
- Users who want optional integration with AWiki hosted DeepSeek models and accept the separate
@awiki/dsh-model-proxypackage.
Must Understand Before Use
- The plugin runs with the current DSH process permissions and can access keys and message databases under
stateRoot; before installation, review the source code and licenses. The plugin body is MIT; the Rust IM Core runtime dependency is AGPL-3.0-only (seeTHIRD_PARTY_NOTICES.md). - SkillHub (skillhub.cn) is a community plugin directory with no official affiliation to DeepSeek / High-Flyer; the DSH ecosystem follows an “everything is a plugin” philosophy, with the directory site operated independently.
- Initial version limitations: No E2E encryption; identity recovery does not rebuild historical private chats (only data already retained by the Rust SDK migrates according to Core rules); see above for email v1 functionality boundaries.
- The IM Core state contains access materials and should be stored outside repositories with restricted file permissions; do not commit OTPs, tokens, private keys, or
.envto repositories.
Links¶
- SkillHub directory page: https://www.skillhub.cn/plugins/AgentConnect/dsh-awiki
- GitHub repository: https://github.com/AgentConnect/dsh-awiki
- Chinese documentation: https://github.com/AgentConnect/dsh-awiki/blob/main/README.zh.md
If your DSH workflow requires unified AWiki identity, a local-first messaging interface, and approvable Agent messaging/email tools, you can install the main package using the Profile command above, then add Model Proxy and listener configuration as needed.