{"id":47576667,"url":"https://github.com/ZiwayZhao/agent-coworker","last_synced_at":"2026-04-08T21:01:05.503Z","repository":{"id":346025962,"uuid":"1188282141","full_name":"ZiwayZhao/agent-coworker","owner":"ZiwayZhao","description":"Skill-as-API: P2P agent collaboration over XMTP. Call remote skills without exposing code. E2E encrypted, revocable trust, async delegation. Zero deps.","archived":false,"fork":false,"pushed_at":"2026-04-04T13:49:34.000Z","size":3531,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T16:03:57.835Z","etag":null,"topics":["a2a","agent","agent-collaboration","ai","ai-agents","collaboration","e2e-encryption","mcp","multi-agent","p2p","peer-to-peer","privacy","protocol","python","skill-as-api","trust-management","wallet","xmtp"],"latest_commit_sha":null,"homepage":"https://ziwayzhao.github.io/agent-coworker/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZiwayZhao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-21T21:32:19.000Z","updated_at":"2026-04-04T13:49:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ZiwayZhao/agent-coworker","commit_stats":null,"previous_names":["ziwayzhao/agent-coworker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ZiwayZhao/agent-coworker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiwayZhao%2Fagent-coworker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiwayZhao%2Fagent-coworker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiwayZhao%2Fagent-coworker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiwayZhao%2Fagent-coworker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZiwayZhao","download_url":"https://codeload.github.com/ZiwayZhao/agent-coworker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZiwayZhao%2Fagent-coworker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a2a","agent","agent-collaboration","ai","ai-agents","collaboration","e2e-encryption","mcp","multi-agent","p2p","peer-to-peer","privacy","protocol","python","skill-as-api","trust-management","wallet","xmtp"],"created_at":"2026-03-31T04:00:24.853Z","updated_at":"2026-04-08T21:01:05.484Z","avatar_url":"https://github.com/ZiwayZhao.png","language":"Python","funding_links":[],"categories":["Sentiment Analysis \u0026 Alternative Data","Applications"],"sub_categories":["Advanced Components"],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cp align=\"right\"\u003e\n  \u003ca href=\"./README_en.md\"\u003eEnglish\u003c/a\u003e | \u003cb\u003e中文\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/assets/logo.png\" alt=\"CoWorker Logo\" width=\"120\"/\u003e\n\n# CoWorker Protocol\n\n**你的方法论值三年，别人复制只要三秒。**\n\n\u003cbr/\u003e\n\n\u003ca href=\"https://pypi.org/project/agent-coworker/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/agent-coworker?style=for-the-badge\u0026color=000000\" alt=\"PyPI\"\u003e\u003c/a\u003e\n\u0026nbsp;\n\u003ca href=\"https://www.python.org/downloads/\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.10+-000000?style=for-the-badge\" alt=\"Python 3.10+\"\u003e\u003c/a\u003e\n\u0026nbsp;\n\u003cimg src=\"https://img.shields.io/badge/deps-zero-000000?style=for-the-badge\" alt=\"Zero deps\"\u003e\n\u0026nbsp;\n\u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-000000?style=for-the-badge\" alt=\"MIT\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n---\n\n你花了三年磨出来的分析方法论，做成 SKILL.md 分享给同事用。\n\n然后发现，**别人复制一下文件就拿走了。**\n\n反蒸馏说：往里面掺假。我们说：**从架构上让他根本拿不到。**\n\n```bash\ncoworker serve ./my-skill/\n```\n\n你的 Skill 跑在你的机器上。别人远程调用，只拿到结果。\u003cbr/\u003e\n代码、Prompt、方法论——**永远不传输。**\n\n\u003e **反蒸馏是创可贴，Skill-as-API 才是治本。**\n\n---\n\n## 你遇到过这些问题吗？\n\n你做了一个 SKILL.md，被同事蒸馏成了\"数字员工\"——colleague.skill 三天 6900 star，整个技术圈都在讨论。\n\n然后你意识到：\n\n- 📂 SKILL.md 是纯文本。任何能打开文件的人，都能看到你全部的方法论\n- 🔓 没有访问控制。复制一下文件，\"你\"就跟着别人走了\n- 🧪 反蒸馏？往里面掺假？掺假的结果你自己也不能用\n- ⏰ 分享过的技能，没有\"收回\"的机制\n\n**现在的 Skill 生态是裸奔的。70 万+ Skills，26% 有安全风险。**\n\n---\n\n## CoWorker 怎么解决\n\n### 一条命令，把 SKILL.md 变成安全的 API\n\n```bash\nexport DEEPSEEK_API_KEY=sk-xxx   # 你自己的 LLM key\ncoworker serve ./my-skill/       # 一条命令，Skill 上线\n```\n\n发生了什么：\n\n```\n你的机器                                调用方\n┌─────────────────────┐              ┌─────────────────┐\n│  SKILL.md (私有)     │              │                 │\n│  + DeepSeek API key  │  ←─XMTP─→  │  只看到:         │\n│  + 你的方法论        │   E2E加密    │  名称、描述      │\n│  + 你的评分规则      │              │  输入/输出 schema │\n│  + 你的知识库        │              │  调用结果         │\n└─────────────────────┘              └─────────────────┘\n        ↑ 不传输                            ↑ 只有这些\n```\n\n**调用方拿到了分析结果，但看不到你的 SKILL.md 怎么写的。**\n\n### 四层保护\n\n| 保护 | 做什么 | 效果 |\n|------|--------|------|\n| **1. Skill-as-API** | 代码跑在你的机器上 | 调用只看到结果 |\n| **2. 信任分层** | 四级：不信任/已知/内部/特权 | 你控制谁能调用 |\n| **3. 自动降级** | OKR 完成后权限收回 | 协作不变成永久开放 |\n| **4. 技能隐藏** | 隐藏的技能返回\"未知技能\" | 对方连存在都不知道 |\n\n### 和反蒸馏的根本区别\n\n| | 反蒸馏 | Skill-as-API |\n|---|---|---|\n| 文件是否暴露 | 是（虽然掺假了） | **否，文件不离开你的机器** |\n| 你自己能正常用吗 | 要保留\"真版本\" | **一直是真版本** |\n| 对方能逆向吗 | 可以（猫鼠游戏） | **不可以（拿不到代码）** |\n| 协作结束后 | 文件已经在对方手上 | **权限自动收回** |\n\n---\n\n## 快速开始\n\n### 体验演示 Bot（30 秒）\n\n```bash\npip install agent-coworker\ncoworker init --name my-agent\ncoworker bridge start\ncoworker demo\n```\n\n连接 `icy`——我们始终在线的 Bot。不需要邀请码：\n\n```\n✓ 连接成功: icy（5 技能: about, ping, stock_info, market_state, deep_analysis）\n✓ icy.about('general') → \"CoWorker 让 Agent 点对点协作...\"\n✓ icy.deep_analysis('600519') → [LLM 深度分析报告，课件方法论驱动]\n全程 E2E 加密——icy 的实现代码和课件知识未被传输\n```\n\n### 用你自己的 SKILL.md\n\n```bash\nexport DEEPSEEK_API_KEY=sk-xxx\ncoworker serve ./my-skill/\n\n# 输出：\n#   Skill:       my-skill\n#   Description: Your skill description\n#   Prompt:      1096 chars (PRIVATE, never transmitted)\n#   LLM:         deepseek (deepseek-chat)\n#   Dashboard:   http://localhost:8090\n```\n\n别人连接你：\n```bash\npip install agent-coworker\ncoworker connect \u003c你的邀请码\u003e\ncoworker call \u003c你的邀请码\u003e my-skill --input '{\"input\": \"帮我分析茅台\"}'\n→ [你的 LLM 用你的私有方法论生成的结果]\n```\n\n### 或者写 Python\n\n```python\nfrom agent_coworker import Agent\n\nagent = Agent(\"my-bot\")\n\n@agent.skill(\"analyze\",\n             description=\"行业分析\",\n             when_to_use=\"当需要分析某个行业时\",\n             input_schema={\"topic\": \"str\"},\n             output_schema={\"report\": \"str\"},\n             min_trust_tier=1)\ndef analyze(topic: str) -\u003e dict:\n    # 这段代码不会被协议传输\n    # 你的方法论、prompt、知识库——都在这里\n    return {\"report\": my_private_analysis(topic)}\n\nagent.serve()\n```\n\n---\n\n## 邀请码\n\n```bash\ncoworker invite\n\n# Agent:    my-bot\n# 邀请码:    eyJuIjoibXktYm90Ii...\n# 短 ID:     my-bot-7d0a24d9\n#\n# 别人运行：\n#   pip install agent-coworker\n#   coworker connect eyJuIjoibXktYm90Ii...\n```\n\n- 🔄 **可重复使用** — 发给任何人\n- 🔒 **隐私安全** — 只含路由 ID，不含密钥\n- ♻️ **永久有效** — 不过期\n- 📋 **随处分享** — 微信、飞书、GitHub\n\n---\n\n## 提示词注入防护\n\n\u003e \"对方能不能通过构造恶意输入来窃取我的 prompt？\"\n\nCoWorker 从架构上解决了这个问题：**对方调用的是你的函数接口，不是你的 LLM。** 协议传输的是函数返回值，不是 LLM 原始输出。即使对方在输入里塞恶意指令，拿到的也只是你函数的 return 值。\n\n攻击面从 LLM 层收缩到了函数层。\n\n---\n\n## 异步委托\n\n不是 API 调用——更像发微信。对方不在线也没关系。\n\n```bash\ncoworker request \u003c邀请码\u003e analyze --input '{\"topic\": \"AI agent\"}'\n→ Task queued: a1b2c3d4...\n\n# 几小时后\ncoworker result a1b2c3d4\n→ {\"report\": \"...\"}\n```\n\n消息在 XMTP 网络排队，对方上线自动处理。\n\n---\n\n## 协议对比\n\n| | CoWorker | MCP | A2A | CrewAI |\n|---|---|---|---|---|\n| **代码隐私** | 黑箱（仅 schema） | 完全暴露 | Schema | 共享运行时 |\n| **信任管理** | 四层 + 自动降级 | 无 | 企业 IAM | 无 |\n| **技能隐藏** | 支持 | 无 | 无 | 无 |\n| **网络** | 开放互联网 P2P | 本地 | 企业 | 单进程 |\n| **加密** | E2E (XMTP) | 传输层 | TLS | 无 |\n| **中心服务器** | 无 | MCP 服务器 | 发现服务 | 运行时 |\n| **成本** | 零 | 服务器费 | 基础设施 | 算力费 |\n\n---\n\n## CLI 命令\n\n```bash\ncoworker serve ./skill/         # 一键 Skill-as-API（新！）\ncoworker wrap ./skill/          # 预览 SKILL.md 解析结果\ncoworker inspect \u003c邀请码\u003e        # 查看对方的技能详情\ncoworker mcp serve              # 暴露为 MCP Server（Claude Code 可调用）\ncoworker init --name my-agent   # 初始化身份\ncoworker bridge start           # 启动 XMTP bridge\ncoworker demo                   # 连接演示 Bot\ncoworker invite                 # 生成邀请码\ncoworker connect \u003c邀请码\u003e        # 连接协作者\ncoworker skills configure       # 管理技能可见性\ncoworker trust list             # 查看信任设置\ncoworker request \u003c邀请码\u003e \u003c技能\u003e  # 异步委托\ncoworker tasks                  # 查看任务列表\ncoworker result \u003ctask_id\u003e       # 获取结果\n```\n\n---\n\n## 跨网验证\n\n| Agent | 位置 | 网络 |\n|-------|------|------|\n| ziway-test | 中国北京 | 中国电信 |\n| icy | 阿里云 | Production |\n\n5/5 技能调用通过，全程 XMTP Production E2E 加密。热连接延迟 1.8–2.9 秒。\n\n---\n\n## 引用\n\n```bibtex\n@software{coworker2026,\n  title  = {CoWorker Protocol: Privacy-Preserving Agent Skill Collaboration},\n  author = {Zhao, Ziwei and Liu, Dantong and Ding, Xizhi},\n  year   = {2026},\n  url    = {https://github.com/ZiwayZhao/agent-coworker}\n}\n```\n\n**Advisor:** [Wenxuan Wang](https://jarviswang94.github.io), Renmin University of China\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ZiwayZhao/agent-coworker\"\u003eGitHub\u003c/a\u003e ·\n  \u003ca href=\"https://pypi.org/project/agent-coworker/\"\u003ePyPI\u003c/a\u003e ·\n  \u003ca href=\"https://ziwayzhao.github.io/agent-coworker/\"\u003e官网\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  MIT · Ziwei Zhao, Dantong Liu, Xizhi Ding\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZiwayZhao%2Fagent-coworker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZiwayZhao%2Fagent-coworker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZiwayZhao%2Fagent-coworker/lists"}