deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English | 中文
Two-way task sync with TickTick / Dida365 (滴答清单) for DeepSeek Harness, built on the official OAuth 2.0 Open API. Pull tasks across every list, create / update / complete / delete tasks, and run a one-shot dedupe sync — from the agent or the web settings panel.
/open/v1), with automatic token refresh on 401.ticktick_config.ticktick_tasks / ticktick_sync list incomplete (or completed) tasks across all lists, sorted by due date, with list names.ticktick_add creates one or more tasks (title, list by id or name, due date in ISO 8601 or bare YYYY-MM-DD, priority 0-5 or none/low/medium/high, tags, content).ticktick_sync with direction=pull (grouped summary) or direction=push (creates missing tasks, dedupes by title within a list — re-running never duplicates).ticktick_update, ticktick_complete, ticktick_delete (project id optional; auto-resolved).~/.dsh/dsh-ticktick.json with mode 0600; ticktick_status never echoes secrets.# after publishing to GitHub (repo tagged with the `dsh-plugin` topic)
dsh plugin --profile web add github:zhengjy01/dsh-ticktick
# or from npm (prebuilt install, no build approval needed)
dsh plugin --profile web add dsh-ticktick
# local development
dsh plugin --profile web add link:/path/to/dsh-ticktick
Restart dsh web. The plugin needs no build step — lib/index.js is plain ESM.
Create an app in the open platform console: https://developer.dida365.com/docs#/openapi (CN) or https://developer.ticktick.com/manage/ (international), and register the redirect URI:
http://127.0.0.1:3080/api/dsh-ticktick/oauth/callback
(use your actual dsh web port, or set a custom redirectUri — it must match exactly.)
Give the plugin your client_id / client_secret, either in the settings panel (Settings → TickTick) or by asking the agent:
帮我配置滴答清单,client_id 是 xxx,client_secret 是 yyy,区域用国内版 Dida365
The agent calls ticktick_config and persists the credentials.
Authorize: click 开始授权 in the panel (or ticktick_oauth_start) and log in. The callback completes automatically; if it doesn't, paste the code back and call ticktick_oauth_finish.
From then on:
把今天滴答清单里没做完的任务同步给我 → ticktick_sync (pull)
帮我把这些任务同步到滴答清单:买牛奶、写周报 → ticktick_sync (push, dedupes)
明天下午3点提醒我开会,加到「工作」清单 → ticktick_add
The
client_secretand OAuth tokens are credentials: anyone holding them can read and change your tasks. They stay in~/.dsh/dsh-ticktick.json(mode0600); useticktick_config(reset: true)to clear them if they leak.
| Tool | Purpose |
|---|---|
ticktick_status |
connection & authorization status |
ticktick_config |
set / clear clientId, clientSecret, region (cn/intl), redirectUri |
ticktick_oauth_start |
build the authorize URL |
ticktick_oauth_finish |
exchange a pasted code / redirect URL for tokens |
ticktick_lists |
list all lists (id + name) |
ticktick_tasks |
pull tasks (by list, completed flag, limit) |
ticktick_add |
create tasks |
ticktick_update |
update a task |
ticktick_complete |
complete a task |
ticktick_delete |
delete a task |
ticktick_sync |
pull summary / push with title dedupe |
fetch (Node 22+) and crypto — zero runtime dependencies.state; the remaining /api/dsh-ticktick/* routes are loopback + same-origin only.reminders/repeatFlag are passed through when present, but not modeled as tool parameters)./api/dsh-ticktick route family.MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。