打造一个微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 小时前
分享一个Claude Code宝藏网站Claude Code Templates
aigc·claude
yaocheng的ai分身2 小时前
Claude Code 版本 2.0.14
claude
YFCodeDream2 小时前
MLLM技术报告 核心创新一览
python·gpt·aigc
蛋先生DX4 小时前
RAG 切片利器 LumberChunker 是如何智能地把文档切割成 LLM 爱吃的块
llm·aigc·ai编程
土丁爱吃大米饭4 小时前
AIGC工具助力2D游戏美术全流程
aigc·小游戏·游戏开发·ai助力
安思派Anspire6 小时前
为何你的RAG系统无法处理复杂问题(二)
aigc·openai·agent
yaocheng的ai分身6 小时前
Claude Code 网页版发布
claude
Mintopia7 小时前
🧠 可解释性AIGC:Web场景下模型决策透明化的技术路径
前端·javascript·aigc
用户5191495848457 小时前
Flutter应用设置插件 - 轻松打开iOS和Android系统设置
人工智能·aigc
飞哥数智坊9 小时前
Claude Skills 实测体验:不用翻墙,GLM-4.6 也能玩转
人工智能·claude·chatglm (智谱)