用途
Burner Agents 是一个 Python 框架,用于部署一次性(disposable)AI 智能体,让它们代替用户与网页交互。每个智能体在隔离的浏览器上下文中运行,拥有唯一指纹,任务完成后立即销毁,从而防止被追踪和建立用户画像。系统提供不可归因(non-attribution)、不可关联(non-linkability),并确保不创建持久化配置文件。
主要能力
项目由四个主要组件构成:
- isolation/:为每个智能体提供全新、可分离的浏览器上下文。
- reasoning/:将意图转化为动作,对每个页面进行实时推理。
- orchestration/:分解任务、在多个智能体间分发、汇总结果。
- identity/:在任务开始时实例化,在完成时销毁。
框架支持单智能体任务、多智能体集群(Swarm)、任务分解、扇出(Fan-Out)、顺序流水线(Pipeline)等编排模式。还提供限流与节流、轮换代理集成、结果校验等高级模式。
使用方式
安装
# 克隆仓库
git clone https://github.com/NotPBShaw/burner-agents.git
cd burner-agents
# 安装依赖
pip install -r requirements.txt
或通过 pip 安装(如已发布):
pip install burner-agents
单智能体任务
from burner.agent import BurnerAgent
from burner.task import Task
task = Task(
intent="Find the top 3 Python AI frameworks on GitHub",
max_agents=1
)
agent = BurnerAgent()
result = agent.execute(task)
print(result.data)
# 完成后智能体及所有状态自动销毁
多智能体集群
from burner.orchestration import Swarm
from burner.task import Task
task = Task(
intent="Compare pricing across 5 cloud providers",
max_agents=5,
parallel=True
)
swarm = Swarm(size=5)
results = swarm.execute(task)
for result in results:
print(f"Provider: {result.provider}, Price: {result.price}")
# 所有智能体销毁,不保留持久状态
配置
环境变量:
# 必需:用于推理的 LLM 提供方
export BURNER_LLM_PROVIDER="anthropic"
export ANTHROPIC_API_KEY="your-api-key"
# 可选:浏览器配置
export BURNER_HEADLESS=true
export BURNER_TIMEOUT=30000
# 可选:网络隔离
export BURNER_PROXY_ROTATION=true
export BURNER_PROXY_POOL_SIZE=10
# 可选:身份生成
export BURNER_FINGERPRINT_RANDOMIZATION=true
配置文件示例:
from burner.config import BurnerConfig
config = BurnerConfig(
isolation={
"browser": "chromium",
"headless": True,
"separate_contexts": True,
"clear_on_complete": True
},
reasoning={
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"max_steps": 50,
"live_page_analysis": True
},
orchestration={
"max_parallel_agents": 10,
"task_decomposition": "auto",
"result_reconciliation": True
},
identity={
"fingerprint_source": "random",
"destroy_on_complete": True,
"no_state_retention": True
}
)
智能体隔离
from burner.isolation import IsolatedContext
from burner.identity import generate_identity
identity = generate_identity()
context = IsolatedContext(
fingerprint=identity.fingerprint,
user_agent=identity.user_agent,
viewport=identity.viewport,
timezone=identity.timezone,
locale=identity.locale,
device_characteristics=identity.device
)
async with context.browser() as browser:
page = await browser.new_page()
await page.goto("https://example.com")
# 退出时上下文自动销毁
推理引擎
from burner.reasoning import ReasoningEngine
from burner.isolation import IsolatedContext
engine = ReasoningEngine(
provider="anthropic",
model="claude-3-5-sonnet-20241022"
)
async with IsolatedContext() as context:
page = await context.new_page()
result = await engine.reason_and_act(
page=page,
intent="Navigate to Hacker News and find the top story about AI",
max_steps=20
)
print(result.final_answer)
print(f"Steps taken: {len(result.steps)}")
编排模式
任务分解:
from burner.orchestration import TaskDecomposer, Swarm
decomposer = TaskDecomposer()
subtasks = decomposer.decompose(
intent="Research and compare 10 project management tools",
max_agents=10
)
swarm = Swarm(size=len(subtasks))
results = await swarm.execute_parallel(subtasks)
final_report = decomposer.reconcile(results)
扇出模式:
from burner.orchestration import FanOut
fanout = FanOut(
task=Task(intent="Check if service is available"),
agent_count=3,
reconciliation_strategy="majority"
)
results = await fanout.execute()
print(f"Service available: {results.consensus}")
print(f"Agreement: {results.agreement_percentage}%")
顺序流水线:
from burner.orchestration import Pipeline
pipeline = Pipeline([
Task(intent="Find the top AI research papers this week"),
Task(intent="Summarize the key findings from these papers"),
Task(intent="Identify practical applications")
])
result = await pipeline.execute()
print(result.final_output)
身份管理
from burner.identity import IdentityManager
manager = IdentityManager()
identity = manager.create()
print(f"Identity ID: {identity.id}")
print(f"Created: {identity.created_at}")
agent = BurnerAgent(identity=identity)
result = await agent.execute(task)
manager.destroy(identity.id)
assert manager.get(identity.id) is None
高级模式
限流与节流:
from burner.orchestration import ThrottledSwarm
swarm = ThrottledSwarm(
size=10,
requests_per_minute=30,
jitter=True,
delay_range=(2, 8)
)
results = await swarm.execute(task)
轮换代理:
from burner.isolation import ProxyRotator
rotator = ProxyRotator(
proxy_list=[
"http://proxy1.example.com:8080",
"http://proxy2.example.com:8080",
"http://proxy3.example.com:8080"
],
rotation_strategy="random"
)
context = IsolatedContext(proxy_rotator=rotator)
结果校验:
from burner.orchestration import Validator
validator = Validator(
consensus_threshold=0.7,
min_agents=3
)
swarm = Swarm(size=5)
raw_results = await swarm.execute(task)
validated_result = validator.validate(raw_results)
适用场景
- 需要隐私保护的网页调研与信息收集。
- 跨多个来源并行比较数据(如价格、功能)。
- 需要多智能体冗余校验的关键任务。
- 需要避免被追踪、不留下持久画像的自动化网页交互。
限制与注意事项
- 需要配置 LLM 提供方(如 Anthropic)及相应 API Key 才能进行推理。
- 使用轮换代理、限流等高级能力需要额外配置。
- 官方文档提供了法律与合规提示:该工具用于隐私保护的网页交互,用户需自行负责遵守网站服务条款、所在司法辖区的适用法律,并以合乎伦理和负责任的方式使用。框架提供技术能力,法律合规由用户负责。
- 关于收费、价格、具体平台支持范围等事实,资料中暂未提供。