Šķîþ ţö ḿàîñ çöñţéñţ

neokapi: Àŕçĥîţéçţüŕé

neokapi îš àñ öþéñ çöñţéñţ éñĝîñé îñ Ĝö. Îţ ŕéàđš šüþþöŕţéđ ƒöŕḿàţš îñţö à šĥàŕéđ çöñţéñţ ḿöđéļ, ŕüñš éđîţîñĝ àñđ çĥéçķîñĝ ţööļš, àñđ ŵŕîţéš çöñţéñţ ƃàçķ ţĥŕöüĝĥ ţĥé ƒöŕḿàţ'š ŵŕîţéŕ. Ţĥé kapi þŕöĵéçţ ţööļ, đéšķţöþ àþþ àñđ àĝéñţ îñţéŕƒàçéš üšé ţĥîš éñĝîñé. Àþþļîçàţîöñš çàñ àļšö îḿþöŕţ ţĥé Ĝö ļîƃŕàŕý đîŕéçţļý.

Ţĥé éñĝîñé šéþàŕàţéš çöñţéñţ þŕöçéššîñĝ ƒŕöḿ ţĥé þŕöĵéçţ'š àþþļîçàƃļé ţéŕḿš, ŵŕîţîñĝ ĝüîđàñçé àñđ çĥéçķ þöļîçý. À çĥéçķ ŕéšüļţ ñàḿéš ţĥé àñàļýšîš þéŕƒöŕḿéđ; à šüççéššƒüļ ĝàţé đöéš ñöţ éšţàƃļîšĥ ƒàçţüàļ àççüŕàçý öŕ öţĥéŕ ǫüàļîţîéš ţĥàţ ŵéŕé ñöţ àššéššéđ. Ḿüļţîļîñĝüàļ çöñţéñţ, ÀÎ îñĝéšţîöñ àñđ þŕöĝŕàḿḿàţîç éđîţîñĝ üšé ţĥé šàḿé ƒöŕḿàţ-àŵàŕé þŕöçéššîñĝ îñţéŕƒàçéš.

Ƒîđéļîţý đéþéñđš öñ ţĥé ƒöŕḿàţ àñđ öþéŕàţîöñ. Ñö-öþ ƃýţé þŕéšéŕṽàţîöñ, þŕéšéŕṽàţîöñ öüţšîđé àñ éđîţ àñđ šéḿàñţîç ŕöüñđ-ţŕîþ ƒîđéļîţý àŕé đîšţîñçţ þŕöþéŕţîéš. Çöñšüļţ ţĥé ƒöŕḿàţ éṽîđéñçé ƒöŕ ţĥé àþþļîçàƃļé ŕéàđéŕ àñđ ŵŕîţéŕ. Šţàŕţ ŵîţĥ ţĥé Ĝö ǫüîçķšţàŕţ, öŕ ŕéàđ ţĥé Àŕçĥîţéçţüŕé Đéçîšîöñš ƒöŕ ţĥé šýšţéḿ'š đéšîĝñ.

Þŕöçéššîñĝ Þîþéļîñé

neokapi processing architectureA streaming pipeline: a format reader at the left edge and a writer at the right that sinks to a file (round-trip) or a content store (overlays); a serial chain of annotate, translate and check tools in the middle, with the translate stage fanning out across parallel goroutines; content-memory, terms and a translation provider (LLM or MT) feeding it from above; and a gRPC plugin band (Okapi bridge, tier-3 segmenter/media/OCR plugins, remote plugins) feeding it from below. Each stage is a goroutine joined by Part channels, and the whole pipeline runs over many documents in parallel.documents in parallel · MaxConcurrencyTermsterm-lookupContent MemoryrecycleProviderLLM or MTSourcessource binding · fileapp.jsonpage.htmlguide.docxstrings.xmlReaderDataFormatchanAnnotatesegment · terms · NERchanfan-out · N goroutinesordered fan-inTranslategoroutine 1Translategoroutine 2Translategoroutine 3Translategoroutine 4chanChecksqa · enforcechanWriterDataFormatSinksink binding · file or storefileround-tripstoreoverlaysPlugin system · gRPC subprocess bridgeOkapi BridgeJava filtersTier-3 pluginssegmenter · media · OCRRemote / native plugincustom tool · format

Ţĥé éđĝéš àŕé ţĥé ƒļöŵ'š šöüŕçé àñđ šîñķ: ƃîñđîñĝš ţĥàţ đéçîđé ŵĥéŕé çöñţéñţ éñţéŕš àñđ ļéàṽéš. Ţĥé đéƒàüļţ, šĥöŵñ àƃöṽé, îš ţĥé ƒîļé ƃîñđîñĝ: à ŕéàđéŕ ţüŕñš šüþþöŕţéđ šöüŕçé ƒîļéš îñţö à šţŕéàḿ öƒ Þàŕţš àñđ à ŵŕîţéŕ ţüŕñš ţĥé šţŕéàḿ ƃàçķ îñţö ƒîļéš ŵîţĥ ţĥé ƒîđéļîţý îţš ƒöŕḿàţ šüþþöŕţš. Ţĥé šàḿé ƒļöŵ çàñ îñšţéàđ ƃîñđ ţö ţĥé þŕöĵéçţ šţöŕé, à .kpz ŵöŕķšþàçé, öŕ àñ îñţéŕçĥàñĝé ƒîļé, ŵîţĥ ñö ŕéàđéŕ öŕ ŵŕîţéŕ (ƒļöŵš: šöüŕçé àñđ šîñķ). Ƃéţŵééñ ţĥé éđĝéš ŕüñš à ƒļöŵ: à šéŕîàļ çĥàîñ öƒ ţööļš çöññéçţéđ ƃý ƃüƒƒéŕéđ çĥàññéļš öƒ Þàŕţš. Ţĥé ţööļš đîṽîđé ƃý çàþàƃîļîţý: àññöţàţöŕš àţţàçĥ šţàñđ-öƒƒ öṽéŕļàýš àñđ àññöţàţîöñš (šéĝḿéñţàţîöñ, ţéŕḿîñöļöĝý, éñţîţîéš, çĥéçķ ƒîñđîñĝš, àñàļýšîš ŕéšüļţš), ţŕàñšļàţöŕš ƒîļļ îñ ţàŕĝéţš, àñđ ṽàļîđàţöŕš çĥéçķ àñđ éñƒöŕçé, ŵĥîļé çöñţéñţ ḿéḿöŕý àñđ ţĥé ţéŕḿš šţöŕé ƒééđ ţĥé ŕéļéṽàñţ šţàĝéš.

Çöñçüŕŕéñçý ŕüñš àţ ţĥŕéé ļéṽéļš àţ öñçé: éàçĥ šţàĝé îš îţš öŵñ ĝöŕöüţîñé ĵöîñéđ ƃý çĥàññéļš ŵîţĥ àüţöḿàţîç ƃàçķþŕéššüŕé; à ƃļöçķ-ĥàñđļîñĝ šţàĝé šüçĥ àš ţŕàñšļàţîöñ çàñ ƒàñ öüţ àçŕöšš Ñ ĝöŕöüţîñéš ŵîţĥ àñ öŕđéŕéđ ƒàñ-îñ; àñđ ţĥé éẋéçüţöŕ ŕüñš ḿàñý đöçüḿéñţš îñ þàŕàļļéļ, ƃöüñđéđ ƃý MaxConcurrency. Çöñţéẋţ çàñçéļļàţîöñ þŕöþàĝàţéš ţö éṽéŕý šţàĝé. Ŕéàđéŕš, ŵŕîţéŕš, àñđ ţööļš çàñ ƃé šüþþļîéđ ƃý þļüĝîñš (ţĥé kapi-sat šéĝḿéñţéŕ, ţĥé kapi-pdfium ÞĐƑ ŕéàđéŕ, öŕ àñý ŕéḿöţé þļüĝîñ), đîšþàţçĥéđ àš šüƃþŕöçéššéš öṽéŕ ĝŔÞÇ. Šéé Ƒ-01 àñđ É-01.

Þàçķàĝé Ļàýöüţ

Ţĥé ţŕéé ƃéļöŵ îš ţŕîḿḿéđ ţö ţĥé þàçķàĝéš ţĥé ŕéšţ öƒ ţĥéšé þàĝéš ŕéƒéŕ ţö; ls core îñ ţĥé ŕéþöšîţöŕý ļîšţš ţĥé ŕéšţ.

neokapi/
├── go.mod # module github.com/neokapi/neokapi
├── go.work # coordinates the framework, host, CLI, app and plugin modules

├── core/ # Platform-agnostic framework packages
│ ├── model/ # Part, Block, Layer, Run, Target, Overlay, Anchor, Data, Media
│ ├── format/ # DataFormatReader/Writer interfaces, detection
│ ├── formats/ # Built-in format implementations, one package each
│ ├── tool/ # Tool interface, BaseTool dispatch, EditPlan
│ ├── tools/ # Built-in tools (pseudo-translate, qa, segmentation, …)
│ ├── flow/ # Executor, Builder, FlowDefinition, placement pass
│ ├── registry/ # FormatRegistry, ToolRegistry
│ ├── ai/ # LLM-backed tools and prompt assembly
│ ├── check/ # Report and Finding
│ ├── project/ # kapi.yaml recipe, context axes, gates
│ ├── profile/ # Voice profiles and term rules
│ ├── kbf/ # Content bundle (.kbf.json) and its validator
│ ├── plugin/ # Plugin manifests and the gRPC protocol
│ └── … # segmentation, redaction, graph, state, storage, and the rest

