轻量级 AI Agent 框架,使用 OpenAI API 规范。
它可以和你一起操作你的电脑,协助你完成任务!
这类似于OpenClaw,但精简的多,上下文需求量也更小一些。
它也提供了敏感权限(写入文件/执行控制台指令)的安全管理。你可以在使用时随时开启/关闭授权,关闭授权后,AI将无法执行控制台指令/写入指定目录外的文件。
你可以为它编写个性化的插件和技能,丰富它的能力!
只需要git clone本仓库,或者直接下载项目zip压缩包,即可开始部署!
感谢MiniMax对本项目做出的卓越贡献()
运行 install.bat 创建虚拟环境和安装依赖
中国大陆地区可运行 install-cn.bat ,默认使用清华镜像源加速安装
编辑 config.yaml,填入你的 API Key 和服务提供地址(默认DeepSeek):
api:
key: "sk-你的API密钥"
base_url: "https://api.deepseek.com/v1"
model: "deepseek-chat"
......注意,本程序内置插件中有一个使用Tavily进行AI搜索的插件,目录为 plugin/tavily ,如果你需要配置搜索功能,请先前往Tavily官方网站注册并申请apikey,填写在该文件夹内的 apikey.txt 内,否则无法使用搜索!
运行 run-webui.bat 启动 Agent
- 输入内容与 AI 对话
- 点击
总结上下文到短期记忆进行记忆总结以释放上下文 - 点击
允许/不允许AI助手进行危险操作可允许/阻止AI使用控制台命令和写入安全目录之外的文件
py-legnachat/
├── agent.py # 主程序(暂时弃用,别用这个)
├── webui.py # 主程序
├── config.yaml # 配置文件
├── system_prompt.md # 系统提示词
├── tools.json # 工具定义
├── tools_builtin.py # 工具实现(暂时弃用)
├── tools_builtin_webui.py # 工具实现
├── memory/ # 记忆系统
│ ├── short.md # 短期记忆(自动总结)
│ └── long.md # 长期记忆(AI 主动写入)
├── log/ # 对话日志
├── skill/ # 技巧目录
├── plugin/ # 插件目录
└── venv/ # 虚拟环境
- 程序启动时自动读取上次对话记录
- AI 自动总结关键信息存入 short.md
- 每次启动都会基于历史进行总结提炼
- 可以让 AI 把重要的事情写入这里
- 长期保持,不会自动清除
latest.txt- 当前会话对话记录,不要删除,会直接影响记忆总结YYYY-MM-DD_HH-MM-SS.txt- 历史会话记录,可以删除,仅仅作为备份
- 程序内置了一些工具,可执行控制台命令、读写文件、回顾记忆和技巧,以及调用第三方插件
- 为了保证安全,执行控制台命令和写入文件需要用户授权才能执行
在 plugin/ 目录下创建插件文件夹,包含:
main.py- 插件主逻辑(必须有tool_main函数,接受1个字典形式的参数输入,返回一个string变量)description.yaml- 插件描述(功能、调用方法等)requirements.txt- 依赖(可选)
其中,description.yaml里面有两个参数:
display_name- 插件的简略描述,如:获取北京时间description- 插件的详细说明,包含功能介绍、调用方式、返回值等等
程序启动时,这些插件函数会自动注册。
当 AI 需要使用某个插件的时候,程序会执行插件main.py内的tool_main函数。
这个函数必须接受1个字典形式的参数输入,该参数包含了插件所需的所有信息,如:
{"参数1名称":"参数1内容","参数2名称":"参数2内容"}函数处理完毕之后,以字符串string方式return结果给AI。
你需要合理编辑description.yaml,向AI描述你这个插件需要哪些参数,以自带的示例插件Tavily搜索为例,它的描述文档description.yaml是这样的:
display_name: Tavily网络搜索
description: 使用 Tavily API 进行网络搜索。插件调用方式(JSON 格式):{"query":"搜索关键词","search_depth":"basic"}\nsearch_depth可选basic 或 advanced,默认 basic。返回结果包含标题、摘要和来源链接,最多返回 5 条结果。插件目录下的示例插件可用于参考。
在 skill/ 目录下创建技巧文件夹,包含:
display.txt- 技巧简略描述description.md- 技巧详细说明
具体的操作请查看skill/skill_creation_guide/description.md,这是一份技巧创建指南
(实际上这个技巧创建指南本身也被封装成了一个技巧,也就是说你可以让AI协助你来创建技巧!)
为了降低上下文长度,减少token消耗(尤其是在插件和技巧数量非常多的时候),AI一开始获取到的插件/技巧列表只会包含简略描述,只有当AI决定了某个需要使用的插件/技巧后,它才会获取到对应插件/技巧的详细说明。
因此,所有插件、技巧的简略描述和详细说明,都必须要准确地填写,以确保AI可以正确地使用你的插件/技巧。
| 区别 | 插件 (plugin) | 技巧 (skill) |
|---|---|---|
| 实现方式 | Python 代码 (main.py) | 纯文本描述 (description.md) |
| 执行效果 | 执行具体操作(搜索、发送等) | 提供指导信息,让 AI 自行处理 |
| 调用方式 | 直接通过Python执行代码 | AI 读取文本作为工作参考 |
| 动态行为 | 可执行复杂逻辑 | 只是参考资料 |
| 适用场景 | 需要执行具体功能 | 需要 AI 掌握特定知识/流程 |
| 开发难易程度 | 难,需要有代码基础 | 容易,自然语言描述即可,可让 AI 协助 |
| 上下文消耗 | 小,逻辑由插件执行 | 大,逻辑由 AI 自己决策执行 |
| 稳定性 | 强,代码固定了具体执行逻辑 | 一般,可能会被大模型的随机性影响 |
简单理解:
- 插件 = 干活的助理(AI 调用插件,让插件帮自己干某个事情)
- 技巧 = 教科书(AI 参考技巧描述来自己做事)