使用 Node.js 构建安全的本地 AI 编程 Agent
AI Agent 听起来很复杂,但其实并不复杂。
Agent 简单来说就是一个连接了循环(loop)、工具(tools)和安全规则(safety rules)的 LLM。
我使用 Node.js 和通过 Ollama 运行的 Mistral 构建了一个本地编程 Agent。你不需要付费的 API 密钥,一切都在你的本地机器上运行。
该 Agent 可以帮助你理解 JavaScript 项目。它可以: • 列出项目文件 • 读取项目文件 • 搜索文本 • 解释代码 • 查找 Bug • 提出代码修改建议
核心原则是安全性。Agent 可以检查文件,但不能编辑它们。它只会返回一个补丁建议(patch proposal)供你审核。这确保了“人在回路”(human in the loop)的原则。
Agent 的工作原理: 普通的聊天机器人遵循简单的路径: 用户提问 -> 模型回答
Agent 遵循一个循环: 用户提问 -> 模型决定使用工具 -> JavaScript 运行工具 -> 模型查看结果 -> 模型回答
本项目使用的关键模式: • Agent 循环:该过程会不断重复,直到模型给出最终答案。 • 工具调用(Tool calling):模型请求特定的 JavaScript 函数。 • 工具白名单:仅运行经过授权的工具。 • 系统提示词(System prompt):通过规则告知模型其行为准则。 • JSON 操作协议:模型以结构化数据进行响应。 • 安全边界:文件访问被限制在项目根目录内。
安全是重中之重。我使用了一个名为 safeResolve 的函数来防止路径遍历(path traversal)。这确保了 Agent 无法访问项目文件夹之外的文件。我还设置了文件大小限制,以保护模型的上下文(context)。
项目结构: • src/cli.js: 终端入口点。 • src/agent.js: 核心循环和工具调度。 • src/ollama.js: 本地 API 客户端。 • src/tools.js: 安全的文件系统工具。 • test/tools.test.js: 安全性与行为测试。
你可以使用 Node.js 和 Ollama 运行此项目。建议使用 Mistral,或者尝试使用 Qwen2.5-Coder 或 DeepSeek-Coder 等编程专用模型以获得更好的效果。
构建有用的工具。保持功能单一。让你的代码来强制执行安全边界。
来源:https://dev.to/gaurav101/building-a-safe-local-ai-coding-agent-with-nodejs-46ol