The layers
Because the reference domains are themselves registered through the entry-point
system, there is nothing special about them — your plugins are first-class in
exactly the same way.
The entry-point groups
Register a plugin by advertising an entry point in your package’spyproject.toml. The engine discovers them with importlib.metadata.entry_points
(clousight_bench.core.registry):
The adapter’s
status literal (skeleton / reference / …) is not flipped by
installing a plugin: a skeleton adapter becomes runnable in real mode purely
because get_runtime_provider(<provider>) now returns a non-None plugin — i.e.
installing the provider plugin wires it, without editing the adapter.
Write your own plugin
A minimal custom domain lives in its own package. Two files plus one entry point:clousight-bench. To customize a reference
task, either register a task under the same id from a higher-precedence plugin,
or copy the reference task’s source (it is open on GitHub) into your own plugin
and adjust it there — the installed core stays pristine either way.
Why the reference logic is packaged, not download-only
- Out of the box:
pip install clousight-benchand you can runagent-runtimeimmediately — no assembling parts. - It is the template: the reference domains are the best worked example of a well-formed plugin; you copy their shape for your own.
- One consistent chain: the data-plane probe ships in the
core package too, so an in-region probe carrier just
pip install clousight-bench[probe]and has the same probe logic the control plane uses. - The source is fully open on GitHub for reading, forking, and PRs — but the primary customization path is a plugin package, not editing installed source.