dsh-ticktick
September 7, 2026 · View on GitHub
English | 简体中文 | Español | Português | हिन्दी
Ponte de tarefas do TickTick / Dida365 (滴答清单) para o DeepSeek Harness: um painel de tarefas no cabeçalho da sessão (filtro por lista, adição rápida, concluir, excluir, datas de vencimento, reordenar arrastando), onze ferramentas do agente, um cartão de configuração e um serviço Remote tipado — tudo sobre o endpoint MCP oficial do TickTick.
Compatibilidade
| Superfície | Status |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.3-alpha.1 (tag do GitHub). Linha npm fixada em @deepseek-ai/dsh 0.1.2-rc.1 (peers >=0.1.2-rc.1 <0.2.0). Verificado em 2026-09-06 contra o checkout master dsh-v0.1.3-alpha.1 (cadeia completa de gates + smoke de instalação de perfil). |
Recursos
- Painel no cabeçalho da sessão — a ação
ticktickdo cabeçalho abre um pop-up: filtrar por lista (Todas + cada lista), alternar entre vistas pendentes/concluídas, busca de texto completo, adicionar tarefas com data de vencimento opcional, concluir, excluir (com confirmação), definir/limpar datas de vencimento com etiquetas vencida/hoje/amanhã e reordenar arrastando (vistas pendentes de uma única lista). Um ponto de status mostra a conexão; sem token configurado, o painel oferece a configuração do token em uma única etapa. - Onze ferramentas do agente —
ticktick_status,ticktick_lists,ticktick_tasks,ticktick_add,ticktick_complete,ticktick_delete,ticktick_due,ticktick_reorder,ticktick_completed,ticktick_search,ticktick_batch_add; o Code Mode ganhaawait tools.ticktick_*(args)de graça. - Cartão de configuração — Ajustes → Plugins → TickTick: token da API (secreto), arquivo de token, endpoint MCP com predefinições CN/Internacional, ids de tarefas protegidos, um botão Testar conexão e um botão Limpar credenciais.
- Releitura do token ao vivo — o token Bearer é relido a cada requisição (segredo do cartão > arquivo, padrão
$DSH_HOME/.ticktick-token); um 401 reinicia o cliente para que um token rotacionado entre em vigor sem reiniciar. - Contornos medidos — o MCP do TickTick rejeita
update_taskpara tarefas dentro de projetos comuns ("Expecting value: line 1 column 1"); a ponte tenta de novo com mover-para-a-caixa → atualizar → mover-de-volta. Listas que falham a validação do servidor (dados históricosrepeatFrom: '') são ignoradas e relatadas como avisos, nunca descartadas em silêncio. - Ids protegidos — operações de mutação recusam tarefas da lista protegida antes de qualquer chamada.
- Sincronização multidispositivo — toda escrita vai para a nuvem do TickTick, então celular, desktop e web a veem; toda leitura busca o estado atual.
Instalação
dsh plugin --profile web add @perrylink/dsh-ticktick # npm (inclui lib/)
dsh plugin --profile web add "github:PerryLink/dsh-ticktick#<sha>" # git
dsh plugin --profile web add link:/path/to/dsh-ticktick # local
Reinicie o dsh web (plugins de bundle são ativados ao reiniciar). A ação ticktick aparece no cabeçalho da sessão; o cartão aparece em Ajustes → Plugins.
Configuração
- Obtenha um API 口令 (um token com prefixo
dp_) no site do Dida365/TickTick: Perfil → Ajustes → Conta e segurança → API 口令. - Escolha uma das três fontes de token (ordem de prioridade): o campo secreto do cartão Ajustes → Plugins → TickTick, a variável de ambiente
DIDA365_TOKEN, ou um arquivo de token (padrão$DSH_HOME/.ticktick-token, uma linha). Escrever o arquivo ativa a ponte sem nenhuma mudança de configuração. - Use o botão Testar conexão do cartão para verificar o token e Limpar credenciais para apagá-lo.
| Chave | Padrão | Significado |
|---|---|---|
tokenFile | '' | Arquivo de token; vazio = $DSH_HOME/.ticktick-token |
mcpUrl | https://mcp.dida365.com | Endpoint MCP do TickTick (o internacional não está verificado — veja abaixo) |
toolCallTimeoutMs | 30000 | Prazo por tools/call em ms |
protectedTaskIds | [] | Ids que as mutações recusam |
tools.* | '' | Nomes MCP fixados (projects/tasks/create/complete/remove/update/move); '' = descobrir por padrão |
Ferramentas do agente
| Ferramenta | Finalidade |
|---|---|
ticktick_status | estado da conexão: token configurado, cliente conectado, endpoint, último erro |
ticktick_lists | todas as listas (projetos), incluída a Caixa de entrada virtual |
ticktick_tasks | tarefas pendentes: uma lista ou todas agregadas, com avisos por lista |
ticktick_add | criar uma tarefa (lista, data ISO opcional) |
ticktick_complete | concluir uma tarefa (id da tarefa + id da lista) |
ticktick_delete | excluir uma tarefa (id da tarefa + id da lista) |
ticktick_due | definir/limpar uma data de vencimento (omitir a data para limpar) |
ticktick_reorder | atribuir um novo sortOrder inteiro (as listas ordenam por sortOrder decrescente) |
ticktick_completed | tarefas concluídas em uma janela (30 dias por padrão), opcionalmente uma lista |
ticktick_search | busca de texto completo sobre tarefas (a ferramenta oficial de busca) |
ticktick_batch_add | criar várias tarefas em uma chamada |
Arquitetura
painel do navegador ── ctx.remote.ticktick.* ──▶ TicktickService (Typert Remote)
cartão de ajustes ──── ctx.settingsScope ──────▶ namespace de ajustes "ticktick"
ferramentas do agente ctx.tools (ticktick_*) ──▶ o mesmo serviço
│
▼
cliente MCP HTTP streamable mínimo
(id de sessão, versão de protocolo, Retry-After)
│
▼
https://mcp.dida365.com (MCP oficial do TickTick)
Limitações conhecidas
- O endpoint internacional do TickTick não está verificado:
mcpUrlaponta por padrão para o endpoint CN e a URL MCP internacional não foi testada. - A vista de concluídas, a busca e a adição em lote usam as ferramentas MCP
list_completed_tasks_by_date,searchebatch_add_tasks; seus contratos vêm do catálogo publicado (dida365-sdkstubs) e a reverificação contra o endpoint real está pendente — executeprobes/probe-queries.mjscom um token real antes de dá-las por verificadas. - O crash medido de
update_taske as falhas de validação de listas são comportamentos do servidor;probes/os reverifica contra o endpoint real antes de um release (execute comDIDA365_TOKENexportado). - A superfície
/apiusada pelo painel é o gateway Typert padrão do harness; o token fica armazenado localmente (documento de ajustes ou arquivo de token) e só é enviado aos servidores do TickTick. Não exponha uma instânciadsh webà internet pública.
Verificar a ponte contra o endpoint real
# PowerShell
$env:DIDA365_TOKEN='dp_...'
node probes/probe-bootstrap.mjs # handshake + catálogo de ferramentas
node probes/probe-crud.mjs # ciclo criar/concluir/excluir
node probes/probe-due.mjs # datas de vencimento (+ desvio com um PROJECT_ID)
node probes/probe-reorder.mjs # semântica de sortOrder
node probes/probe-queries.mjs # descoberta do contrato P2 de consultas
Desinstalação
dsh plugin --profile web remove @perrylink/dsh-ticktick
Reinicie o dsh web. Todos os registros em tempo de execução (ferramentas, painel, cartão de ajustes, seção do prompt) são removidos com o plugin. O único resíduo estático é o token no documento de ajustes do usuário — limpe-o primeiro com o botão Limpar credenciais do cartão (ou remova o arquivo de token / a variável DIDA365_TOKEN) para desvincular por completo. Para manter o pacote instalado mas inativo, desative a linha em vez disso:
- id: ticktick
disabled: true
Instalar a partir do mercado do DSH Desktop
Todos os plugins PerryLink podem ser explorados no mercado integrado do DSH Desktop: Market → Sources → add source → colar https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → selecionar. A instalação continua passando pela verificação de identidade npm do mercado e pela sua confirmação.
PerryLink DSH Plugin Family
Este projeto é um dos 37 plugins de DeepSeek Harness mantidos por PerryLink. Se este ajuda você, os outros provavelmente também:
| Plugin | One-liner |
|---|---|
| dsh-auto-review | Auto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão |
| dsh-background-agents | Agentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção |
| dsh-budget | Governança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel. |
| dsh-checkpoint-rewind | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único |
| dsh-claude-move | Migre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH |
| dsh-click | Controle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro. |
| dsh-composer-history | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R |
| dsh-data-quality | Verificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui) |
| dsh-defend | Defesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness. |
| dsh-doublecheck | Guardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária |
| dsh-draw | Roteamento unificado de geração de imagens estáticas para DeepSeek Harness. |
| dsh-fast | Diagnóstico de desempenho só de leitura para DeepSeek Harness. |
| dsh-fund-research | Relatórios de pesquisa deterministas para fundos mútuos públicos chineses |
| dsh-github | Integração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação |
| dsh-industry-research | Orquestração de pesquisa setorial que sela as suas entregas através do ctx.researchReport.assemble deste plugin |
| dsh-library | Base de conhecimento documental local para DeepSeek Harness. |
| dsh-local-ai | Integração de modelos locais (Ollama) para DeepSeek Harness. |
| dsh-lsp-actions | Diagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem |
| dsh-mask | Middleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição |
| dsh-mcp-panel | Painel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros |
| dsh-memento | Memória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória |
| dsh-observe | Exportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness. |
| dsh-output-styles | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code |
| dsh-permission-rules | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria |
| dsh-personal-directive | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
| dsh-plugin-guide | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda |
| dsh-reach | Ponte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão |
| dsh-research-report | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo |
| dsh-score | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. |
| dsh-session-pin | Fixe sessões na barra lateral web com ordenação durável |
| dsh-session-sync | Sincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões. |
| dsh-skill-pack-security | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos |
| dsh-talk | Loop de sessão com voz para DeepSeek Harness: fale e ouça a resposta. |
| dsh-test-drive | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. |
| dsh-translate | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. |
| dsh-wechat | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |