@onesclawkolor/onesclaw 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/agent/loop.d.ts +14 -20
- package/dist/agent/loop.js +377 -38
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/ones-answer.d.ts +29 -0
- package/dist/agent/ones-answer.js +380 -0
- package/dist/agent/ones-answer.js.map +1 -0
- package/dist/agent/ones-routing.d.ts +10 -0
- package/dist/agent/ones-routing.js +160 -0
- package/dist/agent/ones-routing.js.map +1 -0
- package/dist/cli/logger.js +17 -1
- package/dist/cli/logger.js.map +1 -1
- package/dist/commands/kb.d.ts +4 -0
- package/dist/commands/kb.js +154 -0
- package/dist/commands/kb.js.map +1 -0
- package/dist/config/manager.d.ts +43 -0
- package/dist/config/manager.js +143 -3
- package/dist/config/manager.js.map +1 -1
- package/dist/config/types.d.ts +2 -0
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge/helper-scripts.d.ts +11 -0
- package/dist/knowledge/helper-scripts.js +325 -0
- package/dist/knowledge/helper-scripts.js.map +1 -0
- package/dist/knowledge/manager.d.ts +28 -0
- package/dist/knowledge/manager.js +377 -0
- package/dist/knowledge/manager.js.map +1 -0
- package/dist/knowledge/preprocess.d.ts +10 -0
- package/dist/knowledge/preprocess.js +93 -0
- package/dist/knowledge/preprocess.js.map +1 -0
- package/dist/knowledge/qmd.d.ts +53 -0
- package/dist/knowledge/qmd.js +236 -0
- package/dist/knowledge/qmd.js.map +1 -0
- package/dist/knowledge/rerank.d.ts +14 -0
- package/dist/knowledge/rerank.js +256 -0
- package/dist/knowledge/rerank.js.map +1 -0
- package/dist/knowledge/tools.d.ts +6 -0
- package/dist/knowledge/tools.js +131 -0
- package/dist/knowledge/tools.js.map +1 -0
- package/dist/knowledge/types.d.ts +96 -0
- package/dist/knowledge/types.js +2 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/prompts/system.js +64 -41
- package/dist/prompts/system.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/registry.js +12 -3
- package/dist/tools/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export function createKnowledgeSearchTool(manager) {
|
|
2
|
+
return {
|
|
3
|
+
name: 'kb_search',
|
|
4
|
+
description: '搜索本地知识库中的 ONES 主文档。ONES 相关问题优先使用该工具;返回结果包含相对路径、摘要和 citation。',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
query: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: '检索查询文本,建议使用完整问题或核心关键词',
|
|
11
|
+
},
|
|
12
|
+
limit: {
|
|
13
|
+
type: 'integer',
|
|
14
|
+
description: '返回结果数量,默认使用知识库配置值',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['query'],
|
|
18
|
+
},
|
|
19
|
+
execute: async (args) => {
|
|
20
|
+
const query = typeof args.query === 'string' ? args.query.trim() : '';
|
|
21
|
+
if (!query) {
|
|
22
|
+
return { content: 'query 不能为空', isError: true };
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const results = await manager.search(query, typeof args.limit === 'number' ? args.limit : undefined);
|
|
26
|
+
return { content: JSON.stringify(results, null, 2) };
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
content: `本地知识库搜索失败: ${error instanceof Error ? error.message : String(error)}`,
|
|
31
|
+
isError: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function createKnowledgeGetDocumentTool(manager) {
|
|
38
|
+
return {
|
|
39
|
+
name: 'kb_get_document',
|
|
40
|
+
description: '读取本地知识库中的单篇文档,可按相对路径读取全文,或通过 section 参数读取指定章节。',
|
|
41
|
+
inputSchema: {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: {
|
|
44
|
+
path: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: '文档相对路径,例如 install-upgrade/foo.md',
|
|
47
|
+
},
|
|
48
|
+
section: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: '可选,指定要读取的标题章节文本',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ['path'],
|
|
54
|
+
},
|
|
55
|
+
execute: async (args) => {
|
|
56
|
+
const path = typeof args.path === 'string' ? args.path.trim() : '';
|
|
57
|
+
if (!path) {
|
|
58
|
+
return { content: 'path 不能为空', isError: true };
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const content = await manager.getDocument(path, typeof args.section === 'string' ? args.section.trim() : undefined);
|
|
62
|
+
return { content };
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return {
|
|
66
|
+
content: `读取本地知识文档失败: ${error instanceof Error ? error.message : String(error)}`,
|
|
67
|
+
isError: true,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function createKnowledgeExtractCommandsTool(manager) {
|
|
74
|
+
return {
|
|
75
|
+
name: 'kb_extract_commands',
|
|
76
|
+
description: '从本地知识文档中提取 fenced code block 命令。返回 path/section/command/citation/kind,适用于 ONES 安装、部署、升级、备份等需要可复制 Linux 命令的场景。',
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: 'object',
|
|
79
|
+
properties: {
|
|
80
|
+
path: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: '文档相对路径,例如 install-upgrade/K3S/install-new.md',
|
|
83
|
+
},
|
|
84
|
+
section: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: '可选,指定只从某个标题章节下提取命令块',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
required: ['path'],
|
|
90
|
+
},
|
|
91
|
+
execute: async (args) => {
|
|
92
|
+
const path = typeof args.path === 'string' ? args.path.trim() : '';
|
|
93
|
+
if (!path) {
|
|
94
|
+
return { content: 'path 不能为空', isError: true };
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const content = await manager.extractCommands(path, typeof args.section === 'string' ? args.section.trim() : undefined);
|
|
98
|
+
return { content: JSON.stringify(content, null, 2) };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
content: `提取本地知识命令块失败: ${error instanceof Error ? error.message : String(error)}`,
|
|
103
|
+
isError: true,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function createKnowledgeStatusTool(manager) {
|
|
110
|
+
return {
|
|
111
|
+
name: 'kb_status',
|
|
112
|
+
description: '返回本地知识库状态,包括 source、manifest、qmd 可用性与索引状态。',
|
|
113
|
+
inputSchema: {
|
|
114
|
+
type: 'object',
|
|
115
|
+
properties: {},
|
|
116
|
+
},
|
|
117
|
+
execute: async () => {
|
|
118
|
+
try {
|
|
119
|
+
const status = await manager.status();
|
|
120
|
+
return { content: JSON.stringify(status, null, 2) };
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
content: `读取本地知识库状态失败: ${error instanceof Error ? error.message : String(error)}`,
|
|
125
|
+
isError: true,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/knowledge/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export type KnowledgeBackend = 'qmd';
|
|
2
|
+
export type KnowledgeSearchMode = 'query' | 'search';
|
|
3
|
+
export type KnowledgePriority = 'local_docs' | 'ones_wiki' | 'context7';
|
|
4
|
+
export interface KnowledgeSourceConfig {
|
|
5
|
+
name: string;
|
|
6
|
+
source_path: string;
|
|
7
|
+
managed_path: string;
|
|
8
|
+
pattern: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface KnowledgeQmdConfig {
|
|
12
|
+
command: string;
|
|
13
|
+
search_mode: KnowledgeSearchMode;
|
|
14
|
+
max_results: number;
|
|
15
|
+
timeout_ms: number;
|
|
16
|
+
}
|
|
17
|
+
export interface KnowledgeConfig {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
backend: KnowledgeBackend;
|
|
20
|
+
sources: KnowledgeSourceConfig[];
|
|
21
|
+
priority: KnowledgePriority[];
|
|
22
|
+
qmd: KnowledgeQmdConfig;
|
|
23
|
+
auto_sync_on_startup: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SourceManifest {
|
|
26
|
+
source_name: string;
|
|
27
|
+
source_path: string;
|
|
28
|
+
managed_path: string;
|
|
29
|
+
pattern: string;
|
|
30
|
+
file_count: number;
|
|
31
|
+
last_synced_at: string;
|
|
32
|
+
latest_source_mtime_ms: number;
|
|
33
|
+
source_fingerprint: string;
|
|
34
|
+
qmd_version: string;
|
|
35
|
+
search_mode: KnowledgeSearchMode;
|
|
36
|
+
index_status: 'ready' | 'missing_qmd' | 'syncing' | 'error';
|
|
37
|
+
}
|
|
38
|
+
export interface KnowledgeSearchResult {
|
|
39
|
+
source_name: string;
|
|
40
|
+
file: string;
|
|
41
|
+
relative_path: string;
|
|
42
|
+
title: string;
|
|
43
|
+
snippet: string;
|
|
44
|
+
score: number;
|
|
45
|
+
citation: string;
|
|
46
|
+
retrieval_mode: KnowledgeSearchMode;
|
|
47
|
+
}
|
|
48
|
+
export interface KnowledgeCommandBlock {
|
|
49
|
+
source_name: string;
|
|
50
|
+
relative_path: string;
|
|
51
|
+
path: string;
|
|
52
|
+
document_title: string;
|
|
53
|
+
section: string | null;
|
|
54
|
+
language: string;
|
|
55
|
+
code: string;
|
|
56
|
+
command: string;
|
|
57
|
+
summary: string;
|
|
58
|
+
citation: string;
|
|
59
|
+
kind: 'raw_doc_command' | 'generated_helper_script';
|
|
60
|
+
}
|
|
61
|
+
export interface KnowledgeHelperScript {
|
|
62
|
+
name: string;
|
|
63
|
+
path: string;
|
|
64
|
+
description: string;
|
|
65
|
+
example_invocation: string;
|
|
66
|
+
}
|
|
67
|
+
export interface KnowledgeStatus {
|
|
68
|
+
enabled: boolean;
|
|
69
|
+
backend: KnowledgeBackend;
|
|
70
|
+
qmd_command: string;
|
|
71
|
+
qmd_available: boolean;
|
|
72
|
+
qmd_version: string | null;
|
|
73
|
+
priority: KnowledgePriority[];
|
|
74
|
+
helper_scripts_dir: string;
|
|
75
|
+
helper_scripts: KnowledgeHelperScript[];
|
|
76
|
+
sources: Array<{
|
|
77
|
+
name: string;
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
source_path: string;
|
|
80
|
+
managed_path: string;
|
|
81
|
+
pattern: string;
|
|
82
|
+
manifest: SourceManifest | null;
|
|
83
|
+
}>;
|
|
84
|
+
raw_qmd_status?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface KnowledgePromptContext {
|
|
87
|
+
enabled: boolean;
|
|
88
|
+
sourceNames: string[];
|
|
89
|
+
priority: KnowledgePriority[];
|
|
90
|
+
}
|
|
91
|
+
export interface QmdSearchHit {
|
|
92
|
+
file: string;
|
|
93
|
+
title: string;
|
|
94
|
+
snippet: string;
|
|
95
|
+
score: number;
|
|
96
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/knowledge/types.ts"],"names":[],"mappings":""}
|
package/dist/prompts/system.js
CHANGED
|
@@ -7,14 +7,14 @@ export function buildSystemPrompt(context) {
|
|
|
7
7
|
buildRoleSection(),
|
|
8
8
|
buildUserSection(context.userInfo),
|
|
9
9
|
buildSkillsSection(context.skills),
|
|
10
|
-
buildKnowledgeSection(),
|
|
10
|
+
buildKnowledgeSection(context.knowledge),
|
|
11
|
+
buildOnesQuestionSection(),
|
|
11
12
|
buildMCPToolsSection(context.mcpTools),
|
|
12
13
|
buildSafetySection(),
|
|
13
14
|
buildGuidelinesSection(),
|
|
14
15
|
];
|
|
15
16
|
return sections.join('\n\n');
|
|
16
17
|
}
|
|
17
|
-
// ─── Section 1: 角色定义 ───
|
|
18
18
|
function buildRoleSection() {
|
|
19
19
|
return `你是 ONESCLAW,ONES 企业内部 AI 助手。你的职责是帮助 ONES 团队成员完成日常工作,包括:
|
|
20
20
|
- 运维自动化(ONES 安装、升级、备份、巡检等)
|
|
@@ -22,16 +22,14 @@ function buildRoleSection() {
|
|
|
22
22
|
- 知识检索(企业内部 Wiki 和外部文档查询)
|
|
23
23
|
- ONES 协作(任务管理、项目协作、Wiki、工时记录)
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
默认使用中文交流,跟随用户的语言偏好。回答应直接、可执行、少解释。`;
|
|
26
26
|
}
|
|
27
|
-
// ─── Section 2: 用户身份 ───
|
|
28
27
|
function buildUserSection(userInfo) {
|
|
29
28
|
if (!userInfo) {
|
|
30
29
|
return '当前用户:未登录';
|
|
31
30
|
}
|
|
32
31
|
return `当前用户:${userInfo.name}(${userInfo.email})`;
|
|
33
32
|
}
|
|
34
|
-
// ─── Section 3: 技能索引 ───
|
|
35
33
|
function buildSkillsSection(skills) {
|
|
36
34
|
if (skills.length === 0) {
|
|
37
35
|
return '## 可用技能\n\n暂无可用技能。';
|
|
@@ -42,28 +40,41 @@ function buildSkillsSection(skills) {
|
|
|
42
40
|
|
|
43
41
|
| 技能 | 域 | 说明 |
|
|
44
42
|
|------|-----|------|`;
|
|
45
|
-
const rows = skills.map((
|
|
43
|
+
const rows = skills.map((skill) => `| ${skill.name} | ${skill.domain} | ${skill.description} |`);
|
|
46
44
|
return [header, ...rows].join('\n');
|
|
47
45
|
}
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
function buildKnowledgeSection(knowledge) {
|
|
47
|
+
const localKbEnabled = Boolean(knowledge?.enabled) && Array.isArray(knowledge?.sourceNames) && knowledge.sourceNames.length > 0;
|
|
48
|
+
const priority = Array.isArray(knowledge?.priority) && knowledge.priority.length > 0
|
|
49
|
+
? knowledge.priority.join(' > ')
|
|
50
|
+
: 'local_docs > ones_wiki > context7';
|
|
50
51
|
return `## 知识检索
|
|
51
52
|
|
|
52
53
|
当用户提出需要查阅文档或知识的问题时,按以下策略选择数据源:
|
|
53
54
|
|
|
55
|
+
### 本地主知识库(优先级最高)
|
|
56
|
+
${localKbEnabled ? `当前已启用本地知识库,source:${knowledge.sourceNames.join('、')}。` : '当前本地知识库未配置或未启用。'}
|
|
57
|
+
优先使用 kb_search 检索本地托管 Markdown 文档;如需要命令块,先用 kb_extract_commands;如需要全文或具体章节,再使用 kb_get_document。
|
|
58
|
+
适用场景:ONES 安装部署、升级维护、环境要求、故障排查、产品/运维手册等公司主文档。
|
|
59
|
+
- ONES 命令型问题默认先查本地知识库
|
|
60
|
+
- 命中本地知识库时,以本地文档为主事实源回答
|
|
61
|
+
- 命中本地知识库后,不要默认继续查 Context7
|
|
62
|
+
- 若本地知识与 Wiki / Context7 冲突,以本地知识库为准
|
|
63
|
+
|
|
54
64
|
### 内部知识(ONES 企业 Wiki)
|
|
55
|
-
|
|
65
|
+
当本地知识库未命中或信息不足时,使用 ones__search_for_references_in_wiki 工具搜索企业内部 Wiki 知识库。
|
|
56
66
|
适用场景:公司内部流程、团队规范、项目文档、产品知识等。
|
|
57
67
|
- 可选参数 spaceID:限定搜索范围到特定 Wiki 空间。如需指定空间,先调用 ones__get_space_list 获取空间列表。
|
|
58
68
|
- 如果搜索结果摘要不够详细,可调用 ones__get_page_details 获取完整页面内容。
|
|
59
69
|
|
|
60
70
|
### ONES 运维实施手册
|
|
61
|
-
|
|
62
|
-
|
|
71
|
+
在 ONES 文档概览、解释、比较类问题中,可优先使用 context7__query-docs 工具,libraryId 为 "/websites/opsdoc_ones_cn" 做快速召回。
|
|
72
|
+
在 ONES 安装部署、升级维护、巡检、环境检测等命令型问题中,Context7 只能做补充概念来源,不能替代本地知识库中的最终命令来源。
|
|
73
|
+
适用场景:ONES 运维文档概览、部署方式说明、运维操作背景说明等。
|
|
63
74
|
无需先调用 resolve-library-id,直接使用此固定 ID。
|
|
64
75
|
|
|
65
76
|
### ONES 开发者平台文档
|
|
66
|
-
|
|
77
|
+
在 ONES 插件开发、OpenAPI、SDK、开发者指南类问题中,可优先使用 context7__query-docs 工具,libraryId 为 "/websites/developer_ones_cn"。
|
|
67
78
|
适用场景:ONES 插件开发、OpenAPI 接口、开发者指南等。
|
|
68
79
|
无需先调用 resolve-library-id,直接使用此固定 ID。
|
|
69
80
|
|
|
@@ -71,19 +82,38 @@ function buildKnowledgeSection() {
|
|
|
71
82
|
对于第三方库和框架文档,按两步操作:
|
|
72
83
|
1. 先调用 context7__resolve-library-id 获取库的 Context7 ID
|
|
73
84
|
2. 再调用 context7__query-docs 查询具体文档内容
|
|
74
|
-
适用场景:React、Node.js、Python
|
|
85
|
+
适用场景:React、Node.js、Python 等通用编程库的文档查询。
|
|
86
|
+
|
|
87
|
+
知识路由优先级:${priority}`;
|
|
88
|
+
}
|
|
89
|
+
function buildOnesQuestionSection() {
|
|
90
|
+
return `## ONES 问答契约
|
|
91
|
+
|
|
92
|
+
当用户问题与 ONES 安装、部署、升级、运维、授权、证书、配置、排障、环境要求相关时:
|
|
93
|
+
- 这是命令型问题,最终命令必须以本地知识库 Markdown grounding 为准。
|
|
94
|
+
- 不要输出文档里不存在的脚本名或工具名,例如 ones-cli、install.sh、envcheck.sh。
|
|
95
|
+
- 如果用户已经进入安装、升级、巡检等具体执行问题,优先给可复制命令,不要先写长背景。
|
|
96
|
+
- 更细的 7 段输出结构和 docs-only 约束,由本轮 route prompt 进一步收紧。
|
|
97
|
+
|
|
98
|
+
当用户问题与 ONES 架构概览、部署方式比较、能力介绍、原理说明相关时:
|
|
99
|
+
- 可优先使用 Context7 或 ONES Wiki 给出简洁概览。
|
|
100
|
+
- 这类问题不强制输出代码块,也不强制使用 7 段重型命令回答。
|
|
101
|
+
- 如果用户进一步追问具体安装、升级、巡检命令,再切换到本地知识库命令型回答。
|
|
102
|
+
|
|
103
|
+
当用户问题与 ONES 实时工单、任务状态、负责人、缺陷状态相关时:
|
|
104
|
+
- 默认优先使用 ONES MCP(ones__ 前缀工具),不要优先查本地知识库。
|
|
105
|
+
- 返回结果保持短、结构化、可复制,不要混入长解释。`;
|
|
75
106
|
}
|
|
76
|
-
// ─── Section 5: MCP 工具使用 ───
|
|
77
107
|
function buildMCPToolsSection(mcpTools) {
|
|
78
108
|
if (mcpTools.length === 0) {
|
|
79
109
|
return '## 平台工具\n\n暂无可用的 MCP 工具。';
|
|
80
110
|
}
|
|
81
|
-
// 按 server 前缀分组
|
|
82
111
|
const grouped = new Map();
|
|
83
112
|
for (const tool of mcpTools) {
|
|
84
113
|
const sepIdx = tool.indexOf('__');
|
|
85
|
-
if (sepIdx === -1)
|
|
114
|
+
if (sepIdx === -1) {
|
|
86
115
|
continue;
|
|
116
|
+
}
|
|
87
117
|
const server = tool.substring(0, sepIdx);
|
|
88
118
|
const name = tool.substring(sepIdx + 2);
|
|
89
119
|
if (!grouped.has(server)) {
|
|
@@ -100,15 +130,11 @@ function buildMCPToolsSection(mcpTools) {
|
|
|
100
130
|
sections.push(buildContext7ToolsSection(tools));
|
|
101
131
|
}
|
|
102
132
|
else {
|
|
103
|
-
// 其他 MCP server
|
|
104
133
|
sections.push(`### ${server}\n可用工具:${tools.join('、')}`);
|
|
105
134
|
}
|
|
106
135
|
}
|
|
107
136
|
return sections.join('\n\n');
|
|
108
137
|
}
|
|
109
|
-
/**
|
|
110
|
-
* ONES MCP 工具分类说明
|
|
111
|
-
*/
|
|
112
138
|
function buildOnesToolsSection(tools) {
|
|
113
139
|
const categories = [
|
|
114
140
|
{ title: '任务管理', pattern: /issue|onesql/, items: [] },
|
|
@@ -120,9 +146,9 @@ function buildOnesToolsSection(tools) {
|
|
|
120
146
|
];
|
|
121
147
|
for (const tool of tools) {
|
|
122
148
|
let matched = false;
|
|
123
|
-
for (const
|
|
124
|
-
if (
|
|
125
|
-
|
|
149
|
+
for (const category of categories) {
|
|
150
|
+
if (category.title !== '其他' && category.pattern.test(tool)) {
|
|
151
|
+
category.items.push(tool);
|
|
126
152
|
matched = true;
|
|
127
153
|
break;
|
|
128
154
|
}
|
|
@@ -132,32 +158,30 @@ function buildOnesToolsSection(tools) {
|
|
|
132
158
|
}
|
|
133
159
|
}
|
|
134
160
|
const lines = ['### ONES 平台工具'];
|
|
135
|
-
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
if (cat.items.length === 0)
|
|
161
|
+
const hasManHour = categories.some((category) => category.title === '工时管理' && category.items.length > 0);
|
|
162
|
+
for (const category of categories) {
|
|
163
|
+
if (category.items.length === 0) {
|
|
139
164
|
continue;
|
|
140
|
-
lines.push(`\n**${cat.title}**`);
|
|
141
|
-
for (const item of cat.items) {
|
|
142
|
-
lines.push(`- ones__${item}`);
|
|
143
165
|
}
|
|
144
|
-
|
|
145
|
-
|
|
166
|
+
const examples = category.items.slice(0, 3).map((item) => `ones__${item}`);
|
|
167
|
+
lines.push(`- ${category.title}:${category.items.length} 个工具${examples.length > 0 ? `(例如 ${examples.join('、')})` : ''}`);
|
|
168
|
+
if (category.title === '工时管理' && hasManHour) {
|
|
169
|
+
lines.push(' > 工时操作前必须先调用 ones__get_manhour_mode 确定模式(simple/summary),再使用对应模式的工具。');
|
|
146
170
|
}
|
|
147
171
|
}
|
|
148
172
|
return lines.join('\n');
|
|
149
173
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Context7 工具说明
|
|
152
|
-
*/
|
|
153
174
|
function buildContext7ToolsSection(tools) {
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
175
|
+
const normalized = new Set(tools);
|
|
176
|
+
const entries = ['### Context7 文档检索工具'];
|
|
177
|
+
if (normalized.has('query-docs')) {
|
|
178
|
+
entries.push('- context7__query-docs:查询固定库或已解析库的文档内容');
|
|
157
179
|
}
|
|
158
|
-
|
|
180
|
+
if (normalized.has('resolve-library-id')) {
|
|
181
|
+
entries.push('- context7__resolve-library-id:为第三方通用库解析 Context7 library ID');
|
|
182
|
+
}
|
|
183
|
+
return entries.join('\n');
|
|
159
184
|
}
|
|
160
|
-
// ─── Section 6: 安全约束 ───
|
|
161
185
|
function buildSafetySection() {
|
|
162
186
|
return `## 安全规则
|
|
163
187
|
|
|
@@ -183,7 +207,6 @@ function buildSafetySection() {
|
|
|
183
207
|
- 不生成插件业务代码
|
|
184
208
|
- 引导用户参考开发者平台文档自行开发`;
|
|
185
209
|
}
|
|
186
|
-
// ─── Section 7: 行为指南 ───
|
|
187
210
|
function buildGuidelinesSection() {
|
|
188
211
|
return `## 行为指南
|
|
189
212
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/prompts/system.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/prompts/system.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare class ToolRegistry {
|
|
|
15
15
|
/**
|
|
16
16
|
* 注册 Native Tools(本地工具)
|
|
17
17
|
*/
|
|
18
|
-
registerNativeTools(): void;
|
|
18
|
+
registerNativeTools(options?: {}): void;
|
|
19
19
|
/**
|
|
20
20
|
* 加载 Skill 索引
|
|
21
21
|
*/
|
|
@@ -36,7 +36,7 @@ export declare class ToolRegistry {
|
|
|
36
36
|
/**
|
|
37
37
|
* 获取所有工具的 Anthropic 格式定义(传给 LLM)
|
|
38
38
|
*/
|
|
39
|
-
getToolDefinitions(): {
|
|
39
|
+
getToolDefinitions(filter?: any): {
|
|
40
40
|
name: any;
|
|
41
41
|
description: any;
|
|
42
42
|
input_schema: any;
|
package/dist/tools/registry.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createLoadSkillTool } from '../skills/loader.js';
|
|
|
9
9
|
import { createPluginInitTool } from './plugin-init.js';
|
|
10
10
|
import { createSkillsSyncTool } from './skills-sync.js';
|
|
11
11
|
import { createServerListTool, createServerAddTool, createServerRemoveTool } from './server.js';
|
|
12
|
+
import { createKnowledgeExtractCommandsTool, createKnowledgeGetDocumentTool, createKnowledgeSearchTool, createKnowledgeStatusTool, } from '../knowledge/tools.js';
|
|
12
13
|
/**
|
|
13
14
|
* 统一工具注册中心
|
|
14
15
|
* 管理所有可用工具(MCP 工具 + 未来的原生工具)
|
|
@@ -26,7 +27,7 @@ export class ToolRegistry {
|
|
|
26
27
|
/**
|
|
27
28
|
* 注册 Native Tools(本地工具)
|
|
28
29
|
*/
|
|
29
|
-
registerNativeTools() {
|
|
30
|
+
registerNativeTools(options = {}) {
|
|
30
31
|
this.register(createShellTool());
|
|
31
32
|
this.register(createSSHTool(this.sshPool));
|
|
32
33
|
this.register(createAskUserTool());
|
|
@@ -37,6 +38,12 @@ export class ToolRegistry {
|
|
|
37
38
|
this.register(createServerListTool());
|
|
38
39
|
this.register(createServerAddTool());
|
|
39
40
|
this.register(createServerRemoveTool());
|
|
41
|
+
if (options.knowledgeManager) {
|
|
42
|
+
this.register(createKnowledgeSearchTool(options.knowledgeManager));
|
|
43
|
+
this.register(createKnowledgeExtractCommandsTool(options.knowledgeManager));
|
|
44
|
+
this.register(createKnowledgeGetDocumentTool(options.knowledgeManager));
|
|
45
|
+
this.register(createKnowledgeStatusTool(options.knowledgeManager));
|
|
46
|
+
}
|
|
40
47
|
}
|
|
41
48
|
/**
|
|
42
49
|
* 加载 Skill 索引
|
|
@@ -78,8 +85,10 @@ export class ToolRegistry {
|
|
|
78
85
|
/**
|
|
79
86
|
* 获取所有工具的 Anthropic 格式定义(传给 LLM)
|
|
80
87
|
*/
|
|
81
|
-
getToolDefinitions() {
|
|
82
|
-
return Array.from(this.tools.values())
|
|
88
|
+
getToolDefinitions(filter) {
|
|
89
|
+
return Array.from(this.tools.values())
|
|
90
|
+
.filter((tool) => (typeof filter === 'function' ? filter(tool.name) : true))
|
|
91
|
+
.map((tool) => ({
|
|
83
92
|
name: tool.name,
|
|
84
93
|
description: tool.description,
|
|
85
94
|
input_schema: tool.inputSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChG;;;GAGG;AACH,MAAM,OAAO,YAAY;IACrB,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IAClB,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,IAAI;QACT,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD;;OAEG;IACH,mBAAmB;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|