refactor world desc

This commit is contained in:
bridge
2026-01-03 21:25:24 +08:00
parent f7a4fb23c8
commit e2d03b587d
11 changed files with 47 additions and 16 deletions

View File

@@ -87,6 +87,13 @@ class ActionMixin:
)
continue
# 再验证
if not isinstance(plan.params, dict):
get_logger().logger.warning(
"非法参数: Avatar(name=%s) 动作 %s 参数类型错误: %s",
self.name, plan.action_name, type(plan.params)
)
continue
params_for_can_start = filter_kwargs_for_callable(action.can_start, plan.params)
can_start, reason = action.can_start(**params_for_can_start)
if not can_start:

View File

@@ -71,10 +71,13 @@ class MutualAction(DefineAction, LLMAction, ActualActionMixin, TargetingMixin):
avatar_name_2: target_avatar.get_info(detailed=False),
}
world_info = self.world.static_info
feedback_actions = self.FEEDBACK_ACTIONS
desc = self.DESC
action_name = self.ACTION_NAME
return {
"world_info": world_info,
"avatar_infos": avatar_infos,
"avatar_name_1": avatar_name_1,
"avatar_name_2": avatar_name_2,

View File

@@ -71,6 +71,7 @@ async def generate_nickname(avatar: "Avatar") -> Optional[dict]:
# 准备模板参数
template_path = CONFIG.paths.templates / "nickname.txt"
infos = {
"world_info": avatar.world.static_info,
"avatar_info": expanded_info,
}

View File

@@ -33,10 +33,12 @@ async def make_decision(
# 3. 调用 AI
template_path = CONFIG.paths.templates / "single_choice.txt"
world_info = avatar.world.static_info
result = await call_llm_with_task_name(
"single_choice",
template_path,
infos={
"world_info": world_info,
"avatar_infos": avatar_infos,
"choices": full_choices_str
}

View File

@@ -65,11 +65,11 @@ class StoryTeller:
"""构建模板渲染所需的数据字典"""
# 默认空关系列表
possible_new_relations = []
possible_cancel_relations = []
avatar_name_1 = ""
avatar_name_2 = ""
world_info = actors[0].world.static_info
# 如果有两个有效角色,计算可能的关系
non_null = [a for a in actors if a is not None]
if len(non_null) >= 2:
@@ -77,6 +77,7 @@ class StoryTeller:
avatar_name_2 = non_null[1].name
return {
"world_info": world_info,
"avatar_infos": avatar_infos,
"avatar_name_1": avatar_name_1,
"avatar_name_2": avatar_name_2,

View File

@@ -33,7 +33,7 @@ class World():
world_info = {**map_info, **static_info}
if self.current_phenomenon:
world_info["天地灵机"] = f"{self.current_phenomenon.name}{self.current_phenomenon.desc}"
world_info["当前天地灵机"] = f"{self.current_phenomenon.name}{self.current_phenomenon.desc}"
return world_info
@@ -45,16 +45,18 @@ class World():
@property
def static_info(self) -> dict:
desc = """这是一个诸多修士竞相修行的修仙世界。
修仙的境界从弱到强:练气、筑基、金丹、元婴。每个境界分前期、中期、后期。境界间差距很大。
寿元:每个角色均有寿元,超过寿元后容易老死。提升境界和某些宝物、丹药能提高寿元。
死亡HP降至0以下也会死亡。
区域:不同区域有不同效果,在适当的区域做适当的事情事半功倍。
修炼:修炼可以增加经验,直到到达突破前的瓶颈。突破是概率事件,突破后会进入下一个境界。
灵根:决定了你与天地灵气的亲和度。在与自身灵根属性匹配的区域(如火灵根在火属性洞府)修炼,效率最高。
天地灵机:世界每隔数年会有一次天象变动(如灵气潮汐),影响角色能力。
灵石:修仙界的通用货币。可用于购买法宝丹药,通过采集、交易或掠夺获取。
宗门:修士的庇护所。加入宗门可习得独门功法、获同门庇护;散修自由但资源匮乏。
战斗:弱肉强食。境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物。
动作:你有一系列可以执行的动作。要注意动作的效果、限制条件、区域和时间"""
return {"世界描述": desc}
desc = {
"简介": "这是一个诸多修士竞相修行的修仙世界。",
"境界": "修仙的境界从弱到强:练气、筑基、金丹、元婴。每个境界分前期、中期、后期。境界间差距很大。",
"寿元": "每个角色均有寿元,超过寿元后容易老死。提升境界和某些宝物、丹药能提高寿元。",
"死亡": "HP降至0以下也会死亡。",
"区域": "不同区域有不同效果,在适当的区域做适当的事情事半功倍。",
"修炼": "修炼可以增加经验,直到到达突破前的瓶颈。突破是概率事件,突破后会进入下一个境界。",
"灵根": "决定了你与天地灵气的亲和度。在与自身灵根属性匹配的区域(如火灵根在火属性洞府)修炼,效率最高。",
"天地灵机": "世界每隔数年会有一次天象变动(如灵气潮汐),影响角色能力。",
"灵石": "修仙界的通用货币。可用于购买法宝丹药,通过采集、交易或掠夺获取。",
"宗门": "修士的庇护所。加入宗门可习得独门功法、获同门庇护;散修自由但资源匮乏。",
"战斗": "弱肉强食。境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物",
"动作": "你有一系列可以执行的动作。要注意动作的效果、限制条件、区域和时间。"
}
return desc

View File

@@ -1,5 +1,8 @@
你是一个决策者这是一个仙侠世界你负责来决定两个NPC的下一步行为。
世界背景:
{world_info}
你需要进行决策的NPC的dict[AvatarName, info]为
{avatar_infos}

View File

@@ -1,5 +1,8 @@
你是一个仙侠世界的故事家,负责为修仙界人物起绰号。
世界背景:
{world_info}
绰号是修仙界中对一个人物的评价和称谓,要求:
1. 符合修仙世界观,具有仙侠风格
2. 可以有多种不同角度,比如角色的性格、行为、事迹、关系、武器、长相、功法、宗门等

View File

@@ -1,5 +1,8 @@
你是一个决策者,这是一个修仙世界,你需要帮一个修仙者做一个决策。
世界背景:
{world_info}
你需要进行决策的NPC的dict[AvatarName, info]为
{avatar_infos}

View File

@@ -1,5 +1,8 @@
你是一个小说家这是一个仙侠世界你需要把一个事件扩展为一个约200~500字的故事。
世界背景:
{world_info}
你需要进行决策的NPC的dict[AvatarName, info]为
{avatar_infos}

View File

@@ -1,5 +1,8 @@
你是一个小说家这是一个仙侠世界你需要把一个事件扩展为一个约200~500字的故事。
世界背景:
{world_info}
你需要进行决策的NPC的dict[AvatarName, info]为
{avatar_infos}