dsh-ticktick

September 7, 2026 · View on GitHub

License DSH plugin Gitee CI Version npm version npm downloads

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ícieStatus
HarnessDeepSeek 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 ticktick do 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 agenteticktick_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 ganha await 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_task para 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óricos repeatFrom: '') 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

  1. Obtenha um API 口令 (um token com prefixo dp_) no site do Dida365/TickTick: Perfil → Ajustes → Conta e segurança → API 口令.
  2. 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.
  3. Use o botão Testar conexão do cartão para verificar o token e Limpar credenciais para apagá-lo.
ChavePadrãoSignificado
tokenFile''Arquivo de token; vazio = $DSH_HOME/.ticktick-token
mcpUrlhttps://mcp.dida365.comEndpoint MCP do TickTick (o internacional não está verificado — veja abaixo)
toolCallTimeoutMs30000Prazo 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

FerramentaFinalidade
ticktick_statusestado da conexão: token configurado, cliente conectado, endpoint, último erro
ticktick_liststodas as listas (projetos), incluída a Caixa de entrada virtual
ticktick_taskstarefas pendentes: uma lista ou todas agregadas, com avisos por lista
ticktick_addcriar uma tarefa (lista, data ISO opcional)
ticktick_completeconcluir uma tarefa (id da tarefa + id da lista)
ticktick_deleteexcluir uma tarefa (id da tarefa + id da lista)
ticktick_duedefinir/limpar uma data de vencimento (omitir a data para limpar)
ticktick_reorderatribuir um novo sortOrder inteiro (as listas ordenam por sortOrder decrescente)
ticktick_completedtarefas concluídas em uma janela (30 dias por padrão), opcionalmente uma lista
ticktick_searchbusca de texto completo sobre tarefas (a ferramenta oficial de busca)
ticktick_batch_addcriar 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: mcpUrl aponta 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, search e batch_add_tasks; seus contratos vêm do catálogo publicado (dida365-sdk stubs) e a reverificação contra o endpoint real está pendente — execute probes/probe-queries.mjs com um token real antes de dá-las por verificadas.
  • O crash medido de update_task e as falhas de validação de listas são comportamentos do servidor; probes/ os reverifica contra o endpoint real antes de um release (execute com DIDA365_TOKEN exportado).
  • A superfície /api usada 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ância dsh 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.

Este projeto é um dos 37 plugins de DeepSeek Harness mantidos por PerryLink. Se este ajuda você, os outros provavelmente também:

PluginOne-liner
dsh-auto-reviewAuto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão
dsh-background-agentsAgentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção
dsh-budgetGovernança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel.
dsh-checkpoint-rewindEquivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único
dsh-claude-moveMigre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH
dsh-clickControle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro.
dsh-composer-historyHistórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R
dsh-data-qualityVerificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui)
dsh-defendDefesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness.
dsh-doublecheckGuardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária
dsh-drawRoteamento unificado de geração de imagens estáticas para DeepSeek Harness.
dsh-fastDiagnóstico de desempenho só de leitura para DeepSeek Harness.
dsh-fund-researchRelatórios de pesquisa deterministas para fundos mútuos públicos chineses
dsh-githubIntegração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação
dsh-industry-researchOrquestração de pesquisa setorial que sela as suas entregas através do ctx.researchReport.assemble deste plugin
dsh-libraryBase de conhecimento documental local para DeepSeek Harness.
dsh-local-aiIntegração de modelos locais (Ollama) para DeepSeek Harness.
dsh-lsp-actionsDiagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem
dsh-maskMiddleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição
dsh-mcp-panelPainel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros
dsh-mementoMemória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória
dsh-observeExportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness.
dsh-output-stylesTroca de estilo em tempo de execução equivalente ao outputStyles do Claude Code
dsh-permission-rulesRegras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria
dsh-personal-directiveInjetor de diretivas pessoais com alternância na barra superior (edição framework)
dsh-plugin-guideBase de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda
dsh-reachPonte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão
dsh-research-reportMotor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo
dsh-scorePontuação de qualidade multidimensional para plugins de DeepSeek Harness.
dsh-session-pinFixe sessões na barra lateral web com ordenação durável
dsh-session-syncSincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões.
dsh-skill-pack-securityPacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos
dsh-talkLoop de sessão com voz para DeepSeek Harness: fale e ouça a resposta.
dsh-test-driveTest drives isolados de instalação e smoke para plugins de DeepSeek Harness.
dsh-translateTradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness.
dsh-wechatPonte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat

Licença

Apache-2.0