agent-computer-user
💡 Summary
An AI-powered recruitment assistant that automates hiring processes and desktop tasks using multiple AI models.
🎯 Target Audience
🤖 AI Roast: “Powerful, but the setup might scare off the impatient.”
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress). Run with least privilege and audit before enabling in production.
功能特性
🤖 多模型AI智能对话
- 智能回复生成:两阶段AI架构(分类→生成),支持16种招聘和考勤场景的智能回复
- 多模型集成:
- Anthropic Claude (支持Computer Use功能)
- 阿里通义千问 (qwen-turbo/qwen-plus/qwen-max)
- OpenAI GPT系列
- Google Gemini
- DeepSeek
- OpenRouter (聚合多模型)
- 动态模型切换:运行时切换AI模型,无需重启应用
- 智能降级机制:AI服务不可用时自动降级到规则引擎
🖥️ 桌面自动化能力
- E2B集成:通过E2B沙箱环境实现安全的桌面自动化
- Computer Use:支持Claude的计算机使用功能,可以像人一样操作电脑
- 截图与交互:支持屏幕截图、鼠标点击、键盘输入等桌面操作
- 中文输入支持:完善的中文IME支持,适配国内应用场景
💼 招聘业务定制
- Boss直聘集成:完整的招聘流程自动化,包含反检测措施
- DulidayHR系统:职位管理、面试预约等功能集成
- 职位信息生成:智能生成格式化的招聘信息,支持多种岗位类型
- 多品牌支持:动态品牌检测和切换,支持多租户架构
🔧 企业级配置管理
- 统一配置服务:基于LocalForage的持久化配置管理
- 三层数据结构:品牌数据、系统提示词、回复提示词分层管理
- 可视化管理界面:
/admin/settings提供完整的配置管理UI - 数据迁移系统:从硬编码到持久化存储的自动迁移
- 配置版本控制:支持配置的导入、导出、版本管理
🔗 第三方集成
- 通信工具:
- 飞书群机器人(支持富文本消息)
- 企业微信机器人(支持图片附件)
- MCP协议:支持Model Context Protocol,集成Puppeteer、Google Maps等
- 浏览器自动化:Puppeteer集成,支持网页抓取和自动化测试
🚀 技术架构亮点
- Next.js 15 App Router:最新的React服务端渲染框架
- TypeScript严格模式:100%类型安全,禁用any类型
- Zod模式驱动:运行时验证与编译时类型推导统一
- 单例模式服务:核心服务采用单例模式,防止内存泄漏
- React 19特性:利用最新React特性提升性能
🔒 安全与合规
- 沙箱执行环境:危险命令在E2B沙箱中隔离执行
- 命令黑名单:内置危险命令检测和拦截
- 环境变量隔离:构建时和运行时变量严格分离
- 生产环境保护:生产环境下的额外安全限制
本地开发
环境要求
- Node.js 18.18+
- pnpm 8+ (推荐) 或 npm/yarn
- Docker (可选,用于容器化部署)
快速开始
-
克隆项目并安装依赖
git clone <repository-url> cd ai-sdk-computer-use pnpm install # 推荐使用pnpm -
配置环境变量
复制环境变量模板并配置:
cp .env.example .env.local编辑
.env.local文件,配置必要的环境变量:# AI模型API密钥(至少配置一个) ANTHROPIC_API_KEY=your_anthropic_key # Claude模型 DASHSCOPE_API_KEY=your_dashscope_key # 通义千问 DEEPSEEK_API_KEY=your_deepseek_key # DeepSeek(可选) OPENROUTER_API_KEY=your_openrouter_key # OpenRouter(可选) GEMINI_API_KEY=your_google_gemini_key # Google Gemini(可选) # E2B桌面自动化(Computer Use功能必需) E2B_API_KEY=your_e2b_key # Supabase认证(可选,不配置则以独立模式运行) NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_key # 第三方集成(可选) FEISHU_BOT_WEBHOOK=your_feishu_webhook # 飞书机器人 WECHAT_BOT_WEBHOOK=your_wechat_webhook # 企微机器人 WECHAT_BOT_ACCESS_TOKEN=your_wechat_token DULIDAY_TOKEN=your_duliday_token # DulidayHR系统 # MCP集成(可选) EXA_API_KEY=your_exa_search_key # Exa搜索 -
启动开发服务器
pnpm dev # 使用Turbopack加速开发构建 -
访问应用
开发命令
# 开发 pnpm dev # 启动开发服务器(Turbopack) pnpm build # 构建生产版本 pnpm start # 启动生产服务器 # 测试 pnpm test # 运行单元测试(watch模式) pnpm test:run # 运行单元测试(单次) pnpm test:ui # 可视化测试界面 pnpm test:coverage # 生成测试覆盖率报告 pnpm test:mcp # 测试MCP连接 # 代码质量 pnpm lint # ESLint检查 pnpm format # Prettier格式化 pnpm format:check # 检查格式化 npx tsc --noEmit # TypeScript类型检查 # Docker部署 ./scripts/deploy.sh # 自动构建并推送到GitHub Container Registry
调试技巧
🔧 配置管理调试
- 访问
/admin/settings进行可视化配置 - 浏览器DevTools > Application > IndexedDB查看存储的配置
- 使用
ConfigInitializer组件确保配置初始化 - 清除IndexedDB可强制重新初始化配置
🤖 AI功能调试
- 使用
/test-llm-reply测试智能回复功能 - 检查
useModelConfigStore中的模型配置状态 - 查看网络请求确认AI API调用情况
- 测试降级机制:故意使用错误的API密钥
🖥️ Desktop自动化调试
- 确保E2B_API_KEY配置正确
- 使用
/api/diagnose检查E2B连接状态 - 查看
lib/e2b/tool.ts中的日志输出 - 测试中文输入时参考
docs/CHINESE_INPUT_GUIDE.md
🐛 常见问题
- TypeScript错误: 运行
npx tsc --noEmit检查类型 - 配置不生效: 检查
ConfigInitializer是否正确加载 - 工具组件不渲染: 确认使用
message.parts而非message.content - Docker构建失败: 检查是否使用正确的docker-compose文件(ARM64 vs AMD64)
架构设计
核心设计原则
-
Zod Schema-First: 所有数据结构从Zod schema派生类型
const schema = z.object({...}) type SchemaType = z.infer<typeof schema> -
单例模式服务: 核心服务使用单例模式防止资源泄漏
configService: 配置管理mcpClientManager: MCP连接管理
-
零容忍any类型: 使用unknown和类型收窄替代any
-
智能降级机制: AI不可用时自动降级到规则引擎
数据流架构
- 配置加载:
ConfigInitializer→configService→ Components - 智能回复: Message → Classification → Reply Generation
- 桌面自动化: User Action → E2B Tools → Desktop → Result
- 模型选择:
useModelConfigStore→ Provider → AI SDK
目录结构
├── app/ # Next.js App Router
│ ├── api/ # API路由
│ └── (routes)/ # 页面路由
├── components/ # React组件
│ ├── ui/ # 通用UI组件
│ └── tool-messages/ # 工具消息组件
├── lib/ # 核心逻辑
│ ├── services/ # 单例服务
│ ├── stores/ # Zustand状态管理
│ ├── tools/ # AI工具集成
│ └── e2b/ # 桌面自动化
└── types/ # TypeScript类型定义
部署指南
Docker部署(推荐)
-
本地测试(macOS ARM64)
docker compose -f docker-compose.local.yml up -d -
生产构建
./scripts/deploy.sh # 自动构建并推送到GitHub Container Registry -
VPS部署
# 在VPS上拉取并运行 docker compose -f docker-compose.prod.yml up -d
Vercel部署
配置环境变量后即可一键部署。
手动部署
-
构建应用
pnpm build -
启动服务
pnpm start # 或使用PM2: pm2 start ecosystem.config.js -
配置Nginx反向代理
location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; }
部署检查清单
- [ ] 环境变量配置完整
- [ ] 数据库连接正常(如使用Supabase)
- [ ] 健康检查端点响应正常
- [ ] SSL证书配置正确
- [ ] 日志和监控配置完成
测试
运行测试
# 单元测试 pnpm test # Watch模式 pnpm test:run # 单次运行 pnpm test:coverage # 覆盖率报告 # 集成测试 pnpm test:mcp # MCP连接测试 # E2E测试 curl http://localhost:3000/api/health # 健康检查
测试覆盖率要求
- 语句覆盖率: 80%
- 分支覆盖率: 80%
- 函数覆盖率: 80%
- 行覆盖率: 80%
性能优化
开发环境
- 使用Turbopack加速构建
- React 19并发特性
- 懒加载重型组件
生产环境
- 缓存AI provider实例
- 单例模式防止重复创建
- MCP延迟连接建立
- 自动资源清理
安全最佳实践
-
环境变量安全
- 使用
.env.local存储敏感信息 - 构建时变量使用
NEXT_PUBLIC_前缀 - 运行时变量通过服务端传递
- 使用
-
命令执行安全
- 危险命令黑名单检测
- E2B沙箱隔离执行
- 生产环境额外限制
-
数据安全
- 配置数据本地加密存储
- API密钥不在前端暴露
- 请求签名验证
故障排查
常见问题
-
Puppeteer在macOS上报错
- 使用
docker-compose.local.yml替代 - 或安装Chrome:
pnpm playwright install chromium
- 使用
-
配置不生效
- 清除浏览器IndexedDB
- 检查
ConfigInitializer加载 - 访问
/admin/settings重新配置
-
AI模型调用失败
- 检查API密钥配置
- 验证网络连接
- 查看API配额限制
-
Docker构建失败
- 确认使用正确的compose文件
- 检查环境变量文件位置
- 验证镜像架构匹配
贡献指南
开发流程
- Fork项目并创建功能分支
- 遵循Conventional Commits规范
- 确保测试通过和类型检查无误
- 提交Pull Request并等待代码审查
代码规范
- TypeScript严格模式,禁用any
- 使用Zod schema定义数据结构
- 遵循ESLint和Prettier配置
- 组件使用明确的Props接口
- 中文场景必须测试
提交规范
feat: 添加新功能
fix: 修复问题
docs: 文档更新
style: 代码格式调整
refactor: 代码重构
test: 测试相关
chore: 构建或辅助工具变动
相关资源
许可证
本项目采用双重许可模式:
非商业用途
本项目对个人学习、研究和非商业用途免费开放,遵循 Apache License 2.0。
商业用途
任何商业用途(包括但不限于):
- 将本软件集成到商业产品或服务中
- 使用本软件为客户提供付费服务
- 在商业环境中部署使用本软件
必须获得我们的商业授权许可。
如需商业授权,请联系:rensiwen@duliday.com
未经授权的商业使用将被视为侵权行为。
详见 LICENSE 文件。
Pros
- Supports multiple AI models for diverse tasks
- Automates complex recruitment processes
- Provides a user-friendly configuration management interface
- Includes robust security features
Cons
- Complex setup process with many environment variables
- Potentially overwhelming for non-technical users
- Requires careful management of API keys
- Heavy reliance on external AI services
Related Skills
pytorch
S“It's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.”
agno
S“It promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.”
nuxt-skills
S“It's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.”
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author steveoon.
