54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { Tool } from '../types/index.js';
|
|
import { knowledgeBase } from './knowledge-base.js';
|
|
|
|
/**
|
|
* search_knowledge — 在知识库中检索相关信息
|
|
*/
|
|
export const searchKnowledgeTool: Tool = {
|
|
name: 'search_knowledge',
|
|
description:
|
|
'在本地知识库中搜索与查询相关的文档片段。当你需要查找项目文档、技术说明、业务规则等存储在知识库中的信息时使用此工具。',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {
|
|
query: {
|
|
type: 'string',
|
|
description: '搜索关键词或问题,如"Agent 工具调用流程"、"如何创建子Agent"',
|
|
},
|
|
},
|
|
required: ['query'],
|
|
},
|
|
execute: async (args) => {
|
|
const { query } = args;
|
|
const results = knowledgeBase.search(query as string, 3);
|
|
if (results.length === 0) {
|
|
return `未找到与 "${query}" 相关的知识。当前知识库摘要:\n${knowledgeBase.summary()}`;
|
|
}
|
|
return results
|
|
.map(
|
|
(r, i) =>
|
|
`--- 结果 ${i + 1} (来源: ${r.source}) ---\n${r.content}`,
|
|
)
|
|
.join('\n\n');
|
|
},
|
|
};
|
|
|
|
/**
|
|
* list_knowledge — 列出知识库中所有文档和章节
|
|
*/
|
|
export const listKnowledgeTool: Tool = {
|
|
name: 'list_knowledge',
|
|
description: '列出知识库中所有文档及其章节标题,用于了解知识库包含哪些内容。',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {},
|
|
required: [],
|
|
},
|
|
execute: async () => {
|
|
return knowledgeBase.summary();
|
|
},
|
|
};
|
|
|
|
/** 知识库相关工具集 */
|
|
export const knowledgeTools: Tool[] = [searchKnowledgeTool, listKnowledgeTool];
|