takasurazeem/gmail-dsh0

gmail-dsh

Native Gmail integration for the DeepSeek Harness: Google OAuth 2.0 (PKCE) over the DSH credential store, native gmail_* tools, approval-gated send and label operations, the /gmail command, and a cache-safe model context section.

AI 分析

核心用途是让 DSH 智能体能够安全地读取、发送和管理 Gmail 邮件。适合需要 AI 协助处理日常邮件、分类标签的用户。发送和修改操作需经过用户审批授权,保障安全。

パッケージ
gmail-dsh
バージョン
0.1.3
ライセンス
MIT
最終更新
2026/08/24

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:takasurazeem/gmail-dsh

ドキュメント

README 全文を読む ↗

Configuration

Row config for the gmail row (full row replacement semantics — patches restate every field):

FieldDefaultMeaning
clientIdEnvGMAIL_OAUTH_CLIENT_IDCredential-store ref / env name for the client id
clientSecretEnvGMAIL_OAUTH_CLIENT_SECRETCredential-store ref / env name for the client secret
clientId''Literal fallback when no ref is set (discouraged)
clientSecret''Literal fallback (discouraged)
scopes[openid, email, gmail.modify]OAuth scopes; https://www.googleapis.com/auth/gmail.modify covers read + send + labels. The openid/email scopes are required — the token exchange works without them, but Google's userinfo endpoint (where the account email is read) rejects tokens lacking openid with 401 "Invalid Credentials". Narrower scopes (gmail.readonly) work for the read tools; sending requires the modify scope. Source of truth is DEFAULT_SCOPES in src/config.js — the bundle's own patch layer deliberately omits this key (an explicit patch value overrides the defaults, and a stale restated list once silently defeated an openid fix on every restart); override it in your own profile patch layer if you need to
callbackHost127.0.0.1Loopback callback host (Desktop clients accept any local port)
callbackPath/gmail/callbackCallback path
defaultAccount''Account used when a tool omits account (auto-resolved when exactly one account is authorized)
authTimeoutMs300000How long /gmail auth waits for the browser callback
requireApproval.sendtrueAsk the user before gmail_send
requireApproval.labelstrueAsk the user before gmail_labels
context.enabledtrueEmit the model-context section once authorized
context.order117Section order in the system prompt (kept clear of stock bundles)