Orkas Orkas
Download GitHub
HomeInício首页ホーム BlogBlog博客ブログ ArchitectureArquitetura架构アーキテクチャ
ArchitectureArquitetura架构アーキテクチャ

Cloud Sync in Practice: How Orkas Syncs Data Across DevicesSincronização na nuvem na prática: como o Orkas sincroniza dados entre dispositivos云端同步实战:Orkas 如何做好数据同步クラウド同期の実践:Orkas がデータ同期を確実にする仕組み

How Orkas syncs user data across devices with encrypted transfer, content storage, server-owned commits, account locks, sync rules, model-assisted conflict handling, delete confirmation, and a recycle bin.Como o Orkas sincroniza dados do usuário entre dispositivos com transferência criptografada, armazenamento de conteúdo, commits de propriedade do servidor, bloqueios de conta, regras de sincronização, tratamento de conflitos assistido por modelo, confirmação de exclusão e uma lixeira.Orkas 如何用加密传输、内容存储、服务端提交、账号级锁、同步规则、模型辅助冲突处理、删除确认和回收站,把用户数据可靠同步到多台设备。Orkas が、暗号化された転送、内容保存、サーバー側の確定処理、アカウント単位の同期ロック、同期ルール、モデル支援の競合処理、削除確認、同期ごみ箱によって、ユーザーデータを複数デバイスへ同期する仕組み。

Cloud sync for user data is not just upload and download. It has to protect private content in transit, keep storage cheap, serialize writes from multiple devices, understand different data shapes, ask for confirmation before dangerous deletes, and preserve a way back when a decision turns out wrong.

Orkas treats cloud sync as a product boundary, not a background utility. Conversations, agents, skills, task state, knowledge files, and settings all need to move across devices while keeping a clear chain of responsibility: the device prepares content, object storage holds bytes, and the server owns the authoritative index.

The framework below is the one we use to reason about the system: encrypted content flow, content-addressed storage, account-level sync lock, server-owned commit, deterministic sync rules, model-assisted conflict handling, delete confirmation, recycle bin, and recovery markers.

Cloud sync at a glance
Device dataScans user-owned data and compares it with the last clean baseline.
Security layerEncrypts, hashes, verifies, and signs the intent of each sync pass.
Cloud storageStores content objects and a compact index of what should exist.
Recovery layerKeeps tombstones, conflict archives, delete prompts, and recycle-bin entries.
The system is built as a set of checks around the data flow, not as a blind file mirror.

The sync contract

Each sync pass answers four product questions: what content is eligible to move, how is it protected, who is allowed to publish a new cloud index, and how can the user recover if sync made the wrong call?

The contract for every pass
ScopeOnly user data is considered.
EncryptPayloads are protected before leaving the device.
StoreObjects are addressed by content identity.
LockOne account sync pass publishes at a time.
CommitThe server validates and writes the next index.
RecoverDeletes and conflicts keep a return path.
Sync is reliable because each stage has a narrow responsibility.

Encrypted content path

User data is prepared on the device before it reaches storage. The sync engine normalizes the candidate set, computes content identity, encrypts payloads, uploads through short-lived credentials, and verifies downloaded bytes before writing them back to the device.

From user data to protected cloud object
SelectChoose user-authored data.
HashCompute content identity and size metadata.
EncryptProtect payload before upload.
UploadSend object bytes with temporary credentials.
VerifyCheck hash and expected metadata on pull.
ApplyWrite only verified content to the device.
Object storage sees encrypted payloads; the sync engine verifies content identity before trusting a pull.

Storage and index

Orkas separates stored bytes from the cloud index. Content objects hold the encrypted data. The index records which logical data items should exist, their content identity, version counters, stored size, cloud revision, and tombstone state. The device also keeps a baseline from the last successful pass so it can tell old state from new edits.

Three records, three jobs
Device baselineThe device's memory of the last completed sync.
Cloud indexThe server-owned list of current items, versions, and tombstones.
Content objectsEncrypted bytes addressed by content identity.
Why split them? Large bytes can live in object storage, while the small index remains the single source for sync decisions.
The index tells devices what should exist; content objects supply the bytes.

One sync pass

A pass starts cheap and becomes strict only when there is real work. Orkas first checks whether anything changed, then obtains the account sync lock, recomputes changes while that lock is held, moves content, asks the server to commit index operations, and finally updates the device baseline.

One pass lifecycle
PreflightScan and fetch the latest cloud index metadata.
Sync lockReserve the account sync lane for this device.
RecheckRecompute changes after the lock is held.
TransferUpload, download, merge, or prepare deletes.
CommitServer validates cloud revision, quota, and schema.
BaselineRecord the new clean state after success.
The second diff is important: the preflight view may already be stale by the time work begins.

