| purpose | 面向滴答清单 Dida365 和 TickTick 的 Agent 友好型 Go CLI,提供任务、项目、标签、番茄统计等读写命令与稳定 JSON 输出。 | |||||
|---|---|---|---|---|---|---|
| status | active | |||||
| next_steps |
|
|||||
| capabilities |
|
JSON-first CLI for Dida365 / TickTick
DidaCLI builds as a single Go binary with no external Go modules. It keeps Web API cookie auth, Official MCP tokens, and OpenAPI OAuth separate. Commands return a consistent JSON envelope.
$ dida task today --compact --jsonnpm i -g @delicious233/dida-cli # npm
curl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | sh
iwr https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.ps1 -UseB | iexAll install options
npm install -g @delicious233/dida-clicurl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | shiwr https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.ps1 -UseB | iexgo install github.com/DeliciousBuding/dida-cli/cmd/dida@latestDIDA_VERSION=vX.Y.Z curl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | shAfter install:
dida version && dida doctor --json
dida upgrade --check# 1. Login with the Dida365 browser cookie named "t"
dida auth cookie set --token-stdin --json
# Optional browser capture path
dida auth login --browser --json
# 2. Verify
dida doctor --verify --json
# 3. See today
dida +today --json
# 4. Create a task (preview first)
dida task create --project <id> --title "Ship v1" --dry-run --jsonDidaCLI exposes 139 local command contracts through dida schema list --compact --json. The main feature groups are:
| Area | What it covers | Entry points |
|---|---|---|
| Output and safety | Stable JSON envelope, compact task output, local schema discovery, write previews, destructive confirmations, token redaction | --json, --compact, --dry-run, --yes, schema |
| Auth and diagnostics | Browser cookie login, stdin cookie import, auth verification, logout, local config and endpoint checks | auth, doctor |
| Channel selection | Separate Web API, Official MCP, and Official OpenAPI auth models with local guidance for agents | channel list |
| Agent context | One-call context pack with projects, folders, tags, filters, today, upcoming, quadrant buckets, and outline mode | agent context |
| Sync | Full sync and checkpoint-based incremental sync with normalized views and raw-compatible deltas | sync all, sync checkpoint |
| Tasks | Today, latest captured tasks, active lists, task detail, search, upcoming, due counts, create, update, complete, delete, move, parent/subtask assignment | +today, task |
| Task fields | Content, rich description, start and due dates, timezone, priority, tags, checklist items, column, reminders, repeat metadata, all-day, floating | task create, task update |
| Projects and organization | Project list/tasks/CRUD, folder CRUD, tag CRUD/rename/merge, filters, Kanban column list and experimental create | project, folder, tag, filter, column |
| Comments and files | Comment list/create/update/delete, comment attachment upload, attachment quota, existing task attachment download | comment, attachment |
| History | Completed tasks, closed-history items, and deleted tasks from trash | completed, closed, trash |
| Productivity | Pomodoro preferences, records, timing, stats, timeline, task records, habit preferences, habits, sections, check-ins, Eisenhower quadrants | pomo, habit, quadrant |
| Account metadata | Settings, daily reminders, share contacts, project sharing state, calendar subscriptions/accounts, account stats, project templates, global search, user profile/status/sessions | settings, reminder, share, calendar, stats, template, search, user |
| Official MCP | Token management, tool discovery, schema display, raw tool call, project reads, task search/filter/batch writes, habit reads/writes, focus reads/delete | official |
| Official OpenAPI | OAuth client config, browser/manual OAuth, project/task/focus/habit wrappers, completed and filtered task reads | openapi |
| Raw read probes | Read-only GET escape hatch for verified Web API exploration with structured error details | raw get |
| Distribution and upgrade | Single binary builds, npm/install scripts, packaging templates, release archives, checksum-verified self-upgrade | upgrade |
Web API reads
dida task today --json
dida task latest --limit 10 --project inbox --compact --json
dida task list --filter all --limit 50 --compact --json
dida task upcoming --days 14 --json
dida task search --query "exam" --json
dida task due-counts --json
dida project list --json
dida project tasks <project-id> --limit 50 --compact --json
dida folder list --json
dida tag list --json
dida filter list --json
dida column list <project-id> --json
dida completed today --json
dida closed list --status 2 --limit 50 --json
dida trash list --cursor 20 --compact --json
dida settings get --include-web --json
dida reminder daily --json
dida attachment quota --json
dida share contacts --json
dida share project shares <project-id> --json
dida calendar subscriptions --json
dida stats general --json
dida template project list --limit 50 --json
dida search all --query "exam" --limit 20 --json
dida user profile --json
dida pomo stats --json
dida habit list --json
dida quadrant list --json
dida sync all --jsonWhen several related tasks are captured from WeChat or another inbox flow with
their context and materials, use task latest to read the newest captured
items first:
dida task latest --limit 10 --project inbox --compact --jsonThe command sorts active tasks by creation time, maps --project inbox to the
real inbox project from sync data, and falls back to modified time when creation
metadata is missing. Omit --project inbox to read the newest active tasks
across all projects.
Web API writes
dida task create --project <id> --title "New task" --dry-run --json
dida task update <id> --project <p> --title "Updated" --dry-run --json
dida task complete <id> --project <p> --dry-run --json
dida task move <id> --from <p> --to <p> --dry-run --json
dida task parent <id> --parent <parent-id> --project <p> --dry-run --json
dida task delete <id> --project <p> --dry-run --yes --json
dida project create --name "New project" --dry-run --json
dida folder create --name "Work" --dry-run --json
dida tag rename old-name new-name --dry-run --json
dida column create --project <p> --name "Doing" --dry-run --json
dida comment create --project <p> --task <id> --text "Looks good" --dry-run --json
dida comment create --project <p> --task <id> --text "See file" --file ./probe.png --dry-run --json
dida attachment download --project <p> --task <id> --attachment <a> --output ./file.doc --jsonOfficial MCP and OpenAPI
# MCP (token)
DIDA365_TOKEN=dp_xxx dida official project list --json
dida official tools --limit 20 --json
dida official task filter --project <id> --status 0 --json
dida official task batch-add --args-json '{"tasks":[{"title":"Task"}]}' --dry-run --json
dida official habit list --json
dida official focus list --from-time 2026-05-01T00:00:00+08:00 --to-time 2026-05-09T23:59:59+08:00 --type 1 --json
# OpenAPI (OAuth)
dida openapi client set --id <id> --secret-stdin --json
dida openapi login --browser --json
dida openapi project list --json
dida openapi task create --args-json '{"projectId":"<project-id>","title":"Task"}' --dry-run --json
dida openapi task filter --args-json '{"projectIds":["<project-id>"],"status":[0]}' --json
dida openapi habit checkins --habit-ids <habit-id> --from 20260401 --to 20260407 --jsonAgent, schema, raw reads, and upgrade
dida schema list --compact --json
dida schema show task.create --json
dida channel list --json
dida agent context --outline --json
dida raw get /user/preferences/settings --json
dida upgrade --check --jsonFull reference: docs/commands.md. Machine-readable reference: dida schema list --compact --json.
| Web API | Official MCP | Official OpenAPI | |
|---|---|---|---|
| Auth | Browser cookie | Token | OAuth |
| Coverage | Web API resources outside official channels | MCP tool-based | Standard REST |
| Setup | One login | Get token | Register app |
The three auth channels stay separate.
dida schema list --compact --json # discover commands
dida agent context --outline --json # build context
dida task create ... --dry-run --json # preview writes| Agent | Install |
|---|---|
| Claude Code | Copy skills/dida-cli/SKILL.md |
| Codex / Others | See docs/skill-installation.md |
Preview resource writes with --dry-run when supported. Destructive commands require --yes. The CLI does not print full token values. See Agent Usage.
git clone https://github.com/DeliciousBuding/dida-cli.git && cd dida-cli
go test ./... && go build -o bin/dida ./cmd/didaSee CONTRIBUTING.md.
DidaCLI is an independent open-source CLI for Dida365 / TickTick-compatible workflows. Use it with accounts and automations you control, subject to the upstream services' terms.