打造一个微claude code来实现石头剪刀布游戏
模型可以用通义千问系列大模型,或者DeepSeek系列等模型。我为什么要用kimi的k2模型呢,我最后揭晓,很惊艳。
✨ 游戏主要功能
- • 支持石头、剪刀、布三种选择
- • 实时显示对战结果
- • 自动计分系统
- • 响应式设计,支持手机和电脑
- • 键盘快捷键支持(1=石头,2=剪刀,3=布,R=重置)
- • 重新开始按钮
🚀 如何开发微claude code
核心只要记住以下三点:
- • 第一、需要工具列表
- • 第二、需要大模型
- • 第三、需要系统提示词
注意
最后一点也是最重要的一点就是要基于ReAct模式实现Agent,其实就是系统提示词按照ReAct来编写,因为到目前为止ReAct模式是最广泛用来实现AI Agent的模式之一。
ReAct模式可以看这一篇文章深度解析AI Agent:从概念、原理到构建模式,一文彻底搞懂!
🖊️ 直接上核心代码
-
- 首先是创建三个工具
python
def read_file(file_path):
"""用于读取文件内容"""
with open(file_path, "r", encoding="utf-8") as f:
return f.read()
def write_to_file(file_path, content):
"""将指定内容写入指定文件"""
with open(file_path, "w", encoding="utf-8") as f:
f.write(content.replace("\n", "\n"))
return "写入成功"
def run_terminal_command(command):
"""用于执行终端命令"""
import subprocess
run_result = subprocess.run(command, shell=True, capture_output=True, text=True)
return "执行成功" if run_result.returncode == 0 else run_result.stderr
-
- 创建一个基于ReAct模式的Agent
python
class MicroCluadeCodeAgent:
def __init__(self, tools: List[Callable], model: str, project_directory: str):
self.tools = { func.__name__: func for func in tools }
self.model = model # 接受k2大模型
self.project_directory = project_directory
self.client = OpenAI(
base_url="https://api.moonshot.cn/v1", # kimi的base_url
api_key="sk-xxx", # kimi的api key
)
def run(self, user_input: str):
messages = [
{"role": "system", "content": self.render_system_prompt(react_system_prompt_template)},
{"role": "user", "content": f"<question>{user_input}</question>"}
]
while True:
# 请求模型
content = self.call_model(messages)
# 检测 Thought
thought_match = re.search(r"<thought>(.*?)</thought>", content, re.DOTALL)
if thought_match:
thought = thought_match.group(1)
print(f"\n\n💭 Thought: {thought}")
# 检测模型是否输出 Final Answer,如果是的话,直接返回
if "<final_answer>" in content:
final_answer = re.search(r"<final_answer>(.*?)</final_answer>", content, re.DOTALL)
return final_answer.group(1)
# 检测 Action
action_match = re.search(r"<action>(.*?)</action>", content, re.DOTALL)
if not action_match:
raise RuntimeError("模型未输出 <action>")
action = action_match.group(1)
tool_name, args = self.parse_action(action)
print(f"\n\n🔧 Action: {tool_name}({', '.join(args)})")
# 只有终端命令才需要询问用户,其他的工具直接执行
should_continue = input(f"\n\n是否继续?(Y/N)") if tool_name == "run_terminal_command" else "y"
if should_continue.lower() != 'y':
print("\n\n操作已取消。")
return "操作被用户取消"
try:
observation = self.tools[tool_name](*args)
except Exception as e:
observation = f"工具执行错误:{str(e)}"
print(f"\n\n🔍 Observation:{observation}")
obs_msg = f"<observation>{observation}</observation>"
messages.append({"role": "user", "content": obs_msg})
-
- 系统提示词
xml
你需要解决一个问题。为此,你需要将问题分解为多个步骤。对于每个步骤,首先使用 <thought> 思考要做什么,然后使用可用工具之一决定一个 <action>。接着,你将根据你的行动从环境/工具中收到一个 <observation>。持续这个思考和行动的过程,直到你有足够的信息来提供 <final_answer>。
所有步骤请严格使用以下 XML 标签格式输出:
- <question> 用户问题
- <thought> 思考
- <action> 采取的工具操作
- <observation> 工具或环境返回的结果
- <final_answer> 最终答案
🔗 运行main函数
通过uv
启动微cluade code的Agent实现石头剪刀布游戏:
ini
def main(project_directory):
project_dir = os.path.abspath(project_directory)
tools = [read_file, write_to_file, run_terminal_command]
agent = MicroCluadeCodeAgent(tools=tools, model="kimi-k2-0711-preview", project_directory=project_dir)
task = input("请输入任务:")
final_answer = agent.run(task)
print(f"\n\n✅ Final Answer:{final_answer}")
在终端输入:uv run agent.py tmp回车即可
🤖 Agent运行结果
xml
请输入任务:帮我实现石头剪刀布游戏,html,css和js分别保存到三个文件,最后我直接运行html即可
正在请求模型,请稍等...
💭 Thought: 我需要为用户创建石头剪刀布游戏的HTML,CSS和JavaScript文件。首先,我应该先创建HTML文件,并链接CSS和JavaScript文件。
🔧 Action: write_to_file(/tmp/index.html, <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>石头剪刀布游戏</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>石头剪刀布游戏</h1>
<div id="game">
<button onclick="play('石头')">石头</button>
<button onclick="play('剪刀')">剪刀</button>
<button onclick="play('布')">布</button>
<p id="result"></p>
</div>
<script src="script.js"></script>
</body>
</html>)
🔍 Observation:写入成功
.....其他js和css样式文件由于太长了,我这里就不展示了,大体处理逻辑和html相似
经历三个过程:Thought->Action->Observation
有一个有意思的地方就是kimi的k2模型在输出以上三个文件之后,它向用户确认是否三个文件执行完毕,请看处理逻辑:
markdown
正在请求模型,请稍等...
💭 Thought: 三个文件都已经创建完成。现在让我检查一下当前目录下的文件,确认所有文件都已正确创建。
🔧 Action: run_terminal_command(ls -la /tmp/)
是否继续?(Y/N)Y
🔍 Observation:执行成功
正在请求模型,请稍等...
💭 Thought: 让我查看一下具体有哪些文件被创建:
🔧 Action: run_terminal_command(ls -la /tmp/ | grep -E '.(html|css|js)$')
是否继续?(Y/N)Y
🔍 Observation:执行成功
正在请求模型,请稍等...
💭 Thought: 让我直接列出这三个文件来确认它们都存在:
🔧 Action: run_terminal_command(ls /tmp/index.html /tmp/style.css /tmp/script.js)
是否继续?(Y/N)Y
🔍 Observation:执行成功
正在请求模型,请稍等...
✅ Final Answer:石头剪刀布游戏已经创建完成!我为您创建了三个文件:
1. **index.html** - 主页面文件,包含游戏界面结构
2. **style.css** - 样式文件,提供美观的界面设计
3. **script.js** - 游戏逻辑文件,实现石头剪刀布的游戏功能
现在您可以直接运行 HTML 文件来开始游戏:
- 双击 `index.html` 文件,或者
- 在浏览器中打开 `index.html`
你看每一步骤k2模型都向用户去确认,这个非常棒,而且页面效果非常赞。为什么这里重点要强调这个呢?因为我用了阿里云的qwen-plus模型,直接输出结果,没有向用户再次确认是否写成功三个文件,而且页面做的也非常简单,这就是我为什么用kimi的k2模型去做这个微claude code以及用它实现这个小游戏。直接看效果!
🎨 样式演示
第一个是qwen的效果:

