1. 项目背景与动机
那天早上,我像往常一样打开电脑查看行业动态,Claude Cowork的发布消息像一记重拳砸在胸口。作为Kuse.ai的创始人之一,我清楚地意识到:我们团队花了半年时间打磨的产品,被Anthropic用一个桌面应用轻松复刻了。
但冷静下来分析,Claude Cowork有几个明显的局限性:
- 闭源架构让开发者难以二次开发
- 深度绑定Claude模型,缺乏灵活性
- 本地化支持薄弱,隐私保护存疑
这让我萌生了一个大胆的想法:用48小时开发一个开源替代品。更疯狂的是,我决定用从未接触过的Rust语言来实现它。这个决定基于三个关键判断:
- Rust的内存安全特性非常适合构建长期运行的Agent
- 其高性能特性可以确保本地模型流畅运行
- 编译后的单一二进制文件便于分发
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 核心组件拆解
整个系统采用经典的"三明治"架构:
code复制[UI层] -> [核心逻辑层] <- [模型适配层]
↑ ↑
[沙箱执行环境] [技能插件系统]
特别值得一提的是模型适配层的设计。我们抽象出统一的ModelTrait:
rust复制pub trait ModelTrait {
async fn chat(&self, messages: Vec<Message>) -> Result<String>;
async fn embed(&self, text: &str) -> Result<Vec<f32>>;
}
这种设计带来了惊人的灵活性:
- 可以无缝切换Claude/OpenAI等商业API
- 支持通过Ollama连接本地LLM
- 未来扩展新模型只需实现该trait
2.2 安全隔离方案
命令执行是Agent最危险的功能。我们的解决方案是:
- 所有命令先在沙盒环境预执行
- 通过ptrace监控系统调用
- 白名单机制限制可访问路径
具体实现时使用了Linux的命名空间隔离:
rust复制unshare(CLONE_NEWNS | CLONE_NEWPID | CLONE_NEWNET);
对于Windows平台,则通过Job Object实现类似的隔离效果。实测中,这种设计成功拦截了99
