dsh-claude-move 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.es.md +285 -291
- package/README.hi.md +285 -292
- package/README.md +285 -317
- package/README.pt.md +285 -291
- package/README.zh.md +285 -311
- package/client/client.js +7 -3
- package/index.mjs +20 -10
- package/package.json +68 -4
package/README.pt.md
CHANGED
|
@@ -1,291 +1,285 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
[ · [site](https://www.deepseek.com/harness/) · [documentação de desenvolvimento](https://deepseek-harness.github.io/deepseek-harness/develop/basic/)
|
|
287
|
-
- Ecossistema de plugins: [tópico `dsh`](https://github.com/topics/dsh) · [tópico `dsh-plugin`](https://github.com/topics/dsh-plugin) · [Discord](https://discord.gg/Ycq5dCaS4)
|
|
288
|
-
|
|
289
|
-
## 📄 Licença
|
|
290
|
-
|
|
291
|
-
Apache License 2.0 — ver [LICENSE](LICENSE) e [NOTICE](NOTICE). Avisos de terceiros (incluindo o texto MIT dos componentes MIT) em [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🚚 dsh-claude-move
|
|
4
|
+
|
|
5
|
+
**Migre Claude Code, Codex, OpenCode e Hermes para o DeepSeek Harness — copie sessões, memórias, habilidades, instruções e comandos de barra como sessões DSH retomáveis, somente-cópia e com aprovação.**
|
|
6
|
+
|
|
7
|
+
*Mantenha seu histórico do Claude Code ao migrar: uma única instalação, sessões retomáveis, sincronização em tempo real com um Claude Code em execução e um assistente de migração de quatro fontes.*
|
|
8
|
+
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/topics/dsh-plugin)
|
|
11
|
+
[](#)
|
|
12
|
+
[](https://github.com/PerryLink/dsh-claude-move/actions)
|
|
13
|
+
[](https://github.com/PerryLink/dsh-claude-move/releases)
|
|
14
|
+
[](https://www.npmjs.com/package/dsh-claude-move)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-claude-move)
|
|
16
|
+
|
|
17
|
+
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Compatibilidade
|
|
24
|
+
|
|
25
|
+
- Direcionado a `dsh 0.1.0-rc.6` (perfil web); peer dependencies fixadas em `0.1.0-rc.6`. Node `^22.19 || >=24`.
|
|
26
|
+
- Última verificação contra uma instalação nova de tarball: varredura real, importação em lote real (reimportação idempotente), anexo ao workspace e artefatos de persistência confirmados; macOS/Linux cobertos pela matriz de CI.
|
|
27
|
+
|
|
28
|
+
### Matriz de compatibilidade (somente costuras públicas)
|
|
29
|
+
|
|
30
|
+
| Superfície | Uso | Fallback quando ausente |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| Serviços de host (`tools` / `sessionPersistence` / `workspaceRegistry` / `commands` / `systemPrompt` / `skills` / `webServer`) | obrigatório onde listado | serviços opcionais registram reativamente; `fs` ausente falha em voz alta |
|
|
33
|
+
| `sessionPersistence.listSnapshots` / `readFrom` / `fs` com capacidade `streamText` / `ctx.jobs` / `ctx.agents.resume` | detectado por recurso | `list()` / leitura de arquivo inteiro com rejeição em voz alta / mapa de jobs próprio / injeção de handoff |
|
|
34
|
+
| Serviços de shell do cliente (`sessions.refresh/open`, `workspaces.refresh`) | detectado por recurso ao aplicar o painel | recarga completa da página |
|
|
35
|
+
| Capacidades de plataforma mais novas nunca são requisitos rígidos — o plugin continua inicializável no rc.6. | | |
|
|
36
|
+
|
|
37
|
+
## O que você recebe
|
|
38
|
+
|
|
39
|
+
1. **Auto-descoberta** — `claude_scan` localiza a raiz de dados do Claude (`$CLAUDE_CONFIG_DIR`, fallback `~/.claude`) e indexa cada projeto/sessão, memória, habilidade, `CLAUDE.md` global e `settings.json`, com cache incremental e varredura paralela (`scanConcurrency`).
|
|
40
|
+
2. **Importação de fidelidade total** — `import_claude` converte transcrições em sessões DSH balanceadas e retomáveis (`turn/start → step/start → user/message → assistant/message → tool/call → tool/result → step/end → turn/end`), repara chamadas de ferramenta interrompidas e importa por streaming em blocos transcrições maiores que `maxTranscriptBytes`.
|
|
41
|
+
3. **Um único workspace `claudecode`** — cada sessão importada cai em um workspace dedicado (padrão `$DSH_HOME/claudecode`); `workspaceMode: 'per-project'` restaura o agrupamento de um workspace por projeto.
|
|
42
|
+
4. **Somente-cópia e incremental** — nada é movido, reescrito ou excluído em nenhum dos lados; reexecutar apenas anexa os turnos novos (`force: true` salva uma cópia completa extra sob um novo id).
|
|
43
|
+
5. **Contexto pessoal, sempre atualizado** — memórias injetadas como uma seção de prompt em tempo real, habilidades do Claude registradas como habilidades DSH reais (globais + de projeto), e o `CLAUDE.md` global + de projeto injetado cedo.
|
|
44
|
+
6. **Assistente de migração de quatro fontes** — `/move` mais `move_detect` / `move_preview` / `move_run` migram Claude Code, Codex, OpenCode e Hermes, com aprovação e idempotência (`move.json`).
|
|
45
|
+
7. **Painel web e comandos** — `/claude-import-all`, `/resume-claude`, `/claude-move-reset` e um painel de migração flutuante.
|
|
46
|
+
|
|
47
|
+
## Assistente de migração de quatro fontes
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
/move # assistente de um só passo: detectar → pré-visualizar → executar → relatar (as quatro fontes)
|
|
51
|
+
move_detect # varre Claude Code / Codex / OpenCode / Hermes
|
|
52
|
+
move_preview # plano por item: new | unchanged | changed | conflict (com diff) | unsupported
|
|
53
|
+
move_run # executa atrás da porta de aprovação; resolução de conflitos:
|
|
54
|
+
# skip | overwrite | rename | merge (padrão skip — nunca adivinha)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- **Fontes** — Claude Code (`~/.claude`), Codex (`~/.codex`), OpenCode (raízes de dados + config), Hermes (raízes de skills/memória); cada fonte tem seu próprio parser + mapper.
|
|
58
|
+
- **Mapeamento** — memórias/instruções → seções gerenciadas somente-anexáveis no `AGENTS.md` global do DSH (uma seção marcada por item); skills → skills DSH reais (pacotes `SKILL.md` copiados tal e qual, outros formatos convertidos); comandos de barra → comandos DSH registrados (reconstruídos a partir de `move.json` após reiniciar); sessões → sessões DSH retomáveis (os mesmos importadores da fase 1).
|
|
59
|
+
- **Idempotente** — cada plano aplicado é registrado em `$DSH_HOME/claude-move/move.json` (`digest` / `targetDigest` / `appliedAt`); reexecuções pulam itens inalterados e `force` os reaplica.
|
|
60
|
+
- **Com aprovação** — uma execução que escreveria algo pergunta primeiro a `ctx.approval`; qualquer coisa diferente de `allowed-once` significa zero escritas.
|
|
61
|
+
|
|
62
|
+
## Início rápido
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
# 1. instale o bundle no seu perfil
|
|
66
|
+
dsh plugin --profile web add "github:PerryLink/dsh-claude-move#master"
|
|
67
|
+
|
|
68
|
+
# ou pelo npm (versões publicadas)
|
|
69
|
+
dsh plugin --profile web add dsh-claude-move
|
|
70
|
+
|
|
71
|
+
# 2. reinicie e verifique a linha
|
|
72
|
+
dsh --profile web --dump-config | grep -A4 'id: claude-move'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Depois, em qualquer sessão DSH, execute um comando:
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
/claude-import-all # varre → copia cada sessão do Claude → relata
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Não é preciso reiniciar o DSH após importar — atualize a página web aberta uma vez e clique em qualquer sessão importada para continuar.
|
|
82
|
+
|
|
83
|
+
## Instalar e desinstalar
|
|
84
|
+
|
|
85
|
+
- **Canal git** (último `master`): `dsh plugin --profile web add "github:PerryLink/dsh-claude-move#master"` — ESM puro, sem etapa de `prepare` nem `allowBuilds`.
|
|
86
|
+
- **Canal npm** (versões publicadas): `dsh plugin --profile web add dsh-claude-move`.
|
|
87
|
+
- **Canal tarball**: `npm pack` neste repo e depois `dsh plugin --profile web add ./dsh-claude-move-<version>.tgz`.
|
|
88
|
+
- **Desinstalar**: remova a linha `claude-move` dos bundles do perfil e reinicie o `dsh`. As sessões importadas permanecem no diretório de dados do DSH; o plugin só grava seu cache (`$DSH_HOME/claude-move/`) e a pasta do workspace `claudecode`, e nunca toca nos dados fonte do Claude.
|
|
89
|
+
|
|
90
|
+
## O que é migrado
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
~/.claude (somente leitura)
|
|
94
|
+
├─ projects/*/*.jsonl ──→ sessões DSH retomáveis, agrupadas em um workspace "claudecode" (padrão)
|
|
95
|
+
├─ projects/*/memory/ ──→ seção de memória do system-prompt em tempo real (relida por requisição)
|
|
96
|
+
├─ skills/** ──→ skills DSH reais
|
|
97
|
+
└─ CLAUDE.md + settings ──→ seção de prompt inicial + sugestões de configuração (nunca auto-aplicadas)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| No Claude Code | Chega ao DSH como |
|
|
101
|
+
|---|---|
|
|
102
|
+
| Transcrições de sessão (`projects/*/*.jsonl`) | Sessões DSH balanceadas e retomáveis — mapeamento de fidelidade total de `user`/`assistant`/`tool`/`thinking` com reparo de chamadas de ferramenta interrompidas — agrupadas em um workspace **`claudecode`** ou uma por projeto |
|
|
103
|
+
| Arquivos de memória (`projects/*/memory/*.md`) | Uma seção de contexto do system-prompt em tempo real, relida a cada requisição (`feedback > project > reference > user`) |
|
|
104
|
+
| Skills (`~/.claude/skills/**`) | Skills DSH reais (nomes kebab-case, sufixos de colisão, máximo 30 por padrão; `README.md`/`MEMORY.md` e arquivos sem descrição são pulados) |
|
|
105
|
+
| `CLAUDE.md` (global + por projeto) | Uma seção de prompt inicial; o arquivo do projeto vence |
|
|
106
|
+
| `settings.json` | Sugestões de configuração DSH com uma lista explícita de chaves não mapeáveis |
|
|
107
|
+
| Estado do projeto (diretório, branch git e contagem de sujeira) | Mostrado no índice de varredura, nos selos do painel web e no handoff de `/resume-claude` |
|
|
108
|
+
|
|
109
|
+
## Uso
|
|
110
|
+
|
|
111
|
+
Chame as ferramentas em qualquer sessão com o plugin montado:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
claude_scan # varredura completa (cache incremental)
|
|
115
|
+
claude_scan { path: "~/.claude/projects/<slug>" } # varredura parcial
|
|
116
|
+
claude_scan { refresh: true } # pula o cache, revê tudo
|
|
117
|
+
claude_scan { projectsLimit: 10, sessionsLimit: 5, fields: "brief" } # reduz a saída
|
|
118
|
+
|
|
119
|
+
import_claude { path: "~/.claude/projects/<slug>/<sessionId>.jsonl" } # uma sessão
|
|
120
|
+
import_claude { path: "~/.claude/projects" } # diretório (recursivo)
|
|
121
|
+
import_claude { path: "all" } # tudo
|
|
122
|
+
# Reexecute a qualquer momento: arquivos inalterados são pulados, transcrições crescidas anexam apenas os turnos novos.
|
|
123
|
+
# Arquivos acima de maxTranscriptBytes são importados por streaming em blocos (sem teto de memória).
|
|
124
|
+
import_claude { path: "...", force: true } # cópia completa nova (cópia anterior mantida)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Comandos (acionados pelo usuário, sem turno do modelo):
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
/claude-import-all # um só passo: varre → importa tudo → relata → injeta na sessão atual
|
|
131
|
+
/resume-claude latest # continua a sessão do Claude mais recente
|
|
132
|
+
/resume-claude <sessionId> # por id de sessão fonte ou id import-<src>
|
|
133
|
+
/resume-claude <keyword> # corresponde a títulos; múltiplas correspondências são listadas, nunca adivinhadas
|
|
134
|
+
/claude-move-reset # reinicia o cache do plugin (marcadores + mapa de importação); sessões importadas são mantidas
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Painel web: um painel de migração flutuante com a árvore de projetos/sessões, selos de status (não importado / importado / importado-com-turnos-novos / fonte ausente / diretório ausente / git sujo), filtro por palavra-chave, renderização paginada, "Importar e continuar" + "Abrir sessão" + "Atualizar lista de sessões" por sessão, importação em lote com barra de progresso em tempo real e cancelar, e um botão de reinício de cache. Os textos seguem o idioma do navegador (zh/en). Servido pelas rotas JSON `/api/claude-move/*` próprias do plugin na costura pública `ctx.webServer`.
|
|
138
|
+
|
|
139
|
+
## Depois de importar
|
|
140
|
+
|
|
141
|
+
**Você não precisa reiniciar o DSH.** As importações chegam de forma durável pelo serviço público `sessionPersistence` no momento em que são concluídas:
|
|
142
|
+
|
|
143
|
+
- As listas do lado do servidor (RPCs `session.list` / `workspace.list`, a CLI, qualquer novo carregamento de página) mostram as sessões importadas sob o workspace **`claudecode`** imediatamente.
|
|
144
|
+
- O painel atualiza sozinho a lista de sessões da página já aberta e oferece um botão **Abrir sessão** por sessão importada.
|
|
145
|
+
- As sessões importadas podem ser abertas, lidas e retomadas de imediato — `/resume-claude`, ou clique na sessão na lista. Reexecutar a importação a qualquer momento sincroniza apenas os turnos novos nas mesmas sessões.
|
|
146
|
+
|
|
147
|
+
## Configuração
|
|
148
|
+
|
|
149
|
+
Tudo opcional, anulável no cordis.yml.
|
|
150
|
+
|
|
151
|
+
| Chave | Padrão | Significado |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| `claudeHome` | `$CLAUDE_CONFIG_DIR` ou `~/.claude` | Raiz de dados do Claude |
|
|
154
|
+
| `workspaceMode` | `claudecode` | `claudecode` (um workspace dedicado) · `per-project` (um workspace por cwd fonte) |
|
|
155
|
+
| `claudecodeDir` | `$DSH_HOME/claudecode` | A pasta do workspace `claudecode` (a única pasta que o plugin cria) |
|
|
156
|
+
| `scanGit` | `true` | Nível de sondagem do git: `true` (completo) · `'branch'` (zero chamadas git) · `false` |
|
|
157
|
+
| `gitTimeoutMs` | `5000` | Timeout do subprocesso git |
|
|
158
|
+
| `scanConcurrency` | `8` | Limite de varredura paralela de projetos |
|
|
159
|
+
| `maxTranscriptBytes` | `67108864` | Limiar de importação por streaming (em blocos acima) |
|
|
160
|
+
| `excludeProjects` | `[]` | Substrings de slug a pular |
|
|
161
|
+
| `enableMemory` | `true` | Injeta memórias como seção de prompt em tempo real |
|
|
162
|
+
| `memoryMaxBytes` | `8192` | Limite da seção de memória |
|
|
163
|
+
| `memoryScope` | `current-project` | `current-project` · `all` (projeto atual primeiro) |
|
|
164
|
+
| `enableSkills` | `true` | Registra habilidades do Claude como habilidades DSH |
|
|
165
|
+
| `maxSkills` | `30` | Limite de quantidade de habilidades |
|
|
166
|
+
| `extraSkillDirs` | `[]` | Diretórios de habilidades extras |
|
|
167
|
+
| `enableInstructions` | `true` | Injeta `CLAUDE.md` global + de projeto |
|
|
168
|
+
| `resumeMaxChars` | `2048` | Limite de caracteres do resumo de handoff |
|
|
169
|
+
| `resumeMode` | `inject` | `inject` (resumo de handoff) · `agents` (ctx.agents.resume) |
|
|
170
|
+
| `enableWebPanel` | `true` | Registra as rotas do painel `/api/claude-move/*` |
|
|
171
|
+
| `importConcurrency` | `4` | Leitura + conversão em paralelo por lote |
|
|
172
|
+
| `requireApproval` | `true` | Escritas do assistente pedem `ctx.approval` (somente allowed-once) |
|
|
173
|
+
| `codexHome` | `$CODEX_HOME` ou `~/.codex` | Raiz de dados do Codex |
|
|
174
|
+
| `opencodeDataHome` | dir de dados XDG da plataforma/opencode | Raiz de dados do OpenCode |
|
|
175
|
+
| `opencodeConfigHome` | dir de config XDG da plataforma/opencode | Raiz de config do OpenCode |
|
|
176
|
+
| `hermesHome` | `$HERMES_HOME` ou `~/.hermes` | Raiz de dados do Hermes |
|
|
177
|
+
| `skillsDir` | `$DSH_HOME/skills` | Destino de skills do assistente |
|
|
178
|
+
| `agentsMdPath` | `$DSH_HOME/AGENTS.md` | Destino de memória/instruções do assistente |
|
|
179
|
+
| `moveWorkspaceMode` | `per-source` | Agrupamento de workspace para importações do assistente: `per-source` · `single` |
|
|
180
|
+
|
|
181
|
+
## Ferramentas e superfícies
|
|
182
|
+
|
|
183
|
+
| Superfície | Tipo | Notas |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| `claude_scan` | ferramenta | Índice estruturado de projetos/sessões/memórias/habilidades/ajustes |
|
|
186
|
+
| `import_claude` | ferramenta | Importa uma sessão, um diretório ou `all` (incremental; `force` para cópia nova) |
|
|
187
|
+
| `move_detect` / `move_preview` / `move_run` | ferramentas | Assistente de quatro fontes: varrer, plano por item com diffs, executar após aprovação |
|
|
188
|
+
| `/claude-import-all` | comando | Varre → importa tudo → relata |
|
|
189
|
+
| `/resume-claude` | comando | Continua uma sessão do Claude (latest, id ou palavra-chave) |
|
|
190
|
+
| `/claude-move-reset` | comando | Reinicia o cache do plugin (sessões importadas mantidas) |
|
|
191
|
+
| `/move` | comando | Assistente de quatro fontes de um só passo |
|
|
192
|
+
| Painel web de migração | cliente | Painel flutuante com progresso, cancelamento, paginação, abrir sessão |
|
|
193
|
+
|
|
194
|
+
## Permissões e dados
|
|
195
|
+
|
|
196
|
+
- **Permissões**: o manifesto do workshop declara `filesystem:read` e `filesystem:write`.
|
|
197
|
+
- **Lê** `~/.claude` (transcrições, memórias, habilidades, `CLAUDE.md`, `settings.json`) — estritamente somente leitura — e os diretórios de projeto para os quais importa.
|
|
198
|
+
- **Grava** logs de sessão DSH via o serviço público `sessionPersistence` (somente create + append, nunca exclui/reescreve/arquiva), registros do workspace-registry, seu cache sob `$DSH_HOME/claude-move/` e a pasta do workspace `claudecode`.
|
|
199
|
+
- **Nunca** modifica arquivos fonte do Claude, toca dados de outros aplicativos nem acessa a rede. **Nenhuma** credencial é lida ou transmitida.
|
|
200
|
+
|
|
201
|
+
## Limites de segurança
|
|
202
|
+
|
|
203
|
+
- **Arquivos fonte são somente leitura; logs DSH são somente-append** (somente `create` + `append`).
|
|
204
|
+
- **Transcrições externas são entrada não confiável** — nada nelas é executado; conteúdo system/developer/thinking nunca entra no handoff de retomada.
|
|
205
|
+
- **Somente serviços públicos** — `sessionPersistence` / `workspaceRegistry` / `tools` / `commands` / `systemPrompt` / `skills` / `webServer`; sem mudanças no motor ou na UI.
|
|
206
|
+
- **Segredos relatados apenas por posição** (file:line:kind); registros `permission`/`permission-mode`/`queue-operation` são contados, não importados.
|
|
207
|
+
- **Escritas do assistente com aprovação** — qualquer coisa diferente de `allowed-once` significa zero escritas.
|
|
208
|
+
|
|
209
|
+
## Limitações conhecidas
|
|
210
|
+
|
|
211
|
+
- Títulos vêm de `custom-title`/`ai-title`/primeiro prompt; registros `summary` do Claude são relatados mas não mapeados para nós de compactação DSH (sintetizar uma transação de compactação válida fabricaria seu intervalo de seq e sua mensagem de checkpoint).
|
|
212
|
+
- Blocos `thinking` são mantidos como conteúdo `reasoning`, mas nunca entram no handoff de retomada.
|
|
213
|
+
- Chamadas de ferramenta interrompidas são reparadas com um resultado de erro sintético (nunca descartadas), relatado como `repaired.synthesized`.
|
|
214
|
+
- Registros da classe de permissões são contados, não importados; sugestões de permissões predefinidas DSH são geradas nos relatórios.
|
|
215
|
+
- Em hosts sem uma superfície de streaming `fs.streamText`, transcrições maiores que `maxTranscriptBytes` falham em voz alta em vez de importar parcialmente.
|
|
216
|
+
- Em `workspaceMode: 'per-project'`, sessões cujo diretório fonte foi excluído ainda importam, mas o anexo ao workspace falha (ficam desagrupadas; `workspace.attached: false` mais um `reason`). O workspace `claudecode` padrão não depende do diretório fonte.
|
|
217
|
+
- Se uma transcrição foi truncada ou reiniciada no lugar (menos turnos que a importação registrada), a reimportação a pula e relata `sourceShrunk`; use `force: true` para uma cópia completa nova.
|
|
218
|
+
- O painel web é um painel flutuante sem build dirigido pelas próprias rotas JSON do plugin; ele não usa o sistema de slots de UI interno do shell.
|
|
219
|
+
|
|
220
|
+
## Experiência do modelo
|
|
221
|
+
|
|
222
|
+
- A superfície visível ao modelo são as descrições/esquemas das duas ferramentas e suas saídas: `claude_scan` retorna o índice estruturado, `import_claude` retorna resumos por arquivo com posições dos avisos. Os resultados das ferramentas são eles próprios registrados como eventos `tool/result`, de modo que tudo é reconstruível.
|
|
223
|
+
- Nenhum texto oculto visível ao modelo; as seções de memória/`CLAUDE.md` são registradas em `ctx.systemPrompt` (montagem de prompt, reconstruível a partir do log de sessão).
|
|
224
|
+
|
|
225
|
+
## Solução de problemas
|
|
226
|
+
|
|
227
|
+
- Linha sem efeito: `dsh --profile <p> --dump-config` deve imprimir `# == dsh-claude-move`; reexecute `dsh plugin --profile <p> add ...`.
|
|
228
|
+
- A web inicializa mas trava em silêncio: perfis novos inicializados por `dsh plugin add` contêm apenas `dsh-base` — adicione `@deepseek-ai/dsh-web-app` a `dsh.profile.bundles`. Instalar no perfil `web` existente não precisa de nada.
|
|
229
|
+
- Rotas do painel 404: elas são servidas apenas quando `enableWebPanel: true` e um servidor web está composto; verifique o log de inicialização em busca de fibers FAILED.
|
|
230
|
+
- A importação falha com "transcript 过大": aumente `maxTranscriptBytes` ou importe esse arquivo individualmente.
|
|
231
|
+
- A importação teve sucesso, mas a barra lateral não mostra nenhuma sessão nova: a página já estava aberta — clique uma vez no botão de atualizar do painel (ou recarregue a página). Nunca é preciso reiniciar o DSH.
|
|
232
|
+
- Logs: falhas de inicialização são impressas no console do `dsh`; o plugin registra erros com prefixo `[claude-move]` para problemas de workspace/mapa de importação.
|
|
233
|
+
|
|
234
|
+
## Atribuição (componentes de código aberto)
|
|
235
|
+
|
|
236
|
+
Este projeto está licenciado sob a Apache License 2.0; os seguintes componentes licenciados sob MIT mantêm suas próprias licenças (texto completo em [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)):
|
|
237
|
+
|
|
238
|
+
- Núcleo de conversão vendored de [Nwflower/dsh-chat-import](https://github.com/Nwflower/dsh-chat-import) (MIT).
|
|
239
|
+
- Convenções de descoberta e modelo de segurança de [Demogorgon314/dsh-resume-plugin](https://github.com/Demogorgon314/dsh-resume-plugin) (MIT).
|
|
240
|
+
- Padrões de injeção de memória/skills e análise de frontmatter de [YYTbit/dsh-plugin-claude-bridge](https://github.com/YYTbit/dsh-plugin-claude-bridge) (MIT).
|
|
241
|
+
|
|
242
|
+
## Desenvolvimento
|
|
243
|
+
|
|
244
|
+
```sh
|
|
245
|
+
npm install # peer deps: @deepseek-ai/dsh-tools@0.1.0-rc.6, @deepseek-ai/cordis, schemastery
|
|
246
|
+
npm test # node --test test/*.test.mjs
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
A CI executa a suíte completa no Node 22 em Linux/macOS/Windows via GitHub Actions ([test.yml](.github/workflows/test.yml)).
|
|
250
|
+
|
|
251
|
+
## Tópicos
|
|
252
|
+
|
|
253
|
+
`deepseek-harness`, `dsh-plugin`, `claude-code`, `migration`, `session-import`, `resume`
|
|
254
|
+
|
|
255
|
+
## Contribuidores
|
|
256
|
+
|
|
257
|
+
- [@PerryLink](https://github.com/PerryLink) — criador e mantenedor: o pipeline de importação, o assistente de migração de quatro fontes, o painel web, a documentação, CI/CD e releases.
|
|
258
|
+
- [@OLDnana1](https://github.com/OLDnana1) — análise de causa raiz da corrupção de chamadas de ferramenta interrompidas que fazia as sessões importadas retornarem permanentemente HTTP 400 ao retomar.
|
|
259
|
+
- [@GooodWei](https://github.com/GooodWei) — identificou que `README.md` (e qualquer `.md` sem descrição) era registrado incorretamente como habilidade, o que quebrava o carregamento de habilidades do DSH.
|
|
260
|
+
|
|
261
|
+
## Família de Plugins DSH PerryLink
|
|
262
|
+
|
|
263
|
+
Este projeto é um dos plugins do DeepSeek Harness mantidos por [PerryLink](https://github.com/PerryLink). Se este lhe ajuda, os outros provavelmente também ajudarão:
|
|
264
|
+
|
|
265
|
+
| Plugin | Uma linha |
|
|
266
|
+
|---|---|
|
|
267
|
+
| [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Painel de runtime MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros |
|
|
268
|
+
| [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Guarda de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão de adversário |
|
|
269
|
+
| [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Agentes filhos em segundo plano duráveis com uma barra lateral de Web UI, mensagens e interrupção |
|
|
270
|
+
| [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | Diagnósticos LSP, formatação, completação, ações de código e renomeação sobre language servers |
|
|
271
|
+
| [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Troca de estilo em runtime equivalente a outputStyles do Claude Code |
|
|
272
|
+
| [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Equivalente a /rewind do Claude Code: snapshots, forks de sessão, restauração de um só passo |
|
|
273
|
+
| [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria |
|
|
274
|
+
| [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Auto-revisão de segundo modelo na cadeia de aprovação, fail-closed por padrão |
|
|
275
|
+
| [dsh-memento](https://github.com/PerryLink/dsh-memento) | Memória entre sessões com aprovação: costura ctx.memory + SQLite + ferramenta de memória |
|
|
276
|
+
| [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Pacote de skills de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos |
|
|
277
|
+
| [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Fixa sessões na barra lateral web com ordenação durável |
|
|
278
|
+
| [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Histórico de entrada estilo terminal para o composer web: setas, busca Ctrl+R |
|
|
279
|
+
| [dsh-github](https://github.com/PerryLink/dsh-github) | Integração de PR/issues do GitHub para DSH, cada escrita gated por aprovação |
|
|
280
|
+
| [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Base de conhecimento de desenvolvimento de plugins como skill de agente sob demanda |
|
|
281
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migra sessões, memória, skills e CLAUDE.md do Claude Code para o DSH |
|
|
282
|
+
|
|
283
|
+
## Licença
|
|
284
|
+
|
|
285
|
+
[Apache License 2.0](LICENSE) © 2026 dsh-claude-move contributors
|