├── memory/ # Content memory
├── terms/ # Terms store
├── kpz/ # Project archive (.kpz)
├── providers/ # LLM provider backends

├── host/ # Cobra-free runtime + services (module: …/host)
├── cli/ # Thin Cobra shell over host (module: …/cli)
├── kapi/ # The kapi binary (module: …/kapi)
├── apps/kapi-desktop/ # Kapi Desktop (Wails v3; module: …/kapi-desktop)
├── plugins/ # In-repo plugins, each its own module
├── packages/ # Shared TypeScript packages (@neokapi/ui-primitives, @neokapi/flow-editor, …)
└── docs/ # Repo internals (format ops, testing, runbooks)

Ţĥé ƒŕàḿéŵöŕķ ḿöđüļé (ŕéþö ŕööţ) šţàýš þļàţƒöŕḿ-àĝñöšţîç. memory/, terms/, kpz/ àñđ providers/ àŕé ţöþ-ļéṽéļ ƒŕàḿéŵöŕķ þàçķàĝéš ŕàţĥéŕ ţĥàñ ñéšţéđ üñđéŕ core/. Ƒŕöñţ-éñđš šüçĥ àš ţĥé ÇĻÎ àñđ ţĥé đéšķţöþ àþþ, àñđ àñý öţĥéŕ çöñšüḿéŕ, àţţàçĥ ţĥŕöüĝĥ ţĥé þļüĝîñ àñđ éẋţéñšîöñ ŕéĝîšţŕîéš ŕàţĥéŕ ţĥàñ ƃý đîŕéçţ îḿþöŕţš, šö ţĥé ƒŕàḿéŵöŕķ ñéṽéŕ đéþéñđš öñ à þàŕţîçüļàŕ þļàţƒöŕḿ.

Ţĥé ƒŕàḿéŵöŕķ çöñçéþţš

Ţö šéé ţĥéšé çöñçéþţš ŵöŕķîñĝ ţöĝéţĥéŕ îñ à ƒéŵ ļîñéš öƒ Ĝö (ŕéĝîšţéŕ ţĥé ƒöŕḿàţš, ŕéàđ à ƒîļé îñţö ţĥé çöñţéñţ ḿöđéļ, ŕüñ à ţööļ, àñđ ŵŕîţé ţĥé ŕéšüļţ), šţàŕţ ŵîţĥ ţĥé Ĝö ǫüîçķšţàŕţ. Ţĥé ƒŕàḿéŵöŕķ ŕéšţš öñ à ƒéŵ çöñçéþţš, éàçĥ ŵîţĥ îţš öŵñ þàĝé:

  • Çöñţéñţ Ḿöđéļ: ţĥé ƒöŕḿàţ-îñđéþéñđéñţ ŕéþŕéšéñţàţîöñ. À đöçüḿéñţ ƃéçöḿéš à šţŕéàḿ öƒ Partš çàŕŕýîñĝ ļàýéŕš, ƃļöçķš, ŕüñš, öṽéŕļàýš, đàţà, àñđ ḿéđîà. Éḿƃéđđéđ çöñţéñţ (ĤŢḾĻ îñšîđé ĴŠÖÑ, ÇĐÀŢÀ îñ ẊḾĻ) îš ḿöđéļéđ àš ñéšţéđ ļàýéŕš, éàçĥ ŵîţĥ îţš öŵñ ƒöŕḿàţ.
  • Ƒöŕḿàţš: þàîŕéđ ŕéàđéŕš àñđ ŵŕîţéŕš ţĥàţ þŕöđüçé àñđ çöñšüḿé ţĥé çöñţéñţ ḿöđéļ.
  • Ţööļš: ţĥé þŕöçéššîñĝ üñîţš. Éàçĥ ŕéàđš Þàŕţš ƒŕöḿ à çĥàññéļ, ţŕàñšƒöŕḿš ţĥéḿ, àñđ ŵŕîţéš ţĥéḿ öüţ.
  • Ƒļöŵš: ñàḿéđ, öŕđéŕéđ çöḿþöšîţîöñš öƒ ţööļš.
  • Þîþéļîñé: ţĥé çöñçüŕŕéñţ éẋéçüţöŕ ţĥàţ ŕüñš à ƒļöŵ: ĝöŕöüţîñéš, ƃüƒƒéŕéđ çĥàññéļš, àñđ çöñţéẋţ-đŕîṽéñ çàñçéļļàţîöñ.

Ƒöŕ ţĥé çöñçŕéţé Ĝö îñţéŕƒàçéš àñđ ḿéţĥöđ šîĝñàţüŕéš ƃéĥîñđ ţĥéšé çöñçéþţš, šéé ţĥé Îñţéŕƒàçé Ŕéƒéŕéñçé. Ƒöŕ ţĥé đéšîĝñ ŕàţîöñàļé, šéé ţĥé Àŕçĥîţéçţüŕé Đéçîšîöñš.