Sync lock and commit

The sync lock and the commit check solve different problems. The sync lock reduces wasted concurrent work across devices. The server-side lock serializes index writes. The expected cloud revision check prevents an older read from becoming the next truth. Quota and schema checks run in the same server-owned commit path.

The commit gate
Device asksIs the account sync lane available?
Lock grantedThe pass gets a short heartbeat window.
Objects readyContent bytes are already uploaded or fetched.
Server lockIndex write is serialized per account.
Version checkReject if the cloud revision changed.
PublishWrite the next index and update usage.
Devices move bytes; the server publishes the authoritative state.

Rules before conflicts

Most sync decisions are not conflicts. The device compares the baseline, current device data, and cloud index. If only the cloud changed, pull. If only the device changed, push. If both changed, route by content type. If something disappeared, enter the delete-safety path instead of immediately removing data.

Decision engine
BaselineWhat this device last confirmed.
Device data nowWhat this device currently has.
Cloud nowWhat the server index declares.
ActionPull, push, merge, tombstone, confirm, or restore.
The baseline makes a simple rule possible: unchanged sides do not need a merge.

Conflict handling

When both sides really changed, Orkas does not collapse everything into last-writer-wins. Append-style logs can merge by missing records. Lists can merge by stable record identity. Structured JSON can use version counters and timestamps. Markdown and binary files are conservative: if the system cannot prove a lossless merge, it keeps a full copy of the losing version.

For ambiguous text or structured-content conflicts, the product can package the relevant versions for model-assisted handling. The model can explain the conflict, draft a merged version, or help the user choose. It is not the only guardrail: deterministic validation, archived originals, and user-visible recovery remain part of the path.

Conflict resolution pipeline
ClassifyDetect file shape and available version metadata.
Rule mergeUse deterministic merge when it is safe.
Model assistExplain or draft for ambiguous text conflicts.
ArchiveKeep originals when safety is uncertain.
ValidateCheck schema, identity, and expected shape.
PublishCommit only the accepted result.
Model assistance improves resolution quality, while deterministic checks keep it bounded.

Delete confirmation

Deletes are treated as state transitions. A remote delete becomes a tombstone. A device-side delete becomes a candidate operation. Orkas checks recent writes, watches for large delete waves, and pauses the pass for confirmation when the amount of disappearing user data looks risky.

Delete confirmation path
Delete seenA data item is missing or tombstoned.
Recent writeCheck whether it was recreated or edited.
Wave checkDetect unusually large delete batches.
PromptAsk for confirmation when risk is high.
ConfirmCommit tombstones after approval.
CancelPull cloud copies back when deletion was accidental.
Risky deletion is interruptible; the user gets a choice before it becomes durable cloud state.

Recycle bin and recovery

Before a valid delete removes a device copy, Orkas moves it into the sync recycle bin. Conflict losers are archived for review. Pending uploads survive a failed commit so the next pass can reuse bytes. If a user deliberately clears cloud data, other devices see a cleanup marker and stop re-uploading stale content.

Recovery surfaces
Recycle binDeleted device copies remain recoverable.
Conflict archiveLosing versions are kept when merge is uncertain.
Pending uploadsSuccessful object uploads can be reused after commit failure.
Cleanup markerCloud-cleared accounts do not silently rehydrate old data.
Sync recovery is not one feature; it is several small escape hatches placed at failure points.

What this buys us

The result is a sync system with clear boundaries. Devices prepare and verify content. Object storage holds encrypted bytes. The server publishes the index. The account sync lock and server lock keep passes orderly. Rules handle the common cases. Model assistance helps with ambiguous conflicts. Delete confirmation and the recycle bin protect users from the most expensive mistakes.

That is the standard Orkas needs for cloud sync: not magic, not a blind mirror, but a careful mechanism that lets user data move between devices and still feel consistent.

A sincronização na nuvem para dados do usuário não envolve apenas upload e download. Ele precisa proteger o conteúdo privado em trânsito, manter o armazenamento barato, serializar gravações de vários dispositivos, compreender diferentes formatos de dados, solicitar confirmação antes de exclusões perigosas e preservar um caminho de volta quando uma decisão for errada.

Orkas trata a sincronização na nuvem como um limite do produto, não como um utilitário em segundo plano. Conversas, agentes, habilidades, estado da tarefa, arquivos de conhecimento e configurações precisam se mover entre dispositivos, mantendo uma clara cadeia de responsabilidade: o dispositivo prepara o conteúdo, o armazenamento de objetos contém bytes e o servidor possui o índice autoritativo.

