11 KiB
🏘️ GOD Town · Experiment 1
The Ville · 一个普通工作日的清晨
10 位居民 · 10 个地点 · 65 个 location-scoped 交互
▶️ 运行 · 🧪 配置 · 🗺️ 世界 & 地图 · 👥 居民 · 🎯 技能与动作 · ⏱️ Step 计划
▶️ Run
# 推荐:通过 GOD 控制台启动(会清掉旧 replay)
./scripts/god.sh new-run
# 或者:前台 CLI 跑(适合调试单步)
./agentsociety/quick_experiments/hypothesis_god_town/experiment_1/run.sh
启动完成后打开:
http://127.0.0.1:5174/pixel-replay/god_town/1
🧪 Experiment Config
整个实验由两份文件描述。GOD 控制台读它们启动 live session,replay 也基于同一份契约。
| 文件 | 作用 |
|---|---|
init/init_config.json |
世界 + Agent 初始化:地图模块、初始位置、10 位居民 profile、shared 世界上下文。 |
init/steps.yaml |
Step 计划:从哪个时间点开始,自动推几步、每步多长 tick。 |
run.sh |
用 AgentSociety CLI 把上面两份配置拼到一起跑起来。 |
🌍 共享世界 (experiment_context)
每位居民每一步都看得到的「世界字典」:
title: GOD Town · The Ville 普通工作日
date / weekday: 2026-05-12 · Tuesday · late_spring
weather: 晴, 18°C, 微风
school_in_session: true market_day: false
shared_norms:
- 先观察再行动,不要把日常都升级成紧急事件
- 尊重隐私,不主动转述他人秘密
- 群消息只发公共/必要信息,私事走 direct_message
- 见面打招呼简短自然,不进入工作话题前不要追问私事
town_facts:
- Hobbs Cafe 是大家碰头的缓冲地
- The Willows Market 和 Pharmacy 共用一栋建筑
- Johnson Park 是公共空间,也是社区公告首选地
- Oak Hill College 既有教室也有图书馆和宿舍
- The Rose and Crown Pub 主要在傍晚和晚上活跃
language: 优先中文,必要时双语补充
⚙️ 环境模块 (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 # 每个 simulation step 推进的路径格数
movement_min_steps_per_trip: 3 # 跨地点最少占多少 step
10 位居民在 t=0 时的初始位置:
| 公园 🌳 | 市场 🛒 | 学校 🏫 | 药房 💊 | 咖啡馆 ☕ | 供给店 🛠️ | 家 🏠 |
|---|---|---|---|---|---|---|
| Alice · George | Bob · Mei | Charlie · Farah | Dana | Elena | Ivan | Hana |
🗺️ World & Map
地图源自经典 The Ville 像素小镇,
被整理成 GOD 可拔插地图包,并裁剪为 10 个语义地点 + 65 个交互。
地图清单见 custom/maps/the_ville/map.yaml。
| 🏠 家 9 个交互 做饭 · 在家吃饭 · 睡觉 · 居家休息 · 整理家务 · 在家阅读 · 居家办公 · 视频家人 · 浇花 |
🏫 学校教室 7 个交互 上课 · 教书 · 课后学习 · 备课 · 批改作业 · 课后答疑 · 教研例会 |
📚 学校图书馆 6 个交互 阅读 · 图书馆学习 · 资料查阅 · 借书 · 还书 · 安静办公 |
☕ Hobbs Cafe 7 个交互 简餐 · 咖啡聊天 · 咖啡馆值班 · 点咖啡 · 外带 · 随性碰头 · 整理咖啡馆 |
🌳 Johnson Park 8 个交互 散步 · 见朋友 · 长椅休息 · 公园碰头 · 晨练 · 观鸟 · 简单野餐 · 公共播报 |
| 🛠️ Harvey Oak 供给店 6 个交互 清点货架 · 准备用品 · 修理工具 · 上货 · 顾客接待 · 借出工具 |
🛒 Willows Market 6 个交互 买食物 · 店铺值班 · 蔬果补货 · 议价 · 送单 · 和老客闲聊 |
💊 Willows Pharmacy 6 个交互 买药 · 药房咨询 · 续方 · 量血压 · 整理药架 · 上门准备 |
🍻 Rose and Crown Pub 5 个交互 酒馆社交 · 酒馆用餐 · 看比赛 · 晚间闲聊 · 主持小活动 |
🛏️ Oak Hill 宿舍 5 个交互 宿舍休息 · 宿舍用餐 · 宿舍自习 · 公共区休闲 · 视频家里 |
每个交互都是结构化的:allowed_location_ids 限定能在哪里发生,effects 决定动作描述、状态、情绪和发到群里的消息。
🎬 一条交互长这样
- id: public_announcement
name: 公共播报
description: 在 Johnson Park 向群组发布公共公告或提醒。
allowed_location_ids: [park]
effects:
action: "{agent_name} 正在公园发布一条公共公告"
status: socializing
emotion: focused
latest_event: "{agent_name} 在公园发出了一条公共公告。"
group_message: "{agent_name} 在公园通知大家:{message}"
👥 Residents
10 位居民共享 5 个维度的设定,但每个人物性格、节奏、负担都不同:
| 🧭 Jiuwen Alice ♀ · 34 · 社区协调员 温和、守时、责任心强 |
🛠️ Jiuwen Bob ♂ · 45 · 五金店主 务实、嘴短心软 |
📖 Jiuwen Charlie ♂ · 39 · 中学历史老师 耐心、克制、爱讲故事 |
💊 Jiuwen Dana ♀ · 41 · 药房护理员 专业、温和、谨慎 |
☕ Jiuwen Elena ♀ · 36 · 咖啡馆老板 外向、热情、有分寸 |
| 🎒 Jiuwen Farah ♀ · 16 · 高中学生 好奇、敏捷、社交略紧张 |
📮 Jiuwen George ♂ · 68 · 退休邮递员 慢热、幽默、记忆好 |
💻 Jiuwen Hana ♀ · 28 · 远程工程师 安静、严谨、新搬来 |
🦺 Jiuwen Ivan ♂ · 52 · 安全志愿者 稳重、克制、爱观察 |
🍅 Jiuwen Mei ♀ · 47 · 蔬果摊主 风风火火、爱开玩笑 |
🧬 Profile 字段(每个居民都有)
| 维度 | 字段 |
|---|---|
| 🪪 身份 | age · gender · role · family · housing · economic_status · health |
| 🧠 心智 | persona · emotional_baseline · language_style · quirks · triggers · dislikes |
| 📅 节奏 | daily_routine · detailed_routine (morning · late_morning · noon · afternoon · evening · night) |
| 🤝 关系 | relationships · social_network (9 条名->标签) |
| 🎯 目标 | needs · worries · secrets · short_term_goals · long_term_goal · goal · constraints |
| 🎒 状态 | inventory · recent_history · skills |
🪟 Profile 速写示例 · Alice
role: 社区协调员 / neighborhood coordinator
emotional_baseline: calm, attentive
language_style: 温和、简短,先问候再切入事项;不爱使用感叹号
inventory: [手机, 钥匙, 小笔记本, 签字笔, 一瓶水]
needs: [完成今日邻里巡看, 确认 George 状况, 回 Bob 关于公告的消息]
worries: [周末活动场地未敲定, George 最近少出门]
secrets: [前任也是社区志愿者, 月初家里出过一次小漏水自己修的]
quirks: [写小纸条贴在咖啡馆柜台留言, 习惯说『好的、我记一下』]
long_term_goal: 让镇上常规事务不依赖她个人也能稳定运转
完整 profile 见 init_config.json ·
其他 9 位居民同样精细,包括秘密、小怪癖和最近的小事。
🎯 Skills & Actions
每位居民有 5 个 JiuwenClaw 风格的 skill id。这些 id 不是装饰 ——
skill_runtime 关闭时它们作为人物画像让 LLM 知道「能做什么」,开启后会被注册为实际可调用的工具。
🧭 Alice · 社区协调
community.coordinate
conflict.mediate
first_aid.basic
notice.write
messaging.group
🛠️ Bob · 工具与维修
tools.repair
inventory.count
route.localmap
ledger.basic
neighbor.support
…… 其余详见 init_config.json
⏱️ Step Plan
实验默认从早晨 8:20 开始,每个 step 推进半小时模拟时间:
start_t: "2026-05-11T08:20:00+08:00"
steps:
- type: run
num_steps: 4 # 自动推 4 个 step(约两小时)
tick: 1800 # 1800 秒 / step = 30 分钟
之后你随时可以从控制台 暂停 / 提问 / 干预 / 继续推进,整个过程依然遵循同一份初始 config —— GOD 只是在合适的时机改写下一步而已。
📂 Files
experiment_1/
├── README.md ← English
├── README.zh-CN.md ← 你在看
├── run.sh ← AgentSociety CLI 入口
└── init/
├── init_config.json ← 10 位居民 + 共享世界 + 环境模块
└── steps.yaml ← 起始时间 + step 计划
自定义自己的实验?复制整个
experiment_1/,改完丢到quick_experiments/<your_hypothesis>/<your_experiment>/,把GOD_EXPERIMENT指过去就行。 或者从 GOD 控制台的 Setup Wizard 一键生成新副本。