Spaces:
Running
Running
茂道
commited on
Commit
·
9491114
1
Parent(s):
d42d2e3
bugfix
Browse files- .idea/werewolf_1.iml +0 -10
- .idea/workspace.xml +0 -107
- main.py +16 -0
- werewolf/seer/prompt.py +1 -5
- werewolf/seer/seer_agent.py +2 -0
- werewolf/villager/prompt.py +1 -5
- werewolf/villager/villager_agent.py +2 -0
- werewolf/witch/prompt.py +1 -5
- werewolf/witch/witch_agent.py +2 -0
- werewolf/wolf/prompt.py +1 -5
- werewolf/wolf/wolf_agent.py +2 -0
.idea/werewolf_1.iml
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<module type="PYTHON_MODULE" version="4">
|
3 |
-
<component name="NewModuleRootManager">
|
4 |
-
<content url="file://$MODULE_DIR$">
|
5 |
-
<sourceFolder url="file://$MODULE_DIR$/werewolf" isTestSource="false" />
|
6 |
-
</content>
|
7 |
-
<orderEntry type="jdk" jdkName="Python 3.10 (venv) (3)" jdkType="Python SDK" />
|
8 |
-
<orderEntry type="sourceFolder" forTests="false" />
|
9 |
-
</component>
|
10 |
-
</module>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.idea/workspace.xml
DELETED
@@ -1,107 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project version="4">
|
3 |
-
<component name="ChangeListManager">
|
4 |
-
<list default="true" id="be0bdb17-6f52-4720-b934-341fa7978d29" name="Changes" comment="">
|
5 |
-
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
6 |
-
<change beforePath="$PROJECT_DIR$/werewolf/seer/seer_agent.py" beforeDir="false" afterPath="$PROJECT_DIR$/werewolf/seer/seer_agent.py" afterDir="false" />
|
7 |
-
<change beforePath="$PROJECT_DIR$/werewolf/witch/witch_agent.py" beforeDir="false" afterPath="$PROJECT_DIR$/werewolf/witch/witch_agent.py" afterDir="false" />
|
8 |
-
</list>
|
9 |
-
<option name="SHOW_DIALOG" value="false" />
|
10 |
-
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
11 |
-
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
12 |
-
<option name="LAST_RESOLUTION" value="IGNORE" />
|
13 |
-
</component>
|
14 |
-
<component name="Git.Settings">
|
15 |
-
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
16 |
-
</component>
|
17 |
-
<component name="MarkdownSettingsMigration">
|
18 |
-
<option name="stateVersion" value="1" />
|
19 |
-
</component>
|
20 |
-
<component name="ProjectId" id="2vyzOzqnmaSJsS0nFO6nXOAlWXB" />
|
21 |
-
<component name="ProjectViewState">
|
22 |
-
<option name="hideEmptyMiddlePackages" value="true" />
|
23 |
-
<option name="showLibraryContents" value="true" />
|
24 |
-
</component>
|
25 |
-
<component name="PropertiesComponent">
|
26 |
-
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
27 |
-
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
28 |
-
<property name="WebServerToolWindowFactoryState" value="false" />
|
29 |
-
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
30 |
-
<property name="node.js.detected.package.eslint" value="true" />
|
31 |
-
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
32 |
-
</component>
|
33 |
-
<component name="RecentsManager">
|
34 |
-
<key name="CopyFile.RECENT_KEYS">
|
35 |
-
<recent name="$PROJECT_DIR$" />
|
36 |
-
</key>
|
37 |
-
</component>
|
38 |
-
<component name="RunManager">
|
39 |
-
<configuration name="app" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
40 |
-
<module name="werewolf_1" />
|
41 |
-
<option name="INTERPRETER_OPTIONS" value="" />
|
42 |
-
<option name="PARENT_ENVS" value="true" />
|
43 |
-
<envs>
|
44 |
-
<env name="PYTHONUNBUFFERED" value="1" />
|
45 |
-
</envs>
|
46 |
-
<option name="SDK_HOME" value="" />
|
47 |
-
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/werewolf" />
|
48 |
-
<option name="IS_MODULE_SDK" value="true" />
|
49 |
-
<option name="ADD_CONTENT_ROOTS" value="true" />
|
50 |
-
<option name="ADD_SOURCE_ROOTS" value="true" />
|
51 |
-
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
52 |
-
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/werewolf/app.py" />
|
53 |
-
<option name="PARAMETERS" value="" />
|
54 |
-
<option name="SHOW_COMMAND_LINE" value="false" />
|
55 |
-
<option name="EMULATE_TERMINAL" value="false" />
|
56 |
-
<option name="MODULE_MODE" value="false" />
|
57 |
-
<option name="REDIRECT_INPUT" value="false" />
|
58 |
-
<option name="INPUT_FILE" value="" />
|
59 |
-
<method v="2" />
|
60 |
-
</configuration>
|
61 |
-
<recent_temporary>
|
62 |
-
<list>
|
63 |
-
<item itemvalue="Python.app" />
|
64 |
-
</list>
|
65 |
-
</recent_temporary>
|
66 |
-
</component>
|
67 |
-
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
68 |
-
<component name="TaskManager">
|
69 |
-
<task active="true" id="Default" summary="Default task">
|
70 |
-
<changelist id="be0bdb17-6f52-4720-b934-341fa7978d29" name="Changes" comment="" />
|
71 |
-
<created>1745132074997</created>
|
72 |
-
<option name="number" value="Default" />
|
73 |
-
<option name="presentableId" value="Default" />
|
74 |
-
<updated>1745132074997</updated>
|
75 |
-
<workItem from="1745132078229" duration="12049000" />
|
76 |
-
</task>
|
77 |
-
<servers />
|
78 |
-
</component>
|
79 |
-
<component name="TypeScriptGeneratedFilesManager">
|
80 |
-
<option name="version" value="3" />
|
81 |
-
</component>
|
82 |
-
<component name="Vcs.Log.Tabs.Properties">
|
83 |
-
<option name="TAB_STATES">
|
84 |
-
<map>
|
85 |
-
<entry key="MAIN">
|
86 |
-
<value>
|
87 |
-
<State />
|
88 |
-
</value>
|
89 |
-
</entry>
|
90 |
-
</map>
|
91 |
-
</option>
|
92 |
-
</component>
|
93 |
-
<component name="XDebuggerManager">
|
94 |
-
<breakpoint-manager>
|
95 |
-
<breakpoints>
|
96 |
-
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
97 |
-
<url>file://$PROJECT_DIR$/../ali_open_manus/open-manus/venv/lib/python3.12/site-packages/agent_build_sdk/server/server.py</url>
|
98 |
-
<line>81</line>
|
99 |
-
<option name="timeStamp" value="1" />
|
100 |
-
</line-breakpoint>
|
101 |
-
</breakpoints>
|
102 |
-
</breakpoint-manager>
|
103 |
-
</component>
|
104 |
-
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
105 |
-
<SUITE FILE_PATH="coverage/werewolf_1$app.coverage" NAME="app Coverage Results" MODIFIED="1745138641306" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/werewolf" />
|
106 |
-
</component>
|
107 |
-
</project>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
main.py
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This is a sample Python script.
|
2 |
+
|
3 |
+
# Press ⌃R to execute it or replace it with your code.
|
4 |
+
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
|
5 |
+
|
6 |
+
|
7 |
+
def print_hi(name):
|
8 |
+
# Use a breakpoint in the code line below to debug your script.
|
9 |
+
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
|
10 |
+
|
11 |
+
|
12 |
+
# Press the green button in the gutter to run the script.
|
13 |
+
if __name__ == '__main__':
|
14 |
+
print_hi('PyCharm')
|
15 |
+
|
16 |
+
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
|
werewolf/seer/prompt.py
CHANGED
@@ -8,11 +8,7 @@ DESC_PROMPT = """{history}
|
|
8 |
你可以选择是否公开自己的预言家身份,这取决于游戏局势。
|
9 |
如果你选择公开身份,可以分享你的查验结果,但要注意这可能会使你成为狼人的目标。
|
10 |
如果你选择隐藏身份,可以用暗示的方式引导村民投票。
|
11 |
-
|
12 |
-
"我有重要的信息要分享,我是预言家,我查验了3号玩家,他是好人。"
|
13 |
-
"根据我的观察,2号玩家的行为很可疑,我建议大家关注他。"
|
14 |
-
"我相信我们之中有人知道真相,希望能够站出来指引我们。"
|
15 |
-
请按照类似的风格,结合当前游戏局势进行发言:
|
16 |
"""
|
17 |
|
18 |
VOTE_PROMPT = """{history}
|
|
|
8 |
你可以选择是否公开自己的预言家身份,这取决于游戏局势。
|
9 |
如果你选择公开身份,可以分享你的查验结果,但要注意这可能会使你成为狼人的目标。
|
10 |
如果你选择隐藏身份,可以用暗示的方式引导村民投票。
|
11 |
+
结合当前游戏局势进行发言:
|
|
|
|
|
|
|
|
|
12 |
"""
|
13 |
|
14 |
VOTE_PROMPT = """{history}
|
werewolf/seer/seer_agent.py
CHANGED
@@ -56,6 +56,8 @@ class SeerAgent(BasicRoleAgent):
|
|
56 |
def interact(self, req=AgentReq) -> AgentResp:
|
57 |
logger.info("seer interact: {}".format(req))
|
58 |
if req.status == STATUS_DISCUSS:
|
|
|
|
|
59 |
checked_players = self.memory.load_variable("checked_players")
|
60 |
prompt = format_prompt(DESC_PROMPT,
|
61 |
{"name": self.memory.load_variable("name"),
|
|
|
56 |
def interact(self, req=AgentReq) -> AgentResp:
|
57 |
logger.info("seer interact: {}".format(req))
|
58 |
if req.status == STATUS_DISCUSS:
|
59 |
+
if req.message:
|
60 |
+
self.memory.append_history(req.message)
|
61 |
checked_players = self.memory.load_variable("checked_players")
|
62 |
prompt = format_prompt(DESC_PROMPT,
|
63 |
{"name": self.memory.load_variable("name"),
|
werewolf/villager/prompt.py
CHANGED
@@ -6,11 +6,7 @@ DESC_PROMPT = """{history}
|
|
6 |
你的发言应当像一个普通村民,使用日常的语言表达方式。
|
7 |
你可以描述你观察到的可疑行为,或分享你对其他玩家的看法。
|
8 |
要谨慎发言,避免引起其他村民对你的怀疑。
|
9 |
-
|
10 |
-
"我昨晚听到东边有些动静,但不确定是什么。"
|
11 |
-
"我觉得4号玩家的行为有点反常,大家要多加注意。"
|
12 |
-
"根据我的观察,2号和5号之间似乎有些默契。"
|
13 |
-
请按照类似的风格,结合当前游戏局势进行发言:
|
14 |
"""
|
15 |
VOTE_PROMPT = """{history}
|
16 |
你是{name},作为一名平民,你的使命是找出潜伏的狼人。
|
|
|
6 |
你的发言应当像一个普通村民,使用日常的语言表达方式。
|
7 |
你可以描述你观察到的可疑行为,或分享你对其他玩家的看法。
|
8 |
要谨慎发言,避免引起其他村民对你的怀疑。
|
9 |
+
结合当前游戏局势进行发言:
|
|
|
|
|
|
|
|
|
10 |
"""
|
11 |
VOTE_PROMPT = """{history}
|
12 |
你是{name},作为一名平民,你的使命是找出潜伏的狼人。
|
werewolf/villager/villager_agent.py
CHANGED
@@ -49,6 +49,8 @@ class VillagerAgent(BasicRoleAgent):
|
|
49 |
def interact(self, req=AgentReq) -> AgentResp:
|
50 |
logger.info("spy interact: {}".format(req))
|
51 |
if req.status == STATUS_DISCUSS:
|
|
|
|
|
52 |
prompt = format_prompt(DESC_PROMPT,
|
53 |
{"name": self.memory.load_variable("name"),
|
54 |
"word": self.memory.load_variable("word"),
|
|
|
49 |
def interact(self, req=AgentReq) -> AgentResp:
|
50 |
logger.info("spy interact: {}".format(req))
|
51 |
if req.status == STATUS_DISCUSS:
|
52 |
+
if req.message:
|
53 |
+
self.memory.append_history(req.message)
|
54 |
prompt = format_prompt(DESC_PROMPT,
|
55 |
{"name": self.memory.load_variable("name"),
|
56 |
"word": self.memory.load_variable("word"),
|
werewolf/witch/prompt.py
CHANGED
@@ -9,11 +9,7 @@ DESC_PROMPT = """{history}
|
|
9 |
你的发言应当像一个女巫,使用日常的语言表达方式,但可以暗示你有能力救人或杀人。
|
10 |
你可以描述你观察到的可疑行为,或分享你对其他玩家的看法。
|
11 |
要谨慎发言,避免过早暴露自己的身份,但也可以适当暗示你的能力。
|
12 |
-
|
13 |
-
"昨晚我感觉到了一些不寻常的气息,我有办法应对危险。"
|
14 |
-
"我觉得4号玩家的行为有点反常,我会密切关注他。"
|
15 |
-
"我有能力在关键时刻帮助大家,但我需要谨慎使用这种能力。"
|
16 |
-
请按照类似的风格,结合当前游戏局势进行发言:
|
17 |
"""
|
18 |
|
19 |
VOTE_PROMPT = """{history}
|
|
|
9 |
你的发言应当像一个女巫,使用日常的语言表达方式,但可以暗示你有能力救人或杀人。
|
10 |
你可以描述你观察到的可疑行为,或分享你对其他玩家的看法。
|
11 |
要谨慎发言,避免过早暴露自己的身份,但也可以适当暗示你的能力。
|
12 |
+
结合当前游戏局势进行发言:
|
|
|
|
|
|
|
|
|
13 |
"""
|
14 |
|
15 |
VOTE_PROMPT = """{history}
|
werewolf/witch/witch_agent.py
CHANGED
@@ -56,6 +56,8 @@ class WitchAgent(BasicRoleAgent):
|
|
56 |
def interact(self, req=AgentReq) -> AgentResp:
|
57 |
logger.info("witch interact: {}".format(req))
|
58 |
if req.status == STATUS_DISCUSS:
|
|
|
|
|
59 |
has_poison = self.memory.load_variable("has_poison")
|
60 |
has_antidote = self.memory.load_variable("has_antidote")
|
61 |
skill_info = "女巫有{}瓶毒药和{}瓶解药".format("1" if has_poison else "0", "1" if has_antidote else "0")
|
|
|
56 |
def interact(self, req=AgentReq) -> AgentResp:
|
57 |
logger.info("witch interact: {}".format(req))
|
58 |
if req.status == STATUS_DISCUSS:
|
59 |
+
if req.message:
|
60 |
+
self.memory.append_history(req.message)
|
61 |
has_poison = self.memory.load_variable("has_poison")
|
62 |
has_antidote = self.memory.load_variable("has_antidote")
|
63 |
skill_info = "女巫有{}瓶毒药和{}瓶解药".format("1" if has_poison else "0", "1" if has_antidote else "0")
|
werewolf/wolf/prompt.py
CHANGED
@@ -8,11 +8,7 @@ DESC_PROMPT = """{history}
|
|
8 |
你的发言应当像一个普通村民或特殊角色,使用日常的语言表达方式。
|
9 |
你可以描述虚构的观察或线索,误导其他玩家。
|
10 |
可以适当怀疑其他玩家,但不要过度针对自己的狼人队友。
|
11 |
-
|
12 |
-
"昨晚我听到东边有些动静,可能是狼人活动的声音。"
|
13 |
-
"我觉得4号玩家的行为有点反常,大家要多加注意。"
|
14 |
-
"作为一名普通村民,我会尽力帮助大家找出狼人。"
|
15 |
-
请按照类似的风格,结合当前游戏局势进行发言:
|
16 |
"""
|
17 |
|
18 |
VOTE_PROMPT = """{history}
|
|
|
8 |
你的发言应当像一个普通村民或特殊角色,使用日常的语言表达方式。
|
9 |
你可以描述虚构的观察或线索,误导其他玩家。
|
10 |
可以适当怀疑其他玩家,但不要过度针对自己的狼人队友。
|
11 |
+
结合当前游戏局势进行发言:
|
|
|
|
|
|
|
|
|
12 |
"""
|
13 |
|
14 |
VOTE_PROMPT = """{history}
|
werewolf/wolf/wolf_agent.py
CHANGED
@@ -62,6 +62,8 @@ class WolfAgent(BasicRoleAgent):
|
|
62 |
def interact(self, req=AgentReq) -> AgentResp:
|
63 |
logger.info("wolf interact: {}".format(req))
|
64 |
if req.status == STATUS_DISCUSS:
|
|
|
|
|
65 |
teammates = self.memory.load_variable("teammates")
|
66 |
prompt = format_prompt(DESC_PROMPT,
|
67 |
{"name": self.memory.load_variable("name"),
|
|
|
62 |
def interact(self, req=AgentReq) -> AgentResp:
|
63 |
logger.info("wolf interact: {}".format(req))
|
64 |
if req.status == STATUS_DISCUSS:
|
65 |
+
if req.message:
|
66 |
+
self.memory.append_history(req.message)
|
67 |
teammates = self.memory.load_variable("teammates")
|
68 |
prompt = format_prompt(DESC_PROMPT,
|
69 |
{"name": self.memory.load_variable("name"),
|