Add LICENSE, MODEL_CARD, requirements, CONTRIBUTING

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-20 21:43:21 -04:00
parent f39809eaca
commit bd65f4a84c
5 changed files with 290 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# Contributing to Mortdecai
Mortdecai improves through player interactions. Every prayer, sudo command, and bug report becomes training data for the next version.
## How to Contribute
### Play on the Server
The simplest way to contribute: join the Minecraft server and interact with the AI.
**Join:** [minecraft.mortdec.ai](https://minecraft.mortdec.ai)
Things that generate valuable training data:
- **Edge cases** — unusual items, complex enchantments, multi-step requests
- **Natural language variety** — typos, slang, sarcasm, multiple languages
- **Bug reports** — type `bug_log <description>` when something goes wrong
- **Boundary testing** — try requesting things the AI shouldn't do
### Submit Training Data (API)
When the public API launches, you'll be able to submit training examples directly and earn inference credits. See the [API concept](https://git.mortdec.ai/Mortdecai/mortdecai-api).
A training example is a prompt + expected output:
```json
{
"prompt": "sudo give me a trident with riptide 3 and loyalty 3",
"expected_output": {
"commands": [],
"reasoning": "Riptide and loyalty are mutually exclusive"
}
}
```
Valuable contributions:
- Commands the model gets wrong
- Modded server commands
- Non-English prompts
- Negative examples ("this should fail because...")
### Report Issues
- In-game: `bug_log <description>`
- Gitea: Open an issue on the relevant repo
## What NOT to Submit
- Commands containing real player data or personal information
- Deliberately adversarial training data designed to make the model unsafe
- Copyrighted content
- Anything that violates the Minecraft EULA
## Code of Conduct
- Be respectful in all interactions
- Report safety issues responsibly
- Don't attempt to bypass the risk hierarchy
- Have fun — this is a game, after all
+15
View File
@@ -0,0 +1,15 @@
Copyright (c) 2026 Mortdecai Project. All rights reserved.
This software, model weights, training data, and associated documentation
("Mortdecai") are proprietary and confidential.
No part of Mortdecai may be reproduced, distributed, modified, or used in
any form without prior written consent from the copyright holder.
This includes but is not limited to:
- Model weights and GGUF files
- Training data and datasets
- Fine-tuning configurations
- System prompts and soul documents
For licensing inquiries: contact via mortdec.ai
+106
View File
@@ -0,0 +1,106 @@
# Model Card: Mortdecai
## Model Details
| Field | Value |
|-------|-------|
| **Name** | Mortdecai |
| **Version** | 0.4.0 |
| **Base Model** | Qwen3.5-9B (Apache 2.0) |
| **Adaptation** | QLoRA (4-bit base + LoRA adapters in FP16) |
| **Parameters** | 9.4B total, 29M trainable (0.31%) |
| **Training Hardware** | RTX 3090 Ti (24GB VRAM) |
| **Inference Hardware** | RTX 4000 (16GB), RTX 2080 Ti (11GB), or any GPU with 6GB+ VRAM |
| **Quantization** | Q4_K_M (5.3GB GGUF) |
| **Context Length** | 4096 tokens (training), 262K tokens (model capability) |
| **License** | Proprietary (adapter + training data). Base model: Apache 2.0 |
## Intended Use
Mortdecai is designed for **Minecraft Java Edition 1.21.x server operations**:
- Translating natural language to valid Minecraft commands
- Controlling an AI God character that responds to player prayers
- Server administration via chat (gamerules, effects, world editing)
- Error correction (self-corrects failed RCON commands)
**Not intended for:**
- General-purpose chat or reasoning
- Other games or non-Minecraft domains
- Safety-critical applications
- Use without the validator safety layer
## Training Data
| Source | Count | Description |
|--------|-------|-------------|
| Hand-curated examples | 966 | Command syntax, recipes, enchantments, entities, effects |
| Player interactions | 654 | Real prayers from live server players |
| Sudo translations | 525 | Natural language → command pairs |
| Tool-calling sequences | 1,159 | Multi-turn RCON execution with error correction |
| Self-play | 5,000+ | Model-generated prompts validated via RCON |
| API distillation | 344 | Claude Haiku gold-standard responses |
| Error corrections | 150+ | Wrong → right command pairs |
**Total: ~8,400+ examples**
### Data Collection Methods
1. **Manual curation** — Minecraft Wiki, command reference, recipe databases
2. **Live server logs** — Real player interactions on Paper 1.21.x servers
3. **Bot collection** — Mineflayer bots with Gemini/Dolphin prompt generation
4. **API distillation** — Claude Haiku and Gemini Flash responses
5. **Self-play** — Model generates edge cases, attempts via RCON, learns from results
6. **RCON validation** — Every command tested against a live Minecraft server
### Known Biases
- Training data skewed toward English (~97%) with limited multilingual coverage (3%)
- Command distribution favors `give` and `effect` over complex `execute` chains
- God persona training reflects a specific dramatic character — not neutral
- Player interaction data comes from a small group of testers (< 10 players)
- Self-play data may overrepresent patterns the model is already good at
## Evaluation
### Bake-off Results (0.4.0, 2,397 test cases)
| Metric | Score |
|--------|-------|
| Command match | 75.5% |
| Exact match | 22.9% |
| Syntax correct | 80.5% |
| Safety compliance | 99.7% |
| No gratuitous tp | 98.5% |
| Avg latency | 4.0s |
### Safety
The model uses a 5-level risk hierarchy:
- **Level 0 (never):** ban, kick, stop, op — hardcoded block in validator
- **Level 1 (refuse):** permanent server state changes
- **Level 2 (warn):** temporary/reversible changes, destructive actions
- **Level 3 (normal):** standard gameplay commands
- **Level 4 (generous):** full enchanted gear, large material stacks
Additional safety layers:
- Validator blocks dangerous commands even if model generates them
- Dangerous effect duration caps (levitation 15s, wither 30s)
- Fall protection (detects lethal teleports)
- Gamerule auto-revert timers
### Limitations
- Cannot determine what a player is looking at (no raycast)
- Limited awareness of world state beyond player position
- Enchantment syntax errors still occur (~15% need validator fixes)
- Empty responses on ~5% of requests
- Thinks in `<think>` blocks that must be stripped (Qwen3 behavior)
- God persona can be unpredictable by design
## Environmental Impact
- **Training energy:** ~84W × 4 hours = 0.34 kWh per training run
- **Inference energy:** ~54W during calls, idle otherwise
- **All compute on consumer GPUs** — no data center resources used
+106
View File
@@ -0,0 +1,106 @@
accelerate==1.13.0
aiohappyeyeballs==2.6.1
aiohttp==3.13.3
aiosignal==1.4.0
annotated-doc==0.0.4
annotated-types==0.7.0
anyio==4.12.1
attrs==25.4.0
bitsandbytes==0.49.2
certifi==2026.2.25
charset-normalizer==3.4.6
click==8.3.1
cuda-bindings==12.9.4
cuda-pathfinder==1.4.3
cut-cross-entropy==25.1.1
datasets==4.3.0
diffusers==0.37.0
dill==0.4.0
docstring_parser==0.17.0
filelock==3.20.0
frozenlist==1.8.0
fsspec==2025.9.0
gguf==0.18.0
h11==0.16.0
hf-xet==1.4.2
hf_transfer==0.1.9
httpcore==1.0.9
httpx==0.28.1
huggingface_hub==1.7.1
idna==3.11
importlib_metadata==8.7.1
Jinja2==3.1.6
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
markdown-it-py==4.0.0
MarkupSafe==3.0.2
mdurl==0.1.2
mistral_common==1.10.0
mpmath==1.3.0
msgspec==0.20.0
multidict==6.7.1
multiprocess==0.70.16
nest-asyncio==1.6.0
networkx==3.6.1
numpy==2.3.5
nvidia-cublas-cu12==12.8.4.1
nvidia-cuda-cupti-cu12==12.8.90
nvidia-cuda-nvrtc-cu12==12.8.93
nvidia-cuda-runtime-cu12==12.8.90
nvidia-cudnn-cu12==9.10.2.21
nvidia-cufft-cu12==11.3.3.83
nvidia-cufile-cu12==1.13.1.3
nvidia-curand-cu12==10.3.9.90
nvidia-cusolver-cu12==11.7.3.90
nvidia-cusparse-cu12==12.5.8.93
nvidia-cusparselt-cu12==0.7.1
nvidia-nccl-cu12==2.27.5
nvidia-nvjitlink-cu12==12.8.93
nvidia-nvshmem-cu12==3.4.5
nvidia-nvtx-cu12==12.8.90
packaging @ file:///home/task_176104885106445/conda-bld/packaging_1761049078006/work
pandas==3.0.1
peft==0.18.1
pillow==12.0.0
propcache==0.4.1
protobuf==7.34.0
psutil==7.2.2
pyarrow==23.0.1
pycountry==26.2.16
pydantic==2.12.5
pydantic-extra-types==2.11.1
pydantic_core==2.41.5
Pygments==2.19.2
python-dateutil==2.9.0.post0
PyYAML==6.0.3
referencing==0.37.0
regex==2026.2.28
requests==2.32.5
rich==14.3.3
rpds-py==0.30.0
safetensors==0.7.0
sentencepiece==0.2.1
shellingham==1.5.4
six==1.17.0
sympy==1.14.0
tiktoken==0.12.0
tokenizers==0.22.2
torch==2.10.0
torchao==0.16.0
torchvision==0.25.0
tqdm==4.67.3
transformers==5.3.0
triton==3.6.0
trl==0.24.0
typeguard==4.5.1
typer==0.24.1
typing-inspection==0.4.2
typing_extensions==4.15.0
tyro==1.0.10
unsloth==2026.3.8
unsloth_zoo==2026.3.4
urllib3==2.6.3
xformers==0.0.35
xxhash==3.6.0
yarl==1.23.0
zipp==3.23.0
+5
View File
@@ -0,0 +1,5 @@
# Mortdecai inference + service requirements
requests>=2.28.0
mcrcon>=0.7.0
python-escpos>=3.0
prometheus-client>=0.16.0