Preface

One of the core design philosophies of DeepSeek Harness (DSH) is “everything is a plugin.” When developing agents, it is a common requirement to let an Agent directly read and write in the user’s task management tools (such as TickTick). Existing integration approaches often rely on third-party libraries or unofficial interfaces, leading to security risks and compatibility issues. The dsh-ticktick plugin calls the official Open API to provide DSH with standardized bidirectional task synchronization.

Plugin Introduction

dsh-ticktick is a DSH plugin maintained by user zhengjy01, intended to solve data synchronization between agents and TickTick / Dida365. It is built on the official OAuth 2.0 Open API, supports pulling tasks, creating tasks, updating status, and one-click deduplicated synchronization, and provides a web settings panel for managing credentials.

Core Features

The plugin provides the following core capabilities:

  1. Official API Integration: Uses the OAuth 2.0 authorization code flow to connect to the TickTick / Dida365 Open Platform (/open/v1), and supports automatic token refresh on 401 responses.
  2. Multi-region Support: Supports the domestic Dida365 (default) and the international TickTick; can be switched in the settings panel or via ticktick_config.
  3. Fetch Tasks: ticktick_tasks / ticktick_sync can retrieve incomplete or completed tasks across all lists (including Inbox, even though the Open API project list may not include it), sorted by due date and accompanied by list names.
  4. Create Tasks: ticktick_add supports creating tasks, with parameters such as title, list (by ID or name; inbox/Inbox maps to the Inbox), due date (ISO 8601 or YYYY-MM-DD), priority (0-5 or none/low/medium/high), tags, and content.
  5. Single Sync: ticktick_sync provides one-way synchronization. direction=pull returns grouped summaries; direction=push creates missing tasks and deduplicates by title within each list (including Inbox; repeated runs will not create duplicate tasks).
  6. Task Maintenance: Provides ticktick_update (update), ticktick_complete (complete), and ticktick_delete (delete) interfaces, with optional project IDs (auto-resolved, including Inbox).
  7. Web Settings Panel: In DSH Web settings, you can configure credentials, run the authorization flow (popup + manually enter the verification code), refresh tokens, and quickly add tasks (the list selector prioritizes Inbox and excludes archived lists).
  8. Secure Storage: Credentials and tokens are persisted to ~/.dsh/dsh-ticktick. (permissions 0600), and the status query command ticktick_status does not echo secrets.

Installation and Enabling

Installing this plugin requires a DSH environment.

  1. Execute the following command to install:
    dsh plugin --profile web add github:zhengjy01/dsh-ticktick
  1. After installation is complete, restart the dsh web service.
  2. The plugin requires no build step and relies on the built-in fetch and crypto modules in Node.js (Node 22+ is required), with no additional runtime dependencies.

Configuration

Before first use, the OAuth authorization must be completed and the credentials configured.

  1. Create the Application:
    Create an application in the TickTick / Dida365 Open Platform console and set the redirect URI. This URI must match the local address on which the DSH Web service listens, for example:
    http://127.0.0.1:3080/api/dsh-ticktick/oauth/callback
  1. Enter Credentials:
    In the DSH settings panel, open the TickTick configuration page and enter client_id and client_secret. You can also instruct the Agent in conversation to run ticktick_config to set these parameters.
  2. Authorize Login:
    Click “Start Authorization” in the settings panel, and log in to complete the callback. If the callback fails, manually paste the verification code and call ticktick_oauth_finish.
  3. System Prompt:
    The plugin injects relevant instructions into the system prompt, informing the agent when it should use this tool.

Typical Usage

After configuration is complete, the Agent can call the related endpoints via natural language:

  • Pull today’s uncompleted tasks:
    把今天滴答清单里没做完的任务同步给我
Corresponding operation: `ticktick_sync` (pull)
  • Push new tasks and remove duplicates:
    帮我把这些任务同步到滴答清单:买牛奶、写周报
Corresponding operation: `ticktick_sync` (push, dedupes)
  • Add a specified task:
    明天下午3点提醒我开会,加到「工作」清单
Corresponding operation: `ticktick_add`

Notes

  1. Security risks: client_secret and OAuth tokens are high-privilege credentials. The plugin stores them in a local file ~/.dsh/dsh-ticktick. (permissions 0600). If credentials are leaked, immediately run ticktick_config(reset: true) to clear them.
  2. Network restrictions: The OAuth callback route only allows local loopback access; other /api/dsh-ticktick/* routes only allow local and same-origin access.
  3. API coverage: The Open API does not support smart list filtering or time-triggered reminders (reminders/repeatFlag are passed through only if present, rather than being modeled as parameters).

Conclusion

dsh-ticktick achieves bidirectional synchronization with TickTick through the official Open API, providing DSH agents with reliable task management capabilities. Whether for organizing daily tasks or orchestrating automated workflows, the plugin offers practical tooling support. For more details and source code, visit the GitHub repository.