Soyuz 桌面 AI 代理:以安全为核心的开放源代码方案
开发者已将“Soyuz”桌面代理作为开放源代码发布,重点关注安全性和可预测的操作。与功能繁多的工具不同,该项目通过避免使用像 MCP 这样冗长的协议来最小化风险。该代理在本地运行,无需 VPN 或复杂设置,并支持 GigaChat 和 Anthropic 模型。
源代码可供审查和修改。该项目源于黑客松经验以及使用 Kotlin Multiplatform 构建的移动代理。
创意的起源:从简单代理到桌面解决方案
2025 年 7 月,作者发布了一份关于使用 Kotlin 创建代理的指南。当时,桌面代理已通过 OpenAI 和 Anthropic API 集成到工作流程中。它们自动化了日常任务:语音控制、用户界面交互。
在 Sber 的黑客松上,团队拒绝了像 Claude Code 这样的通用解决方案。相反,他们为视障用户创建了一个代理:无需用户界面即可进行屏幕识别、键盘和鼠标控制。使用 Clojure Robot 库和自动化 DSL 的经验帮助在一周内实现了原型。
该代理通过了初赛,展示了用于打开文件、网站、点击和热键的语音命令。在决赛前,出现了 GigaChat 审查问题——通过 VPN 添加了对 Anthropic 的支持,但这降低了性能。
重启:基于 Kotlin Multiplatform 的框架
黑客松后,项目重心转向移动应用。Kotlin Multiplatform (KMP) 用于实现 iOS、Android 和桌面的跨平台兼容性。开发了一个基于图的自定义代理框架,无外部依赖。
关键发布:
- 无框架的 Kotlin 代理:通过状态图实现。
- KMP 和 Xcode:将代理移植到 4 个平台的经验。
这一技术栈成为“Soyuz”的基础,确保了单一代码库和对安全的控制。
安全至上:拒绝 MCP
对于大众用户——普通用户——代理必须开箱即用,无需 VPN、加密货币或银行卡。要求:
- 自主性:无需配置。
- 可访问性:支持本地模型和无需中介的 GigaChat。
- 保护:最小化漏洞。
MCP 因冗长而被拒绝:像 Notion 这样的工具描述会使上下文膨胀至 45k 字符,降低 GigaChat 和本地 LLM 的效率。研究识别出 MCP 中的 16 个漏洞。Notion MCP 工具的例子说明了问题:
[
{
"fn": {
"name": "Mcp_notion_notion_search",
"description": "[MCP:notion] 执行搜索:\n- \"internal\":对 Notion 工作空间进行语义搜索...",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "对整个 Notion 工作空间的语义搜索查询..."
}
}
}
}
}
]
这样的结构会扼杀性能。“Soyuz”使用简化的技术栈:固定工具集、任务图、本地执行。
架构与技术栈
项目基于 KMP 为桌面(Compose Multiplatform)构建。核心组件:
- 代理核心:用于任务规划的状态图。
- 工具:屏幕捕获、OCR、输入模拟(键盘/鼠标)。
- 模型:GigaChat(主要)、Anthropic(备用)、本地 LLM。
- 安全:工具沙盒化、提示验证、无明确同意不进行网络调用。
图允许可预测的行为:代理不会偏离计划,最小化令牌使用。与 MCP 相比,上下文节省高达 70%。
对于中级/高级开发者,该技术栈作为 LangChain 或 AutoGen 的替代方案很有趣:完全控制、KMP 集成、专注于桌面自动化。
关键要点
- 开放源代码:GitHub 上的源代码,MIT 许可证供免费使用。
- 安全:拒绝 MCP,固定工具,本地执行。
- 可访问性:无需 VPN 即可与 GigaChat 配合使用,支持语音和屏幕。
- KMP 技术栈:跨平台,图代替提示链。
- 资源效率:上下文最多 4k 令牌,而非 MCP 的 45k+。
— Editorial Team
暂无评论。