打造一个微claude code来实现石头剪刀布游戏

打造一个微claude code来实现石头剪刀布游戏

模型可以用通义千问系列大模型,或者DeepSeek系列等模型。我为什么要用kimi的k2模型呢,我最后揭晓,很惊艳。


✨ 游戏主要功能

  • 支持石头、剪刀、布三种选择
  • 实时显示对战结果
  • 自动计分系统
  • 响应式设计,支持手机和电脑
  • 键盘快捷键支持(1=石头,2=剪刀,3=布,R=重置)
  • 重新开始按钮

🚀 如何开发微claude code

核心只要记住以下三点:

  • • 第一、需要工具列表
  • • 第二、需要大模型
  • • 第三、需要系统提示词

注意

最后一点也是最重要的一点就是要基于ReAct模式实现Agent,其实就是系统提示词按照ReAct来编写,因为到目前为止ReAct模式是最广泛用来实现AI Agent的模式之一。

ReAct模式可以看这一篇文章深度解析AI Agent:从概念、原理到构建模式,一文彻底搞懂!

🖊️ 直接上核心代码

    1. 首先是创建三个工具
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
    1. 创建一个基于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})
    1. 系统提示词
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,看下实现效果如何, **最后欢迎大家一起交流探讨进步!**历史大模型系列文章:

  1. DeepSeek大模型之本地部署体验
  2. 提示工程(prompt engineering)大揭秘
  3. OpenAI:GPT提示词(prompt)六大策略之解读
  4. GPT prompt(提示词)实战,用李佳琪式的流行梗回复,有点意思
  5. 提示词(prompt)那些事
  6. 彻底理解推理模型和通用模型
  7. 基于LangChain进行大模型应用开发-第一节
  8. 基于LangChain进行大模型应用开发-第二节(检索器)
  9. 基于LangChain进行大模型应用开发-第三节(对话检索器(聊天机器人))
  10. 基于LangChain进行大模型应用开发-第四节(agent代理)
  11. 基于LangChain进行大模型应用开发-第五节(LangServe服务开发)
  12. LangStudio构建nl2sql应用流,只要输入文字就可以转为sql执行并输出结果
  13. 解密manus的神秘面纱-搜索JackMa演示多智能体(Agent)的强大无比
  14. camel-ai推出的OWL用于处理现实世界的自动化任务
  15. 大模型怎么知道铁是导电的?
  16. LangStudio构建文件应用流,只要输入地址就可以转为你自己的知识库
  17. AI大模型学习框架
  18. 基于百炼构建天气预报应用,非常简单
  19. 基于MCP构建天气预报智能体
  20. 《零代码+AI赋能!基于阿里云百炼MCP快速打造智能爬虫应用》
  21. AI时代的高效信息管家:基于MCP-Agent与通义千问的网页总结智能体实战
  22. manus终于开放啦
  23. 在Mac上10分钟玩转LoRA微调模型
  24. 揭秘Google A2A协议:赋能智能体协作的未来
  25. 学习【北京大学】DeepSeek内部研讨系列: AI Agent与Agentic AI的原理和应用并做分享
  26. 提示工程(Prompt Engineering)还没学明白,上下文工程(Context Engineering)又来了
  27. 深度剖析Manus:如何打造低幻觉、高效率、安全可靠的Agentic AI系统
  28. 大模型时代的三巨头---Grok、ChatGPT与Gemini深度解析
  29. 深度解析AI Agent:从概念、原理到构建模式,一文彻底搞懂!
相关推荐
小溪彼岸1 小时前
【Hugging Face实战】使用Gradio创建一个文生图应用
aigc
小溪彼岸1 小时前
【Hugging Face实战】创建一个情感分析应用
aigc
小溪彼岸1 小时前
【Hugging Face实战】创建一个文本生成应用
aigc
堆栈future4 小时前
wemark这款产品-让每一位内容创造者充分享受写作的乐趣
chatgpt·aigc·markdown
堆栈future4 小时前
豆包新模型+PromptPilot体验测评
chatgpt·claude·trae
GitLqr5 小时前
AI洞察 | GPT-5 发布,小米大模型开源
chatgpt·llm·腾讯
阿彬爱学习7 小时前
AI 大模型企业级应用落地挑战与解决方案
人工智能·算法·微信·chatgpt·开源
不老刘10 小时前
基于clodop和Chrome原生打印的标签实现方法与性能对比
前端·chrome·claude·标签打印·clodop
不老刘10 小时前
Windows系统安装Claude官方Code CLI完整指南
ai编程·claude