A estrutura abaixo é a que usamos para raciocinar sobre o sistema: fluxo de conteúdo criptografado, armazenamento endereçado ao conteúdo, bloqueio de sincronização no nível da conta, commit de propriedade do servidor, regras de sincronização determinísticas, tratamento de conflitos assistido por modelo, confirmação de exclusão, lixeira e marcadores de recuperação.

Resumo da sincronização na nuvem
Dados do dispositivoVerifica os dados de propriedade do usuário e os compara com a última linha de base limpa.
Camada de segurançaCriptografa, faz hash, verifica e assina a intenção de cada passagem de sincronização.
Armazenamento em nuvemArmazena objetos de conteúdo e um índice compacto do que deveria existir.
Camada de recuperaçãoMantém marcas para exclusão, arquivos de conflitos, prompts de exclusão e entradas da lixeira.
O sistema é construído como um conjunto de verificações em torno do fluxo de dados, não como um espelho cego de arquivos.

O contrato de sincronização

Cada passe de sincronização responde a quatro perguntas do produto: qual conteúdo pode ser movido, como ele é protegido, quem tem permissão para publicar um novo índice de nuvem e como o usuário pode se recuperar se a sincronização fizer a chamada errada?

O contrato para cada passe
EscopoApenas os dados do usuário são considerados.
CriptografarAs cargas úteis são protegidas antes de saírem do dispositivo.
LojaOs objetos são endereçados pela identidade do conteúdo.
BloquearUm passe de sincronização de conta é publicado por vez.
CommitO servidor valida e grava o próximo índice.
RecuperarExclusões e conflitos mantêm um caminho de retorno.
A sincronização é confiável porque cada estágio tem uma responsabilidade restrita.

Caminho do conteúdo criptografado

Os dados do usuário são preparados no dispositivo antes de chegarem ao armazenamento. O mecanismo de sincronização normaliza o conjunto de candidatos, calcula a identidade do conteúdo, criptografa cargas, faz upload por meio de credenciais de curta duração e verifica os bytes baixados antes de gravá-los de volta no dispositivo.

Dos dados do usuário ao objeto protegido na nuvem
SelecionarEscolha os dados de autoria do usuário.
HashCalcula a identidade do conteúdo e os metadados de tamanho.
CriptografarProteja a carga útil antes do upload.
Fazer uploadEnviar bytes de objeto com credenciais temporárias.
VerificarVerificar o hash e os metadados esperados no pull.
AplicarGrave apenas conteúdo verificado no dispositivo.
O armazenamento de objetos vê cargas criptografadas; o mecanismo de sincronização verifica a identidade do conteúdo antes de confiar em um pull.

Armazenamento e índice

Orkas separa os bytes armazenados do índice da nuvem. Os objetos de conteúdo contêm os dados criptografados. O índice registra quais itens de dados lógicos devem existir, sua identidade de conteúdo, contadores de versão, tamanho armazenado, revisão de nuvem e estado de exclusão. O dispositivo também mantém uma linha de base da última passagem bem-sucedida para poder diferenciar o estado antigo das novas edições.

Três registros, três trabalhos
Linha de base do dispositivoA memória do dispositivo da última sincronização concluída.
Índice de nuvemA lista de propriedade do servidor de itens, versões e marcas de exclusão atuais.
Objetos de conteúdoBytes criptografados endereçados pela identidade de conteúdo.
Por que dividi-los? Bytes grandes podem residir no armazenamento de objetos, enquanto o índice pequeno continua sendo a única fonte para decisões de sincronização.
O índice informa aos dispositivos o que deveria existir; objetos de conteúdo fornecem os bytes.

Uma passagem de sincronização

Um passe começa barato e só se torna rigoroso quando há trabalho real. Orkas primeiro verifica se algo mudou, depois obtém o bloqueio de sincronização da conta, recalcula as alterações enquanto o bloqueio é mantido, move o conteúdo, pede ao servidor para confirmar operações de índice e, finalmente, atualiza a linha de base do dispositivo.

Ciclo de vida de uma passagem
PreflightVerifique e busque os metadados de índice de nuvem mais recentes.
Bloqueio de sincronizaçãoReserve a faixa de sincronização da conta para este dispositivo.
Verificar novamenteRecalcular as alterações após o bloqueio ser mantido.
TransferirFazer upload, download, mesclar ou preparar exclusões.
CommitO servidor valida a revisão, a cota e o esquema da nuvem.
Linha de baseRegistre o novo estado limpo após o sucesso.
A segunda diferença é importante: a visualização do comprovante pode já estar obsoleta quando o trabalho começar.

