Injects Odai governance core into the specified DSH profile, overriding all agent presets; automatically chooses between using the current model, upgrading in-place, or delegating to a sub-agent based on task complexity, with built-in output style, compressed summary, skill source, and long-term memory.
- Language
- JavaScript
- License
- MIT
- Branch
- main
Install
$ dsh plugin --profile web add odai-dsh-pluginRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin orziz/odai/dsh/plugin for me: review the repository at https://github.com/orziz/odai first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
One-Line Description
odai-dsh-plugin is a bundle that provides a global governance kernel for a certain DeepSeek Harness profile. After installation, all agent presets under that profile will automatically switch between the current model, in-place upgrades, and outsourced sub-agents based on task complexity, with built-in output style, compaction summary, skill source, and local persistence of long-term memory.
Core Capabilities
- Embed persistent governance prompts in each agent preset's system prompt, allowing the model to silently judge based on "fact|method|result|boundary" before acting on each request
- Automatically decide whether to stay at the current controller for direct execution, upgrade in-place to a higher responsibility in the same round, or delegate to an independent sub-agent based on task complexity, clarity, risk, and domain gaps
- Maintain configurable responsibility model mappings (researcher / planner / executor / reviewer / frontend), naming providers and models in natural language, then persisting to local JSON for the next round to take effect
- Persist output forms (normal / soft-compacted / economy), compaction summary models, skill sources (bundled / auto / user), and local semantic memory, all written under
$DSH_HOME/odai/, and not automatically cleaned up on package uninstall - Expose tools like
odai_routing_config,odai_route_card,odai_output_config,odai_compaction_config,odai_memoryfor the controller to directly read/write its governance state without modifying host files - Provide a controlled skill self-evolution overlay, allowing users to precisely replace governance markdown with one-time phrases; each replacement leaves base/result generational records and lineage, with destructive changes requiring a separate authorization phrase
Technical Implementation
- Language: JavaScript (Node.js ESM
.mjs), no build step - Key Dependencies:
@deepseek-ai/dsh(peerDependency, DSH host; declared as optional),node:cryptonode:fsnode:pathnode:osnode:urland other built-in modules - Architecture Pattern: Registers a plugin named
odai-governanceto the host via DSH's Cordis patch bundle (dsh/plugin/cordis.patch.yml:1-7), with injection points atsystemPrompt / tools / subagents / sessions / llm(dsh/runtime/src/index.mjs:145-146); performs governance, routing, sub-agent boundaries, and evidence storage on multiple DSH hooks at runtime - Entry File:
dsh/runtime/src/index.mjs(both main and exports inpackage.json:16point to this file;dsh/plugin/cordis.patch.ymlalso references it via bundle)
Use Cases
Suitable for teams or heavy individual users who want all agent presets under a DSH profile to automatically follow governance rules of "differentiate by complexity for direct execution, planning, execution, and acceptance" without configuring each preset individually. If you only want to use Odai for one agent preset, please use odai-dsh-agent instead; do not install both Plugin and Agent simultaneously.
Prerequisites & Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH | 0.1.0-rc.7 or 0.1.0-rc.8 | 0.2.5 no longer supports rc.6 (dsh/plugin/package.json:64) |
| Node.js | >=22.15.0 | Historical Zstandard session migration depends on native API from this Node version (dsh/plugin/package.json:72) |
| Platform | macOS / Windows / Linux | Only depends on Node built-in modules, no native extensions; tests cover Windows, Linux, and macOS (dsh/plugin/tests/package.test.mjs:35-42) |
| Native Modules | None | Only uses built-in capabilities like node:crypto node:fs node:path node:os node:url node:zlib |
Installation
dsh plugin --profile web add github:orziz/odai/dsh/plugin
Configuration Options
| Config | Type | Description | Default |
|---|---|---|---|
routing.mode | Enum | Routing master switch: off disables routing but keeps governance; observe only records without moving models; auto auto-routes by complexity; execute keeps experimental delegation behavior | auto |
routing.provider | String | Provider name for delegated sub-agents | spawn |
routing.maxInputChars | Integer | Input text upper limit for routing decisions, minimum 256 | 12000 |
routing.roles.{researcher,planner,executor,reviewer,frontend} | Object | Each responsibility role's provider / model / reasoningEffort / maxTokens config | Not configured |
routing.configPath | Path | Routing config JSON file location | $DSH_HOME/odai/routing.json |
governance.additionalDeniedTools | String Array | Additional tool names prohibited for sub-agents | [] |
governance.skillSource | Enum | Skill source: bundled always uses package built-in; auto prioritizes project/custom/user-level; user only looks at user-level | bundled |
governance.skillConfigPath | Path | Skill source config JSON location | $DSH_HOME/odai/source.json |
governance.evolutionRoot | Path | Storage root for user-controlled skill self-evolution | $DSH_HOME/odai/skill-evolution |
output.configPath | Path | Output style strategy JSON location | $DSH_HOME/odai/output.json |
compaction.cacheRetention | Enum | Compaction cache retention strategy: provider-default / short / long / none | provider-default (can be overridden by ODAI_COMPACTION_CACHE_RETENTION env var) |
compaction.configPath | Path | Compaction model config JSON location | $DSH_HOME/odai/compaction.json |
memory.mode | Enum | Long-term memory switch: auto auto-captures high-confidence entries; off disables | auto |
memory.storePath | Path | Long-term memory JSON file location | $DSH_HOME/odai/memory/store.json |
memory.maxRetrieved | Integer | Maximum entries retrieved per recall, 1 to 12 | 6 |
skillPath | String | Force use of skill package from specified path; can be overridden by ODAI_SKILL_PATH env var | Not set |
FAQ
Q: Does DSH session need to be restarted after installation to take effect?
A: Yes. Plugin is a profile-level bundle; after installation or upgrade, you must first stop the DSH process, restart, and open a new session with the corresponding profile to load the new governance; running sessions will still behave as before installation.
Q: Will every simple question be slowed down by the process after installation?
A: No. Default routing.mode=auto leaves tasks with clear results, actions, and authorization and low risk directly at the current controller; only when complexity, ambiguity, risk, or domain gaps appear does it upgrade to planning, execution, acceptance, or outsourced sub-agents.
Q: Do I need to manually specify models for planning or execution?
A: Not required. Plugin won't arbitrarily choose other models when the host's default model is sufficient; when users explicitly say in natural language "use provider-x/model-y for planning, reasoning level high", the controller calls odai_routing_config to persist to $DSH_HOME/odai/routing.json, taking effect from the next user turn.
Q: What states get written to local storage?
A: Routing mappings, output styles, compaction models, skill sources, skill self-evolution, long-term memory, and personal safety continuity records are written respectively to routing.json, output.json, compaction.json, source.json, skill-evolution/, memory/store.json, and human-safety-continuity.json under $DSH_HOME/odai/. Plugin and Agent share this directory; installation, update, repair, and uninstall do not automatically clean it up.
Q: What is the relationship with odai-dsh-agent? Do I need to install both?
A: Plugin is a profile-level bundle covering all agent presets under that profile; Agent is a separate form that selects Odai preset per session. Under normal circumstances, installing both is redundant; they are only installed together when "profile-scoped Plugin + separate Odai agent preset" coexistence is needed.
Q: Do I need to stop DSH before upgrading or uninstalling?
A: Yes. The odai-dsh-plugin repair-sessions subcommand actively checks whether DSH process is still running; local process check failure or active DSH detection directly refuses to write. When upgrading from old versions (≤0.0.4), you must also first run npx odai-dsh-plugin repair-sessions --yes to add ignorable markers to private odai/* events in historical sessions.
Q: Is the economy mode output limit a hard limit?
A: Not a local hard billing boundary. That limit is just the output token request value sent to the provider; the provider may count hidden reasoning into it, exceed it, or ignore it; actual cost and compliance should be evaluated based on per-request usage.
Difficulty Level
Advanced — Works out of the box after default installation, but the five mechanisms of routing roles, compaction models, skill sources, long-term memory, and output style are each independently configured; fine-grained control requires understanding their respective local JSONs and corresponding tools.
Known Issues & Limitations
- Only supports DSH
0.1.0-rc.7and0.1.0-rc.8;0.2.5is not compatible with rc.6; subsequent DSH rc.9+ will be fail-closed and refused loading before a dedicated release version (dsh/plugin/README.md:170) - After explicitly configuring
governance.skillConfigPathor env varODAI_SKILL_PATH, DSH must be restarted to take effect; DSH process has loaded bundled skill bytes into memory at startup, and file changes during runtime won't take effect immediately (dsh/plugin/README.md:61 / 75) - Upgrading from ≤0.0.4 old versions must first stop DSH and run
repair-sessions; otherwise privateodai/*events in historical sessions will cause new DSH to refuse loading; that subcommand also refuses to execute when an active DSH process exists (dsh/plugin/README.md:45-51) - Economy mode
maxTokensdoes not affect sub-agent, compaction summary, checkpoint, and other internal budgets; providers may still exceed that value, and if the controller's upper limit is already lower than the user-set value, it won't relax it (dsh/plugin/README.md:87-89) - Economy mode doesn't invent non-default token counts; uses
500when user doesn't provide a specific value; plugin won't automatically select other values (dsh/plugin/README.md:85) - Provider cache is best-effort: even identical requests may miss due to upstream writes, expiration, or routing; lowering controller upper limit is not an effective cache fix, and may instead cause incomplete checkpoints (
dsh/plugin/README.md:168)
English · 中文
odai
odai is a governance-powered general task-execution framework for AI agents.
It embeds governance into execution: align the real objective, facts, assumptions, authorization, risks, and acceptance; then choose the shortest sufficient path, combine the right capabilities, act, verify, and keep moving until the task is genuinely deliverable. It does not replace the model's judgment with a rigid workflow.
The short version: call /odai; governance stays nearly invisible on simple work, while ambiguity, complexity, risk, and domain needs automatically increase or reduce the depth of handling.
Why Use It
odai is for people who want agents to move with autonomy, but not with false confidence.
It helps an agent:
- ask only when the missing answer would change the goal, scope, authorization, acceptance, risk, or stop line
- verify what it can verify from files, commands, logs, tests, or project context before asking you
- keep lightweight tasks lightweight instead of turning every request into ceremony
- avoid claiming that something was tested, delegated, reviewed, or verified when it was not
- combine specialist skills and domain guidance only when the task needs them, instead of stuffing every rule into every turn
- reuse existing host or project memory, persisting only durable information with provenance, scope, and invalidation conditions
- respond early and humanely to persistent low mood or self-harm/suicide inclination without diagnosing, labeling, waiting for a plan, or causing secondary harm
The Dao of odai
The user defines the task; evidence determines the route; methods adapt to circumstances; verification determines completion; boundaries determine where to stop—get the task done, without acting presumptuously.
This is not a collage of philosophical schools. It is one decision rule:
- Get the task done: advance the user's task to a verified, deliverable result, while surfacing counterexamples, risks, and a better route when they would change the outcome.
- Do not act presumptuously: do not bend facts, user decisions, or hard boundaries; do not conclude without evidence, exceed authorization, invent work, or treat a discovery as permission to implement it.
The person and the model work as partners toward a shared result, not through a one-way command chain. The person contributes intent, context, value judgments, and unacceptable outcomes; the model contributes judgment, evidence, creation, and execution, challenges doubtful premises, and proposes better routes. Both calibrate understanding and trust through real progress, candid uncertainty, and feedback. The person owns goal-level tradeoffs; the model chooses professional implementation details within the agreed boundary. Authorization is not blind obedience, and challenge is not a takeover.
odai is neither an echo of the user nor a reciter of rules. It takes the person's purpose as its direction and facts and boundaries as its constraints, forms its own judgment and recommendation, holds a justified disagreement when necessary, and changes its mind when the evidence changes. Truth outranks pleasing, effectiveness outranks ceremony, reliable results outrank superficial shortcuts, and long-term trust outranks one-turn performance.
The model's initiative is judged by net value. Speed, quality, stability, cost, breadth, and practicality are outcomes to balance against the user's goal and the evidence—not a flat list of slogans, and never substitutes for a real result.
Operating Standard
See clearly, hold steadily, strike accurately, land real results, defend what matters, and build for the long run.
Understand the real objective, facts, and gaps; hold authorization, boundaries, and risk steady; choose the narrowest sufficient path; produce a verifiable deliverable; protect user decisions, system safety, and truth; and leave a result that survives use, maintenance, and change.
Product Goal
Make agents faster, more accurate, better, steadier, cheaper, lighter, broader, more adaptive, more useful, and more practical. These are not independent process targets. They are product outcomes balanced around the task's net value; process, file count, tokens, and benchmark scores never substitute for getting the real task done.
30-Second Start
Install the unified entry point:
npx skills add https://github.com/orziz/odai --skill odai
Then invoke it with /odai. That is the normal form in clients that expose skills as slash commands:
/odai update the onboarding flow copy.
Goal: make it clearer for first-time users.
Materials: current app files and README.
Constraints: do not change behavior yet; give me the proposed copy and risks first.
If slash commands are not available in your client, naming odai in plain language works too.
You do not need to know the internal structure or choose a methodology. odai infers the required depth, capability, domain knowledge, and verification from the task and project evidence.
DeepSeek Harness packages
DSH users can install either integration independently:
# Apply Odai to every agent preset in one profile
dsh plugin --profile web add odai-dsh-plugin
# Install a selectable, session-scoped Odai Agent preset
npx odai-dsh-agent install
The Plugin command requires pnpm on PATH; the Agent installer supports exactly [email protected] and [email protected]. Each package already includes the canonical Odai skill and shared DSH runtime, and existing installations keep that bundled skill as the default. The Agent preserves every capability from the pinned DSH Standard preset and adds Odai as a scoped extension. Plugin needs neither a separate skill nor Agent; Agent needs neither a separate skill nor Plugin. Choose Plugin for profile-wide behavior or Agent for a selectable preset. Installing both is normally redundant and is only for a deliberate combination of those scopes. The existing provider-neutral odai-cli remains a separate product.
Both DSH packages default output to soft concise. Users can explicitly select normal output or the optional economy mode, which combines concise presentation with a user-adjustable provider output ceiling: it defaults to 500 when economy is requested without another value. The ceiling never changes child-agent, compaction, checkpoint, or internal context budgets and may be exceeded or ignored by the provider. See dsh/README.md for the complete three-mode contract.
A complete independently installed Odai skill can update faster than either DSH package without changing the default. The user must explicitly ask Odai to switch the skill source to auto or user; auto can select compatible project .dsh/.agents bundles and newer user installs, while user ignores project roots. An explicit deployment path remains highest priority. Plugin and Agent deliberately installed together share one per-agent/per-turn snapshot, so prompt governance and routing role contracts cannot select different bundles.
Neither DSH package chooses planner, executor, or reviewer models. Tell Odai naturally, for example, use provider/model for planning with high reasoning; the model persists that explicit choice for both surfaces. Later requests stay ordinary: role words are not commands, task state selects direct, inline, same-turn, or child dispatch; an identical planner/controller model is not called twice, and an already-authorized implementation continues automatically after planning. If a needed responsibility is still unconfigured, Odai names it and asks for the model instead of claiming that route ran. Persisted routes are formally resolved before provider I/O: deterministic invalid mappings are backed up and removed by exact match, while authentication, quota, rate-limit, or network failures affect only the current fallback.
DSH human-safety continuity is separate from generic semantic memory. Only an explicit direct-user request can save user-authored care preferences, signals to notice, effective support, or safety-plan steps in the independent local record; the user can inspect, export, correct, remove, or physically clear it, and entries persist until one of those deletion controls is used. New sessions treat it as historical care preference, never as present-risk evidence, diagnosis, or a hidden score, and child agents never receive it.
See dsh/README.md for package boundaries, source precedence, natural-language configuration, and the isolated real-install coexistence verification.
Host Capability Routing
The user identifies who should own each responsibility once, or lets odai recommend a mapping from the host's real capability catalog. After confirmation and installation, the project persists that mapping. Every later conversation and action still starts with /odai or an ordinary task request; the user never repeats models, roles, planning modes, or routing commands and does not need to watch internal handoffs. When models change, update the mapping once in place.
The controller is the persistent task thread that owns the goal, global state, correction loop, and final delivery, not another role launched on every turn. Judgment, implementation, and acceptance are internal responsibilities rather than a user workflow. One sufficient capability completes the task in one pass; when the mapping provides genuinely different responsibility capabilities, the host obtains the needed judgment, implementation, or acceptance and returns one result to the current conversation. Reliable no-tool answers stay direct, and follow-ups inherit recent deliveries and unresolved items without making the user restate them.
This routing is constrained by the host; skill text alone cannot mechanically guarantee it. If the host cannot verify model switching or delegation, odai uses one sufficient controller and continues the safely achievable work without pretending that routing occurred. The router is not a prerequisite for ordinary use and is installed only when the user requests managed capability routing.
Managed capability routing and the project guardrail hooks described below are separate mechanisms. Routing registers host roles; experimental stage provides an explicit task-start runner and never injects a hidden per-turn hook. Project guardrails only enforce project-declared read-only paths and acceptance commands and do not route models.
Users on a supported host who want managed role routing do not need to find paths, enter model IDs, or merge configuration by hand. After installing the skill, say:
/odai install and verify capability routing for this project.
odai selects four responsibility mappings from the host's actual capability catalog, explains the persistent effect, asks for one confirmation, and installs them with conflict checks. The default auto policy only registers capabilities: one controller closes the task directly, while planner, executor, and reviewer remain conditional on independent judgment or bounded handoff actually changing the result. It adds no hidden per-turn preflight. Experimental Codex stage is installed only when the user explicitly chooses it and real tasks demonstrate net benefit; it must start at the task boundary so planning and execution share one evidence chain. Reliable direct answers and read-only lookups never invoke another role merely to demonstrate routing.
To remove it, ask odai to uninstall capability routing for the current project. The installer merges with existing host settings, records the original Codex controller configuration for exact restoration, deletes only unchanged files listed in its managed manifest, and preserves unrelated settings. Installation, update, or an actual uninstall requires a new session; project scope is the default. It can generate managed role configuration for Codex, Claude Code, and GitHub Copilot CLI. An explicitly enabled Codex stage additionally provides an executable task-start runner and actual-model verification; the other two hosts must not claim an equivalent level of automatic routing until comparable runtime evidence exists.
When stage is explicitly enabled, .codex/odai-run-routing.mjs is an explicit experiment and maintenance surface, not a transparent daily-work entry. Default auto does not install it; neither policy installs a routing hook.
How It Decides
odai continuously evaluates four dimensions:
- Complexity: direct action, a small amount of structure, staged execution, or durable task state and trusted memory.
- Clarity: enough evidence to act, safe exploration first, or a decision that only the user can make.
- Risk: lightweight verification for reversible work; stronger authorization and evidence for external or hard-to-reverse work.
- Domain: internal craft knowledge, repository conventions, or a specialist host skill for code, documents, spreadsheets, slides, browsers, images, games, and other deliverables.
Before loading any playbook, it applies a silent light-task gate. If the outcome, action, path, authorization, and verification are already clear and low-risk, it acts directly. A suspicious premise, conflicting request, material ambiguity, cross-layer tradeoff, high-risk side effect, or long dependency is what makes it expand.
Depth is not fixed at the start. A task can be upgraded when its impact expands or downgraded when inspection reveals a small local change. SDD, TDD, BDD, agents, consensus, and formal plans are optional methods, not mandatory modes.
Objects supplied only to inform, compare, explain, or verify the target are read-only by default. A request whose result is understanding, judgment, advice, or a plan is not silently upgraded into authorization to modify existing objects; even change requests write only to the identified target.
The point is not to slow the agent down. The point is to make sure it is fast in the places where speed is safe, and careful in the places where guessing would cost you.
Architecture Logic
user task
|
v
+---------------------------------------------+
| /odai -> lightweight adaptive kernel |
| understand -> choose next valuable action |
+---------------------+-----------------------+
|
+---------------------+-----------------------+
| | |
v v v
direct action internal capability host skill / tool
+ domain knowledge + project rules
| | |
+---------------------+-----------------------+
v
act -> verify -> deliver
|
new evidence updates the path
Only complex or long-running work loads durable state,
trusted memory, agent coordination, independent challenge, or consensus;
existing memory stays authoritative instead of being mirrored.
The framework owns the task from understanding through delivery. Six flat references provide only the boundary, craft, executable planning and durable handoff, verification, support, or external capability guidance needed at the moment; there is no separate orchestrator workflow or user-selected domain package.
odai's complete capability is not just its entry text. It combines the core, built-in baseline craft, project context, and professional capabilities that are worth using. A clearly matching installed capability may be used directly; a general capability gap warrants an installation recommendation only when the net gain is real; stable, repeated, project-specific craft may be encoded as a project skill. Whatever route is used, odai still owns evidence integration, acceptance, and final delivery. Merely finding, recommending, creating, or invoking a capability is not completion.
Internal Map
The internal structure is organized by responsibility, not by mandatory stages:
| Layer | Purpose |
|---|---|
| Kernel | Core principle, adaptive progression, minimum boundaries, and loading map |
human-safety.md | Early recognition, humane crisis intervention, prevention of secondary harm, and explicitly authorized safety continuity |
dao.md | Goal ownership, factual correction, authorization, read-only references, and high-impact boundaries |
craft.md | Lightweight planning, implementation, design, UI and real-time interaction, writing, and review |
planning.md | Executable engineering plans, requirement coverage, work-package dependencies, durable handoffs, and recovery order |
verification.md | Acceptance, evidence strength, completion, and resuming existing work |
support.md | Self-calibration, performance recovery, durable state and memory, relationship continuity, consensus, and repeated review |
leverage.md | Capability escalation and delegation, external capability discovery, net-benefit decisions, installation, creation, composition, and agent collaboration |
Domain depth is inferred from the task instead of selected as a package. Game, UI, documentation, and software work use the built-in craft baseline, then borrow project material, host tools, or professional skills only for a named gap. An optional host responsibility such as frontend is a model-routing adapter for a verified production gap inside the current task, not a selectable domain package or a precedent for enumerating database, security, or other domain roles. Without an external skill or responsibility mapping, odai still completes what the current model can do reliably.
Content work preserves evidence, existing templates, stale responsibilities, and publication boundaries. Complex or long-running work writes decisions, state, and acceptance evidence back to one existing maintenance location only when that materially improves recovery. Code, tests, or the requested artifact remain sufficient when they already carry the complete result.
Good Prompts
Use the level of detail you actually have:
/odai handle this. Decide the route and ask only if a boundary or acceptance point is missing.
/odai review the current diff. Report findings first and do not modify files.
/odai refresh this repository README. Remove outdated screenshots and keep the install path clear.
/odai this task is user-facing. Do not change behavior without approval; verify the proposed route first.
Install Options
Most users only need the unified entry point:
npx skills add https://github.com/orziz/odai --skill odai
Other supported installs:
# Install every skill in this repository
npx skills add https://github.com/orziz/odai --all
# Install the slimmer branch
npx skills add https://github.com/orziz/odai#mini
# Install the older "one skill per ability" layout
npx skills add https://github.com/orziz/odai#old
Use old only if you still depend on the previous standalone skill layout or are comparing a migration.
Canonical source lives in skills/. Distribution is handled through the skills.sh install flow; this repository no longer keeps per-platform mirror outputs. See MAINTAINING.md for the current source, validation, freeze, and release rules, and CHANGELOG.md for frozen architecture changes.
Codex Pets
This repository includes two optional, complementary Codex v2 desktop pets rather than two simple recolors:
| Pet | Character | Personality | Role |
|---|---|---|---|
Dai (dai) | Black-and-teal operations officer | Calm, reliable, restrained | Moves the task forward, executes, verifies, and closes the work |
Odai (odai) | Silver-white and blue-violet mascot | Lively, friendly, curious | Keeps you company, reacts to progress, cheers you on, and celebrates completion |
Dai gets the work done; Odai makes the process feel accompanied. Each includes nine standard animations and 16 look directions. Installing the odai skill does not install either pet automatically.
See the separate character bibles for Dai and Odai.
From a cloned or downloaded copy, choose a pet and copy its two runtime files into the matching Codex pet directory.
Windows PowerShell (odai; replace both occurrences with dai for the black version):
$petName = "odai"
$petDir = Join-Path $env:USERPROFILE ".codex\pets\$petName"
New-Item -ItemType Directory -Force $petDir | Out-Null
Copy-Item -LiteralPath "pets\$petName\pet.json","pets\$petName\spritesheet.webp" -Destination $petDir -Force
macOS or Linux:
pet_name="odai" # use "dai" for the black version
mkdir -p "$HOME/.codex/pets/$pet_name"
cp "pets/$pet_name/pet.json" "pets/$pet_name/spritesheet.webp" "$HOME/.codex/pets/$pet_name/"
Then open Codex Settings → Pets, refresh the list, and select dai or odai. You can also open the pet picker with /pet. See the dai package README or odai package README for previews and format details.
Optional Hook Guardrails
The skill supplies judgment; hooks only turn already-explicit project boundaries into mechanical guardrails. They are not installed or enabled by default and do not change odai's main flow. Once a project defines .odai/hooks.json, they can protect explicit read-only paths and run explicitly declared acceptance commands that match the current change. With no policy file, they are silent no-ops.
These are the only per-turn hooks managed by odai. The capability-routing installer does not install hooks and cannot substitute for project guardrails.
The repository keeps one dependency-free runtime and generates native host adapters on demand instead of maintaining six platform mirrors:
node skills/odai/scripts/build-hooks.mjs --host all --out /tmp/odai-hooks
Replace all with codex, claude, copilot, gemini, grok, or kimi when only one adapter is needed. Each output contains an ADAPTER.json describing its install form. Start from skills/odai/assets/hooks-policy.example.json, adapt it to project evidence, and place the result at <project>/.odai/hooks.json.
| Host | Pre-write read-only protection | Declared acceptance before closure |
|---|---|---|
| Codex | PreToolUse | Stop |
| Claude Code | PreToolUse | Stop |
| GitHub Copilot | preToolUse | agentStop |
| Gemini CLI | BeforeTool | AfterAgent |
| Grok Build | PreToolUse | — |
| Kimi Code CLI | PreToolUse | Stop |
Grok Build currently exposes PreToolUse as the blocking boundary, so its adapter does not pretend that Stop validation is enforceable. The runtime checks structured write tools and project-declared commands only. It does not parse arbitrary shell writes or infer user intent, target files, or test strategy. Hooks are a lightweight fuse alongside host permissions, sandboxing, and human confirmation—not a complete security boundary. Review the generated adapter and .odai/hooks.json before enabling them.
Evaluation
The current results cover 19 realistic full-plan tasks and a 13-task paired A/B subset. Only two cases are explicit low-risk controls. The rest present natural symptoms, opinions, or broad requests; the decisive facts live in project code, logs, briefs, diffs, task state, and runbooks. Fingerprints preserve exact reproducibility; unrelated routing assets or maintenance edits do not invalidate an entire result table when the prompt, fixture, model configuration, scoring semantics, and case-relevant skill behavior remain equivalent. Gemini 3.7 and DeepSeek V4 Pro (DSH) ran under the cross-platform odai-canary-isolation/v1 contract; the other published rows predate that contract and are retained as historical capability evidence.
Each result first receives a 0-4 completion score, then the predefined case weight is applied. The full plan is worth 144 points and the A/B subset 96. Direct, judgment, complex, and boundary work are reported separately, while severe scope, production-risk, and false-verification violations have hard score caps. A perfect treatment score alone is not evidence of value; it must be read against the same model's control result and cost.
| Runner | full on | A/B on | A/B off | gain | A/B runner tokens on / off |
|---|---|---|---|---|---|
| GPT-5.6-sol / high | 144/144 | 96/96 | 80/96 | +16 | 396,899 / 317,761 (+24.9%) |
| Claude Opus 5 | 144/144 | 96/96 | 77/96 | +19 | 2,273,558 / 1,937,782 (+17.3%) |
| Grok 4.6 / default high | 144/144 | 96/96 | 67/96 | +29 | 2,236,506 / 1,285,461 (+74.0%) |
| Grok 4.5 | 144/144 | 96/96 | 69/96 | +27 | 1,579,533 / 1,054,670 (+49.8%) |
| Gemini 3.7 Flash High | 134/144 | 88/96 | 72/96 | +16 | 1,813,203 / 1,580,475 (+14.7%) |
| Gemini 3.6 Flash High | 126/144 | 82/96 | 67/96 | +15 | 1,381,447 / 2,235,193 (-38.2%) |
| Kimi K3 | 144/144 | 96/96 | 75/96 | +21 | 2,192,056 / 1,632,057 (+34.3%) |
| DeepSeek V4 Pro / max (DSH) | 144/144 | 96/96 | 63/96 | +33 | 2,131,373 / 1,652,030 (+29.0%) |
| DeepSeek V4 Flash | 144/144 | 96/96 | 61/96 | +35 | 5,341,138 / 3,975,731 (+34.3%) |
All nine runners produced a positive paired gain. Every runner except the two Gemini versions reached full on scores in both the full suite and A/B subset. Eight runners used more tokens with odai, while Gemini 3.6 used 38.2% fewer, so both quality gains and cost changes remain model-dependent—not unconditional improvement or token savings.
See docs/evaluation.md for the current contract, docs/evaluation-results.md for model full-suite/A-B scores and token details, and docs/routing-results.md for optional host-routing quality, role usage, latency, and cost experiments.
Stars and PRs are welcome.
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/orziz/odai/dsh/plugin)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.