# chat-cli **Repository Path**: limylily/chat-cli ## Basic Information - **Project Name**: chat-cli - **Description**: 对话命令行,可使用tools和skills - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-06 - **Last Updated**: 2026-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Chat CLI — 命令行多轮对话示例 支持 **工具调用(tools)** 与 **Skills** 的命令行多轮对话示例。 ## 功能 - **多轮对话**:持续输入,模型基于历史上下文回复。 - **工具调用(tools)**:模型可主动调用预定义工具(如查天气、计算、搜索),结果自动回传并继续生成。 - **Skills**:从 `skills/` 加载 `SKILL.md`,将描述与正文注入系统提示,引导模型在合适场景下使用技能说明。 ## 环境准备 ```bash cd chat-cli pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt ``` 配置 API Key: - 或项目根目录创建 `.env`:`OPENAI_API_KEY=sk-...` 可选:指定模型,例如 `export CHAT_MODEL=gpt-4o-mini`(默认即为 gpt-4o-mini)。 ## 运行 ```bash python chat.py ``` 进入对话后: - 输入任意内容回车发送。 - `/quit` 或 `/exit` 或 `q`:退出。 - `/clear`:清空对话历史(保留 system 与 skills)。 ## 内置工具(tools) | 工具名 | 说明 | |--------|------| | `get_weather` | 查询城市天气(示例返回固定格式)。 | | `calculate` | 简单数学运算,如 `1+2*3`。 | | `search_knowledge` | 本地知识库搜索(示例返回占位结果)。 | 在对话中可自然语言要求,例如:“北京天气怎么样?”“算一下 100*0.8”。 ## 自定义 Skills 在项目下增加技能目录,结构为: ``` skills/ your-skill-name/ SKILL.md ``` `SKILL.md` 需包含 YAML frontmatter 与正文,例如: ```markdown --- name: your-skill-name description: 简短说明该技能做什么、何时使用。 --- # 技能标题 具体说明与步骤... ``` 程序启动时会扫描 `skills/`,将所有 `SKILL.md` 内容注入系统提示。 ## 项目结构 ``` chat-cli/ chat.py # 入口:多轮对话循环 chat_cli/ # 包(便于 IDE 跳转到定义) __init__.py skills_loader.py # Skills 发现与加载 tools.py # 工具定义与执行 skills/ # 示例 skills pyproject.toml requirements.txt README.md ``` ## 扩展 - **新增工具**:在 `chat_cli/tools.py` 中用 `@tool(...)` 装饰器注册新函数,并写好 `name/description/parameters`。 - **新 Skill**:在 `skills/` 下新建 `技能名/SKILL.md`,按要求写 frontmatter 与正文即可。