Skip to content

LegnaW/py-LegnaChat

Repository files navigation

py-legnachat

"DeepSeek,现在你去阅读一下项目README和代码文件,然后帮我加几个功能,优化一下README,接着自己git add一下你的改动,然后commit,记得写好版本说明,最后把代码帮我push了。"——这段文字由本Agent自行加入README并上传。

轻量级 AI Agent 框架,使用 OpenAI API 规范。

它可以和你一起操作你的电脑,协助你完成任务!

这类似于OpenClaw,但精简的多,上下文需求量也更小一些。

它也提供了敏感权限(写入文件/执行控制台指令)的安全管理。你可以在使用时随时开启/关闭授权,关闭授权后,AI将无法执行控制台指令/写入指定目录外的文件。

你可以为它编写个性化的插件和技能,丰富它的能力!

只需要git clone本仓库,或者直接下载项目zip压缩包,即可开始部署!

感谢MiniMax对本项目做出的卓越贡献()

快速开始

1. 安装依赖

运行 install.bat 创建虚拟环境和安装依赖 中国大陆地区可运行 install-cn.bat ,默认使用清华镜像源加速安装

2. 配置 API

编辑 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 内,否则无法使用搜索!

3. 运行

运行 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/             # 虚拟环境

记忆系统

短期记忆 (short.md)

  • 程序启动时自动读取上次对话记录
  • AI 自动总结关键信息存入 short.md
  • 每次启动都会基于历史进行总结提炼

长期记忆 (long.md)

  • 可以让 AI 把重要的事情写入这里
  • 长期保持,不会自动清除

对话日志 (log/)

  • 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可以正确地使用你的插件/技巧。

插件 vs 技巧

区别 插件 (plugin) 技巧 (skill)
实现方式 Python 代码 (main.py) 纯文本描述 (description.md)
执行效果 执行具体操作(搜索、发送等) 提供指导信息,让 AI 自行处理
调用方式 直接通过Python执行代码 AI 读取文本作为工作参考
动态行为 可执行复杂逻辑 只是参考资料
适用场景 需要执行具体功能 需要 AI 掌握特定知识/流程
开发难易程度 难,需要有代码基础 容易,自然语言描述即可,可让 AI 协助
上下文消耗 小,逻辑由插件执行 大,逻辑由 AI 自己决策执行
稳定性 强,代码固定了具体执行逻辑 一般,可能会被大模型的随机性影响

简单理解

  • 插件 = 干活的助理(AI 调用插件,让插件帮自己干某个事情)
  • 技巧 = 教科书(AI 参考技巧描述来自己做事)

About

A lightweight AI agent that can operate your device. Supports OpenAI standards.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors