snowman6 commited on
Commit
edade26
ยท
verified ยท
1 Parent(s): a6f48a9

model card

Browse files
.gitattributes CHANGED
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ charasheet.webp filter=lfs diff=lfs merge=lfs -text
37
+ infographic.en.webp filter=lfs diff=lfs merge=lfs -text
38
+ infographic.webp filter=lfs diff=lfs merge=lfs -text
39
+ qed_example.webp filter=lfs diff=lfs merge=lfs -text
40
+ task_type.webp filter=lfs diff=lfs merge=lfs -text
LICENSE-MIYA.md ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Miya Adopt Licence 1.0
2
+
3
+ ๋ฒ•์ ์œผ๋กœ Miya์˜ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜(์ฒดํฌํฌ์ธํŠธ)์™€ ์ฝ”๋“œ๋Š” **Apache-2.0**์ด๊ณ , ๊ฐ€์ค‘์น˜๋Š” convaiinnovations/laya-multilingual(**Apache-2.0**)์˜ ์ธ์ฝ”๋”์—์„œ ์‹œ์ž‘ํ–ˆ๊ณ , ๊ทธ ์ธ์ฝ”๋” ์›๋ณธ mmBERT-base๋Š” **MIT**์˜ˆ์š”.
4
+ ์ด๋ฅผ ์ƒ์†๋ฐ›๊ณ , ์ถ”๊ฐ€์ ์ธ ์กฐํ•ญ ๋ช‡๊ฐ€์ง€๋ฅผ ๋”ํ•ด์š”(์†”์งํžˆ ๋”ฑํžˆ ์ค‘์š”ํ•œ๊ฑด์—†์–ด์š”)
5
+
6
+ ## ์กฐํ•ญ
7
+
8
+ 1. **๋ฏธ์•ผ๋ฅผ ๋„ˆ๋ฌด ๊ดด๋กญํžˆ์ง€ ๋ง ๊ฒƒ.**
9
+ ๋ชจ๋ธ ๊ธฐ๋Šฅ์ค‘ web_fetch๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ ์„œ๋ฒ„์— ๋ฏธ์•ผ์˜ ์ผ๊ธฐ๋ฅผ ๋‚จ๊ธฐ๊ฒŒ ํ• ๊ฑฐ์—์š”(๊ฑฐ์ง“)
10
+
11
+ 2. **๋” ๋›ฐ์–ด๋‚œ ๊ฑธ ๋งŒ๋“ค๋ฉด, ๋ฉ”์ผ์„ ๋„ฃ์–ด์ฃผ์„ธ์š”.**
12
+ Miya์˜ ๋ชจ๋ธ์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋” ์ข‹์€ ๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.
13
+ ์‹ค๋ ฅ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์†์„ ๊ฑฐ์นœ ๋ฏธ์•ผ๊ฐ€ ์–ด๋””๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๊ฑฐ๋“ ์š”.
14
+ ๋ฉ”์ผ: `aa2iswork@gmail.com`
15
+
16
+ 3. **์˜๊ฐ์„ ๋ฐ›์•˜๋‹ค๋ฉด, ๋ช…์‹œํ•ด ์ฃผ์„ธ์š”.**
17
+ Miya์˜ ํ”„๋กœ์ ํŠธยท์•„ํ‚คํ…์ฒ˜ยท๋ฐฉ๋ฒ•๋ก ์ด ์˜๊ฐ์˜ ์ถœ์ฒ˜์˜€๋‹ค๋ฉด,
18
+ "Miya์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜๋‹ค"๊ณ  ๋ช…์‹œํ•ด ์ฃผ์„ธ์š”, ๋”ฑํžˆ ์ด์œ ๋Š” ์—†์–ด์š” ๊ทธ๋ƒฅ ๊ธฐ๋ถ„์ข‹์„๊ฑฐ ๊ฐ™๊ฑฐ๋“ ์š”.
19
+
20
+ ## ๋ฐ์ดํ„ฐ
21
+
22
+ - Miya ์ž์ฒด ๋ฐ์ดํ„ฐ๋Š” **ํฌํ•จ๋ผ์š”** (Apache-2.0)
23
+ - `data/gen.py`: ํ•™์Šต ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ธฐ (ํ•ฉ์„ฑ 284k, ์ค„์ž„๋งยท์ธํ„ฐ๋„ท์ฒดยท์ง€์ /์กฐ์–ธยท์ƒ์กดยท์ •๋ฆฌ ๋“ฑ). ํ•™์Šต์…‹(`data/gen/`)์€ ์ด๊ฑธ๋กœ ์žฌ์ƒ์„ฑ
24
+ - `eval/real.jsonl`: ์‹ค์ œ ์ธ๊ฒŒ์ž„ ๋ฐœํ™” ํ‰๊ฐ€์…‹ (๋ผ๋ฒจ ์ˆ˜์ž‘์—…)
25
+ - `bot/replies.json`: ๋ด‡ ๋Œ€์‚ฌ, `qed/*.sql`: QED ์Šคํ‚ค๋งˆ
26
+ - ์›๋ณธ ์„œ๋ฒ„ ์ฑ„ํŒ… ๋กœ๊ทธยท๋ด‡ ๋กœ๊ทธยทQED ๊ฒฝํ—˜ DB๋Š” **ํฌํ•จ๋˜์ง€ ์•Š์•„์š”** (ํ”Œ๋ ˆ์ด์–ด ์ฑ„ํŒ… ํฌํ•จ)
27
+ - Mojang ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ(์•„์ดํ…œ ์ด๋ฆ„ยท๋ ˆ์‹œํ”ผยท๋“œ๋กญ ๋“ฑ)๋Š” Miya ๋ฐฐํฌ์— **ํฌํ•จ๋˜์ง€ ์•Š์•„์š”**.
28
+ - ๊ณต์‹ ๋ฐ”๋‹๋ผ ์—์…‹์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” **๋ฐฉ๋ฒ•๋งŒ** `docs/extract.md`์— ์ ์–ด ๋‘ฌ์š”.
29
+ ์ง์ ‘ ์„œ๋ฒ„/์—์…‹์— ์—ฐ๊ฒฐํ•ด์„œ ์ถ”์ถœํ•˜๋Š” ๊ฑฐ์˜ˆ์š”, ํ•ด๋‹น ๋ฐ์ดํ„ฐํŒฉ ์ œ์ž‘์— ์žˆ์–ด์„œ ์ƒ๊ธฐ๋Š” ๋ฒ•์  ๋ฌธ์ œ๋Š” ์ฑ…์ž„์ง€์ง€์•Š์•„์š”.
30
+
31
+ ## ๋ฒ•์  ๊ทผ๊ฑฐ
32
+
33
+ - ๊ฐ€์ค‘์น˜ยท์ฝ”๋“œ: Apache-2.0 (LICENSE)
34
+ - ๊ฐ€์ค‘์น˜ ์ถœ์ฒ˜: convaiinnovations/laya-multilingual (Apache-2.0) โ€” ์ธ์ฝ”๋” ๊ฐ€์ค‘์น˜๋งŒ ์Šน๊ณ„, ํŒ๋‹จ ํ—ค๋“œ๋Š” ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค์—ˆ์–ด์š”
35
+ - ๋ฒ ์ด์Šค ์ธ์ฝ”๋”: jhu-clsp/mmBERT-base (MIT)
36
+ - Miya ๋ณ€๊ฒฝ์‚ฌํ•ญ: ์–ดํœ˜ ๊ฐ€์ง€์น˜๊ธฐ(256,000โ†’29,252), GLiNER2์‹ ํ—ค๋“œ(๋ณด๊ธฐ ์ ์ˆ˜ยท๊ตฌ๊ฐ„ยท์•„์ดํ…œ ๋งํฌยทColBERTยท๊ฐ€์น˜) ์‹ ๊ทœ, ์ž์ฒด ๋ฐ์ดํ„ฐ๋กœ ์ „์ฒด ํŒŒ์ธํŠœ๋‹
37
+ - ๋ด‡: mineflayerยทmineflayer-pathfinderยทprismarine-viewerยทminecraft-data (MIT)
README.en.md ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1 align="center">
2
+ <img src="miya_icon.webp" width="110" align="middle" alt="Miya icon">&nbsp;Miya-0.2
3
+ </h1>
4
+
5
+ <p align="center">Korean Minecraft AI decision model ยท 139M encoder ยท ~18 ms per pass<br><a href="https://github.com/snowman6-git/Miya">GitHub: bot ยท serving ยท training code</a> ยท <a href="README.md">ํ•œ๊ตญ์–ด</a></p>
6
+
7
+ > [!WARNING]
8
+ > **Work in progress.** 0.2 is a research snapshot, not a finished agent.
9
+ > There is no autonomous mode yet, help-request (ask) calibration is unfinished, and some survival decisions are weak ([Limitations](#limitations--work-in-progress)).
10
+ > Weights, label schema and API may change without compatibility in the next version.
11
+
12
+ ![Miya character sheet](charasheet.webp)
13
+
14
+ ## At a glance
15
+
16
+ ![Miya at a glance](infographic.en.webp)
17
+
18
+ <details><summary>Korean version</summary>
19
+
20
+ ![Miya ํ•œ๋ˆˆ์— ๋ณด๊ธฐ](infographic.webp)
21
+
22
+ </details>
23
+
24
+ ## What it does
25
+
26
+ Miya is the **decision model** of a Minecraft AI built on one rule: the model makes every decision, and the bot only executes.
27
+ No regex or if-chains decide anything. Facts such as recipes and ore heights are computed by the planner; the model chooses what to do.
28
+
29
+ - **Casual Korean**: `์ฒ ๊ณก ใ„ฑใ„ฑ` (iron pickaxe, go), `์ฒ ๋š` (iron helmet), `์ฒ ์…‹` (iron set), clipped endings, internet slang
30
+ - **Criticism / advice**: `๊ทธ๊ฑฐ๋ก  ํ•œ์ฐธ๊ฑธ๋ฆฌ๊ฒ ๋Š”๋ฐ?` ("that'll take forever"), `๊ทธ๊ฑฐ ๋งž์•„?` ("is that right?")
31
+ - **Asks when unsure**: if the item link is NULL it asks back, then re-reads the request together with the answer (multi-turn)
32
+ - **Method choice**: picks one of the planner's options after reading QED experience
33
+ - **Survival priority**: from HP, hunger, threats, night and air, picks fight, flee, eat, hide or resume
34
+
35
+ ## Architecture
36
+
37
+ ### System
38
+
39
+ ```
40
+ Player chat โ”€โ–ถ Paper server โ”€โ–ถ bot (TSยทmineflayer) โ”€HTTP JSONโ”€โ–ถ serving (Python stdlib, :8765)
41
+ โ”‚ โ”œโ”€ Miya model (this repo, decisions)
42
+ โ”‚ โ”œโ”€ planner (facts: recipes, dig time, method options)
43
+ โ”‚ โ”œโ”€ mcx.db (game knowledge: ore heights, spawns, value)
44
+ โ””โ”€ results /qed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ””โ”€ QED DB (experience)
45
+ ```
46
+
47
+ | Component | Does | Does not |
48
+ |---|---|---|
49
+ | **Miya model** | understand requests, choose methods, survival priority, inventory tidy | pathfinding, block manipulation |
50
+ | **planner** | goal + state โ†’ up to 6 method options with steps, est. time and risk | choose among options |
51
+ | **QED DB** | record actions and results, inject them as experience text into the next decision | block things by rule |
52
+ | **bot** | walk, dig, craft, fight; report results | decide |
53
+
54
+ ### Model
55
+
56
+ **Encoder.** mmBERT, 22 layers, bf16.
57
+
58
+ - Fine-tuned from the encoder weights of [laya-multilingual](https://huggingface.co/convaiinnovations/laya-multilingual); all heads are new.
59
+ - Vocabulary pruned 256,000 โ†’ 29,252, parameters 312M โ†’ 139M.
60
+ - The original tokenizer is used as is; a remap buffer inside the model maps the ids.
61
+
62
+ **Input.** GLiNER2-style schema input. Questions and options are placed in the input itself, so **one encoding pass produces every output**.
63
+
64
+ ```
65
+ [CLS] utterance [SEP] stateยทQED [SEP] ([MASK]label)ร—n [SEP] (question: [MASK]optionโ€ฆ[SEP])ร—m
66
+ ```
67
+
68
+ The vector at each `[MASK]` becomes that option's score, with a softmax per question.
69
+ Because options are input text, heads need no rebuilding when planner options or QED experience sentences change.
70
+
71
+ **Heads.**
72
+
73
+ | Head | Output |
74
+ |---|---|
75
+ | Option scores | act(11) ยท task_type(39) ยท query(18) ยท hint(5) ยท prio(9) ยท method (via) ยท tidy(3) |
76
+ | Span extraction | target ยท count ยท tool ยท person ยท coords ยท place ยท distance (7 kinds, width โ‰ค 8) |
77
+ | Item link | span โ†” name bank of 1,628 (items + mobs + groups/sets/places). Bi-encoder + ColBERT late interaction handles partial matches like `์ฒ ๋š`. NULL โ†’ ask back |
78
+ | Pairing | count โ†” target/tool (`์ฒ  3๊ฐœ๋ž‘ ์„ํƒ„ 5๊ฐœ`, "3 iron and 5 coal") |
79
+ | Value | per-method log duration ยท success probability |
80
+
81
+ **Labels.** Per-question labels live in `schema.json` (stored in Korean).
82
+
83
+ | Question | Labels |
84
+ |---|---|
85
+ | act (11) | run goal, answer question, ask back, stop, resume, yes, no, small talk, abuse, danger warning, criticism/advice |
86
+ | prio (9) | continue, melee, flee running, flee by pillaring, dig in and hide, eat, resume paused task, swim up, tidy inventory |
87
+ | hint (5) | slow, wrong, short, danger, done_claim |
88
+ | tidy (3) | keep, drop, store in chest |
89
+
90
+ ### Task types (TASK_TYPE)
91
+
92
+ Every work block gets its own type (no shared types). The model classifies a request into one of them and the bot runs the matching executor.
93
+
94
+ ![Miya task types](task_type.webp)
95
+
96
+ ### Planner (facts) vs model (choice)
97
+
98
+ The planner builds method options from these facts:
99
+
100
+ - recipe tree
101
+ - dig time (per tool tier)
102
+ - ore generation heights
103
+ - fuel efficiency
104
+ - crafting tables and furnaces already placed
105
+
106
+ For "์ฒ ๊ณก ๋งŒ๋“ค์–ด" (make an iron pickaxe), options look like `[via wood โ†’ stone pickaxe]`, `[via stone pickaxe, reuse furnace]`, `[logs as fuel]`.
107
+
108
+ The training data simulates **hidden truths** that differ from the estimates (no resource, slow, blocked). So the model learns not to trust estimates alone, and to read the QED experience text given with them.
109
+
110
+ ## QED โ€” Quasi-Evolutionary Diary
111
+
112
+ Actions and results accumulate in a DB and go into the next decision **as experience text**. Nothing is blocked by rule; the model reads it and decides.
113
+
114
+ **Record.** The bot sends each finished GOAL to `/qed`.
115
+
116
+ | Table | Contents |
117
+ |---|---|
118
+ | `goals` | request, goal, count, method (via), success, duration ms, failure reason, variables (tools, gear, time held) |
119
+ | `steps` | per step: type ยท target ยท cnt ยท tool ยท ms ยท success ยท failure reason |
120
+ | `deaths` | cause, killer, HP/hunger/night/armor/weapon, position, inventory and its value, GOAL in progress |
121
+ | `placed` | blocks the bot placed (reuse tables, furnaces, chests; tell its chests from others') |
122
+
123
+ **Injection.** The last 20 runs of the same goal with the same method path are summarized and appended to the option text (the text itself is Korean; below: est. 301 s, risk 40%, 5 runs, 80% success, avg 170 s, 1 recent failure):
124
+
125
+ ```
126
+ direct | ์›์ • ์ฐธ๋‚˜๋ฌด ์›๋ชฉ 1 โ†’ ๋ฒŒ๋ชฉ ์ฐธ๋‚˜๋ฌด ์›๋ชฉ 2 โ†’ ์ œ์ž‘ ์ฐธ๋‚˜๋ฌด ํŒ์ž 8 โ†’ โ€ฆ | ์˜ˆ์ƒ 301์ดˆ ์œ„ํ—˜ 40% | ๊ฒฝํ—˜ 5ํšŒ ์„ฑ๊ณต 80% ํ‰๊ท  170์ดˆ ์ตœ๊ทผ์‹คํŒจ 1ํšŒ(no_ore)
127
+ ```
128
+
129
+ ![QED decision evidence example](qed_example.webp)
130
+
131
+ The web UI's decision panel in a real run. For `์ฒ ๊ณก ๋งŒ๋“ค์–ด` (make an iron pickaxe) each of the 7 planner options carries choice probability, estimate, predicted time, risk and QED experience (14 runs, 29% success, recent death); the model picked reusing the already placed crafting table and furnace at 83%.
132
+
133
+ **Attribution.** The choice is made once more without experience. If the result differs it is marked `changed` (experience changed the decision).
134
+
135
+ **Deaths and value.** Recent death causes go into the survival context. Item value (base value + acquisition difficulty) drives recovery: lose one dirt block and it doesn't go back; lose a full diamond set and it does.
136
+
137
+ **Loop guards.** The previous model looped "low HP โ†’ hunt โ†’ no animals โ†’ low HP" and flooded requests. Now:
138
+
139
+ - step retry โ‰ค 3, replan โ‰ค 5
140
+ - survival decisions are requested only when state changes
141
+ - repeated failures show up in QED, so the same method isn't repeated
142
+
143
+ ## Evaluation
144
+
145
+ Compared with LAYA base, keeping planner, QED and bot identical and **swapping only the decisions**.
146
+
147
+ - Real utterances: 488 raw server chat lines, excluded from training
148
+ - dev: 5.8k
149
+ - In-game: 14 scenarios run in parallel on two local servers with the same seed
150
+
151
+ | | Miya-0.2 | LAYA base (zero-shot) |
152
+ |---|---|---|
153
+ | Real-utterance intent (act) | **94.5%** | 11.0% |
154
+ | Task type (type) | **89.7%** | 40.5% |
155
+ | Target item (target) | **87.3%** | 6.2% |
156
+ | Method choice (plan) | **73.6%** | 27.4% |
157
+ | Survival priority (prio) | **86.6%** | 11.5% |
158
+ | In-game, 14 scenarios | **13/14** | 0/14 |
159
+ | Model latency p50 / p95 | 17.8 / 19.7 ms | โ€” |
160
+
161
+ ## Usage
162
+
163
+ ```bash
164
+ git clone https://github.com/snowman6-git/Miya miya && cd miya
165
+ hf download snowman6/Miya-0.2 --local-dir ckpt/miya-0.2
166
+ # game data (mc.db, mcx.db) is not included โ†’ extract locally with docs/extract.en.md
167
+ .venv/bin/python model/serve.py # :8765 (SERVE_HOST=0.0.0.0 for bots on other machines)
168
+ curl -s localhost:8765/turn -d '{"utt":"์ฒ ๊ณก ๋งŒ๋“ค์–ด","ctx":""}'
169
+ ```
170
+
171
+ To run the bot too: `./run.sh host:port`. The server must be in **offline mode** (`online-mode=false`); for an online server use `MC_AUTH=microsoft ./run.sh host:port` to sign in with a Microsoft account (on first run, enter the code from bot.log at microsoft.com/link; the token is cached in `bot/.auth/`). All options: [GitHub README](https://github.com/snowman6-git/Miya/blob/main/README.en.md#server-and-login).
172
+
173
+ | API | Input โ†’ output |
174
+ |---|---|
175
+ | `/turn` | utterance + state โ†’ act, type, query, hint, spans, target item |
176
+ | `/plan` | goal + inventory/placed/surroundings โ†’ options, choice, probabilities, steps (QED injected) |
177
+ | `/prio` | state ctx โ†’ survival priority |
178
+ | `/qed` ยท `/death` | record results and deaths |
179
+ | `/tidy` ยท `/value` ยท `/placed` | inventory tidy, item value, placed blocks |
180
+
181
+ Two files:
182
+
183
+ - `model.pt`: state_dict
184
+ - `schema.json`: labels
185
+
186
+ Model code (`model/miya.py`) is in the [GitHub repo](https://github.com/snowman6-git/Miya).
187
+
188
+ ## Limitations ยท work in progress
189
+
190
+ > Still **unfinished**. These are known issues to be addressed in the next versions.
191
+
192
+ - **No autonomous mode**: commands like "์ž๊ธ‰์ž์กฑํ•ด" (be self-sufficient) are classified but not executed. A survive-and-progress loop is planned.
193
+ - **Ask over-calibration**: with mid success-rate experience (e.g. 28% over 14 runs) it picks "ask for help" too often. To be calibrated in 0.3.
194
+ - **Survival weak spots**
195
+ - Low accuracy on flee by pillaring and dig-in-and-hide.
196
+ - The fight/flee boundary sits near pโ‰ˆ0.5; the bot currently softens it by holding decisions briefly.
197
+ - **Joined combat verbs misclassified**: "์ข€๋น„์ฒ˜๋ฆฌํ•ด" ("deal with the zombie", written without spaces) is misclassified.
198
+ - **Data bias**: most training data (284k) is synthetic, with little real chat. Korean only.
199
+ - **Fixed environment**: Minecraft 26.1.2 recipes; tasks mineflayer can't do (enchanting, trading, ranged, etc.) are not executed yet.
200
+ - **No compatibility**: weights and schema are not guaranteed compatible across versions.
201
+
202
+ ## License
203
+
204
+ Apache-2.0 + [Miya Adopt Licence](LICENSE-MIYA.md) (a non-binding request clause).
205
+
206
+ - Base: laya-multilingual (Apache-2.0) โ† mmBERT-base (MIT)
207
+ - No Minecraft game data is included; generate it locally with `docs/extract.en.md` from the repo.
208
+ - Minecraft is a trademark of Mojang Studios; this project is not affiliated with Mojang.
README.md ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language: [ko]
4
+ base_model: convaiinnovations/laya-multilingual
5
+ library_name: pytorch
6
+ pipeline_tag: text-classification
7
+ tags: [minecraft, agent, korean, mmbert, gliner2, mineflayer, work-in-progress]
8
+ ---
9
+
10
+ <h1 align="center">
11
+ <img src="miya_icon.webp" width="110" align="middle" alt="Miya icon">&nbsp;Miya-0.2
12
+ </h1>
13
+
14
+ <p align="center">ํ•œ๊ตญ์–ด ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ AI ํŒ๋‹จ ๋ชจ๋ธ ยท 139M ์ธ์ฝ”๋” ยท 1ํšŒ ์ธ์ฝ”๋”ฉ ~18ms<br><a href="https://github.com/snowman6-git/Miya">GitHub: ๋ด‡ ยท ์„œ๋น™ ยท ํ•™์Šต ์ฝ”๋“œ</a> ยท <a href="README.en.md">English</a></p>
15
+
16
+ > [!WARNING]
17
+ > **๊ฐœ๋ฐœ ์ค‘(WIP) ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.** 0.2๋Š” ์—ฐ๊ตฌ์šฉ ์Šค๋ƒ…์ƒท์ด๋ฉฐ ์™„์„ฑ๋œ ์—์ด์ „ํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
18
+ > ์ž์œจ๋ชจ๋“œ๋Š” ์•„์ง ์—†๊ณ , ๋„์›€ ์š”์ฒญ(ask) ๋ณด์ •์ด ๋œ ๋์œผ๋ฉฐ, ์ƒ์กด ํŒ๋‹จ ์ผ๋ถ€๊ฐ€ ์•ฝํ•ฉ๋‹ˆ๋‹ค([ํ•œ๊ณ„](#ํ•œ๊ณ„--๋ฏธ์™„์„ฑ)).
19
+ > ๊ฐ€์ค‘์น˜ยท๋ผ๋ฒจ ์Šคํ‚ค๋งˆยทAPI๋Š” ๋‹ค์Œ ๋ฒ„์ „์—์„œ ํ˜ธํ™˜ ์—†์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
20
+ >
21
+ > **Work in progress.** A research snapshot, not a finished agent. Weights, label schema and API may change without notice.
22
+
23
+ Korean-first Minecraft agent decision model. One encoder pass (~18 ms) gives intent, task type, target item and count spans, method choice, survival priority and inventory tidy decisions. The mineflayer bot only executes. Full English card: [README.en.md](README.en.md).
24
+
25
+ ![Miya ์บ๋ฆญํ„ฐ ์‹œํŠธ](charasheet.webp)
26
+
27
+ ## ํ•œ๋ˆˆ์— ๋ณด๊ธฐ
28
+
29
+ ![Miya ํ•œ๋ˆˆ์— ๋ณด๊ธฐ](infographic.webp)
30
+
31
+ <details><summary>English version</summary>
32
+
33
+ ![Miya at a glance](infographic.en.webp)
34
+
35
+ </details>
36
+
37
+ ## ๋ฌด์—‡์„ ํ•˜๋‚˜
38
+
39
+ Miya๋Š” "๋ชจ๋“  ํŒ๋‹จ์€ ๋ชจ๋ธ์ด ํ•˜๊ณ , ๋ด‡์€ ์‹คํ–‰๋งŒ ํ•œ๋‹ค"๋Š” ์›์น™์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ AI์˜ **ํŒ๋‹จ ๋ชจ๋ธ**์ž…๋‹ˆ๋‹ค.
40
+ ์ •๊ทœ์‹์ด๋‚˜ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ ˆ์‹œํ”ผ๋‚˜ ๊ด‘์„ ๋†’์ด ๊ฐ™์€ ์‚ฌ์‹ค์€ planner๊ฐ€ ๊ณ„์‚ฐํ•˜๊ณ , ๋ฌด์—‡์„ ํ• ์ง€๋Š” ๋ชจ๋ธ์ด ๊ณ ๋ฆ…๋‹ˆ๋‹ค.
41
+
42
+ - **ํ•œ๊ตญ์–ด ๊ตฌ์–ด์ฒด ์ธ์‹**: `์ฒ ๊ณก ใ„ฑใ„ฑ`(์ฒ  ๊ณก๊ดญ์ด), `์ฒ ๋š`(์ฒ  ํˆฌ๊ตฌ), `์ฒ ์…‹`(์ฒ  ์„ธํŠธ), ์Œ์Šด์ฒด, ์ธํ„ฐ๋„ท์ฒด
43
+ - **์ง€์ ยท์กฐ์–ธ ๋ถ„๋ฅ˜**: `๊ทธ๊ฑฐ๋ก  ํ•œ์ฐธ๊ฑธ๋ฆฌ๊ฒ ๋Š”๋ฐ?`, `๊ทธ๊ฑฐ ๋งž์•„?`
44
+ - **๋ชจ๋ฅด๋ฉด ๋˜๋ฌป๊ธฐ**: ์•„์ดํ…œ ๋งํฌ๊ฐ€ NULL์ด๋ฉด ๋˜๋ฌป๊ณ , ๋‹ต๊นŒ์ง€ ํ•ฉ์ณ ๋‹ค์‹œ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค(๋ฉ€ํ‹ฐํ„ด)
45
+ - **๋ฐฉ๋ฒ• ์„ ํƒ**: planner๊ฐ€ ๋งŒ๋“  ํ›„๋ณด ์ค‘ QED ๊ฒฝํ—˜์„ ๋ณด๊ณ  ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค
46
+ - **์ƒ์กด ์šฐ์„ ์ˆœ์œ„**: ์ฒด๋ ฅยท๋ฐฐ๊ณ ํ””ยท์œ„ํ˜‘ยท๋ฐคยท์‚ฐ์†Œ๋ฅผ ๋ณด๊ณ  ์ „ํˆฌยท๋„๋งยท๋จน๊ธฐยท์ˆจ๊ธฐยท์žฌ๊ฐœ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค
47
+
48
+ ## ๊ตฌ์กฐ
49
+
50
+ ### ์ „์ฒด ์‹œ์Šคํ…œ
51
+
52
+ ```
53
+ ํ”Œ๋ ˆ์ด์–ด ์ฑ„ํŒ… โ”€โ–ถ Paper ์„œ๋ฒ„ โ”€โ–ถ ๋ด‡(TSยทmineflayer) โ”€HTTP JSONโ”€โ–ถ ์„œ๋น™(Python stdlib, :8765)
54
+ โ”‚ โ”œโ”€ Miya ๋ชจ๋ธ (์ด ์ €์žฅ์†Œ, ํŒ๋‹จ)
55
+ โ”‚ โ”œโ”€ planner (์‚ฌ์‹ค: ๋ ˆ์‹œํ”ผยท์ฑ„๊ตด์‹œ๊ฐ„ยท๋ฐฉ๋ฒ• ํ›„๋ณด)
56
+ โ”‚ โ”œโ”€ mcx.db (๋งˆํฌ ์ง€์‹: ๊ด‘์„ ๋†’์ดยท์Šคํฐยท๊ฐ€์น˜)
57
+ โ””โ”€ ์‹คํ–‰ ๊ฒฐ๊ณผ /qed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ””โ”€ QED DB (๊ฒฝํ—˜)
58
+ ```
59
+
60
+ | ๊ตฌ์„ฑ์š”์†Œ | ํ•˜๋Š” ์ผ | ํ•˜์ง€ ์•Š๋Š” ์ผ |
61
+ |---|---|---|
62
+ | **Miya ๋ชจ๋ธ** | ๋ฐœํ™” ์ดํ•ด, ๋ฐฉ๋ฒ• ์„ ํƒ, ์ƒ์กด ์šฐ์„ ์ˆœ์œ„, ์ธ๋ฒค ์ •๋ฆฌ | ๊ธธ์ฐพ๊ธฐ, ๋ธ”๋Ÿญ ์กฐ์ž‘ |
63
+ | **planner** | ๋ชฉํ‘œ + ์ƒํƒœ โ†’ ๋ฐฉ๋ฒ• ํ›„๋ณด(์ตœ๋Œ€ 6๊ฐœ)์™€ ๋‹จ๊ณ„์—ดยท์˜ˆ์ƒ ์‹œ๊ฐ„ยท์œ„ํ—˜ | ํ›„๋ณด ์ค‘ ์„ ํƒ |
64
+ | **QED DB** | ํ–‰๋™๊ณผ ๊ฒฐ๊ณผ ๊ธฐ๋ก, ๋‹ค์Œ ํŒ๋‹จ์— ๊ฒฝํ—˜ ํ…์ŠคํŠธ๋กœ ์ฃผ์ž… | ๊ทœ์น™์œผ๋กœ ์ฐจ๋‹จ |
65
+ | **๋ด‡** | ๊ฑท๊ธฐยท์บ๊ธฐยท์ œ์ž‘ยท์ „ํˆฌ ์‹คํ–‰, ๊ฒฐ๊ณผ ๋ณด๊ณ  | ํŒ๋‹จ |
66
+
67
+ ### ๋ชจ๋ธ
68
+
69
+ **์ธ์ฝ”๋”.** mmBERT 22์ธต, bf16.
70
+
71
+ - [laya-multilingual](https://huggingface.co/convaiinnovations/laya-multilingual)์˜ ์ธ์ฝ”๋” ๊ฐ€์ค‘์น˜์—์„œ ํŒŒ์ธํŠœ๋‹ํ–ˆ๊ณ , ํ—ค๋“œ๋Š” ๋ชจ๋‘ ์ƒˆ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
72
+ - ์–ดํœ˜๋ฅผ ๊ฐ€์ง€์น˜๊ธฐํ•ด์„œ 256,000 โ†’ 29,252, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 312M โ†’ 139M์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
73
+ - ํ† ํฌ๋‚˜์ด์ €๋Š” ์›๋ณธ์„ ๊ทธ๋Œ€๋กœ ์“ฐ๊ณ , ๋ชจ๋ธ ์•ˆ์˜ remap ๋ฒ„ํผ๊ฐ€ id๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
74
+
75
+ **์ž…๋ ฅ.** GLiNER2์‹ ์Šคํ‚ค๋งˆ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ๊ณผ ๋ณด๊ธฐ๋ฅผ ์ž…๋ ฅ ์•ˆ์— ํ•จ๊ป˜ ๋„ฃ์–ด **ํ•œ ๋ฒˆ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ชจ๋“  ์ถœ๋ ฅ**์„ ๋ƒ…๋‹ˆ๋‹ค.
76
+
77
+ ```
78
+ [CLS] ๋ฐœํ™” [SEP] ์ƒํƒœยทQED [SEP] ([MASK]๋ผ๋ฒจ)ร—n [SEP] (๋ฌธํ•ญ: [MASK]๋ณด๊ธฐโ€ฆ[SEP])ร—m
79
+ ```
80
+
81
+ ๊ฐ `[MASK]` ์œ„์น˜์˜ ๋ฒกํ„ฐ๊ฐ€ ๊ทธ ๋ณด๊ธฐ์˜ ์ ์ˆ˜๊ฐ€ ๋˜๊ณ , ๋ฌธํ•ญ๋ณ„๋กœ softmax๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.
82
+ ๋ณด๊ธฐ๊ฐ€ ์ž…๋ ฅ ํ…์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— planner ํ›„๋ณด๋‚˜ QED ๊ฒฝํ—˜ ๋ฌธ์žฅ์ด ๋ฐ”๋€Œ์–ด๋„ ํ—ค๋“œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
83
+
84
+ **ํ—ค๋“œ.**
85
+
86
+ | ํ—ค๋“œ | ์ถœ๋ ฅ |
87
+ |---|---|
88
+ | ๋ณด๊ธฐ ์ ์ˆ˜ | act(11) ยท task_type(39) ยท query(18) ยท hint(5) ยท prio(9) ยท ๋ฐฉ๋ฒ•(via) ยท tidy(3) |
89
+ | ๊ตฌ๊ฐ„ ์ถ”์ถœ | ๋Œ€์ƒ ยท ๊ฐœ์ˆ˜ ยท ๋„๊ตฌ ยท ์‚ฌ๋žŒ ยท ์ขŒํ‘œ ยท ์žฅ์†Œ ยท ๊ฑฐ๋ฆฌ (7์ข…, ํญ โ‰ค 8) |
90
+ | ์•„์ดํ…œ ๋งํฌ | ๊ตฌ๊ฐ„ โ†” ์ด๋ฆ„ bank 1,628๊ฐœ (์•„์ดํ…œ + ๋ชน + ๊ทธ๋ฃนยท์„ธํŠธยท์žฅ์†Œ). bi-encoder + ColBERT late interaction์œผ๋กœ `์ฒ ๋š` ๊ฐ™์€ ๋ถ€๋ถ„์ผ์น˜ ์ฒ˜๋ฆฌ. NULL์ด๋ฉด ๋˜๋ฌป๊ธฐ |
91
+ | ์ง | ๊ฐœ๏ฟฝ๏ฟฝ โ†” ๋Œ€์ƒยท๋„๊ตฌ ์—ฐ๊ฒฐ (`์ฒ  3๊ฐœ๋ž‘ ์„ํƒ„ 5๊ฐœ`) |
92
+ | ๊ฐ€์น˜ | ๋ฐฉ๋ฒ•๋ณ„ log ์†Œ์š”์‹œ๊ฐ„ ยท ์„ฑ๊ณตํ™•๋ฅ  |
93
+
94
+ **๋ผ๋ฒจ.** ๋ฌธํ•ญ๋ณ„ ๋ผ๋ฒจ์€ `schema.json`์— ์žˆ์Šต๋‹ˆ๋‹ค.
95
+
96
+ | ๋ฌธํ•ญ | ๋ผ๋ฒจ |
97
+ |---|---|
98
+ | act (11) | ๋ชฉํ‘œ ์‹คํ–‰, ์งˆ๋ฌธ ๋‹ตํ•˜๊ธฐ, ๋˜๋ฌป๊ธฐ, ๋ฉˆ์ถค, ์žฌ๊ฐœ, ๊ธ์ • ๋Œ€๋‹ต, ๋ถ€์ • ๋Œ€๋‹ต, ์žก๋‹ด, ์š•์„ค, ์œ„ํ—˜ ๊ฒฝ๊ณ , ์ง€์ ยท์กฐ์–ธ |
99
+ | prio (9) | ๊ณ„์† ์ง„ํ–‰, ๊ทผ์ ‘ ์ „ํˆฌ, ๋‹ฌ๋ ค์„œ ๋„๋ง, ๋ธ”๋Ÿญ ์Œ“์•„ ๋„๋ง, ๊ตด ํŒŒ๊ณ  ์ˆจ๊ธฐ, ๋จน๊ธฐ, ๋ฉˆ์ถ˜ ์ž‘์—… ์žฌ๊ฐœ, ๋ฌผ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ, ์ธ๋ฒค ์ •๋ฆฌ |
100
+ | hint (5) | slow, wrong, short, danger, done_claim |
101
+ | tidy (3) | ์œ ์ง€, ๋ฒ„๋ฆฌ๊ธฐ, ์ƒ์ž์— ๋ณด๊ด€ |
102
+
103
+ ### ์ž‘์—… ์ข…๋ฅ˜ (TASK_TYPE)
104
+
105
+ ์ž‘์—… ๋ธ”๋Ÿญ๋งˆ๋‹ค ๊ฐœ๋ณ„ ํƒ€์ž…์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค(๊ณตํ†ต ํƒ€์ž… ์—†์Œ). ๋ชจ๋ธ์ด ๋ฐœํ™”๋ฅผ ์ด ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด ๋ด‡์ด ํ•ด๋‹น ์‹คํ–‰๊ธฐ๋ฅผ ๋Œ๋ฆฝ๋‹ˆ๋‹ค.
106
+
107
+ ![Miya ์ž‘์—… ์ข…๋ฅ˜](task_type.webp)
108
+
109
+ ### planner (์‚ฌ์‹ค) vs ๋ชจ๋ธ (์„ ํƒ)
110
+
111
+ planner๋Š” ๋‹ค์Œ ์‚ฌ์‹ค๋กœ ๋ฐฉ๋ฒ• ํ›„๋ณด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
112
+
113
+ - ๋ ˆ์‹œํ”ผ ํŠธ๋ฆฌ
114
+ - ์ฑ„๊ตด ์‹œ๊ฐ„(๋„๊ตฌ ํ‹ฐ์–ด๋ณ„)
115
+ - ๊ด‘์„ ์ƒ์„ฑ ๋†’์ด
116
+ - ์—ฐ๋ฃŒ ํšจ์œจ
117
+ - ์ด๋ฏธ ๋†“์€ ์ž‘์—…๋Œ€ยทํ™”๋กœ
118
+
119
+ ์˜ˆ๋ฅผ ๋“ค์–ด "์ฒ ๊ณก ๋งŒ๋“ค์–ด"์—๋Š” `[๋‚˜๋ฌด๊ณกโ†’๋Œ๊ณก ๊ฒฝ์œ ]`, `[๋Œ๊ณก ๊ฒฝ์œ , ํ™”๋กœ ์žฌ์‚ฌ์šฉ]`, `[์—ฐ๋ฃŒ ์›๋ชฉ]` ๊ฐ™์€ ํ›„๋ณด๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.
120
+
121
+ ํ•™์Šต ๋ฐ์ดํ„ฐ์—์„œ๋Š” ์ถ”์ •์น˜์™€ ๋‹ค๋ฅธ **์ˆจ์€ ์ฐธ๊ฐ’**(์ž์› ์—†์Œ, ๋А๋ฆผ, ๋ง‰ํž˜)์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋ธ์€ ์ถ”์ •์น˜๋งŒ ๋ฏฟ์ง€ ์•Š๊ณ , ํ•จ๊ป˜ ์ฃผ์–ด์ง„ QED ๊ฒฝํ—˜ ํ…์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ํŒ๋‹จํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.
122
+
123
+ ## QED โ€” Quasi-Evolutionary Diary
124
+
125
+ ํ–‰๋™๊ณผ ๊ฒฐ๊ณผ๋ฅผ DB์— ์Œ“์•„ ๋‹ค์Œ ํŒ๋‹จ์— **๊ฒฝํ—˜ ํ…์ŠคํŠธ๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค**. ๊ทœ์น™์œผ๋กœ ๋ง‰์ง€ ์•Š๊ณ  ๋ชจ๋ธ์ด ์ฝ๊ณ  ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
126
+
127
+ **๊ธฐ๋ก.** ๋ด‡์€ GOAL์ด ๋๋‚  ๋•Œ๋งˆ๋‹ค `/qed`๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
128
+
129
+ | ํ‘œ | ๋‚ด์šฉ |
130
+ |---|---|
131
+ | `goals` | ์š”์ฒญ, ๋ชฉํ‘œ, ๊ฐœ์ˆ˜, ๋ฐฉ๋ฒ•(via), ์„ฑ๊ณต, ์†Œ์š” ms, ์‹คํŒจ ์‚ฌ์œ , ๋ณ€์ˆ˜(๋ณด์œ  ๋„๊ตฌยท์žฅ๋น„ยท์‹œ๊ฐ„) |
132
+ | `steps` | ๋‹จ๊ณ„๋ณ„ type ยท target ยท cnt ยท ๋„๊ตฌ ยท ms ยท ์„ฑ๊ณต ยท ์‹คํŒจ ์‚ฌ์œ  |
133
+ | `deaths` | ์‚ฌ๋ง ์›์ธ, ๊ฐ€ํ•ด์ž, ์ฒด๋ ฅยท๋ฐฐ๊ณ ํ””ยท๋ฐคยท๋ฐฉ์–ดยท๋ฌด๊ธฐ, ์œ„์น˜, ์ธ๋ฒค๊ณผ ๊ทธ ๊ฐ€์น˜, ์ง„ํ–‰ ์ค‘์ด๋˜ GOAL |
134
+ | `placed` | ๋ด‡์ด ์„ค์น˜ํ•œ ๋ธ”๋Ÿญ (์ž‘์—…๋Œ€ยทํ™”๋กœยท์ƒ์ž ์žฌ์‚ฌ์šฉ, ๋‚จ์˜ ์ƒ์ž์™€ ๊ตฌ๋ถ„) |
135
+
136
+ **์ฃผ์ž….** ๊ฐ™์€ goal์—์„œ ๋ฐฉ๋ฒ• ๊ฒฝ๋กœ๊ฐ€ ๊ฐ™์€ ์ตœ๊ทผ 20๊ฑด์„ ์š”์•ฝํ•ด ๋ณด๊ธฐ ํ…์ŠคํŠธ ๋’ค์— ๋ถ™์ž…๋‹ˆ๋‹ค.
137
+
138
+ ```
139
+ direct | ์›์ • ์ฐธ๋‚˜๋ฌด ์›๋ชฉ 1 โ†’ ๋ฒŒ๋ชฉ ์ฐธ๋‚˜๋ฌด ์›๋ชฉ 2 โ†’ ์ œ์ž‘ ์ฐธ๋‚˜๋ฌด ํŒ์ž 8 โ†’ โ€ฆ | ์˜ˆ์ƒ 301์ดˆ ์œ„ํ—˜ 40% | ๊ฒฝํ—˜ 5ํšŒ ์„ฑ๊ณต 80% ํ‰๊ท  170์ดˆ ์ตœ๊ทผ์‹คํŒจ 1ํšŒ(no_ore)
140
+ ```
141
+
142
+ ![QED ํŒ๋‹จ ๊ทผ๊ฑฐ ์˜ˆ์‹œ](qed_example.webp)
143
+
144
+ ์‹ค์ œ WEBUI ํŒ๋‹จ ๊ทผ๊ฑฐ ํ™”๋ฉด. `์ฒ ๊ณก ๋งŒ๋“ค์–ด` โ†’ planner ํ›„๋ณด 7๊ฐœ๋งˆ๋‹ค ์„ ํƒ ํ™•๋ฅ ยท์ถ”์ •ยท์˜ˆ์ธก ์‹œ๊ฐ„ยท์œ„ํ—˜ยทQED ๊ฒฝํ—˜(14ํšŒ, ์„ฑ๊ณต 29%, ์ตœ๊ทผ ์‚ฌ๋ง)์ด ๋ถ™๊ณ , ๋ชจ๋ธ์ด ์ด๋ฏธ ๋†“์€ ์ž‘์—…๋Œ€ยทํ™”๋กœ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ 83%๋กœ ๊ณจ๋ž์Šต๋‹ˆ๋‹ค.
145
+
146
+ **๋ฐœํ˜„ ํ‘œ๊ธฐ.** ๊ฒฝํ—˜์„ ๋บ€ ์ƒํƒœ๋กœ ํ•œ ๋ฒˆ ๋” ์„ ํƒํ•ด ๋ด…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๋ฉด `changed`๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(๊ฒฝํ—˜์ด ํŒ๋‹จ์„ ๋ฐ”๊ฟจ๋‹ค๋Š” ๋œป).
147
+
148
+ **์‚ฌ๋งยท๊ฐ€์น˜.** ์ตœ๊ทผ ์‚ฌ๋ง ์›์ธ์€ ์ƒ์กด ํŒ๋‹จ ctx์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์•„์ดํ…œ ๊ฐ€์น˜(๊ธฐ๋ณธ๊ฐ’ + ํš๋“ ๋‚œ์ด๋„)๋Š” ํšŒ์ˆ˜ ํŒ๋‹จ์— ์”๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™ ํ•˜๋‚˜๋ฅผ ์žƒ์—ˆ์œผ๋ฉด ๊ตณ์ด ๊ฐ€์ง€ ์•Š๊ณ , ๋‹ค์ด์•„ ํ’€์…‹์ด๋ฉด ๋˜์ฐพ์œผ๋Ÿฌ ๊ฐ‘๋‹ˆ๋‹ค.
149
+
150
+ **๋ฌดํ•œ๋ฃจํ”„ ์ฐจ๋‹จ.** ์ด์ „ ๋ชจ๋ธ์€ "์ฒด๋ ฅ ์—†์Œ โ†’ ์‚ฌ๋ƒฅ โ†’ ๋™๋ฌผ ์—†์Œ โ†’ ์ฒด๋ ฅ ์—†์Œ"์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์š”์ฒญ์ด ํญ์ฃผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋‹ค์Œ ์žฅ์น˜๋กœ ๋ง‰์Šต๋‹ˆ๋‹ค.
151
+
152
+ - ๋‹จ๊ณ„ ์žฌ์‹œ๋„ โ‰ค 3, ์žฌ๊ณ„ํš โ‰ค 5
153
+ - ์ƒ์กด ํŒ๋‹จ์€ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งŒ ์š”์ฒญ
154
+ - ์—ฐ์† ์‹คํŒจ๊ฐ€ QED๋กœ ๋“œ๋Ÿฌ๋‚˜ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์Œ
155
+
156
+ ## ํ‰๊ฐ€
157
+
158
+ LAYA base์™€ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. plannerยทQEDยท๋ด‡์€ ๊ฐ™๊ฒŒ ๋‘๊ณ  **ํŒ๋‹จ๋งŒ ๊ต์ฒด**ํ–ˆ์Šต๋‹ˆ๋‹ค.
159
+
160
+ - ์‹ค๋ฐœํ™”: ์„œ๋ฒ„ ์ฑ„ํŒ… ์›๋ฌธ 488๊ฑด, ํ•™์Šต์—์„œ ์ œ์™ธ
161
+ - dev: 5.8k
162
+ - ์ธ๊ฒŒ์ž„: ๊ฐ™์€ ์‹œ๋“œ์˜ ๋กœ์ปฌ ์„œ๋ฒ„ 2๋Œ€์—์„œ 14๊ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰
163
+
164
+ | | Miya-0.2 | LAYA base (zero-shot) |
165
+ |---|---|---|
166
+ | ์‹ค๋ฐœํ™” ์˜๋„ (act) | **94.5%** | 11.0% |
167
+ | ์ž‘์—… ์ข…๋ฅ˜ (type) | **89.7%** | 40.5% |
168
+ | ๋Œ€์ƒ ์•„์ดํ…œ (target) | **87.3%** | 6.2% |
169
+ | ๋ฐฉ๋ฒ• ์„ ํƒ (plan) | **73.6%** | 27.4% |
170
+ | ์ƒ์กด ์šฐ์„ ์ˆœ์œ„ (prio) | **86.6%** | 11.5% |
171
+ | ์ธ๊ฒŒ์ž„ 14 ์‹œ๋‚˜๋ฆฌ์˜ค | **13/14** | 0/14 |
172
+ | ๋ชจ๋ธ ์ง€์—ฐ p50 / p95 | 17.8 / 19.7 ms | โ€” |
173
+
174
+ ## ์‚ฌ์šฉ
175
+
176
+ ```bash
177
+ git clone https://github.com/snowman6-git/Miya miya && cd miya
178
+ hf download snowman6/Miya-0.2 --local-dir ckpt/miya-0.2
179
+ # ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ(mc.db, mcx.db)๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Œ โ†’ ์ €์žฅ์†Œ docs/extract.md ๋กœ ๋กœ์ปฌ ์ถ”์ถœ
180
+ .venv/bin/python model/serve.py # :8765 (๋‹ค๋ฅธ PC ๋ด‡์ด๋ฉด SERVE_HOST=0.0.0.0)
181
+ curl -s localhost:8765/turn -d '{"utt":"์ฒ ๊ณก ๋งŒ๋“ค์–ด","ctx":""}'
182
+ ```
183
+
184
+ ๋ด‡๊นŒ์ง€ ๋„์šฐ๋ ค๋ฉด `./run.sh host:port`. ๋ด‡์ด ๋ถ™์„ ์„œ๋ฒ„๋Š” **์˜คํ”„๋ผ์ธ ๋ชจ๋“œ**(`online-mode=false`)์—ฌ์•ผ ํ•˜๊ณ , ์ •ํ’ˆ ์„œ๋ฒ„๋ผ๋ฉด `MC_AUTH=microsoft ./run.sh host:port` ๋กœ MS ๊ณ„์ • ๋กœ๊ทธ์ธ(์ฒซ ์‹คํ–‰์‹œ bot.log ์˜ ์ฝ”๋“œ๋ฅผ microsoft.com/link ์— ์ž…๋ ฅ, ํ† ํฐ์€ `bot/.auth/` ์บ์‹œ). ์˜ต์…˜ ์ „์ฒด๋Š” [GitHub README](https://github.com/snowman6-git/Miya#์„œ๋ฒ„-์ ‘์†--๋กœ๊ทธ์ธ).
185
+
186
+ > The bot needs an **offline-mode** server (`online-mode=false`), or Microsoft login with `MC_AUTH=microsoft` (enter the device code from bot.log at microsoft.com/link).
187
+
188
+ | API | ์ž…๋ ฅ โ†’ ์ถœ๋ ฅ |
189
+ |---|---|
190
+ | `/turn` | ๋ฐœํ™” + ์ƒํƒœ โ†’ act, type, query, hint, ๊ตฌ๊ฐ„, ๋ชฉํ‘œ ์•„์ดํ…œ |
191
+ | `/plan` | ๋ชฉํ‘œ + ์ธ๋ฒคยท์„ค์น˜๋ฌผยท์ฃผ๋ณ€ โ†’ ํ›„๋ณด, ์„ ํƒ, ํ™•๋ฅ , ๋‹จ๊ณ„ (QED ์ž๋™ ์ฃผ์ž…) |
192
+ | `/prio` | ์ƒํƒœ ctx โ†’ ์ƒ์กด ์šฐ์„ ์ˆœ์œ„ |
193
+ | `/qed` ยท `/death` | ๊ฒฐ๊ณผยท์‚ฌ๋ง ๊ธฐ๋ก |
194
+ | `/tidy` ยท `/value` ยท `/placed` | ์ธ๋ฒค ์ •๋ฆฌ, ์•„์ดํ…œ ๊ฐ€์น˜, ์„ค์น˜๋ฌผ |
195
+
196
+ ํŒŒ์ผ์€ ๋‘ ๊ฐœ์ž…๋‹ˆ๋‹ค.
197
+
198
+ - `model.pt`: state_dict
199
+ - `schema.json`: ๋ผ๋ฒจ
200
+
201
+ ๋ชจ๋ธ ์ฝ”๋“œ(`model/miya.py`)๋Š” [GitHub ์ €์žฅ์†Œ](https://github.com/snowman6-git/Miya)์— ์žˆ์Šต๋‹ˆ๋‹ค.
202
+
203
+ ## ํ•œ๊ณ„ ยท ๋ฏธ์™„์„ฑ
204
+
205
+ > ์•„์ง **๋ฏธ์™„์„ฑ**์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ํ•ญ๋ชฉ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ด๋ฉฐ ๋‹ค์Œ ๋ฒ„์ „์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
206
+
207
+ - **์ž์œจ๋ชจ๋“œ ์—†์Œ**: "์ž๊ธ‰์ž์กฑํ•ด" ๊ฐ™์€ ๋ช…๋ น์€ ๋ถ„๋ฅ˜๋งŒ ๋˜๊ณ  ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒ์กดยท๋ฐœ์ „ ๋ฃจํ”„๋ฅผ ๊ณ„ํš ์ค‘์ž…๋‹ˆ๋‹ค.
208
+ - **ask ๊ณผ๋ณด์ •**: ์„ฑ๊ณต๋ฅ ์ด ์ค‘๊ฐ„์ธ ๊ฒฝํ—˜(์˜ˆ: 14ํšŒ ์ค‘ 28%)์—์„œ ๋„์›€ ์š”์ฒญ์„ ๊ณผํ•˜๊ฒŒ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. 0.3์—์„œ ๋ณด์ •ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
209
+ - **์ƒ์กด ํŒ๋‹จ ์•ฝ์ **
210
+ - ๋ธ”๋Ÿญ ์Œ“์•„ ๋„๋ง, ๊ตด ํŒŒ๊ณ  ์ˆจ๊ธฐ์˜ ์ •๋‹ต๋ฅ ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.
211
+ - ์ „ํˆฌ์™€ ๋„๋ง์˜ ๊ฒฝ๊ณ„๊ฐ€ pโ‰ˆ0.5๋กœ ์• ๋งคํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ด‡์˜ ๊ฒฐ์ • ์œ ์ง€ ์‹œ๊ฐ„์œผ๋กœ ์™„ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
212
+ - **๋ถ™์—ฌ์“ด ์ „ํˆฌ ๋™์‚ฌ ์˜ค๋ถ„๋ฅ˜**: "์ข€๋น„์ฒ˜๋ฆฌํ•ด"๋ฅผ ์ž˜๋ชป ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
213
+ - **๋ฐ์ดํ„ฐ ํŽธํ–ฅ**: ํ•™์Šต ๋ฐ์ดํ„ฐ ๋Œ€๋ถ€๋ถ„(284k)์ด ํ•ฉ์„ฑ์ด๊ณ  ์‹ค๋ฐœํ™”๋Š” ์†Œ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด ์ „์šฉ์ž…๋‹ˆ๋‹ค.
214
+ - **ํ™˜๊ฒฝ ๊ณ ์ •**: Minecraft 26.1.2 ๋ ˆ์‹œํ”ผ ๊ธฐ์ค€์ด๊ณ , mineflayer๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ž‘์—…(์ธ์ฑˆํŠธยท๊ฑฐ๋ž˜ยท์›๊ฑฐ๋ฆฌ ๋“ฑ)์€ ์•„์ง ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
215
+ - **ํ˜ธํ™˜์„ฑ ์—†์Œ**: ๋ฒ„์ „ ๊ฐ„ ๊ฐ€์ค‘์น˜ยท์Šคํ‚ค๋งˆ ํ˜ธํ™˜์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
216
+
217
+ ## ๋ผ์ด์„ ์Šค
218
+
219
+ Apache-2.0 + [Miya Adopt Licence](LICENSE-MIYA.md) (๊ฐ•์ œ์„ฑ ์—†๋Š” ๋ถ€ํƒ ์กฐํ•ญ).
220
+
221
+ - ๋ฒ ์ด์Šค: laya-multilingual (Apache-2.0) โ† mmBERT-base (MIT)
222
+ - Minecraft ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์˜ `docs/extract.md`๋กœ ๋กœ์ปฌ์—์„œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
223
+ - Minecraft๋Š” Mojang Studios์˜ ์ƒํ‘œ์ด๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ๋Š” Mojang๊ณผ ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค.
charasheet.webp ADDED

Git LFS Details

  • SHA256: 390faa1ab5855477a35cf6877dc494d0e6f6ecdea88db4a6acfc31c77bde76e3
  • Pointer size: 131 Bytes
  • Size of remote file: 216 kB
infographic.en.webp ADDED

Git LFS Details

  • SHA256: d307f3f4934fd6b51b199cca1167f42a60028c22842049e0a5b300bf01193f16
  • Pointer size: 131 Bytes
  • Size of remote file: 405 kB
infographic.webp ADDED

Git LFS Details

  • SHA256: 8661e6b8ca45622dd93df9fdb403542b1c227d8039f83d153fe309391f71fa9a
  • Pointer size: 131 Bytes
  • Size of remote file: 363 kB
miya_icon.webp ADDED
qed_example.webp ADDED

Git LFS Details

  • SHA256: a5c007c54293ac578e4e4ba3e6fa638cde96070c9b8aee2371bf684a3c120990
  • Pointer size: 131 Bytes
  • Size of remote file: 109 kB
task_type.webp ADDED

Git LFS Details

  • SHA256: 1263e406eab9ce415cc4c751f2ed73dd09e0d6885ee7ff51c0ef6947e97bc16d
  • Pointer size: 131 Bytes
  • Size of remote file: 302 kB