소스 정보
- 저장소
- SimHacker/moollm
- 최근 소스 활동
- 2026년 2월 7일 14:40
- 감지된 SKILL.md 언어
- 영어
- 스타
- 60
- 포크
- 5
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
파일 탐색기
5 개 파일SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- advertisement
- description
- Objects announce what they can do — The Sims style
- allowed-tools
- ["read_file","write_file","list_dir"]
- tier
- 1
- protocol
- ADVERTISEMENT
- related
- ["card","object","society-of-mind","room","action-queue","coherence-engine","needs"]
- tags
- ["moollm","game","interaction","sims","behavior","autonomy"]
# Advertisement
> *"Objects don't wait to be used — they announce what they can do."*
---
## What Is It?
**Advertisement** is The Sims-style object interaction: every object in a room broadcasts its available actions, scored by relevance to the current context.
Instead of the user memorizing commands, objects **advertise** what's possible:
```
You approach the workbench.
Available actions (sorted by relevance):
⭐ CRAFT tool (you have materials)
• EXAMINE blueprints
• ORGANIZE parts
• MORE options...
```
---
## The Sims Connection
In **The Sims**, objects have "advertisements" — each interaction scores based on:
- The Sim's current needs (hunger, fun, social)
- Object properties (a fridge scores high for hunger)
- Context (can't use stove if broken)
This extensible object architecture was **key to The Sims' massive success**:
- **User-created objects** — anyone could make new furniture, appliances, characters
- **Expansion packs** — just drop in new objects with their advertisements
- **No code changes** — objects self-describe their behaviors
- **Infinite variety** — the community created millions of objects
The same YAML file that defines what an object *is* also defines what it *can do*. Plug-in architecture for free.
MOOLLM applies this to **any object**:
```yaml
# workbench.yml
type: object
advertisements:
- action: CRAFT
score_if: "has_materials AND has_skill"
satisfies: [productivity, creativity]
- action: EXAMINE
score_if: "always"
satisfies: [curiosity]
- action: MORE
score_if: "always"
satisfies: [exploration]
```
---
## How It Works
### 1. Objects Broadcast
Every object in the room has an `advertisements` list:
```yaml
advertisements:
- action: USE
description: "Activate this tool"
preconditions: [in_inventory, charged]
score: 80
- action: EXAMINE
description: "Look closely"
preconditions: [] # always available
score: 50
```
### 2. Context Scores
Scores adjust based on:
- **Character needs** — hungry character scores FOOD higher
- **Current goals** — research goal scores EXAMINE higher
- **Environment** — dark room scores LIGHT higher
### 3. Pie Menu Appears
Top actions surface in the [PIE-MENU](../room/):
```
[CRAFT]
⭐
[ORGANIZE] • [EXAMINE]
•
[MORE]
```
Center = highest score = default action.
---
## Autonomous Selection
For **autonomous agents**, advertisements enable self-direction:
```
Agent evaluates all objects in room:
workbench: CRAFT (85), EXAMINE (50)
bookshelf: READ (70), ORGANIZE (30)
door: EXIT (40)
Agent selects: CRAFT at workbench (score 85)
```
No hardcoded behavior. Objects define possibilities. Agent selects based on goals.
---
## Example: Smart Room
```yaml
# research-lab/ROOM.yml
objects:
- microscope:
advertisements:
- action: ANALYZE_SAMPLE
score_if: "has_sample"
score: 90
- action: CALIBRATE
score_if: "accuracy < 0.9"
score: 60
- notebook:
advertisements:
- action: WRITE_NOTES
score_if: "has_observations"
score: 75
- action: REVIEW
score: 40
- coffee_maker:
advertisements:
- action: BREW
score_if: "fatigue > 0.3"
score: 65
- action: CLEAN
score_if: "uses > 5"
score: 30
```
Agent enters, sees:
```
Top actions:
1. ANALYZE_SAMPLE at microscope (90) — you have a sample!
2. WRITE_NOTES at notebook (75) — observations pending
3. BREW at coffee_maker (65) — you're a bit tired
```
---
## SimAntics Heritage
This is **SimAntics** — The Sims' behavioral engine:
| SimAntics | MOOLLM |
|-----------|--------|
| Object advertisement | `advertisements:` list in YAML |
| Motive scores | Context-based scoring |
| Autonomous selection | Agent picks highest-scored action |
| Pie menu | [PIE-MENU](../room/) for user interaction |
Don Hopkins worked on SimAntics. This is that tradition, for LLM agents.
---
## HyperCard-Style Event Bubbling
When you click an advertised action, it triggers a **symbolic event** that bubbles up:
```
Click CRAFT on workbench
Event path:
1. workbench (object) → handles CRAFT? no, pass up
2. workshop/ (room) → handles CRAFT? no, pass up
3. building/ (parent) → handles CRAFT? no, pass up
4. world/ (root) → handles CRAFT? no, check inheritance
5. workbench-prototype → handles CRAFT? YES → execute
```
Just like HyperCard: events bubble from button → card → background → stack.
### Containment Tree (Spatial)
Events bubble **up** the room hierarchy:
```
object in room in parent-room in world
↑ ↑ ↑ ↑
event bubbles up
```
### Inheritance Graph (Prototype)
If no handler in containment tree, check the **prototype chain**:
```
workbench
↓ inherits from
furniture-prototype
↓ inherits from
object-prototype → has default CRAFT handler!
```
### Combined Path
```yaml
# Event resolution order:
1. The object itself
2. Parent room
3. Grandparent room
4. ... up to world root
5. Object's prototype
6. Prototype's prototype
7. ... up to root prototype
```
First handler that responds wins. Unhandled events can:
- Log a warning
- Trigger POSTEL (charitable interpretation)
- Invoke a default handler
### Example: Custom Behavior
```yaml
# workshop/ROOM.yml
handles:
CRAFT: |
# Room-level craft handler
Check if character has required skill.
Check if materials available in room.
If conditions met, delegate to object.
Otherwise, suggest where to get materials.
```
The room intercepts CRAFT before it reaches the object, adding room-specific logic.
---
## Dovetails With
- [Room](../room/) — Where objects live and advertise
- [PIE-MENU](../room/) — How advertisements surface to users
- [SNAP-CURSOR](../room/) — Context-aware object interaction
- [Coherence Engine](../coherence-engine/) — Evaluates and selects actions
- [Trading Card](../card/) — Cards can advertise too
- [Rubric](../rubric/) — **Scoring criteria** for advertisement evaluation
- [Scoring](../scoring/) — How scores are calculated and valued
---
## Protocol Symbols
```
ADVERTISEMENT — Objects announce available actions
AUTONOMOUS-SELECTION — Agent picks based on scores
SIMANTICS — The Sims behavioral model
PIE-MENU — Radial display of options
FLY-UNDER-RADAR — Normalize through defaults
PROCEDURAL-RHETORIC — Rules carry ideology
```
See: [PROTOCOLS.yml](../../PROTOCOLS.yml)
---
## The Deep Insight
From [SIMANTICS](../../PROTOCOLS.yml):
> *"The Sims' AI isn't centralized — it's distributed throughout objects."*
> *"A refrigerator knows it offers food. A bed knows it offers sleep."*
> *"The Sim chooses from what's advertised nearby."*
This IS MOOLLM's architecture. Objects self-describe. The coherence engine orchestrates. Intelligence is **distributed** throughout the world.
The advertisements ARE the AI.
GitHub에서 보기