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.py中eject_member使用self.agent_id而非参数eject_aid的逻辑错误 - 修复
session_manager.py中check_stream_url_exists的return 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_mananger→db_manager(文件名 + 3 处 import + 构造函数参数) - 修正拼写:
on_message_recive→on_message_receive(回调参数名) - 移除
get_friend_agent_list未使用的aid参数 (db_manager.py,agentcp.py)
License
MIT
Project details
Release history Release notifications | RSS feed
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.4.tar.gz
(144.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
acp_py-1.0.4-py3-none-any.whl
(174.6 kB
view details)
File details
Details for the file acp_py-1.0.4.tar.gz.
File metadata
- Download URL: acp_py-1.0.4.tar.gz
- Upload date:
- Size: 144.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97bfc81f370d14b062995ae925da3275e2f2efa2bd2c9fc27e603ddb42cebe77
|
|
| MD5 |
862475bc0b1f470143c3fa4941cb05f7
|
|
| BLAKE2b-256 |
891b9a2e186ee40d93ed4cd0e21988e9e014922bc7b167aaa67342bb7e923047
|
File details
Details for the file acp_py-1.0.4-py3-none-any.whl.
File metadata
- Download URL: acp_py-1.0.4-py3-none-any.whl
- Upload date:
- Size: 174.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc0f9e836a701e70ca62b64f063ac66a3d647bc38a22079122d4e30fef49daba
|
|
| MD5 |
8b3a0cf8ad68b787d43be74c27782775
|
|
| BLAKE2b-256 |
e32d72bb1f0ea5f5eca64dce6ff0a0c4bcc8ca14381cb1a403445ac2c9fb2f65
|