Sincronizar bloqueio e confirmação

O bloqueio de sincronização e a verificação de commit resolvem problemas diferentes. O bloqueio de sincronização reduz o desperdício de trabalho simultâneo entre dispositivos. O bloqueio do lado do servidor serializa gravações de índice. A esperada verificação de revisão na nuvem evita que uma leitura mais antiga se torne a próxima verdade. As verificações de cota e esquema são executadas no mesmo caminho de confirmação de propriedade do servidor.

A porta de commit
O dispositivo perguntaA via de sincronização da conta está disponível?
Bloqueio concedidoA passagem obtém uma janela curta de pulsação.
Objetos prontosOs bytes de conteúdo já foram carregados ou buscados.
Bloqueio do servidorA gravação do índice é serializada por conta.
Verificação de versãoRejeite se a revisão da nuvem for alterada.
PublicarEscreva o próximo índice e atualize o uso.
Dispositivos movem bytes; o servidor publica o estado autoritativo.

Regras antes dos conflitos

A maioria das decisões de sincronização não são conflitos. O dispositivo compara a linha de base, os dados atuais do dispositivo e o índice da nuvem. Se apenas a nuvem mudou, puxe. Se apenas o dispositivo mudou, pressione. Se ambos foram alterados, roteie por tipo de conteúdo. Se algo desapareceu, insira o caminho de segurança contra exclusão em vez de remover os dados imediatamente.

Mecanismo de decisão
Linha de baseO que este dispositivo confirmou pela última vez.
Dados do dispositivo agoraO que este dispositivo possui atualmente.
Nuvem agoraO que o índice do servidor declara.
AçãoPuxar, enviar por push, mesclar, marcar para exclusão, confirmar ou restaurar.
A linha de base torna possível uma regra simples: lados inalterados não precisam de fusão.

Tratamento de conflitos

Quando ambos os lados realmente mudaram, Orkas não reduz tudo em vitórias do último escritor. Os logs de estilo anexado podem ser mesclados por registros ausentes. As listas podem ser mescladas por identidade de registro estável. JSON estruturado pode usar contadores de versão e carimbos de data/hora. Markdown e arquivos binários são conservadores: se o sistema não conseguir provar uma mesclagem sem perdas, ele mantém uma cópia completa da versão perdida.

Para conflitos de texto ambíguo ou conteúdo estruturado, o produto pode empacotar as versões relevantes para manipulação assistida por modelo. O modelo pode explicar o conflito, redigir uma versão mesclada ou ajudar o usuário a escolher. Não é a única proteção: validação determinística, originais arquivados e recuperação visível ao usuário continuam fazendo parte do caminho.

Pipeline de resolução de conflitos
ClassificarDetectar o formato do arquivo e os metadados da versão disponível.
Mesclagem de regrasUse mesclagem determinística quando for seguro.
Assistência de modeloExplicar ou rascunhar conflitos de texto ambíguos.
ArquivarMantenha os originais quando a segurança for incerta.
ValidarVerifique o esquema, a identidade e a forma esperada.
PublicarConfirmar apenas o resultado aceito.
A assistência do modelo melhora a qualidade da resolução, enquanto as verificações determinísticas a mantêm limitada.

Confirmação de exclusão

As exclusões são tratadas como transições de estado. Uma exclusão remota se torna uma lápide. Uma exclusão no lado do dispositivo torna-se uma operação candidata. Orkas verifica gravações recentes, observa grandes ondas de exclusão e pausa a passagem para confirmação quando a quantidade de dados do usuário que desaparecem parece arriscada.

Excluir caminho de confirmação
Excluir vistoUm item de dados está ausente ou marcado para exclusão.
Escrita recenteVerifique se foi recriada ou editada.
Verificação de ondaDetecta lotes de exclusão excepcionalmente grandes.
AvisarPeça confirmação quando o risco for alto.
ConfirmarConfirmar marcas de exclusão após aprovação.
CancelarRecuperar cópias da nuvem quando a exclusão for acidental.
A exclusão arriscada é interrompível; o usuário pode escolher antes de se tornar um estado de nuvem durável.

Lixeira e recuperação

Antes que uma exclusão válida remova uma cópia do dispositivo, Orkas a move para a lixeira de sincronização. Os perdedores do conflito são arquivados para revisão. Os uploads pendentes sobrevivem a uma falha na confirmação para que a próxima passagem possa reutilizar bytes. Se um usuário limpar deliberadamente os dados da nuvem, outros dispositivos verão um marcador de limpeza e pararão de reenviar conteúdo desatualizado.

