中文 | English
这是我开发的一个用于理解 AgentLoop 的极简 Python 示例。核心文件 minimal_agent.py 不到 100 行
核心文件非常简单,两层 While 循环就可以让模型思考、调用 Bash/Web 工具、接收工具结果,再继续生成最终回答。
用户输入 -> LLM -> 工具调用 -> 权限检查 -> Shell -> 工具结果 -> LLM
\-> 无工具调用 -----------------------> 最终回答
作为初学者,只需要阅读minimal_agent.py足矣。其他支持文件并不重要。
本项目默认使用带视觉能力的 deepseek-v4-flash-vision-exp(实验版,文本能力与 deepseek-v4-flash 正式版持平),并且采用 Responses API 进行模型调用。
我加入了不少现代 Agent 所必备的功能,比如:
- 自动审核命令
- 思考档位调整
- 工具调用权限设置
- 沙箱开关
- 联网搜索(Deepseek 官方支持)
- 视觉读图(
/image命令,图片随消息直接发给模型,不经过任何工具)
也加入了一些用户体验的优化,比如文字颜色渲染,默认折叠工具调用结果。
通过以下命令开关:
| 命令 | 作用 |
|---|---|
/permission-auto |
由模型自动审核工具调用 |
/permission-ask |
每次工具调用都询问用户 |
/permission-deny |
拒绝工具调用 |
/permission-yolo |
跳过权限审核 |
/sandbox-on / /sandbox-off |
开启或关闭沙盒 |
/think-off / /think-high / /think-max |
关闭思考,或切换思考档位 |
/image <图片路径> [问题] |
发送图片让视觉模型直接读取并回答 |
/expand |
展开本轮工具输出 |
/exit 或 Ctrl+C |
退出 |
代码量是有意控制的。本项目完全没有任何的:
- 上下文管理机制
AGENTS.md/SKILLS规范支持- subagents/browser use 等高级功能
- 数据校验,防御性/安全性编程
好吧,沙箱是个例外。为了避免大肥鱼意外地删掉了新生们的文件。
确保电脑有以下环境:
- Python 3.10+
- Node.js 20.11+(本项目采用了
@anthropic-ai/sandbox-runtime用于安装 srt 沙盒运行时)
需要有 DeepSeek 官方 API 的密钥:
- DeepSeek API Key
通过以下命令将文件安装到本地:
git clone https://github.com/Here-Tim2354/MinimumAgentLoop.git
cd MinimumAgentLoop
npm install
pip install -r requirements.txt其中 npm install 安装的是 srt 沙盒运行时。Windows 首次使用沙盒前还需要执行:
npm run sandbox:install复制 .env.example 为 .env 并填入 DEEPSEEK_API_KEY,程序启动时会自动加载你的密钥。
也可以直接通过环境变量来存放你的密钥(仅限该终端窗口)。如果是 Mac:
export DEEPSEEK_API_KEY="sk-..."如果是 Windows:
$env:DEEPSEEK_API_KEY="sk-..."通过以下命令执行本程序:
python src/minimal_agent.py提示:如果你开着 TUN/全局代理(如 Clash),TLS 握手可能超过 SDK 默认的 5 秒连接超时,本项目已把连接超时放宽到 20 秒(见 minimal_runtime.HTTP_TIMEOUT)。
| 文件 | 职责 |
|---|---|
src/minimal_agent.py |
AgentLoop 主循环 |
src/minimal_runtime.py |
工具、沙盒、权限审核和图文消息构造 |
src/minimal_render.py |
终端输入与渲染 |
src/minimal_prompts.py |
Agent 与审核模型提示词 |
本项目使用 The Unlicense,可以不受限制地使用、修改、发布和分发。