我构建了一个本地AI代理,配备无头浏览器和沙盒化shell——技能即插即用,无需云端支持。

Reddit r/AI_Agents 工具

摘要

本文介绍一款名为"Agent + Skill Store"的本地AI代理工具,该工具可直接在您的设备上运行,配备无头浏览器、沙箱化shell执行环境,并提供插件系统以添加技能功能,无需依赖云服务。

嘿各位,经过一段时间的打磨,这个项目终于达到我愿意分享的状态了。它叫 Agent + Skill Store——一个在你本地运行的AI代理,能驱动真实的无头浏览器,在沙盒中执行Shell命令,并支持通过插件式"技能"扩展能力。安装只需两行命令:`pip install agent-code`,然后运行`agent-code`启动。要求Python 3.10+。 主要功能: - **无头Chromium浏览器**(基于DrissionPage)——无弹窗,完整JS渲染 - **沙盒化Shell环境**——白名单机制+工作区隔离,禁用管道符和路径逃逸 - **技能即文件夹**:将技能文件夹放入 `skills/` 目录,包含 `skill.py` + `skill.md`,重启即可生效 - **中断/继续控制**——可在对话中途暂停,从最后工具执行结果恢复 - **兼容任意OpenAI API**——支持OpenAI、Together、Groq、DeepSeek或本地vLLM - **多密钥轮换**——支持配置多个API密钥 - **聊天记录自动保存**——本地存储+可选云端同步 - **内置技能**:文件系统操作、公共API接口(700+免费API)、临时邮箱 我开发它的初衷是想要一个能清晰观察执行过程的AI代理。现有工具大多将操作隐藏在云服务背后,或弹出独立浏览器窗口。这个项目的浏览器是无头的,同时提供了聊天界面,你可以实时观察每个工具调用过程。其中最让我自豪的是技能系统——添加新能力只需在`skills/`目录放入文件夹,无需修改代理核心代码。 每个技能导出几个简单的Python结构: ```python SKILL = {"name": "greet", "description": "Say hello."} def hello(name: str = "world") -> str: return f"Hello, {name}!" TOOL_SCHEMAS = [{ "type": "function", "function": { "name": "hello", "description": "Return a greeting.", "parameters": { "type": "object", "properties": {"name": {"type": "string"}}, }, }, }] TOOL_CALLABLES = {"hello": hello} ``` 重启后,LLM即可调用该技能。还有面向用户的斜杠命令字典(如 `/email` 或 `/ping`)。 **技能注册表**:提供了一个小型注册表服务器(自托管,GPL-3.0许可),可通过图形界面发布和安装技能。现运行实例地址为 skills-manager.freesrv.com(客户端默认指向此处),也支持自托管。 **安全说明**(至关重要): 该代理会执行LLM生成的命令。我已尽可能实施防护:Shell白名单、工作区隔离、禁用Shell元字符、文件系统技能的路径验证、注册服务器采用PBKDF2加密。但运行前务必了解以下两点: 1. `python`和`curl`包含在Shell白名单中。如不希望代理操作任意文件或向远程服务器发送POST数据,请从`ALLOWED_CMDS`中移除。 2. 技能本质是任意Python代码。安装技能等同于信任其作者。对完全不可信的使用场景,建议通过Docker运行。 **许可协议**:客户端采用MIT协议,服务器采用GPL-3.0协议。 欢迎反馈,尤其关注: - 沙盒规则对你的用例是否过于严格或宽松 - 希望后续内置哪些技能 - GUI在哪些Linux发行版上无法正常工作 很乐意解答疑问。
查看原文

相似文章