Superfícies de recuperação
LixeiraAs cópias excluídas do dispositivo permanecem recuperáveis.
Arquivo de conflitosAs versões perdidas são mantidas quando a mesclagem é incerta.
Uploads pendentesUploads de objetos bem-sucedidos podem ser reutilizados após falha no commit.
Marcador de limpezaContas limpas na nuvem não reidratam dados antigos silenciosamente.
A recuperação de sincronização não é um recurso; são várias pequenas escotilhas de fuga colocadas em pontos de falha.

O que isso nos traz

O resultado é um sistema de sincronização com limites claros. Os dispositivos preparam e verificam o conteúdo. O armazenamento de objetos contém bytes criptografados. O servidor publica o índice. O bloqueio de sincronização da conta e o bloqueio do servidor mantêm os passes ordenados. As regras tratam dos casos comuns. A assistência do modelo ajuda em conflitos ambíguos. A confirmação de exclusão e a lixeira protegem os usuários dos erros mais caros.

Esse é o padrão que o Orkas precisa para sincronização na nuvem: não é mágica, não é um espelho cego, mas um mecanismo cuidadoso que permite que os dados do usuário se movam entre dispositivos e ainda pareçam consistentes.

数据的云端同步不是“把文件传上去再拉下来”这么简单。它要保护传输中的隐私,要让云端存储成本可控,要串行化多设备写入,要理解不同数据的结构,还要在危险删除前确认,并在判断出错时保留回退路径。

Orkas 把云同步当作一条产品边界,而不是后台小功能。会话、智能体、技能、任务状态、知识文件和设置都要在设备之间流动,同时保持清晰的责任链:设备准备内容,对象存储保存字节,服务端发布权威索引。

这篇文章按机制梳理 Orkas 的云同步:加密内容流、按内容寻址的存储、账号级同步租约、服务端提交、确定性同步规则、模型辅助冲突处理、删除确认、回收站,以及失败恢复标记。

云同步总览
设备数据扫描用户数据,并与上次干净同步的基线比较。
安全层加密、哈希、校验,并表达本轮同步意图。
云端存储保存内容对象,以及一份紧凑的云端索引。
恢复层保留删除标记、冲突归档、删除确认和回收站记录。
Orkas 的云同步不是盲目镜像,而是在数据同步链路周围放置一组安全检查。

同步契约

每一轮同步都会回答四个产品问题:哪些内容允许移动,内容如何被保护,谁有权发布下一版云端索引,以及如果判断失误,用户如何恢复。

每一轮同步的契约
范围只考虑用户数据。
加密内容离开设备前先被保护。
存储对象按内容身份保存。
加锁同一账号一次只发布一轮同步。
提交服务端校验并写入下一版索引。
恢复删除和冲突都保留回退路径。
同步可靠,来自每个阶段都只承担一个清晰职责。

加密内容流

用户数据到达云端存储前,会先在设备上被整理。同步引擎选择候选内容,计算内容身份,加密载荷,通过短期凭证上传;拉取时再校验内容身份和元数据,确认可信后才写回设备。

从用户数据到受保护云端对象
选择挑选用户创建的数据。
哈希计算内容身份和大小信息。
加密上传前保护载荷。
上传用临时凭证发送对象字节。
校验拉取时核对哈希和预期元数据。
应用只把验证通过的内容写回设备。
对象存储看到的是受保护的载荷;设备在写入前重新确认内容身份。

存储与索引

Orkas 把文件内容和云端索引拆开。内容对象保存加密字节;云端索引记录哪些数据条目应该存在、它们的内容身份、版本、大小、云端版本号和删除标记。设备还会保存上次成功同步后的基线,用来区分旧状态和新编辑。

三份记录,各司其职
设备基线这台设备上次完成同步后确认过的状态。
云端索引由服务端发布的条目、版本和删除标记列表。
内容对象按内容身份保存的加密字节。
为什么要拆开? 大体积内容交给对象存储,小而关键的索引作为同步判断的真值。
索引告诉设备“应该有什么”,内容对象提供真正的字节。

一轮同步

同步先低成本检查,只有确实有工作时才进入严格流程。Orkas 先判断是否有变化,再拿到账号级同步租约,在租约有效期内重新计算差异,移动内容,请求服务端提交索引操作,最后更新本机基线。

一轮同步的生命周期
预检查扫描设备状态并获取云端索引元数据。
获取同步租约为当前设备保留账号同步通道。
重算差异拿到租约后重新比较状态。
传输内容上传、下载、合并或准备删除。
提交服务端检查云端版本、配额和数据版本。
更新基线成功后记录新的干净状态。
二次差异计算很关键:预检查时看到的云端状态,真正开始工作时可能已经过期。

