# tiny_agent **Repository Path**: guyuming76/tiny_agent ## Basic Information - **Project Name**: tiny_agent - **Description**: 源自 https://github.com/wp931120/tiny_agent; 加入了cli.py在终端使用; 加入了session管理; ... - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: rfmAddon - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-26 - **Last Updated**: 2026-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

TinyAgent Logo

TinyAgent

6 个文件,1 个能用的 AI Agent
用最少的代码理解 Agent 的本质

Python FastAPI LLM Lines

--- ## ✨ 什么是 TinyAgent TinyAgent 是一个 **最小可运行的 AI Agent 实现**。它不是框架,而是一份可以直接跑起来的教学级源码——用 6 个 Python 文件、不到 700 行代码,完整实现了: - 🔄 **流式对话** — SSE 实时推送,逐字输出 - 🛠️ **Tool Calling** — 多轮工具调用 + 防死循环保险丝 - 🧠 **对话记忆** — 短期历史窗口 + 长期 Markdown 记忆 - 📦 **技能插件** — 放一个 `SKILL.md` 文件即装即用 - 🔒 **安全防护** — Shell 高危命令正则拦截 ## 🏗️ 项目结构 ``` tiny_agent/ ├── cli.py # 终端模拟器命令行 入口 ├── config.yaml # LLM 配置(API Key、模型、地址) ├── requirements.txt # Python 依赖 ├── skills/ # 技能插件目录 └── core/ # 核心模块 ├── agent.py # 总指挥,组装所有组件 ├── loop.py # 事件循环,流式 Tool Calling ├── tools.py # 工具注册与执行 ├── memory.py # 短期 + 长期记忆管理 ├── skills.py # Markdown 技能加载器 └── context.py # 上下文 & 系统提示词组装 ``` ## 🚀 快速开始 ### 1. 安装依赖 ```bash cd tiny_agent pip install -r requirements.txt ``` ### 2. 配置 LLM 编辑 `config.yaml`,填入你的 API 信息: ```yaml llm: api_key: "your-api-key-here" model: "gpt-4o-mini" # 或 qwen-plus, deepseek-chat 等 base_url: "https://api.openai.com/v1" # 兼容 OpenAI 格式的地址 ``` > 支持所有 OpenAI 兼容 API:OpenAI、通义千问、DeepSeek、智谱 GLM 等。 ### 3. 启动 ```bash python cli.py ``` ## 🧩 核心架构 ``` 用户消息 → ContextBuilder 组装上下文 → AgentLoop 调用 LLM ↓ 模型返回文本?→ 流式输出给用户 模型要用工具?→ ToolRegistry 执行 ↓ 结果注入上下文 → 再次调用 LLM ↓ 循环直到模型说完 → MemoryStore 保存 ``` **核心设计理念:** | 原则 | 实现 | |------|------| | 组合优于继承 | TinyAgent 组合 5 个独立模块,无基类继承 | | 流式优先 | 全链路 AsyncGenerator,用户秒看到第一个字 | | 安全兜底 | `max_iterations=10` 防死循环 + Shell 命令黑名单 | | 零配置扩展 | 扔一个 `SKILL.md` 进 `skills/` 目录即生效 | ## 🛠️ 内置工具 | 工具 | 说明 | |------|------| | `read_file` | 读取文件内容 | | `write_file` | 写入/创建文件 | | `list_dir` | 列出目录结构 | | `exec` | 执行 Shell 命令(带安全拦截) | ## 📝 技能系统 在 `skills/` 下创建目录,放入 `SKILL.md` 即可: ```yaml --- name: data-analysis description: 数据分析技能,支持 CSV 处理和可视化 always_load: false --- # 数据分析技能 当用户需要分析数据时,按以下步骤操作…… ``` - `always_load: true` → 全文注入系统提示词(核心技能) - `always_load: false` → 仅索引名称和描述,按需加载(省 token)

真正重要的东西,往往简单到让人不敢相信。