Files
wehub-resource-sync aa1a5d5763
CI / Release hygiene (push) Waiting to run
CI / Python targeted tests (push) Waiting to run
CI / Frontend build (push) Waiting to run
Pages / Build and deploy public pages (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:18:17 +08:00

12 KiB

🏘️ GOD Town · Experiment 1

The Ville · an ordinary weekday morning
10 residents · 10 locations · 65 location-scoped interactions

▶️ Run · 🧪 Config · 🗺️ World & Map · 👥 Residents · 🎯 Skills & Actions · ⏱️ Step Plan

🌏 中文


▶️ Run

# Recommended: launch through the GOD control room (wipes the previous replay)
./scripts/god.sh new-run

# Or: foreground CLI run (good for single-step debugging)
./agentsociety/quick_experiments/hypothesis_god_town/experiment_1/run.sh

When startup finishes, open:

http://127.0.0.1:5174/pixel-replay/god_town/1

🧪 Experiment Config

The whole experiment is described by two files. The GOD control room reads them to spin up a live session; replays follow the same contract.

File Purpose
init/init_config.json World + agent init: map module, initial locations, 10 resident profiles, shared world context.
init/steps.yaml Step plan: starting timestamp, how many steps to auto-advance, how long each tick is.
run.sh Wires both configs into the AgentSociety CLI.

🌍 Shared World (experiment_context)

The "world dictionary" every resident reads on every step:

title:           GOD Town · The Ville ordinary weekday
date / weekday:  2026-05-12 · Tuesday · late_spring
weather:         sunny, 18°C, light breeze
school_in_session: true     market_day: false
shared_norms:
  - Observe first, act second — do not escalate routine moments into emergencies.
  - Respect privacy. Do not forward other people's secrets unprompted.
  - Use group chat for public/necessary information only; keep personal matters in direct_message.
  - Greetings stay short and natural. Do not pry into private matters before any work topic.
town_facts:
  - Hobbs Cafe is the neighborhood's casual meeting buffer.
  - The Willows Market and the Pharmacy share one building.
  - Johnson Park is public space and the default place for community announcements.
  - Oak Hill College hosts classrooms, the library, and the dorm.
  - The Rose and Crown Pub is mostly active in the late afternoon and evening.
language: Prefer Chinese, switch to bilingual when necessary.

⚙️ Environment Module (env_modules)

PixelTownSocialEnv:
  map_manifest_path:           custom/maps/the_ville/map.yaml
  default_group_name:          The Ville Daily Life Chat
  movement_tiles_per_second:   8.0      # path tiles advanced per simulation step
  movement_min_steps_per_trip: 3        # minimum steps consumed when crossing locations

The 10 residents' starting locations at t=0:

Park 🌳 Market 🛒 School 🏫 Pharmacy 💊 Cafe Supply Store 🛠️ Home 🏠
Alice · George Bob · Mei Charlie · Farah Dana Elena Ivan Hana

🗺️ World & Map

The map is sourced from the classic The Ville pixel town, repackaged as a pluggable GOD map and trimmed to 10 semantic locations + 65 interactions. The manifest lives at custom/maps/the_ville/map.yaml.

🏠
Home
9 interactions
cook · eat at home · sleep · rest · tidy · read at home · WFH · video-call family · water plants
🏫
Classroom
7 interactions
attend class · teach · after-class study · lesson prep · grade · office hours · faculty meeting
📚
Library
6 interactions
read · study · research · borrow · return · quiet work

Hobbs Cafe
7 interactions
light meal · coffee chat · barista shift · order coffee · takeaway · casual meetup · tidy cafe
🌳
Johnson Park
8 interactions
walk · meet friend · bench rest · park meetup · morning exercise · birdwatch · light picnic · public announcement
🛠️
Harvey Oak Supply
6 interactions
stock check · prep supplies · repair tools · restock · customer service · lend tools
🛒
Willows Market
6 interactions
buy food · shop shift · restock produce · haggle · deliver · chat with regulars
💊
Willows Pharmacy
6 interactions
buy medicine · pharmacy consult · refill · check BP · tidy shelves · home-visit prep
🍻
Rose and Crown Pub
5 interactions
pub socialize · pub meal · watch the match · evening chatter · host small event
🛏️
Oak Hill Dorm
5 interactions
dorm rest · dorm meal · dorm self-study · common-room hangout · video-call home

Every interaction is structured: allowed_location_ids constrains where it can happen, and effects drive the action description, status, emotion, and the group-chat message.

🎬 What one interaction looks like

- id: public_announcement
  name: Public Announcement
  description: Post a public notice or reminder to the group from Johnson Park.
  allowed_location_ids: [park]
  effects:
    action:        "{agent_name} is posting a public announcement in the park"
    status:        socializing
    emotion:       focused
    latest_event:  "{agent_name} just posted a public announcement in the park."
    group_message: "{agent_name} announces from the park: {message}"

👥 Residents

10 residents share five profile dimensions, but each one has a different personality, pace, and life weight:

🧭
Jiuwen Alice
♀ · 34 · Neighborhood coordinator
gentle, punctual, responsible
🛠️
Jiuwen Bob
♂ · 45 · Supply-store owner
pragmatic, soft-hearted under a gruff voice
📖
Jiuwen Charlie
♂ · 39 · High-school history teacher
patient, restrained, a born storyteller
💊
Jiuwen Dana
♀ · 41 · Pharmacy nurse
professional, gentle, careful

Jiuwen Elena
♀ · 36 · Cafe owner
extroverted, warm, knows when to back off
🎒
Jiuwen Farah
♀ · 16 · High-school student
curious, quick, slightly socially anxious
📮
Jiuwen George
♂ · 68 · Retired postman
slow-warming, funny, sharp memory
💻
Jiuwen Hana
♀ · 28 · Remote software engineer
quiet, rigorous, newly moved in
🦺
Jiuwen Ivan
♂ · 52 · Public-safety volunteer
steady, restrained, observant
🍅
Jiuwen Mei
♀ · 47 · Market vegetable vendor
boisterous, loves to joke

🧬 Profile fields (every resident has them)

Dimension Fields
🪪 Identity age · gender · role · family · housing · economic_status · health
🧠 Mind persona · emotional_baseline · language_style · quirks · triggers · dislikes
📅 Rhythm daily_routine · detailed_routine (morning · late_morning · noon · afternoon · evening · night)
🤝 Ties relationships · social_network (9 name → label entries)
🎯 Goals needs · worries · secrets · short_term_goals · long_term_goal · goal · constraints
🎒 State inventory · recent_history · skills

🪟 Profile snippet · Alice

role:               neighborhood coordinator
emotional_baseline: calm, attentive
language_style:     warm and short; greets before getting to the point; rarely uses exclamation marks
inventory:          [phone, keys, small notebook, pen, water bottle]
needs:              [finish today's neighborhood walk, check in on George, reply to Bob about the notice]
worries:            [weekend event venue still undecided, George has been going out less lately]
secrets:            [ex-partner was also a community volunteer, quietly fixed a small leak at home this month]
quirks:             [leaves sticky notes on the cafe counter, says "okay, let me write that down"]
long_term_goal:     get the town's routine work to run smoothly without depending on her personally

Full profile lives in init_config.json — the other nine residents are just as detailed, including secrets, quirks, and what's been going on lately.

🎯 Skills & Actions

Every resident carries 5 JiuwenClaw-style skill IDs. They are not decorative — with skill_runtime off they act as character cues that tell the LLM what the resident "can do"; with skill_runtime on they are registered as actual callable tools.

🧭 Alice · community coordination

community.coordinate
conflict.mediate
first_aid.basic
notice.write
messaging.group

🛠️ Bob · tools & repair

tools.repair
inventory.count
route.localmap
ledger.basic
neighbor.support

... see init_config.json for the rest.

⏱️ Step Plan

The experiment starts at 8:20 in the morning and advances 30 minutes of in-world time per step:

start_t: "2026-05-11T08:20:00+08:00"
steps:
  - type: run
    num_steps: 4         # auto-advance 4 steps (~2 in-world hours)
    tick: 1800           # 1800 seconds / step = 30 minutes

From there, pause / ask / intervene / continue at will from the control room. The whole run still obeys the same init config — GOD only rewrites the next step at the right moment.

📂 Files

experiment_1/
├── README.md              ← you are here
├── run.sh                 ← AgentSociety CLI entry point
└── init/
    ├── init_config.json   ← 10 residents + shared world + environment module
    └── steps.yaml         ← starting time + step plan

Want your own experiment? Copy the whole experiment_1/ folder, edit it, drop it under quick_experiments/<your_hypothesis>/<your_experiment>/, and point GOD_EXPERIMENT at it. Or just spin up a new copy from the Setup Wizard in the GOD control room.