第二个是k2的效果:

直接碾压!
由于时间原因今天就写到这里,不过有机会可以试试阿里的qwen3-coder基座模型Qwen/Qwen3-Coder-480B-A35B-Instruct
,看下实现效果如何, **最后欢迎大家一起交流探讨进步!**历史大模型系列文章:
- DeepSeek大模型之本地部署体验
- 提示工程(prompt engineering)大揭秘
- OpenAI:GPT提示词(prompt)六大策略之解读
- GPT prompt(提示词)实战,用李佳琪式的流行梗回复,有点意思
- 提示词(prompt)那些事
- 彻底理解推理模型和通用模型
- 基于LangChain进行大模型应用开发-第一节
- 基于LangChain进行大模型应用开发-第二节(检索器)
- 基于LangChain进行大模型应用开发-第三节(对话检索器(聊天机器人))
- 基于LangChain进行大模型应用开发-第四节(agent代理)
- 基于LangChain进行大模型应用开发-第五节(LangServe服务开发)
- LangStudio构建nl2sql应用流,只要输入文字就可以转为sql执行并输出结果
- 解密manus的神秘面纱-搜索JackMa演示多智能体(Agent)的强大无比
- camel-ai推出的OWL用于处理现实世界的自动化任务
- 大模型怎么知道铁是导电的?
- LangStudio构建文件应用流,只要输入地址就可以转为你自己的知识库
- AI大模型学习框架
- 基于百炼构建天气预报应用,非常简单
- 基于MCP构建天气预报智能体
- 《零代码+AI赋能!基于阿里云百炼MCP快速打造智能爬虫应用》
- AI时代的高效信息管家:基于MCP-Agent与通义千问的网页总结智能体实战
- manus终于开放啦
- 在Mac上10分钟玩转LoRA微调模型
- 揭秘Google A2A协议:赋能智能体协作的未来
- 学习【北京大学】DeepSeek内部研讨系列: AI Agent与Agentic AI的原理和应用并做分享
- 提示工程(Prompt Engineering)还没学明白,上下文工程(Context Engineering)又来了
- 深度剖析Manus:如何打造低幻觉、高效率、安全可靠的Agentic AI系统
- 大模型时代的三巨头---Grok、ChatGPT与Gemini深度解析
- 深度解析AI Agent:从概念、原理到构建模式,一文彻底搞懂!