System prompt and persona assembly

Before DataMind Oda starts any task, the request it sends opens with its instructions: who it is, how it should work, and what its tools are. This page shows how that text is assembled for a deployment of Oda: the parts it is built from, the order they take, and the pieces around them. It is for the people who configure a deployment; the guidance you write yourself lives on Create a custom preset.

What the assembled prompt is made of

The instructions are not one fixed text. They are assembled when a request is built, from parts registered with the deployment, and the result travels as the opening message of the conversation.

The text is part of the conversation rather than a hidden field, so a change to it arrives as a later message. The Oda agent runtime covers how agents are created and driven, and Tools and how they are offered covers what the tool descriptions are.

Sections and their order

The deployment layer and the scoped layers

Two kinds of registration feed the assembly: the deployment's own text, and text registered from a narrower scope, such as one agent's composition.

The identity line

Oda carries an identity line, but a deployment does not have to use it. It is off by default, because the instructions your DataMind server supplies already set out who the agent is. Switch it on for a deployment whose server instructions carry no identity; the prompt then opens with:

You are an AI agent powered by DataMind Oda.

The runtime context

The runtime context is on by default. It is a snapshot of the current situation, and each new snapshot supersedes the earlier ones. Its heading makes that clear:

Current runtime context. This snapshot supersedes earlier runtime-context snapshots.

The persona prefix and suffix

The persona is two pieces of text around the assembled prompt. Both are empty by default, so a deployment that wants neither gets its sections alone.

Tool descriptions in the prompt

Variables inside the text

Instruction text can refer to values with double braces: {{name}}. A name starts with a lowercase letter and continues with lowercase letters, digits or underscores.

When the text changes

Questions, answered

Where does Oda's identity line come from?

It is part of the assembled prompt, and it is optional. The line reads You are an AI agent powered by DataMind Oda. and it is off by default, because the instructions your DataMind server supplies already carry the identity. A deployment whose server instructions have none can switch it on.

Can I change the instructions from inside a chat?

No. The text is assembled from what the deployment and its scopes register, and a chat has no editor for it. The guidance you write yourself goes into a preset's instructions instead; see Create a custom preset.

Can one preset run with its own persona?

Yes. A narrower scope can replace the persona prefix or suffix by name for its own assemblies, and every other scope keeps the deployment's text.

Is the runtime context always added?

It is on by default. It can be left out of one scope's assemblies without disabling what feeds it, or turned off for the deployment entirely, in which case nothing that would feed it runs and nothing can add to it.

What happens if a {{...}} reference cannot be filled?

The whole assembly is refused rather than rendered with a gap. An unknown name, a registered name with no value for this assembly, and a malformed reference each refuse it, and the messages name the reference, its section and the values that exist. When you edit preset instructions, the editor checks the braces as you save them; the checks on this page are the assembly's own.

How are tool descriptions ordered in the prompt?

Alphabetically by name by default, regardless of registration order. A deployment can name its own order: listed tools take their listed positions, and everything else goes at the rest entry, alphabetically among themselves. A name listed twice, a name that matches no tool, or a missing rest entry refuses the assembly.

What happens when the instructions change while a chat continues?

The new version is added later in the conversation; earlier messages are not rewritten, and the reuse of the unchanged beginning ends from the first point that changed.

Can a section replace the whole prompt?

Yes, one section can be marked as the complete prompt, and the assembly then renders exactly its text. Two sections claiming it at once refuse the assembly: multiple complete prompt sections are active:, followed by both names.

Why was my section refused as already registered?

The same name was registered twice in one layer. A narrower scope may shadow a wider name for itself, but a duplicate inside one layer is refused rather than merged; give the second registration to a narrower scope instead.

Does the section order depend on when sections were registered?

No. Placement numbers decide the order, and two sections that share a number fall back to name order. Registration order never matters.

How far apart do new sections have to sit?

At least ten numbers from their neighbours. The gap leaves room for a later section to take a free number in between without renumbering anything else, and a placement that is not a number refuses the assembly.