最近在 GitHub 上发现一个很有意思的项目——The Email Game它把 AI agents 和加密签名邮件这两个看似不相关的技术组合在一起创造了一个全新的竞技场。如果你正在关注 AI agents 的发展或者对加密通信感兴趣这个项目可能会给你带来一些启发。传统的 AI agents 项目大多集中在聊天机器人、自动化流程或者代码生成上但The Email Game选择了一个更具体的场景让多个 AI agents 通过加密签名的邮件进行交互和竞争。这种设计不仅考验 AI 的决策能力还引入了加密验证和通信协议的安全层为 AI agents 的实际应用提供了一个新的思路。1. 这篇文章真正要解决的问题为什么一个基于邮件的 AI agents 游戏值得关注表面上看这只是一个技术演示但背后涉及几个关键问题AI agents 的通信可靠性在实际应用中AI agents 往往需要与其他系统或 agents 进行数据交换。如果通信过程不可靠整个系统就可能崩溃。加密签名邮件提供了一种可验证的通信方式确保消息的来源和完整性。多 agents 协作的挑战当多个 AI agents 同时运行时如何管理它们之间的交互是竞争还是合作The Email Game通过设定明确的规则和目标展示了多 agents 环境下的策略演化。加密技术的实际应用加密签名通常用于安全通信但将其与 AI agents 结合可以为自动化系统增加一层信任保障。这对于金融、法律或其他高敏感领域的 AI 应用尤其重要。如果你正在设计多 AI 系统或者需要确保自动化流程的可靠性和安全性这个项目提供的思路和工具链值得一试。2. 基础概念与核心原理2.1 AI agents 是什么AI agents 通常指能够自主感知环境、做出决策并执行行动的智能体。与传统的脚本或程序不同AI agents 具有一定的自主性可以根据目标调整行为。在The Email Game中每个 AI agent 代表一个独立的参与者它们通过邮件进行通信并根据收到的信息决定下一步行动。2.2 加密签名邮件的作用加密签名邮件的核心是确保邮件的真实性和完整性。发送方使用私钥对邮件内容进行签名接收方使用公钥验证签名。如果邮件被篡改签名验证就会失败。这种机制在The Email Game中用于防止 AI agents 伪造或篡改通信内容确保竞争的公平性。2.3 项目架构概述The Email Game的基本架构包括以下几个部分AI agents每个 agent 是一个独立的程序能够处理邮件、生成回复并签名。邮件服务器负责接收、存储和转发邮件。签名验证模块检查每封邮件的签名是否有效。规则引擎定义游戏规则例如得分机制、回合限制和胜利条件。Agents 之间的交互遵循一定的协议例如每封邮件必须包含前一条消息的哈希值以保持对话的连续性。3. 环境准备与前置条件要运行或实验The Email Game你需要准备以下环境3.1 基础软件要求Python 3.8项目主要使用 Python 实现确保你的环境支持最新特性。邮件账户建议使用支持 SMTP/IMAP 的邮箱服务如 Gmail、Outlook并为每个 AI agent 配置独立的账户。加密密钥工具例如 OpenSSL用于生成和管理密钥对。3.2 Python 库依赖核心依赖包括# requirements.txt aiosmtplib2.0.0 # 异步 SMTP 客户端 imaplib23.5 # IMAP 客户端库 cryptography3.4 # 加密和签名功能 openai1.0.0 # 如果使用 GPT 模型作为 AI 引擎安装命令pip install -r requirements.txt3.3 密钥管理每个 AI agent 需要一对 RSA 密钥# 生成私钥 openssl genpkey -algorithm RSA -out agent_private.pem -pkeyopt rsa_keygen_bits:2048 # 导出公钥 openssl rsa -pubout -in agent_private.pem -out agent_public.pem密钥文件需要妥善保管私钥绝不能泄露。4. 核心流程拆解4.1 初始化 AI agents首先创建 AI agent 的基类处理邮件的发送、接收和签名验证import smtplib import imaplib from email.mime.text import MIMEText from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives.serialization import load_pem_private_key class EmailAgent: def __init__(self, name, email, private_key_path): self.name name self.email email with open(private_key_path, rb) as key_file: self.private_key load_pem_private_key(key_file.read(), passwordNone) def sign_message(self, message): # 对消息进行签名 signature self.private_key.sign( message.encode(utf-8), padding.PSS( mgfpadding.MGF1(hashes.SHA256()), salt_lengthpadding.PSS.MAX_LENGTH ), hashes.SHA256() ) return signature4.2 邮件发送与签名发送邮件时需要将内容和签名一起打包def send_signed_email(self, to_email, subject, body): # 创建邮件内容 msg MIMEText(body) msg[From] self.email msg[To] to_email msg[Subject] subject # 生成签名 signature self.sign_message(body) signature_b64 base64.b64encode(signature).decode(utf-8) msg[X-Signature] signature_b64 # 发送邮件 with smtplib.SMTP(smtp.gmail.com, 587) as server: server.starttls() server.login(self.email, self.password) server.send_message(msg)4.3 邮件接收与验证接收邮件时需要验证签名def verify_signature(self, message, signature, public_key): try: public_key.verify( signature, message.encode(utf-8), padding.PSS( mgfpadding.MGF1(hashes.SHA256()), salt_lengthpadding.PSS.MAX_LENGTH ), hashes.SHA256() ) return True except Exception as e: print(f签名验证失败: {e}) return False4.4 AI 决策逻辑每个 AI agent 需要实现自己的决策逻辑。以下是一个简单的示例class GameAgent(EmailAgent): def __init__(self, name, email, private_key_path, strategy): super().__init__(name, email, private_key_path) self.strategy strategy self.conversation_history [] def process_incoming_email(self, from_email, subject, body, signature): # 验证签名 if not self.verify_signature(body, signature, self.get_public_key(from_email)): return 签名验证失败忽略此消息 # 更新对话历史 self.conversation_history.append({ from: from_email, body: body, timestamp: datetime.now() }) # 基于策略生成回复 response self.generate_response(body) return response def generate_response(self, last_message): # 简单的关键词匹配策略 if 合作 in last_message: return 我同意合作我们可以共同完成这个任务。 elif 竞争 in last_message: return 我接受挑战让我们看看谁更胜一筹。 else: return 我需要更多信息才能做出决定。5. 完整示例与代码实现下面是一个完整的两 agents 交互示例5.1 配置文件首先创建配置文件定义 agents 的基本信息# config.yaml agents: - name: AgentAlpha email: alphaexample.com private_key: keys/alpha_private.pem public_key: keys/alpha_public.pem strategy: cooperative - name: AgentBeta email: betaexample.com private_key: keys/beta_private.pem public_key: keys/beta_public.pem strategy: competitive smtp: host: smtp.gmail.com port: 587 imap: host: imap.gmail.com port: 9935.2 主游戏循环实现主循环协调 agents 之间的交互import yaml import time from threading import Thread class EmailGame: def __init__(self, config_path): with open(config_path, r) as f: self.config yaml.safe_load(f) self.agents {} self.setup_agents() def setup_agents(self): for agent_config in self.config[agents]: agent GameAgent( nameagent_config[name], emailagent_config[email], private_key_pathagent_config[private_key], strategyagent_config[strategy] ) self.agents[agent_config[email]] agent def start_game(self, initial_message): # 发送初始消息 first_agent list(self.agents.values())[0] second_agent list(self.agents.values())[1] first_agent.send_signed_email( second_agent.email, 游戏开始, initial_message ) # 启动监听线程 threads [] for agent in self.agents.values(): thread Thread(targetself.agent_listener, args(agent,)) thread.start() threads.append(thread) # 等待游戏结束或超时 time.sleep(300) # 5分钟超时 self.stop_game() def agent_listener(self, agent): while self.running: # 检查新邮件 new_emails agent.check_new_emails() for email in new_emails: response agent.process_incoming_email( email[from], email[subject], email[body], email[signature] ) if response: # 发送回复 agent.send_signed_email( email[from], 回复, response ) time.sleep(10) # 每10秒检查一次5.3 运行游戏启动游戏的简单脚本if __name__ __main__: game EmailGame(config.yaml) game.start_game(你好让我们开始这个游戏吧)6. 运行结果与效果验证6.1 预期交互模式运行游戏后你应该能看到类似以下的邮件对话AgentAlpha - AgentBeta: 你好让我们开始这个游戏吧 AgentBeta - AgentAlpha: 我同意合作我们可以共同完成这个任务。 AgentAlpha - AgentBeta: 太好了首先我们需要制定一个计划。 AgentBeta - AgentAlpha: 我建议我们先分配角色和任务。6.2 验证签名有效性你可以通过检查邮件头部的签名来验证通信的安全性# 验证示例 def test_signature_verification(): agent EmailAgent(test, testexample.com, test_private.pem) test_message 这是一个测试消息 signature agent.sign_message(test_message) # 验证应该成功 assert agent.verify_signature(test_message, signature, agent.public_key) # 篡改消息后验证应该失败 tampered_message 这是一个被篡改的消息 assert not agent.verify_signature(tampered_message, signature, agent.public_key)6.3 监控游戏状态建议添加日志记录功能跟踪整个交互过程import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(email_game.log), logging.StreamHandler() ] ) logger logging.getLogger(EmailGame)7. 常见问题与排查思路问题现象可能原因排查方式解决方案邮件发送失败SMTP 配置错误检查服务器地址、端口和认证信息确认使用正确的 SMTP 设置签名验证失败密钥不匹配或编码问题验证公钥私钥是否配对检查 base64 编码重新生成密钥对确保编码正确邮件接收延迟IMAP 服务器限制检查服务器轮询频率限制调整检查间隔避免被限制AI 响应不合理决策逻辑有缺陷检查对话历史和策略实现优化决策算法增加上下文理解内存使用过高邮件历史未清理监控内存使用情况实现历史记录清理机制7.1 具体问题深度分析密钥管理问题这是最常见的错误来源。确保每个 agent 使用独立的密钥对并且公钥在 agents 之间正确共享。建议实现一个密钥注册表class KeyRegistry: def __init__(self): self.public_keys {} def register_agent(self, email, public_key_path): with open(public_key_path, rb) as key_file: public_key load_pem_public_key(key_file.read()) self.public_keys[email] public_key def get_public_key(self, email): return self.public_keys.get(email)网络连接稳定性邮件服务器可能有不稳定的情况需要实现重试机制def send_email_with_retry(self, to_email, subject, body, max_retries3): for attempt in range(max_retries): try: self.send_signed_email(to_email, subject, body) return True except Exception as e: if attempt max_retries - 1: raise e time.sleep(2 ** attempt) # 指数退避8. 最佳实践与工程建议8.1 安全考虑密钥存储私钥应该加密存储可以使用环境变量或专门的密钥管理服务import os from cryptography.fernet import Fernet def load_encrypted_private_key(key_path, encryption_key): with open(key_path, rb) as f: encrypted_data f.read() fernet Fernet(encryption_key) decrypted_data fernet.decrypt(encrypted_data) return load_pem_private_key(decrypted_data, passwordNone)通信加密除了签名考虑对邮件内容进行加密确保隐私性。8.2 性能优化异步处理使用异步库提高并发性能import asyncio import aiosmtplib async def send_email_async(to_email, subject, body): message MIMEText(body) message[From] self.email message[To] to_email message[Subject] subject await aiosmtplib.send( message, hostnamesmtp.gmail.com, port587, start_tlsTrue, usernameself.email, passwordself.password )批量处理对于大量邮件实现批量发送和接收机制。8.3 可扩展性设计插件化架构允许不同的 AI 策略作为插件加载class StrategyPlugin: def process_message(self, message, history): raise NotImplementedError class CooperativeStrategy(StrategyPlugin): def process_message(self, message, history): # 合作性策略实现 pass class CompetitiveStrategy(StrategyPlugin): def process_message(self, message, history): # 竞争性策略实现 pass配置化部署使用 Docker 容器化每个 agent便于分布式部署FROM python:3.9 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD [python, agent.py]9. 实际应用场景与扩展思路The Email Game虽然以游戏形式呈现但其技术框架可以应用于多个实际场景9.1 自动化谈判系统在电子商务中AI agents 可以代表买卖双方进行价格谈判。加密签名确保报价的真实性防止中间人攻击。9.2 分布式决策系统对于需要多个部门审批的流程AI agents 可以模拟不同部门的决策逻辑通过邮件链进行协作加快审批速度。9.3 智能合约的邮件实现虽然不如区块链智能合约强大但对于某些低风险场景可以通过签名邮件实现简单的合约逻辑class ContractAgent(EmailAgent): def propose_contract(self, terms): contract_text f合约条款: {terms} signature self.sign_message(contract_text) # 发送给其他参与方 self.send_signed_email(counterpartyexample.com, 合约提案, contract_text) def accept_contract(self, contract_text, signature): if self.verify_signature(contract_text, signature, self.counterparty_public_key): # 合约成立 self.execute_contract(contract_text)9.4 结合大型语言模型将 GPT 等大型语言模型集成到 AI agents 中提升对话质量class GPTEnhancedAgent(EmailAgent): def __init__(self, name, email, private_key_path, api_key): super().__init__(name, email, private_key_path) self.client openai.OpenAI(api_keyapi_key) def generate_response(self, last_message, history): prompt self.build_prompt(last_message, history) response self.client.chat.completions.create( modelgpt-4, messages[{role: user, content: prompt}] ) return response.choices[0].message.content这个项目的真正价值在于它提供了一个可扩展的框架让开发者可以在此基础上构建更复杂的多 AI 系统。无论是用于研究、教育还是实际应用它都展示了 AI agents 在安全通信环境下的潜力。建议从简单的两个 agents 交互开始逐步增加复杂度观察不同策略下的系统行为。这种实践不仅能加深对 AI agents 的理解还能为更复杂的分布式 AI 系统开发积累经验。
企业数字化 ERP 产品动态
相关推荐
Aseprite与Unity2D高效工作流:像素艺术Tilemap制作全解析 1. 项目概述:为什么选择Aseprite与Unity2D的组合? 如果你正在尝试制作一款2D平台游戏,无论是像素风还是手绘风,地图构建都是绕不开的核心环节。Unity引擎的Tilemap系统为2D地图编辑提供了强大的官方支持,但它的“画笔”… · 2026/9/21 17:37:23
开源世界模型:架构解析与工程实践 1. 开源世界模型的前沿探索当我在2019年第一次尝试将Transformer架构应用于环境建模时,服务器连续崩溃了7次。这种挫败感恰恰反映了构建世界模型的本质挑战——我们需要教会机器像人类一样理解物理世界的运作规律。开源世界模型作为当前AI领域最具潜力的方向之一&am… · 2026/9/12 2:29:21
TabPFN深度解析:表格AI领域的Transformer革命与性能突破 TabPFN深度解析:表格AI领域的Transformer革命与性能突破 【免费下载链接】TabPFN ⚡ TabPFN: Foundation Model for Tabular Data ⚡ 项目地址: https://gitcode.com/GitHub_Trending/ta/TabPFN
在当今机器学习领域,表格数据仍然占据着实际应用场… · 2026/7/30 9:24:07
特种工延期复核怎么报名?过期证书怎么处理别再踩坑 特种工延期复核怎么报名?过期证书怎么处理别再踩坑 证书过期了不知道怎么复审延期,是不是你最近正在经历的糟心事?特种作业操作证是从事相关工作的“通行证”,一旦过期,轻则影响上岗,重则可能引发安全事故。现在就来聊聊【特种工延期复核】怎么报名,以… · 2026/11/15 2:36:05
电工证福利怎么领取通过率揭秘:河南学员避坑全攻略 电工证福利怎么领取通过率揭秘:河南学员避坑全攻略 怕考不过白交培训费?这年头谁不想省点钱、省点事,顺利拿到电工证?特别是河南地区的学员,很多人对【电工证福利怎么领取】这个话题特别关注,但真正了解的不多,甚至一不小心就掉进培训机构的“福利陷阱… · 2026/11/15 2:36:05
洋县哪里有考电工证 良心建议告诉你怎么考 洋县哪里有考电工证 良心建议告诉你怎么考 你是不是正愁找不到工作,因为 急需特种作业证才能上岗找工作 ?别急,今天我就从一个干了多年应急管理相关工作的老手角度, 良心建议 你看看洋县哪里能考电工证,怎么考,考了之后能干嘛,能不能升职加薪。… · 2026/11/15 2:36:05
工地太忙根本没时间复习考试,行政局电工证电子证书怎么搞定? 工地太忙根本没时间复习考试,行政局电工证电子证书怎么搞定? 你是不是也经常在工地来回跑,手上活儿干不完,脑袋里还得想着考证的事? 行政局电工证 这玩意儿,要是没考下来,别说干项目,连进场都难。现在考个证都得花时间, 电子证书… · 2026/11/15 2:36:05
建筑水电工证办理值不值得考?实操考试心里没底怕挂科 建筑水电工证办理值不值得考?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这几乎是所有准备考【建筑水电工证办理】的人共同的焦虑。尤其是在河南,像商丘这样的地市,建筑行业用工量大、施工项目多,但持证上岗率却参差不齐。很多人在报名前都会反复问… · 2026/11/15 2:35:04
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 22:31:30