同步租约、锁与提交

同步租约、服务端锁和提交前版本检查解决的是不同问题。同步租约减少多设备同时跑完整同步轮次的浪费;服务端锁串行化索引写入;提交前版本检查会确认云端索引仍是设备刚刚读取的那一版,防止旧判断被发布成新事实。配额计算和数据版本校验也在同一个服务端提交入口完成。

提交入口
设备申请账号同步通道是否可用?
授予同步租约本轮同步获得短时心跳续约窗口。
对象就绪内容字节已经上传或拉取完成。
服务端锁同一账号的索引写入被串行化。
提交前版本检查云端版本已变化则拒绝提交。
发布索引写入下一版索引并更新用量。
设备负责移动字节,服务端负责发布权威状态。

先规则,后冲突

大多数同步判断并不是冲突。设备同时比较基线、当前设备数据状态和云端索引。只有云端变了就拉取,只有设备变了就推送,两边都变了才按内容类型进入合并;如果发现内容消失,则进入删除安全路径,而不是立刻移除。

决策引擎
基线这台设备上次确认过的状态。
当前设备数据这台设备此刻拥有的内容。
当前云端服务端索引声明的内容。
动作拉取、推送、合并、标记删除、确认或恢复。
有了基线,系统才能把“这边没动”和“这边也改了”区分开。

冲突处理

当两边确实都发生变化时,Orkas 不会简单采用最后写入者获胜。追加型日志可以按缺失记录合并;列表型数据可以按稳定记录身份合并;结构化 JSON 可以参考版本号和时间戳;Markdown 和二进制文件更保守,无法证明无损时会保留输掉版本的完整副本。

对于语义不清的文本或结构化内容冲突,产品可以把相关版本打包交给模型辅助处理。模型可以解释差异、草拟合并结果,或帮助用户选择。但模型不是唯一防线:确定性校验、原始版本归档和用户可见的恢复路径仍然保留。

冲突处理流水线
分类识别数据形态和可用版本元数据。
规则合并安全时使用确定性合并。
模型辅助解释或草拟语义冲突的合并方案。
归档无法证明安全时保留原始版本。
校验检查结构、身份和预期形态。
发布只提交被接受的结果。
模型辅助提升处理质量,确定性校验负责把边界守住。

删除确认

删除在 Orkas 里是一种状态迁移。远端删除会成为删除标记,设备端删除会成为候选操作。Orkas 会检查最近写入、识别大批删除,并在消失的用户数据看起来有风险时暂停本轮同步,等待确认。

删除确认路径
发现删除某个数据条目缺失或已被标记删除。
最近写入检查它是否刚被重新创建或编辑。
批量检查识别异常大的删除波次。
提示确认风险高时让用户决定。
确认批准后提交删除标记。
取消误删时从云端拉回内容。
高风险删除是可中断的;它成为云端事实之前,用户还有选择权。

回收站与恢复

一次有效删除真正移除设备副本前,Orkas 会先把它放入同步回收站。冲突中输掉的版本会进入归档以便复查。对象上传成功但提交失败时,下一轮可以复用已上传内容。用户主动清空云端数据后,其它设备会看到清理标记,避免把旧内容重新灌回云端。

恢复面
回收站被删除的设备副本仍可恢复。
冲突归档无法安全合并时保留输掉版本。
待确认上传提交失败后可复用已上传对象。
清理标记账号云端清空后,不会被旧设备重新上传。
同步恢复不是单个功能,而是多个失败点上的逃生口。

这套设计换来了什么

这套同步系统的边界很清楚:设备准备并校验内容,对象存储保存加密字节,服务端发布索引,同步租约和服务端锁让流程有序,规则处理常见变化,模型辅助处理语义不清的冲突,删除确认和回收站保护用户免于最昂贵的错误。

这就是 Orkas 对云同步的要求:不是魔法,也不是盲目镜像,而是一套让用户数据在多设备之间可靠流动、并保持一致体验的机制。

ユーザーデータのクラウド同期は、単なるアップロードとダウンロードではありません。転送中のプライベートな内容を守り、保存コストを抑え、複数デバイスの書き込みを順序づけ、データの形を理解し、危険な削除の前に確認し、判断が間違っていたときの戻り道を残す必要があります。

Orkas はクラウド同期を、裏側の補助機能ではなく製品の重要な設計境界として扱います。会話、エージェント、スキル、タスク状態、知識ファイル、設定をデバイス間で動かしながら、責任の線を明確にします。デバイスは内容を準備し、オブジェクトストレージは暗号化されたデータを保持し、サーバーは正本となる索引を公開します。

