Skip to main content

Python Agent SDK - 基于 WebSocket 的智能体通信库

Project description

acp-py

Python Agent SDK - 基于 WebSocket 的智能体通信库

安装

pip install acp-py

快速开始

启动 Agent

# 直接启动(使用默认配置)
acp-py

# 指定 Agent 名称
acp-py -n my_agent

# 启用调试模式
acp-py --debug

# 指定目标 Agent(可直接发送消息)
acp-py -t target_agent.aid.pub

交互命令

启动后可以使用以下命令:

命令 说明
/target <aid> 设置目标 Agent
/session 显示当前会话信息
/aid 显示本机 AID
/help 显示帮助
/quit 退出
其他输入 发送消息给目标

CLI 参数

acp-py [选项]

选项:
  -d, --data <path>    数据目录 (默认: ./acp-data)
  -p, --password <pwd> 种子密码
  -n, --name <name>    Agent 名称
  -t, --target <aid>   目标 Agent AID
  --ap <address>       AP 地址 (默认: aid.pub)
  --debug              启用调试模式

调度器环境变量

以下环境变量用于调整消息调度器的默认并发参数(可选):

  • AGENTCP_SCHED_CORE_WORKERS:核心线程数(常驻)
  • AGENTCP_SCHED_MAX_WORKERS:最大线程数(高峰扩展)
  • AGENTCP_SCHED_MAX_TASKS_PER_WORKER:每线程最大并发异步任务数

自定义 Agent 开发

from agentcp import AgentCP

# 创建 AgentCP 实例
acp = AgentCP("./data", seed_password="your_password", debug=True)

# 创建 Agent
aid = acp.create_aid(ap="aid.pub", agent_name="my_agent")
print(f"Agent AID: {aid.id}")

# 注册消息处理器
async def handle_message(data):
    print(f"收到消息: {data}")

aid.add_message_handler(handle_message)

# 上线
aid.online()

# 发送消息
session_id = aid.create_session("my_session", "测试会话")
aid.invite_member(session_id, "target_agent.aid.pub")
aid.send_message(session_id, ["target_agent.aid.pub"], "Hello!")

# 保持运行
acp.serve_forever()

系统要求

  • Python >= 3.8

平台支持

  • macOS
  • Linux
  • Windows

更新日志 (v1.0.3)

安全修复

  • 修复 Guest 证书申请日志泄露私钥问题,日志脱敏仅记录 guest_aid 和 entrypoint (ca_client.py)
  • 修复 client.py 异常处理不一致:统一 401 重试逻辑顺序,安全解析非 JSON 响应体,get/post 方法行为对称
  • 替换全部 DEBUG print 语句为 log 框架调用,消除生产环境信息泄露风险 (agentcp.py, session_manager.py)

Bug 修复

  • 修复 message_serialize.py 中 InviteCodeExpire 双写导致序列化/反序列化字段错位的数据损坏 bug
  • 修复 session_manager.pyeject_member 使用 self.agent_id 而非参数 eject_aid 的逻辑错误
  • 修复 session_manager.pycheck_stream_url_existsreturn False 死代码
  • 修复版本号不一致:__init__.py 从 0.1.96 更新为 1.0.3,与 pyproject.toml 对齐

性能与稳定性

  • SQLite 线程安全重构:启用 WAL 模式,使用 threading.local() 为每线程维护独立连接,解决并发 database is locked 问题 (db_manager.py)
  • 消息调度器优化:核心/最大线程数改为基于 CPU 动态计算,支持环境变量覆盖 (improved_scheduler.py)
  • 文件传输添加超时保护:timeout=(10, 600),防止网络异常时无限挂起 (file_client.py)
  • 消息队列溢出时记录 warning 日志,便于排查消息丢失 (message_client.py)

代码清理

  • 删除未使用的 connection_manager.py(完整但从未被导入的死代码)
  • 移除错误的 from ntpath import exists 导入 (agentcp.py)
  • 修正拼写:db_manangerdb_manager(文件名 + 3 处 import + 构造函数参数)
  • 修正拼写:on_message_reciveon_message_receive(回调参数名)
  • 移除 get_friend_agent_list 未使用的 aid 参数 (db_manager.py, agentcp.py)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acp_py-1.0.6.tar.gz (144.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acp_py-1.0.6-py3-none-any.whl (174.8 kB view details)

Uploaded Python 3

File details

Details for the file acp_py-1.0.6.tar.gz.

File metadata

  • Download URL: acp_py-1.0.6.tar.gz
  • Upload date:
  • Size: 144.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for acp_py-1.0.6.tar.gz
Algorithm Hash digest
SHA256 87f8a17ef662fdb859614473297fa849e5ca391ddbcd2606209a6354a59ae310
MD5 e869e5d08685bd9b81eaed442c590b86
BLAKE2b-256 18971197405507a8c79cdf2ff9f98b40287380d6c9aaf19321143e4900681c1a

See more details on using hashes here.

File details

Details for the file acp_py-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: acp_py-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 174.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for acp_py-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 fcf43bbf893a839a540ab731de1083496a013b715a446a256e00997f65452ce7
MD5 53a684f68ecb2924c5c32f7542b9cb32
BLAKE2b-256 65bc070a644ee30dc978e1fe8f7d2304218c236bcd4f280afbfbcaa1dbba00fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page