@@ -14,7 +14,7 @@ import * as mysql from 'mysql2/promise';
1414import * as childProcess from 'child_process' ;
1515import { exec } from 'child_process' ;
1616import { promisify } from 'util' ;
17- import { ragService , CONFIG as RAG_CONFIG } from './ragService' ;
17+ import { CONFIG as RAG_CONFIG } from './ragService' ;
1818import { parseString } from 'xml2js' ;
1919
2020
@@ -290,7 +290,23 @@ async function fetchPageContent(url: string): Promise<string> {
290290// 1. 搜索网络
291291export const searchTool : Tool = {
292292 name : 'web_search' ,
293- description : '执行网络搜索并返回前5个结果的摘要,用户提供这个工具一般是不信任你自己的判断,先上网搜索总结后再下结论。' ,
293+ description : `执行网络搜索并返回前5个结果的摘要。适用于需要获取外部信息、验证数据或了解最新动态的情况。
294+ 用户提供这个工具通常是对你的知识储备或判断持怀疑态度,希望通过网络搜索获取更权威或更新的信息。
295+ 你可以用它来补充自己的回答,确保回答准确且有据可依。
296+ 当问到你依稀技术名词的时候,你没有把握就不要乱说,先联网搜索。因为大模型很容易产生幻觉,以为自己什么都懂。
297+
298+ 使用场景:
299+ - 获取最新信息: 例如,用户询问“2023年最好的编程语言是什么?”
300+ - 验证事实: 例如,确认“Python的最新版本是什么?”
301+ - 收集多种观点: 例如,了解“AI在医疗领域的应用有哪些?”
302+
303+ 具体示例:
304+ 用户问:“最新的AI编程工具是什么?”
305+ 你可以使用 web_search,输入参数 query: "latest AI programming tools 2023",然后回答:
306+ “根据网络搜索结果,当前流行的AI编程工具包括:1. GitHub Copilot(代码自动补全),2. Tabnine(多语言支持),...”。
307+
308+ 如何使用:
309+ - 参数 query: 输入搜索关键词,支持英文双引号精确匹配。例如 "AI tools site:github.com" 会限定搜索范围到 GitHub。` ,
294310 parameters : {
295311 type : 'object' ,
296312 properties : {
@@ -329,7 +345,21 @@ registerTool(searchTool);
329345// 2. 获取当前日期时间
330346export const getCurrentDateTime : Tool = {
331347 name : 'get_current_datetime' ,
332- description : '获取当前的日期和时间。' ,
348+ description : `获取当前的日期和时间。适用于任何需要实时时间信息的情况。
349+ 它简单高效,没有参数,直接返回本地时间。可以用它来回答时间相关的问题,或在任务中提供时间上下文。
350+
351+ 使用场景:
352+ - 回答时间问题: 例如,用户直接问“现在几点了?”或“今天是星期几?”
353+ - 任务安排: 例如,用户说“请在明天上午10点提醒我开会”,你可以用它确认当前时间并计算提醒时间。
354+ - 记录时间戳: 例如,在日志或事件记录中添加当前时间。
355+
356+ 具体示例:
357+ 用户问:“现在是几点?”
358+ 你调用 get_current_datetime,返回:
359+ “当前时间是 2023年10月15日 14:30(本地时间)。”
360+
361+ 如何使用:
362+ - 无参数,直接调用即可,返回格式为本地时间的字符串。` ,
333363 parameters : {
334364 type : 'object' ,
335365 properties : { } ,
@@ -346,7 +376,24 @@ registerTool(getCurrentDateTime);
346376// 3. 读取指定路径文本
347377export const readTextFile : Tool = {
348378 name : 'read_text_file' ,
349- description : '读取指定路径的文本文件内容。' ,
379+ description : `读取指定路径的文本文件内容。适用于需要访问本地文件信息的情况。
380+ 它可以帮助你提取文件中的数据、配置或日志,适合处理静态文本内容。
381+ 比如我让你解析一个代码里的内容,找出里面的某个引用函数,你就可以用这个工具加载文件文本内容然后再进行分析。
382+ 有些时候我会让你解释代码。或者问你代码里的某一段内容的意思,或者查找相关代码,你就应该重新加载最可能的那个代码文件,然后重新回答我的问题。
383+ 我让你解释代码的时候你一定要用这个工具去读取,而不是凭文件名猜测他的内容,切记!
384+
385+ 使用场景:
386+ - 读取文件内容: 例如,用户说“请告诉我 C:\\notes.txt 里写了什么”。
387+ - 处理配置: 例如,在调试时读取配置文件“读取 config.txt 的设置”。
388+ - 分析日志: 例如,查看日志文件中的错误信息“读取 error.log 的最后一行”。
389+
390+ 具体示例:
391+ 用户说:“请读取 C:\\data.py 的内容。”
392+ 你调用 read_text_file,参数 filePath: "C:\\data.tpy",返回:
393+ “文件内容是:'这是一个测试文件,包含重要信息。'”
394+
395+ 如何使用:
396+ - 参数 filePath: 输入完整的文件路径(如 "C:\\data.py"),支持 UTF-8 编码的文本文件。` ,
350397 parameters : {
351398 type : 'object' ,
352399 properties : {
@@ -371,7 +418,17 @@ registerTool(readTextFile);
371418// 4. 连接 MySQL 查表
372419export const queryMySQL : Tool = {
373420 name : 'query_mysql' ,
374- description : '连接 MySQL 数据库并执行查询。' ,
421+ description : `连接 MySQL 数据库并执行 SQL 查询,返回 JSON 格式结果。适合数据查询或管理。
422+
423+ 使用场景:
424+
425+ 数据查询:用户问“用户表里有多少人?”
426+ 生成报告:统计“所有订单的总金额”。
427+ 数据管理:更新“用户 ID 为 1 的状态”。
428+ 具体示例:
429+ 用户说:“查询用户表中的所有用户。”
430+ 调用 query_mysql,参数:host: "localhost", user: "root", password: "123456", database: "mydb", query: "SELECT * FROM users",返回:
431+ “结果:[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]` ,
375432 parameters : {
376433 type : 'object' ,
377434 properties : {
@@ -416,14 +473,24 @@ type SVNError = Error & { stderr?: string };
416473const execAsync = promisify ( exec ) ;
417474export const getSVNLog : Tool = {
418475 name : 'get_svn_log' ,
419- description : '获取SVN日志,支持多种查询条件' ,
476+ description : `获取 SVN 仓库的提交日志,支持筛选路径、作者或时间范围,适合版本管理。
477+
478+ 使用场景:
479+
480+ 查看历史:用户问“SVN 仓库最近5次提交是什么?”
481+ 代码审查:查找“Alice 的所有提交”。
482+ 项目跟踪:查看“过去一周的提交”。
483+ 具体示例:
484+ 用户说:“获取 SVN 仓库最近10条提交记录。”
485+ 调用 get_svn_log,参数 path: "http://svn.example.com/repo", limit: 10,返回:
486+ “结果:[{'revision': '100', 'author': 'Alice', 'date': '2023-10-01', 'message': '修复bug'}]` ,
420487 parameters : {
421488 type : 'object' ,
422489 properties : {
423490 path : {
424491 type : 'string' ,
425492 description : `仓库路径,支持以下格式:
426- - 本地工作副本路径:'/ projects/ myapp'
493+ - 本地工作副本路径:'k:\\ projects\\ myapp'
427494- 仓库URL:'http://svn.example.com/repo'
428495- 仓库子目录:'http://svn.example.com/repo/trunk/src'`
429496 } ,
@@ -569,7 +636,19 @@ registerTool(getSVNLog);
569636// 6. 比对 SVN 本地差异的 diff
570637export const getSVNDiff : Tool = {
571638 name : 'get_svn_diff' ,
572- description : '获取 SVN 仓库的本地差异。' ,
639+ description : `显示 SVN 本地工作副本与远程仓库的差异,适合提交前检查。
640+
641+ 使用场景:
642+
643+ 检查改动:用户问“我对 SVN 做了什么改动?”
644+ 提交审查:确认“本地差异”。
645+ 调试:对比本地和远程代码。
646+ 具体示例:
647+ 用户说:“显示 SVN 仓库的本地差异。”
648+ 调用 get_svn_diff,参数 repoPath: "C:\\svn_repo",返回:
649+ “差异:'+ 新增一行\n- 删除一行'”
650+ 参数说明:
651+ repoPath: 本地仓库路径` ,
573652 parameters : {
574653 type : 'object' ,
575654 properties : {
@@ -593,7 +672,17 @@ registerTool(getSVNDiff);
593672// 7. 比对 GitHub 本地差异的 diff
594673export const getGitDiff : Tool = {
595674 name : 'get_git_diff' ,
596- description : '获取 Git 仓库的本地差异。' ,
675+ description : `显示 Git 本地工作目录与已提交内容的差异,适合代码审查或调试。
676+
677+ 使用场景:
678+
679+ 检查更改:用户问“Git 仓库的本地改动是什么?”
680+ 提交确认:查看“Git diff”。
681+ 错误排查:对比改动。
682+ 具体示例:
683+ 用户说:“显示 Git 仓库的本地差异。”
684+ 调用 get_git_diff,参数 repoPath: "C:\\git_repo",返回:
685+ “差异:'+ 添加新功能\n- 删除旧代码'` ,
597686 parameters : {
598687 type : 'object' ,
599688 properties : {
@@ -617,7 +706,17 @@ registerTool(getGitDiff);
617706// 8. Grep 搜索指定目录文本
618707export const grepSearch : Tool = {
619708 name : 'grep_search' ,
620- description : '在指定目录中搜索文本。' ,
709+ description : `在指定目录中搜索包含特定文本的文件,适合日志分析或代码搜索。
710+
711+ 使用场景:
712+
713+ 搜索关键词:用户说“在 C:\\logs 里找 'error'”。
714+ 代码审查:查找“userId”的使用。
715+ 日志分析:定位“timeout”。
716+ 具体示例:
717+ 用户说:“在 C:\\projects 里搜索 'error'。”
718+ 调用 grep_search,参数 directory: "C:\\projects", pattern: "error",返回:
719+ “结果:C:\\projects\\log.txt, C:\\projects\\test.py` ,
621720 parameters : {
622721 type : 'object' ,
623722 properties : {
@@ -642,7 +741,17 @@ registerTool(grepSearch);
642741// 9. 在路径下递归搜索文件
643742export const findFiles : Tool = {
644743 name : 'find_files' ,
645- description : '在指定路径下递归搜索文件,支持文件名或正则表达式匹配。' ,
744+ description : `递归搜索指定路径下的文件,支持文件名或正则表达式,适合文件管理。
745+
746+ 使用场景:
747+
748+ 查找文件:用户说“找 C:\projects 里的 config.json”。
749+ 批量搜索:列出“.py 文件”。
750+ 项目管理:搜索“test 开头的文件”。
751+ 具体示例:
752+ 用户说:“找 C:\projects 里所有的 .py 文件。”
753+ 调用 find_files,参数 directory: "C:\projects", pattern: ".+\.py", useRegex: true,返回:
754+ “结果:C:\projects\main.py, C:\projects\test.py”` ,
646755 parameters : {
647756 type : 'object' ,
648757 properties : {
@@ -713,7 +822,25 @@ registerTool(findFiles);
713822// 修改后的writeMemory工具(移除本地嵌入生成和存储)
714823export const writeMemory : Tool = {
715824 name : 'write_memory' ,
716- description : 'Save knowledge or insights to memory.' ,
825+ description : `将重要信息或见解保存到记忆中,供将来检索。
826+ 它适合记录对话中的关键点或学习成果,类似于一个知识库。
827+ 一些我要求你记住的东西,或者是联网搜索到的知识,你自己总结出来的感悟。你都可以总结起来存入本地记忆。
828+ 一些我们一起讨论得出的结论你也可以存起来。你要做个虚心好学的学生,学到的东西都要做好笔记。
829+ 如果一个任务你做了好几个步骤才完成,可以总结一下,写明任务目标,注意事项,一些积累经验,快速执行的方法,存入记忆,下次类似任务可以根据这个经验快速处理。
830+
831+ 使用场景:
832+ - 记录新信息: 例如,用户说“我发现了一个新工具叫 X”,你可以保存它。
833+ - 学习过程: 例如,保存一个技巧“Python 的 lambda 函数用法”。
834+ - 任务跟踪: 例如,记录项目更新“项目 A 的截止日期是明天”。
835+
836+ 具体示例:
837+ 用户说:“我发现了一个新工具叫 CodeAI。”
838+ 你调用 write_memory,参数 content: "新工具:CodeAI",
839+ 返回:
840+ “记忆已保存:新工具:CodeAI。”
841+
842+ 如何使用:
843+ - 参数 content: 输入要保存的内容。` ,
717844 parameters : {
718845 type : 'object' ,
719846 properties : {
@@ -749,7 +876,22 @@ export const writeMemory: Tool = {
749876 // 修改后的readMemory工具(移除本地相似度计算)
750877export const readMemory : Tool = {
751878 name : 'read_memory' ,
752- description : 'Retrieve relevant knowledge from memory.' ,
879+ description : `从记忆中检索信息,适合回顾保存的内容。
880+ 有时候我要你回忆一下,就是要你从这里调取记忆。我们以前进行的对话,我纠正过你的记忆,或者你自己总结的感悟都会在本地记忆里。
881+ 你要勤于调取本地记忆,看看是否有和当前任务相关的记忆,帮助你更好的执行任务。
882+ 有一些复杂任务你可以预先调取记忆,看以前有没有遇到过类似任务,有没有总结过的经验可以参考,从而高效的完成。
883+
884+ 使用场景:
885+
886+ 回忆信息:用户问“之前提到的工具是什么?”
887+ 引用知识:使用保存的内容。
888+ 任务回顾:查看“截止日期”。
889+ 具体示例:
890+ 用户说:“之前提到的工具是什么?”
891+ 调用 read_memory,参数 query: "工具",返回:
892+ “结果:新工具:CodeAI”
893+ 参数说明:
894+ query: 搜索关键词。` ,
753895 parameters : {
754896 type : 'object' ,
755897 properties : {
0 commit comments