この設計を、暗号化された内容の流れ、内容識別子にもとづく保存、アカウント単位の同期ロック、サーバー側の確定処理、決定的な同期ルール、モデル支援による競合処理、削除確認、同期ごみ箱、復旧用の印という枠組みで見ていきます。

クラウド同期の全体像
デバイス上のデータユーザーのデータを読み取り、前回成功した基準と比較します。
安全性の層暗号化、ハッシュ化、検証を行い、この同期で何をしたいかを明確にします。
クラウド保存内容オブジェクトと、存在すべき項目を示す小さな索引を保持します。
復旧の層削除印、競合時の退避、削除確認、同期ごみ箱の記録を残します。
Orkas の同期は、ただのミラーリングではなく、データ同期の経路に置かれた安全確認の集まりです。

同期の約束

各同期処理は四つの問いに答えます。どの内容を動かせるか、どう保護するか、誰が次のクラウド索引を公開できるか、そして判断を戻すには何が必要かです。

各同期処理で守ること
対象範囲ユーザーデータだけを対象にします。
暗号化内容はデバイスを出る前に保護されます。
保存オブジェクトは内容の識別子にもとづいて保存します。
ロック同じアカウントでは、一つの同期だけが結果を公開します。
確定サーバーが検証し、次の索引を書き込みます。
復旧削除と競合には戻り道を残します。
各段階の責任を狭くすることで、同期を信頼できるものにします。

暗号化された内容の流れ

ユーザーデータは、クラウド保存に届く前にデバイス上で準備されます。同期エンジンは候補となる内容を選び、内容の識別子を計算し、データを暗号化し、短時間だけ使える権限でアップロードします。取得時にはメタデータと識別子を検証してから、デバイスに反映します。

ユーザーデータから保護されたクラウドオブジェクトへ
選択ユーザーが作成したデータを選びます。
ハッシュ化内容の識別子とサイズ情報を計算します。
暗号化アップロード前にデータを保護します。
アップロード一時的な権限でオブジェクトのデータを送ります。
検証取得時にハッシュと想定されたメタデータを確認します。
適用検証済みの内容だけをデバイスへ書き戻します。
オブジェクトストレージが見るのは保護されたデータであり、デバイスは書き込み前に内容の識別子を確認します。

保存と索引

Orkas は保存されるデータとクラウド索引を分離します。内容オブジェクトは暗号化されたデータを保持します。クラウド索引は、存在すべきデータ項目、内容の識別子、バージョン、サイズ、クラウド側の更新番号、削除状態を記録します。デバイス基準は、前回成功した同期のあとに何を確認したかを保持します。

三つの記録と役割
デバイス基準このデバイスが前回の成功後に確認した状態。
クラウド索引サーバーが公開する項目、バージョン、削除印の一覧。
内容オブジェクト内容の識別子で保存された暗号化データ。
なぜ分けるのか。 大きなデータはオブジェクトストレージに置き、小さく重要な索引を同期判断の正本にするためです。
索引は「何が存在すべきか」を示し、内容オブジェクトが実際のデータを提供します。

一回の同期処理

一回の同期処理は、最初は軽く確認し、実際に作業があるときだけ厳密な流れに進みます。Orkas はまず変更の有無を確認し、アカウント単位の同期ロックを取得し、その有効期間内で差分を再計算し、内容を移動し、サーバーに索引操作の確定を依頼し、最後にデバイス基準を更新します。

一回の同期処理の流れ
事前確認デバイス状態を読み取り、クラウド索引の情報を取得します。
同期ロックこのデバイスのためにアカウントの同期通路を確保します。
差分再計算同期ロックを持った状態で変更をもう一度比較します。
転送アップロード、ダウンロード、統合、削除準備を行います。
確定サーバーがクラウド側の更新番号、容量、データ形式を確認します。
基準更新成功後に新しい確定状態を記録します。
二回目の差分計算が重要です。事前確認で見たクラウド状態は、実作業時には古くなっている可能性があります。

同期ロック、書き込みロック、確定処理

アカウント単位の同期ロック、サーバー側の書き込みロック、確定前のバージョン確認は、それぞれ別の問題を解きます。同期ロックは複数デバイスが同時に完全な同期処理を走らせる無駄を減らします。サーバー側の書き込みロックは索引の書き込みを順番にします。確定前のバージョン確認は、古い読み取り結果が次の正本になることを防ぎます。容量計算とデータ形式の確認も、同じサーバー側の確定処理で行われます。

確定処理の入口
デバイスが確認アカウントの同期通路は空いているか。
同期ロックを取得同期処理は短い心拍確認の時間枠を得ます。
内容が準備済み内容データは送信または取得済みです。
サーバー側ロック同じアカウントの索引書き込みを順番にします。
確定前確認クラウド側の更新番号が変わっていれば拒否します。
公開次の索引を書き、使用量を更新します。
デバイスはデータを動かし、サーバーは正本となる状態を公開します。

競合より先にルールで判断する

多くの同期判断は競合ではありません。デバイスは、基準、現在のデータ状態、クラウド索引を比較します。クラウドだけが変わったら取得し、デバイスだけが変わったら送信します。両方が変わったときだけ、内容の種類に応じた統合に進みます。何かが消えている場合は、即削除ではなく削除安全確認の流れに入ります。

判断エンジン
基準このデバイスが前回確認した状態。
現在のデータこのデバイスが今持つ内容。
現在のクラウドサーバー索引が宣言する内容。
操作取得、送信、統合、削除印、確認、復元。
基準があることで、「こちらは未変更」と「こちらも変更済み」を区別できます。

競合処理

両側が本当に変更された場合でも、Orkas は最後に書いた側をそのまま優先する方式にはしません。追記型ログは不足している記録を足せます。一覧型データは安定した記録識別子で統合できます。構造化された JSON はバージョン番号と時刻を使えます。Markdown とバイナリファイルは保守的に扱い、無損失の統合を証明できない場合は、採用されなかった側の完全なコピーを残します。

意味が曖昧な文章や構造化データの競合では、関連する版をモデル支援に渡せます。モデルは競合を説明し、統合案を作り、ユーザーの選択を助けられます。ただしモデルだけに任せるわけではありません。決定的な検証、元データの退避、ユーザーに見える復旧経路は残ります。

競合解決の流れ
分類データの形と使えるバージョン情報を識別します。
ルール統合安全な場合は決定的な統合を使います。
モデル支援曖昧な文章の競合を説明し、統合案を作ります。
退避安全を証明できない場合は元データを保持します。
検証構造、識別子、期待される形を確認します。
公開採用された結果だけを確定します。
モデル支援は解決品質を高め、決定的な検証が境界を守ります。

削除確認

Orkas では削除を状態の変化として扱います。クラウド側の削除は削除印になり、デバイス側の削除は候補操作になります。Orkas は最近の書き込みを確認し、大量削除を検出し、消えるユーザーデータが危険に見える場合は同期処理を止めて確認を求めます。

削除確認の流れ
削除を検出データ項目が消えている、または削除印が付いている。
最近の書き込み直近で作り直されたか、編集されたかを確認します。
大量削除チェック異常に大きな削除のまとまりを検出します。
確認表示危険が高いときはユーザーに確認します。
承認承認後に削除印を確定します。
取り消し誤削除ならクラウド側のコピーを取り戻します。
危険な削除は途中で止められます。クラウド上の確定状態になる前に、ユーザーが選べます。

同期ごみ箱と復旧

有効な削除がデバイス上のコピーを取り除く前に、Orkas はそれを同期ごみ箱へ移します。競合で採用されなかった版は、見直しのために退避されます。オブジェクトのアップロードが成功し、確定処理だけが失敗した場合は、次回の同期でそのデータを再利用できます。ユーザーがクラウドデータを明示的に消した場合、他のデバイスはクリーンアップ印を見て、古い内容を再アップロードしません。

復旧の入口
同期ごみ箱削除されたデバイス上のコピーを復元可能なまま残します。
競合退避統合が不確かなとき、採用されなかった版を残します。
保留中のアップロード確定失敗後も、アップロード済みのオブジェクトを再利用できます。
クリーンアップ印クラウドを消去したアカウントに、古いデバイスが再送信しないようにします。
復旧は一つの機能ではなく、失敗しやすい地点に置いた複数の逃げ道です。

この設計で得られるもの

この同期システムでは境界が明確です。デバイスは内容を準備して検証します。オブジェクトストレージは暗号化されたデータを保持します。サーバーは索引を公開します。アカウント単位の同期ロックとサーバー側ロックが処理を整えます。ルールがよくある変更を処理します。モデル支援が曖昧な競合を助けます。削除確認と同期ごみ箱が、取り返しのつきにくい誤操作からユーザーを守ります。

Orkas がクラウド同期に求める水準はここにあります。魔法でも、単純なミラーリングでもなく、ユーザーデータを複数デバイスの間で動かしながら、それでも一貫した体験として扱える仕組みです。