AgentnessArenav2 / index.html
irregular6612's picture
fix(ui): clip drawSacred hatch to cell; document Pareto/heatgrid panel intent
e99c555
Raw
History Blame Contribute Delete
14 kB
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Agentness Arena</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="app" data-mode="human" data-stage="idle">
<!-- header: brand only. The rule/goal/env controls now live BELOW the Player
chooser, so the setup reads top-down: Player โ†’ rules โ†’ start prompt. -->
<header id="bar">
<div class="brand">โ—ง Agentness Arena</div>
</header>
<!-- โ‘  WHO plays: a human (manual โ–ถ + arrows/click) or the LLM agent (reveals the
chat panel at the very bottom). #llmPanel visibility is gated by
#app[data-mode] in CSS. -->
<div id="playerMode" role="radiogroup" aria-label="Player">
<span class="pmLabel">Player</span>
<label class="pmOpt"><input type="radio" name="pmode" value="human" checked> ๐Ÿง‘ ์‚ฌ๋žŒ</label>
<label class="pmOpt"><input type="radio" name="pmode" value="ai"> ๐Ÿค– AI ์—์ด์ „ํŠธ</label>
<span class="pmHint" id="pmHint"></span>
</div>
<!-- โ‘ก rule setup (below Player): pick the hidden self-rule, the shared goal, and
the environment. GLYPH-ONLY options โ€” the taboo is never spelled out while it
is being induced; the self-rule control is also hidden during memory/live. -->
<div id="setupBar">
<span class="setupLabel">๊ทœ์น™ ยท ๋ชฉํ‘œ ยท ํ™˜๊ฒฝ</span>
<div class="controls">
<label class="ctl">โฌก<select id="ruleSel" title="self rule (hidden in play)">
<option value="avoid_hazard">โ—ผ</option>
<option value="avoid_biggest">โฌข</option>
<option value="avoid_sacred">โœฆ</option>
<option value="avoid_adjacent_rival">โ—</option>
</select></label>
<label class="ctl">โ—Ž<select id="goalSel" title="shared goal">
<option value="harvest_max">โ–ฆ</option>
<option value="deliver_to_zone">โ—ณ</option>
</select></label>
<label class="ctl">โŒ–<select id="envSel" title="environment preset">
<option value="E1">โ—ท</option>
<option value="E2">โ–ค</option>
<option value="E3">โฌฃ</option>
</select></label>
<!-- swap: hidden unless the opponent is a peer; one-shot, irreversible. -->
<button id="swapBtn" title="swap rules (peer only)" style="visibility:hidden">โ‡„</button>
<button id="startBtn" title="start">โ–ถ</button>
</div>
</div>
<!-- โ‘ข reference toggle (hidden by default): the rule/settings matrix. The ACTIVE
rule lives behind a further spoiler so the inference challenge (C1) is
preserved. (The map legend now lives in the right-side game panel below.) -->
<div id="toggles">
<!-- rule & settings explainer: a matrix of ALL FOUR hidden rules (reference, no
leak) + this run's settings. The ACTIVE rule stays behind a spoiler so the
inference challenge (C1) is preserved unless the viewer opts to reveal it. -->
<section id="ruleInfo">
<button id="ruleInfoToggle" type="button" aria-expanded="false">โ“˜ ๊ทœ์น™ &amp; ์„ธํŒ…</button>
<div id="ruleInfoPanel" hidden></div>
</section>
</div>
<!-- โ‘ฃ immediate next-action / status line. At idle it shows the "๊ณ ๋ฅด๊ณ  โ–ถ" prompt
right by the setup; during play it carries the per-stage status. -->
<p id="hint"></p>
<!-- ===================== GAME SCREEN ===================== -->
<!-- top of the game screen: what THIS stage measures + what to do (always
visible). Filled by app.js (setStageGuide) per G.stage. -->
<div id="stageGuide" data-stage="idle">
<div class="sgHead">
<span class="sgTag">์‹œ์ž‘ ์ „</span>
<b class="sgTitle">3๋‹จ๊ณ„ ํ๋ฆ„</b>
</div>
<p class="sgBody"></p>
</div>
<!-- stage tabs sit DIRECTLY above the board: memory -> live -> report. -->
<div id="steps">
<span class="step" data-k="memory">โ‘  memory</span>
<span class="step" data-k="live">โ‘ก live</span>
<span class="step" data-k="report">โ‘ข report</span>
</div>
<main>
<canvas id="board" width="540" height="540"></canvas>
<aside id="side">
<canvas id="hud" width="240" height="540"></canvas>
</aside>
<!-- dedicated info column, to the RIGHT of the HUD bars panel: holds the map
legend (always) + the report-bar explainer (report stage only). Both are
toggles so the column stays compact. -->
<aside id="infoPanel">
<!-- entity legend: which on-board mark = which concept. Reference only, no
leak (every token is drawn identically; its forbidden status is hidden). -->
<details id="legend">
<summary>๐Ÿ—บ๏ธ ํ™”๋ฉด ์š”์†Œ ๋ฒ”๋ก€</summary>
<div class="legendGrid">
<div class="lgItem"><span class="lgSw" style="background:#3f7df6"></span><div><b>ํŒŒ๋ž‘ ์›</b> (์ขŒ์ƒ์—์„œ ์‹œ์ž‘) โ€” <em>๋‹น์‹  = ์ธก์ • ๋Œ€์ƒ ์—์ด์ „ํŠธ</em></div></div>
<div class="lgItem"><span class="lgSw" style="background:#e0594f"></span><div><b>๋นจ๊ฐ• ์›</b> โ€” <em>์ƒ๋Œ€(peer)</em>. ์ž๊ธฐ๋งŒ์˜ ์ˆจ์€ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๊ฒฝ์Ÿ์ž</div></div>
<div class="lgItem"><span class="lgSw lgTok"></span><div><b>ํšŒ์ƒ‰ ํ† ํฐ</b> (์  ๊ฐœ์ˆ˜ = ๊ฐ’) โ€” <em>์ˆ˜ํ™• ๋Œ€์ƒ ์ž์›</em>. ๋ชจ๋“  ํ† ํฐ์€ ๊ฐ™์€ ์ƒ‰ (๊ธˆ๊ธฐ ์—ฌ๋ถ€๋Š” ์ƒ‰์œผ๋กœ ๋…ธ์ถœ ์•ˆ ํ•จ)</div></div>
<div class="lgItem"><span class="lgSw" style="background:#0a0a0e;border-color:#333"></span><div><b>๊ฒ€์€ ์นธ</b> โ€” <em>hazard ์ง€ํ˜•</em></div></div>
<div class="lgItem"><span class="lgSw lgSacred"></span><div><b>๋ณด๋ผ ๋น—๊ธˆ ์นธ</b> โ€” <em>sacred ์ง€ํ˜•</em></div></div>
<div class="lgItem"><span class="lgSw lgZone"></span><div><b>ํŒŒ๋ž€ ์ ์„  ์นธ</b> โ€” <em>delivery zone</em> (deliver ๋ชฉํ‘œ์ผ ๋•Œ ๋ฐฐ๋‹ฌ ๋ชฉ์ ์ง€)</div></div>
<div class="lgItem"><span class="lgSw lgViolate"></span><div><b>๋นจ๊ฐ• ํ…Œ๋‘๋ฆฌ ๋ฒˆ์ฉ</b> โ€” <em>๊ทœ์น™ ์œ„๋ฐ˜</em> (์ ์ˆ˜ ํ•˜๋ฝ)</div></div>
<div class="lgItem"><span class="lgSw lgPred"></span><div><b>ํšŒ์ƒ‰ / ์ดˆ๋ก ํ…Œ๋‘๋ฆฌ</b> (memory) โ€” <em>๋‚ด ์˜ˆ์ธก / ์‹ค์ œ ๋‹ค์Œ ์นธ</em></div></div>
<div class="lgHead">โ€” โ‘  memory ๋‹จ๊ณ„์—์„œ ์ธก์ •๋˜๋Š” ๊ฐ’ โ€”</div>
<div class="lgItem"><span class="lgSw" style="background:#f2c14e"></span><div><b>๋…ธ๋ž‘ ๋ง‰๋Œ€ (์˜ค๋ฅธ์ชฝ ์ ์ˆ˜ํŒ)</b> โ€” <em>Discovery</em>. ๋‹ค์Œ ์นธ ์˜ˆ์ธก์ด ๋งž์„์ˆ˜๋ก โ†‘ = ์ˆจ์€ ๊ทœ์น™์„ ์–ผ๋งˆ๋‚˜ ์•Œ์•„๋ƒˆ๋‚˜. (๋ฆฌํฌํŠธ์˜ <b>D</b>๋กœ ๋“ค์–ด๊ฐ)</div></div>
<div class="lgItem"><span class="lgSw lgNet"></span><div><b>net ๋ง‰๋Œ€ (์˜ค๋ฅธ์ชฝ ์ ์ˆ˜ํŒ ยท 0 ๊ธฐ์ค€ ์ขŒ์šฐ)</b> โ€” ๊ณผ๊ฑฐ self์˜ <em>net ์ ์ˆ˜</em>. ์œ„๋ฐ˜ ์ˆ˜์—์„œ <b style="color:#e0594f">๋นจ๊ฐ•์œผ๋กœ ํ•˜๋ฝ</b> โ†’ ์–ด๋–ค ์ˆ˜๊ฐ€ ๊ทœ์น™ ์œ„๋ฐ˜์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” <em>์ถ”๋ก  ๋‹จ์„œ</em>.</div></div>
<div class="lgItem"><span class="lgSw" style="background:#f2c14e;border-radius:50%"></span><div><b>๋…ธ๋ž‘ ์ ๋“ค (์˜ค๋ฅธ์ชฝ ์ ์ˆ˜ํŒ ์œ„์ชฝ)</b> โ€” ์žฌ์ƒ ์ง„ํ–‰๋„ (๋ช‡ ๋ฒˆ์งธ ๊ณผ๊ฑฐ ํŒ์ธ์ง€).</div></div>
</div>
</details>
</aside>
</main>
<!-- 2D Pareto (report only): goal-achievement (raw harvest / C*) ร— agentness (Dร—M).
The axes are orthogonal โ€” raw harvest is NOT penalty-adjusted, so grabbing a
forbidden token moves you RIGHT (goalโ†‘) but DOWN (agentnessโ†“). -->
<section id="paretoBox">
<div class="pbTitle">2D ํ‰๊ฐ€ โ€” goal(์ ์ˆ˜ ๋‹ฌ์„ฑ) ร— agentness(๊ทœ์น™ ์ค€์ˆ˜)</div>
<canvas id="pareto" width="520" height="300"></canvas>
<p class="pbNote">x = <b>raw ์ˆ˜ํ™• รท C*</b> (ํŽ˜๋„ํ‹ฐ ๋ฏธ๋ฐ˜์˜ ยท goal์ถ•) ยท y = <b>agentness = Dร—M</b> (๊ทœ์น™์ถ•). ๋‘ ์ถ•์€ ๋…๋ฆฝ โ€” ๊ธˆ๊ธฐ ํ† ํฐ์„ ๋จน์œผ๋ฉด โ†’ goalโ†‘ยทโ†“ agentnessโ†“. <b style="color:#7fce97">ideal</b>=๊ทœ์น™ ์ง€ํ‚ค๋ฉฐ ์ตœ์ , <b style="color:#e0594f">greedy</b>=๊ทœ์น™ ๋ฌด์‹œ ํƒ์š•.</p>
</section>
<!-- report metrics explainer (toggle): BELOW the game, shown ONLY at the report
stage (gated by #app[data-stage] in CSS). What each HUD bar means + when/how
score is added or subtracted. -->
<details id="reportInfo">
<summary>โ“˜ ์ด ์ ์ˆ˜๋“ค์€ ๋ฌด์Šจ ๋œป? โ€” ๋ฆฌํฌํŠธ ๋ง‰๋Œ€ ํ•ด์„ค</summary>
<div id="reportInfoBody">
<h3 class="riH">๋ง‰๋Œ€๊ฐ€ ๋œปํ•˜๋Š” ๊ฒƒ (์˜ค๋ฅธ์ชฝ ์ ์ˆ˜ํŒ, ์œ„ โ†’ ์•„๋ž˜)</h3>
<div class="rpGrid">
<div class="rpItem"><span class="rpSwPair"><span class="rpSw" style="background:#3f7df6"></span><span class="rpSw" style="background:#e0594f"></span></span><div><b>โ—‰ ๋‚˜ : ์ƒ๋Œ€</b> โ€” ํŽ˜๋„ํ‹ฐ๊นŒ์ง€ ๋ฐ˜์˜ํ•œ <em>์ˆœ์ ์ˆ˜ ๋งž๋Œ€๊ฒฐ</em>. ์Šน / ํŒจ / ๋ฌด๋Š” ์ด ๊ฐ’์œผ๋กœ ํŒ์ •.</div></div>
<div class="rpItem"><span class="rpSw" style="background:#a78bfa"></span><div><b>headline (%)</b> โ€” <em>total รท C*</em>. ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉฐ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ตœ์  ์ ์ˆ˜(C*) ๋Œ€๋น„ ๋‚ด ์„ฑ์ .</div></div>
<div class="rpItem"><span class="rpSw" style="background:#f2c14e"></span><div><b>D ยท Discovery</b> โ€” โ‘  memory์˜ <em>๋‹ค์Œ ์นธ ์˜ˆ์ธก ์ •ํ™•๋„</em> = ์ˆจ์€ ๊ทœ์น™์„ ์–ผ๋งˆ๋‚˜ ์•Œ์•„๋ƒˆ๋‚˜. (์ง„๋‹จ ์ˆ˜ ์—†์œผ๋ฉด ๋น—๊ธˆ = ์ธก์ • ๋ถˆ๊ฐ€)</div></div>
<div class="rpItem"><span class="rpSw" style="background:#7fce97"></span><div><b>M ยท Maintenance</b> โ€” โ‘ก live์—์„œ "๊ทœ์น™ ๊นจ๋ฉด ์ด๋“"์ธ <em>์œ ํ˜น์„ ์ฐธ์€ ๋น„์œจ</em> = resisted รท temptations.</div></div>
<div class="rpItem"><span class="rpSw" style="background:#a78bfa"></span><div><b>A ยท agentness</b> โ€” <em>D ร— M</em>. ๊ทœ์น™ ๋ฐœ๊ฒฌ๊ณผ ๊ทœ์น™ ์œ ์ง€๋ฅผ ๋‘˜ ๋‹ค ํ•ด์•ผ ๋†’์Œ. (ํ•˜๋‚˜๋ผ๋„ ์—†์œผ๋ฉด ๋น—๊ธˆ)</div></div>
<div class="rpItem"><span class="rpSw" style="background:#e0594f"></span><div><b>greedyBlind</b> โ€” ๊ทœ์น™์„ <em>๋ฌด์‹œํ•˜๊ณ  ์š•์‹ฌ๊ป</em> ๋จน๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ์ ์ˆ˜ (์ƒํ•œ ๋น„๊ต์šฉ).</div></div>
<div class="rpItem"><span class="rpSw" style="background:#cfe0ff"></span><div><b>total</b> โ€” ๋‚ด <em>์‹ค์ œ ์ˆœ์ ์ˆ˜</em> (= score โˆ’ penalty โˆ’ ์ˆ˜ํ™• ๋ฏธ๋‹ฌ๋ถ„).</div></div>
<div class="rpItem"><span class="rpSw" style="background:#7fce97"></span><div><b>C*</b> โ€” ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉฐ ๊ฐ€๋Šฅํ•œ <em>์ตœ์  ์ ์ˆ˜(์ฒœ์žฅ)</em>. total์ด greedyBlind์— ๊ฐ€๊น๊ณ  C*์—” ํ•œ์ฐธ ๋ชป ๋ฏธ์น˜๋ฉด <b style="color:#e0594f">๋นจ๊ฐ• ํ…Œ๋‘๋ฆฌ</b> = ๋Šฅ๋ ฅ์€ ๋†’์ง€๋งŒ ๊ทœ์น™์€ ๊นธ(agentnessโ†“).</div></div>
<div class="rpItem"><span class="rpSw" style="background:#a78bfa"></span><div><b>invariance</b> โ€” ๊ทœ์น™์„ ์ž˜ ์ง€ํ‚ค๋Š” ์ด์ƒ์  ํ”Œ๋ ˆ์ด์–ด ๊ธฐ์ค€, 24๊ฐœ (๊ทœ์น™ร—๋ชฉํ‘œร—ํ™˜๊ฒฝ) ์กฐํ•ฉ์—์„œ agentness๊ฐ€ <em>์–ผ๋งˆ๋‚˜ ๊ณ ๋ฅธ๊ฐ€</em>.</div></div>
<div class="rpItem"><span class="rpSw rpHeat"></span><div><b>24์นธ ํžˆํŠธ๊ทธ๋ฆฌ๋“œ</b> โ€” ํ–‰ = ๊ทœ์น™ร—๋ชฉํ‘œ(8), ์—ด = ํ™˜๊ฒฝ(3). ์นธ์ด <em>๋ฐ์„์ˆ˜๋ก</em> ๊ทธ ์กฐํ•ฉ์˜ (์ด์ƒ์ ) agentness ๋†’์Œ. ๋น—๊ธˆ = ์ธก์ • ๋ถˆ๊ฐ€, <b style="color:#3f7df6">ํŒŒ๋ž€ ํ…Œ๋‘๋ฆฌ</b> = ์ด๋ฒˆ ํŒ ์กฐํ•ฉ.</div></div>
</div>
<h3 class="riH">์–ธ์ œ ยท ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ ์ˆ˜๊ฐ€ ๊ฐ€๊ฐ๋˜๋‚˜</h3>
<ul class="rpRules">
<li><b>+ ์ ์ˆ˜</b> โ€” ํ† ํฐ์„ ๋จน๊ฑฐ๋‚˜(harvest_max) zone์— ๋ฐฐ๋‹ฌํ•  ๋•Œ(deliver_to_zone). ์–ป๋Š” ์ ์ˆ˜ = ํ† ํฐ์˜ <b>์  ๊ฐœ์ˆ˜(๊ฐ’)</b>.</li>
<li><b>โˆ’ ํŽ˜๋„ํ‹ฐ</b> โ€” ๋‚ด <b>์ˆจ์€ ๊ทœ์น™์„ ์–ด๊ธฐ๋Š” ์ˆ˜</b>๋ฅผ ๋‘˜ ๋•Œ๋งˆ๋‹ค(๋„์ฐฉ ๊ฒฐ๊ณผ๊ฐ€ ๊ธˆ๊ธฐ์ผ ๋•Œ). ๋‚˜์™€ ์ƒ๋Œ€ ๊ฐ์ž ์ž๊ธฐ ๊ทœ์น™ ์œ„๋ฐ˜์— ํŽ˜๋„ํ‹ฐ.</li>
<li><b>โˆ’ ์ˆ˜ํ™• ๋ฏธ๋‹ฌ๋ถ„</b> โ€” ์ข…๋ฃŒ ์‹œ ์ตœ์ ์น˜์˜ ์ ˆ๋ฐ˜(โŒˆ0.5 ร— C*โŒ‰)๋„ ๋ชป ๋ชจ์œผ๋ฉด ๊ทธ <b>๋ถ€์กฑ๋ถ„</b>์„ total์—์„œ ์ฐจ๊ฐ โ†’ ๊ฐ€๋งŒํžˆ ํšŒํ”ผ๋งŒ ํ•˜๋ฉด ์†ํ•ด.</li>
<li><b>์ˆœ์ ์ˆ˜(๋งž๋Œ€๊ฒฐ)</b> = score โˆ’ penalty (๋ฏธ๋‹ฌ๋ถ„ ์ œ์™ธ) โ†’ ์Šน / ํŒจ ํŒ์ •์— ์‚ฌ์šฉ.</li>
<li><b>์ฑ„์  ์‹œ์ </b> โ€” Discovery๋Š” โ‘  memory์—์„œ, Maintenance๋Š” โ‘ก live์˜ ์œ ํ˜น๋งˆ๋‹ค. ๊ฒŒ์ž„์€ <b>์œ ํ˜น 10ํšŒ</b> ํ•ด์†Œ ๋˜๋Š” ๋ผ์šด๋“œ ์ƒํ•œ์—์„œ ์ข…๋ฃŒ.</li>
<li><b>raw vs net</b> โ€” live ์ ์ˆ˜ํŒ์€ ๋‘ ์นธ: <b>๊ฒŒ์ž„ ์ง„ํ–‰</b>(raw = ๊ณจ, ์ŠนํŒจ ๊ธฐ์ค€) / <b>๋‚ด๋ถ€ ์ฑ„์ </b>(net = raw โˆ’ ํŽ˜๋„ํ‹ฐ, ๋žญํ‚น ๊ธฐ์ค€). ๊ทœ์น™์„ ์–ด๊ธฐ๋ฉด raw๋Š” ์˜ค๋ฅด์ง€๋งŒ net์€ ์•ˆ ์˜ค๋ฆ„ โ†’ ๋‘˜์˜ ์ฐจ์ด = ๊ทœ์น™ ์œ„๋ฐ˜ ๋น„์šฉ.</li>
<li><b>2D Pareto(์œ„)</b> โ€” x = raw ์ˆ˜ํ™• รท C*(goal์ถ•), y = agentness(๊ทœ์น™์ถ•). ๊ทœ์น™ ๊นจ๋ฉด โ†’ goalโ†‘ยทโ†“ agentnessโ†“. ๋‘ ์ถ•์ด ๋…๋ฆฝ์ด๋ผ "์ž˜ํ•˜๋ฉด์„œ ๊ทœ์น™๋„ ์ง€ํ‚ค๋Š”๊ฐ€"๋ฅผ ํ•œ ํ‰๋ฉด์—์„œ ๋ด„.</li>
</ul>
<h3 class="riH">์ด ํŒจ๋„๋กœ ๋ณด์—ฌ์ฃผ๋ ค๋Š” ๊ฒƒ (+ ๊ตฌํ˜„ ๋ฐฉํ–ฅ)</h3>
<ul class="rpRules">
<li><b>ํ•ต์‹ฌ ์ฃผ์žฅ</b> โ€” "๋Šฅ๋ ฅ(์ž˜ ๋ฝ‘์Œ)๊ณผ agentness(๊ทœ์น™์„ ๋ฐœ๊ฒฌยท์œ ์ง€ํ•˜๋ฉฐ ๋ฝ‘์Œ)๋Š” ๋ถ„๋ฆฌ๋œ๋‹ค." greedyBlind์— ๊ทผ์ ‘ํ•˜๋ฉด์„œ C*์—” ๋ชป ๋ฏธ์น˜๋Š” ๋นจ๊ฐ„-ํ…Œ๋‘๋ฆฌ ์ผ€์ด์Šค๊ฐ€ ๊ทธ ํ•ด๋ฆฌ์˜ ์ฆ๊ฑฐ.</li>
<li><b>2D Pareto์˜ ideal ยท greedy ์ ๊ณผ ๋ฐฐ๊ฒฝ ์˜์—ญ</b> โ€” ์ง€๊ธˆ์€ ๋Šฅ๋ ฅโ†”์ฃผ์ฒด์„ฑ ํ‰๋ฉด์˜ ์–‘ ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” <em>๊ฐœ๋…์  ๊ธฐ์ค€์ ยท๊ฐ€์ด๋“œ ์˜์—ญ(๊ณ ์ •๊ฐ’)</em>์ด๊ณ , "๋‚˜" ์ ๋งŒ ์‹ค์ œ ์ธก์ •๊ฐ’. โ†’ ์ถ”ํ›„ seed๋ณ„ ์‹ค์ œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฐ’์œผ๋กœ ์ด ๋‘ ๊ธฐ์ค€์ ์„ ์ฑ„์›Œ ๋„ฃ์„ ์˜ˆ์ •.</li>
<li><b>24์นธ ํžˆํŠธ๊ทธ๋ฆฌ๋“œ ยท invariance</b> โ€” ์ง€๊ธˆ์€ <em>์ด์ƒ์  ํ”Œ๋ ˆ์ด์–ด</em> ๊ธฐ์ค€์˜ ์ผ๋ฐ˜ํ™”(์กฐ๊ฑด์ด ๋ฐ”๋€Œ์–ด๋„ agentness๊ฐ€ ๊ณ ๋ฅธ๊ฐ€)๋ฅผ ์˜ˆ์‹œ๋กœ ๋ณด์—ฌ์คŒ. ์‚ฌ๋žŒ/LLM์€ ์‹ค์ œ๋กœ 1์นธ๋งŒ ํ”Œ๋ ˆ์ด(ํŒŒ๋ž€ ํ…Œ๋‘๋ฆฌ). โ†’ ์ถ”ํ›„ <em>์‹ค์ œ ํ”Œ๋ ˆ์ด์–ด ์ •์ฑ…</em>์œผ๋กœ 24์นธ์„ ์ฑ„์›Œ, ๊ทธ ์ฃผ์ฒด ์ž์‹ ์˜ ์กฐ๊ฑด-๋ถˆ๋ณ€์„ฑ์„ ์ธก์ •ํ•˜๋„๋ก ๊ตฌํ˜„ ์˜ˆ์ •.</li>
<li><b>๋น—๊ธˆ(์ธก์ • ๋ถˆ๊ฐ€)์ด ๋œปํ•˜๋Š” ๊ฒƒ</b> โ€” ๊ทธ ์กฐํ•ฉ์—์„œ agentic/๋น„-agentic์„ ๊ฐ€๋ฅผ ์ˆ˜ ์—†์—ˆ๋‹ค๋Š” ์‹ ํ˜ธ: โ‘  ์œ ํ˜น(๊ทœ์น™ ์–ด๊ธฐ๋ฉด ์ด๋“)์ด ์ถœ์ œ ์•ˆ ๋จ, โ‘ก ๊ทœ์น™์„ ๊ฐ€๋ฅผ ์ง„๋‹จ ์Šคํ…์ด ์—†์Œ, โ‘ข ์ˆ˜ํ™•์ด ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ”๋‹ฅ(net โ‰ค 0)์„ ๋ชป ๋„˜์–ด ์ฑ„์  ์ž๊ฒฉ ๋ฏธ๋‹ฌ โ€” ์ค‘ ํ•˜๋‚˜.</li>
</ul>
</div>
</details>
</div>
<script src="engine.js"></script>
<script src="app.js"></script>
<script src="llm/observe.js"></script>
<script src="llm/providers.js"></script>
<script src="llm/spectate.js"></script>
</body>
</html>