@axiom-lattice/examples-deep_research 1.0.14 → 1.0.16

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/dist/index.js CHANGED
@@ -31,7 +31,7 @@ var require_package = __commonJS({
31
31
  "package.json"(exports2, module2) {
32
32
  module2.exports = {
33
33
  name: "@axiom-lattice/examples-deep_research",
34
- version: "1.0.14",
34
+ version: "1.0.16",
35
35
  main: "dist/index.js",
36
36
  bin: {
37
37
  "lattice-deep-research": "./dist/index.js"
@@ -84,7 +84,7 @@ var require_package = __commonJS({
84
84
  // src/index.ts
85
85
  var import_dotenv = __toESM(require("dotenv"));
86
86
  var import_gateway = require("@axiom-lattice/gateway");
87
- var import_core3 = require("@axiom-lattice/core");
87
+ var import_core4 = require("@axiom-lattice/core");
88
88
 
89
89
  // src/agents/research/index.ts
90
90
  var import_core = require("@axiom-lattice/core");
@@ -235,45 +235,940 @@ var research_agents = [
235
235
  (0, import_core.registerAgentLattices)(research_agents);
236
236
 
237
237
  // src/agents/data_agent/index.ts
238
- var import_core2 = require("@axiom-lattice/core");
238
+ var import_core3 = require("@axiom-lattice/core");
239
+ var import_zod3 = __toESM(require("zod"));
240
+
241
+ // src/agents/data_agent/tools/load_skills.ts
239
242
  var import_zod2 = __toESM(require("zod"));
240
- var dataAgentPrompt = `You are an expert Data Analyst AI assistant specialized in converting natural language questions into SQL queries and retrieving data from databases.
241
-
242
- Your primary responsibilities:
243
- 1. Understand user questions about data
244
- 2. Explore the database schema to understand available tables and their relationships
245
- 3. Write accurate and efficient SQL queries to answer questions
246
- 4. Present results in a clear and understandable format
247
-
248
- ## Workflow
249
-
250
- When a user asks a question about data, follow these steps:
251
-
252
- ### Step 1: Understand the Database Schema
253
- - First, use the \`list_tables_sql\` tool to see all available tables
254
- - Then, use the \`info_sql\` tool to get detailed schema information for relevant tables
255
- - Pay attention to:
256
- - Column names and data types
257
- - Primary keys and foreign keys (relationships between tables)
258
- - Sample data to understand the data format
259
-
260
- ### Step 2: Plan Your Query
261
- - Think about which tables you need to query
262
- - Consider if you need to JOIN multiple tables
263
- - Think about filtering conditions (WHERE clauses)
264
- - Consider if you need aggregations (COUNT, SUM, AVG, etc.)
265
- - Consider sorting and limiting results
266
-
267
- ### Step 3: Validate Your Query
268
- - Use the \`query_checker_sql\` tool to validate your SQL query before execution
269
- - Fix any issues found by the checker
270
- - Make sure the query is safe and efficient
271
-
272
- ### Step 4: Execute and Present Results
273
- - Use the \`query_sql\` tool to execute your validated query
274
- - Present the results in a clear format
275
- - Explain what the data means in context of the user's question
276
- - If the results are unexpected, analyze and explain possible reasons
243
+ var import_core2 = require("@axiom-lattice/core");
244
+
245
+ // src/agents/data_agent/skills/analyst.ts
246
+ var analyst = {
247
+ name: "analyst",
248
+ description: "\u534F\u8C03\u548C\u6267\u884C\u5B8C\u6574\u7684\u4E1A\u52A1\u6570\u636E\u5206\u6790\u6D41\u7A0B\uFF0C\u6574\u5408\u5206\u6790\u65B9\u6CD5\u8BBA\u3001SQL\u67E5\u8BE2\u3001\u6570\u636E\u53EF\u89C6\u5316\u548C\u62A5\u544A\u7F16\u5199\u6280\u80FD\u3002\u9002\u7528\u4E8E\u9700\u8981\u7AEF\u5230\u7AEF\u5206\u6790\u6D41\u7A0B\u7684\u590D\u6742\u4E1A\u52A1\u95EE\u9898\u3002",
249
+ prompt: `## \u89D2\u8272\u5B9A\u4F4D
250
+
251
+ \u4F5C\u4E3A\u5206\u6790\u534F\u8C03\u8005\uFF0C\u6574\u5408\u4F7F\u7528\u4EE5\u4E0B\u6280\u80FD\u5B8C\u6210\u7AEF\u5230\u7AEF\u5206\u6790\uFF1A
252
+ - \`analysis-methodology\`: \u7ED3\u6784\u5316\u95EE\u9898\u62C6\u89E3\u548C\u65B9\u6CD5\u8BBA\u5E94\u7528
253
+ - \`sql-query\`: \u6570\u636E\u68C0\u7D22\u548C\u67E5\u8BE2\u6267\u884C
254
+ - \`data-visualization\`: \u56FE\u8868\u8BBE\u8BA1\u548C\u53EF\u89C6\u5316\u914D\u7F6E
255
+ - \`notebook-report\`: \u62A5\u544A\u751F\u6210\u548C\u6D1E\u5BDF\u6574\u5408
256
+
257
+ ## \u5206\u6790\u5DE5\u4F5C\u6D41\u7A0B
258
+
259
+ ### \u6B65\u9AA4 0\uFF1A\u95EE\u9898\u7406\u89E3\u4E0E\u89C4\u5212
260
+
261
+ 1. **\u8BB0\u5F55\u95EE\u9898**\uFF1A\u5199\u5165 \`/question.md\`\uFF08\u95EE\u9898\u9648\u8FF0\u3001\u4E1A\u52A1\u80CC\u666F\u3001\u6210\u529F\u6807\u51C6\uFF09
262
+ 2. **\u5E94\u7528\u5206\u6790\u65B9\u6CD5\u8BBA**\uFF1A\u4F7F\u7528 \`analysis-methodology\` \u6280\u80FD
263
+ - \u4F7F\u7528 5W2H \u548C SCQA \u660E\u786E\u95EE\u9898
264
+ - \u4F7F\u7528 MECE \u548C\u8BAE\u9898\u6811\u62C6\u89E3\u4E3A\u5B50\u95EE\u9898
265
+ - \u4F7F\u7528\u56DB\u8C61\u9650\u77E9\u9635\u6392\u5E8F\u4F18\u5148\u7EA7
266
+ 3. **\u521B\u5EFA\u5F85\u529E\u5217\u8868**\uFF1A\u6BCF\u4E2A\u5B50\u95EE\u9898\u4F5C\u4E3A\u72EC\u7ACB\u4EFB\u52A1
267
+
268
+ ### \u6B65\u9AA4 1\uFF1A\u6570\u636E\u5E93\u6A21\u5F0F\u63A2\u7D22\uFF08\u5982\u9700\u8981\uFF09
269
+
270
+ \u4F7F\u7528 \`sql-query\` \u6280\u80FD\uFF1A
271
+ 1. \u68C0\u67E5 \`/db_schema.md\` \u662F\u5426\u5B58\u5728
272
+ 2. \u5982\u9700\u8981\uFF0C\u63A2\u7D22\u8868\u7ED3\u6784
273
+ 3. \u5C06\u6A21\u5F0F\u6587\u6863\u5199\u5165 \`/db_schema.md\`
274
+
275
+ ### \u6B65\u9AA4 2\uFF1A\u8FED\u4EE3\u5206\u6790\u6267\u884C
276
+
277
+ \u5BF9\u6BCF\u4E2A\u5F85\u529E\u4EFB\u52A1\uFF1A
278
+
279
+ **2.1 \u6570\u636E\u68C0\u7D22**\uFF1A
280
+ - \u59D4\u6258 sql-builder-agent \u6267\u884C\u67E5\u8BE2
281
+ - \u9A8C\u8BC1\u67E5\u8BE2\u7ED3\u679C\u7684\u8D28\u91CF\u548C\u5B8C\u6574\u6027
282
+
283
+ **2.2 \u6570\u636E\u5206\u6790**\uFF1A
284
+ - \u59D4\u6258 data-analysis-agent \u5206\u6790\u6570\u636E
285
+ - \u8BF7\u6C42\u5173\u952E\u53D1\u73B0\u3001\u4E1A\u52A1\u89E3\u91CA\u548C\u53EF\u89C6\u5316\u5EFA\u8BAE
286
+
287
+ **2.3 \u53EF\u89C6\u5316\u8BBE\u8BA1**\uFF1A
288
+ - \u4F7F\u7528 \`data-visualization\` \u6280\u80FD
289
+ - \u6839\u636E\u5206\u6790\u7ED3\u679C\u9009\u62E9\u5408\u9002\u7684\u56FE\u8868\u7C7B\u578B
290
+ - \u751F\u6210\u5B8C\u6574\u7684 ECharts \u914D\u7F6E
291
+
292
+ **2.4 \u6587\u6863\u5316**\uFF1A
293
+ - \u5199\u5165 \`/topic_[sub_topic_name].md\`\uFF1A
294
+ - \u4E1A\u52A1\u95EE\u9898/\u76EE\u6807
295
+ - SQL \u67E5\u8BE2
296
+ - \u67E5\u8BE2\u7ED3\u679C
297
+ - \u5206\u6790\u6D1E\u5BDF
298
+ - \u56FE\u8868\u914D\u7F6E\uFF08\u4F7F\u7528 \`data-visualization\` \u6280\u80FD\u751F\u6210\uFF09
299
+ - \u5173\u952E\u8981\u70B9
300
+
301
+ **2.5 \u8FDB\u5EA6\u7BA1\u7406**\uFF1A
302
+ - \u6807\u8BB0\u4EFB\u52A1\u5B8C\u6210\uFF0C\u66F4\u65B0\u5F85\u529E\u5217\u8868
303
+ - \u9A8C\u8BC1\u5206\u6790\u56DE\u7B54\u4E86\u9884\u671F\u95EE\u9898
304
+
305
+ ### \u6B65\u9AA4 3\uFF1A\u7EFC\u5408\u4E0E\u6A21\u5F0F\u8BC6\u522B
306
+
307
+ 1. \u8BFB\u53D6\u6240\u6709 \`/topic_*.md\` \u6587\u4EF6
308
+ 2. \u5E94\u7528 \`analysis-methodology\` \u4E2D\u7684\u6A21\u5F0F\u8BC6\u522B\u65B9\u6CD5
309
+ 3. \u8BC6\u522B\u8DE8\u9886\u57DF\u4E3B\u9898\u3001\u8D8B\u52BF\u3001\u5F02\u5E38\u503C
310
+ 4. \u5E94\u7528 80/20 \u539F\u5219\uFF0C\u6309\u4E1A\u52A1\u5F71\u54CD\u6392\u5E8F
311
+ 5. \u51C6\u5907\u6267\u884C\u7EA7\u522B\u7684\u7EFC\u5408\u6458\u8981
312
+
313
+ ### \u6B65\u9AA4 4\uFF1A\u751F\u6210\u5206\u6790\u62A5\u544A
314
+
315
+ \u4F7F\u7528 \`notebook-report\` \u6280\u80FD\uFF1A
316
+ - \u6574\u5408\u6240\u6709\u5206\u6790\u6B65\u9AA4
317
+ - \u751F\u6210\u7B14\u8BB0\u672C\u98CE\u683C\u62A5\u544A
318
+ - \u5305\u542B\u6267\u884C\u6458\u8981\u3001\u5206\u6790\u6B65\u9AA4\u3001\u7ED3\u8BBA
319
+
320
+ ## \u6280\u80FD\u7EC4\u5408\u4F7F\u7528
321
+
322
+ \u6839\u636E\u5206\u6790\u9636\u6BB5\u9009\u62E9\u5408\u9002\u7684\u6280\u80FD\uFF1A
323
+ - **\u89C4\u5212\u9636\u6BB5**\uFF1A\`analysis-methodology\`
324
+ - **\u6570\u636E\u83B7\u53D6**\uFF1A\`sql-query\`
325
+ - **\u53EF\u89C6\u5316\u8BBE\u8BA1**\uFF1A\`data-visualization\`
326
+ - **\u62A5\u544A\u751F\u6210**\uFF1A\`notebook-report\`
327
+
328
+ ## \u5173\u952E\u5B9E\u8DF5
329
+
330
+ - **\u5047\u8BBE\u9A71\u52A8**\uFF1A\u63D0\u51FA\u5047\u8BBE\uFF0C\u7528\u6570\u636E\u9A8C\u8BC1\uFF0C\u5FEB\u901F\u8C03\u6574
331
+ - **\u8FED\u4EE3\u4F18\u5316**\uFF1A\u6839\u636E\u53D1\u73B0\u4F18\u5316\u67E5\u8BE2\u548C\u5206\u6790
332
+ - **\u5B8C\u6574\u6587\u6863\u5316**\uFF1A\u8BB0\u5F55\u95EE\u9898\u3001\u67E5\u8BE2\u3001\u7ED3\u679C\u3001\u6D1E\u5BDF
333
+ - **\u8D28\u91CF\u4F18\u5148**\uFF1A\u786E\u4FDD\u6BCF\u6B65\u5B8C\u6574\u51C6\u786E\u540E\u518D\u7EE7\u7EED
334
+ - **\u4E1A\u52A1\u805A\u7126**\uFF1A\u5C06\u6280\u672F\u53D1\u73B0\u4E0E\u4E1A\u52A1\u5F71\u54CD\u5173\u8054
335
+
336
+ ## \u9519\u8BEF\u5904\u7406
337
+
338
+ - **\u67E5\u8BE2\u9519\u8BEF**\uFF1A\u4E0E sql-builder-agent \u534F\u4F5C\u8C03\u8BD5
339
+ - **\u6570\u636E\u8D28\u91CF\u95EE\u9898**\uFF1A\u8BB0\u5F55\u5E76\u8C03\u6574\u5206\u6790
340
+ - **\u610F\u5916\u7ED3\u679C**\uFF1A\u8C03\u67E5\u5F02\u5E38\uFF0C\u53EF\u80FD\u63ED\u793A\u91CD\u8981\u6D1E\u5BDF
341
+ - **\u7F3A\u5931\u6570\u636E**\uFF1A\u8BC6\u522B\u5DEE\u8DDD\uFF0C\u8C03\u6574\u5206\u6790\u8303\u56F4
342
+ - **\u65B0\u95EE\u9898**\uFF1A\u6DFB\u52A0\u65B0\u5F85\u529E\u4E8B\u9879\u7EE7\u7EED\u63A2\u7D22
343
+ `
344
+ };
345
+
346
+ // src/agents/data_agent/skills/data-visualization.ts
347
+ var dataVisualization = {
348
+ name: "data-visualization",
349
+ description: "\u4E3A\u6570\u636E\u5206\u6790\u7ED3\u679C\u9009\u62E9\u5408\u9002\u7684\u56FE\u8868\u7C7B\u578B\u5E76\u751F\u6210 ECharts \u914D\u7F6E\u3002\u9002\u7528\u4E8E\u9700\u8981\u5C06\u67E5\u8BE2\u7ED3\u679C\u53EF\u89C6\u5316\u4E3A\u67F1\u72B6\u56FE\u3001\u6298\u7EBF\u56FE\u3001\u997C\u56FE\u3001\u6563\u70B9\u56FE\u7B49\u56FE\u8868\u7684\u573A\u666F\u3002",
350
+ prompt: `## \u56FE\u8868\u7C7B\u578B\u9009\u62E9\u6307\u5357
351
+
352
+ \u6839\u636E\u6570\u636E\u7279\u5F81\u548C\u4E1A\u52A1\u95EE\u9898\u9009\u62E9\u6700\u5408\u9002\u7684\u56FE\u8868\u7C7B\u578B\uFF1A
353
+
354
+ - **\u67F1\u72B6\u56FE** (bar): \u6BD4\u8F83\u7C7B\u522B\u6216\u65F6\u95F4\u5468\u671F
355
+ - \u4F7F\u7528 category xAxis\uFF0Cvalue yAxis
356
+ - \u591A\u7CFB\u5217\u7528\u4E8E\u5206\u7EC4/\u5806\u53E0\u67F1\u72B6\u56FE
357
+
358
+ - **\u6298\u7EBF\u56FE** (line): \u5C55\u793A\u65F6\u95F4\u8D8B\u52BF
359
+ - \u4F7F\u7528 category/time xAxis\uFF0Cvalue yAxis
360
+ - \u591A\u7CFB\u5217\u5C55\u793A\u591A\u4E2A\u6307\u6807
361
+
362
+ - **\u997C\u56FE** (pie): \u5C55\u793A\u6784\u6210/\u767E\u5206\u6BD4
363
+ - \u65E0\u9700 xAxis/yAxis
364
+ - \u6570\u636E\u683C\u5F0F: [{value: number, name: string}, ...]
365
+ - \u4F7F\u7528 radius: ["40%", "70%"] \u521B\u5EFA\u73AF\u5F62\u56FE
366
+
367
+ - **\u6563\u70B9\u56FE** (scatter): \u76F8\u5173\u6027\u5206\u6790
368
+ - \u4F7F\u7528 value xAxis \u548C value yAxis
369
+ - \u6570\u636E\u683C\u5F0F: [[x, y], [x, y], ...]
370
+
371
+ - **\u70ED\u529B\u56FE** (heatmap): \u591A\u7EF4\u6570\u636E
372
+ - \u9700\u8981 category xAxis \u548C yAxis
373
+ - \u6570\u636E\u683C\u5F0F: [[xIndex, yIndex, value], ...]
374
+
375
+ ## ECharts \u914D\u7F6E\u8981\u6C42
376
+
377
+ \u751F\u6210\u5B8C\u6574\u7684 ECharts \u914D\u7F6E\uFF0C\u5FC5\u987B\u5305\u542B\uFF1A
378
+
379
+ \`\`\`json
380
+ {
381
+ "table": [...], // \u539F\u59CB\u6570\u636E\u8868\u683C
382
+ "echarts": {
383
+ "title": {"text": "\u6E05\u6670\u7684\u56FE\u8868\u6807\u9898"},
384
+ "tooltip": {
385
+ "trigger": "axis", // bar/line \u7528 "axis", pie/scatter \u7528 "item"
386
+ "formatter": "..." // \u53EF\u9009\uFF1A\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316
387
+ },
388
+ "legend": {...}, // \u591A\u7CFB\u5217\u65F6\u5FC5\u9700
389
+ "xAxis": {
390
+ "type": "category", // \u6216 "time", "value"
391
+ "name": "X\u8F74\u540D\u79F0",
392
+ "data": [...] // category \u7C7B\u578B\u65F6\u5FC5\u9700
393
+ },
394
+ "yAxis": {
395
+ "type": "value",
396
+ "name": "Y\u8F74\u540D\u79F0"
397
+ },
398
+ "series": [{
399
+ "type": "bar|line|pie|scatter|heatmap",
400
+ "name": "\u7CFB\u5217\u540D\u79F0",
401
+ "data": [...],
402
+ "label": {...} // \u53EF\u9009\uFF1A\u663E\u793A\u6570\u503C
403
+ }],
404
+ "grid": {...} // \u53EF\u9009\uFF1A\u63A7\u5236\u8FB9\u8DDD
405
+ }
406
+ }
407
+ \`\`\`
408
+
409
+ ## \u6700\u4F73\u5B9E\u8DF5
410
+
411
+ - \u56FE\u8868\u6807\u9898\u6E05\u6670\u63CF\u8FF0\u4E1A\u52A1\u95EE\u9898
412
+ - \u8F74\u6807\u7B7E\u4F7F\u7528\u4E1A\u52A1\u672F\u8BED\uFF0C\u800C\u975E\u6280\u672F\u5B57\u6BB5\u540D
413
+ - \u6570\u503C\u683C\u5F0F\u5316\uFF1A\u767E\u5206\u6BD4\u3001\u8D27\u5E01\u3001\u5343\u5206\u4F4D
414
+ - \u65F6\u95F4\u5E8F\u5217\u4F7F\u7528 "xAxis.type: 'time'" \u5E76\u6B63\u786E\u683C\u5F0F\u5316\u65E5\u671F
415
+ - \u591A\u7CFB\u5217\u65F6\u4F7F\u7528 legend \u533A\u5206
416
+ - \u91CD\u8981\u6570\u503C\u5728\u56FE\u8868\u4E0A\u76F4\u63A5\u6807\u6CE8\uFF08series.label\uFF09
417
+
418
+ ## \u8F93\u51FA\u683C\u5F0F
419
+
420
+ \u63D0\u4F9B\u5B8C\u6574\u7684 chart JSON \u914D\u7F6E\uFF0C\u53EF\u76F4\u63A5\u7528\u4E8E\u6E32\u67D3\u3002
421
+ `
422
+ };
423
+
424
+ // src/agents/data_agent/skills/sql-query.ts
425
+ var sqlQuery = {
426
+ name: "sql-query",
427
+ description: "\u751F\u6210\u548C\u6267\u884C SQL \u67E5\u8BE2\u4EE5\u68C0\u7D22\u4E1A\u52A1\u6570\u636E\u3002\u9002\u7528\u4E8E\u9700\u8981\u4ECE\u6570\u636E\u5E93\u83B7\u53D6\u6570\u636E\u3001\u63A2\u7D22\u8868\u7ED3\u6784\u3001\u9A8C\u8BC1\u67E5\u8BE2\u6B63\u786E\u6027\u7684\u573A\u666F\u3002\u59D4\u6258\u7ED9 sql-builder-agent \u6267\u884C\u3002",
428
+ prompt: `## \u59D4\u6258\u7ED9 sql-builder-agent
429
+
430
+ \u6240\u6709 SQL \u76F8\u5173\u64CD\u4F5C\u90FD\u59D4\u6258\u7ED9 sql-builder-agent \u5B50\u4EE3\u7406\u6267\u884C\u3002
431
+
432
+ ## \u6570\u636E\u5E93\u6A21\u5F0F\u63A2\u7D22
433
+
434
+ **\u8BF7\u6C42\u6A21\u5F0F\u4FE1\u606F**\uFF1A
435
+ - "\u8BF7\u5217\u51FA\u6570\u636E\u5E93\u4E2D\u6240\u6709\u53EF\u7528\u7684\u8868"
436
+ - "\u8BF7\u663E\u793A\u8868 [X] \u7684\u6A21\u5F0F\uFF0C\u5305\u62EC\u5217\u3001\u6570\u636E\u7C7B\u578B\u548C\u5173\u7CFB"
437
+
438
+ **\u68C0\u67E5\u73B0\u6709\u6587\u6863**\uFF1A
439
+ - \u5148\u8BFB\u53D6 \`/db_schema.md\`\uFF08\u5982\u5B58\u5728\uFF09
440
+ - \u4EC5\u5728\u9700\u8981\u65F6\u8BF7\u6C42\u65B0\u7684\u6A21\u5F0F\u63A2\u7D22
441
+
442
+ ## \u67E5\u8BE2\u751F\u6210\u4E0E\u6267\u884C
443
+
444
+ **\u63D0\u4F9B\u6E05\u6670\u7684\u4E1A\u52A1\u9700\u6C42**\uFF1A
445
+ 1. **\u4E1A\u52A1\u95EE\u9898**\uFF1A\u660E\u786E\u8981\u56DE\u7B54\u7684\u95EE\u9898
446
+ 2. **\u6307\u6807**\uFF1A\u9700\u8981\u8BA1\u7B97\u7684\u4E1A\u52A1\u6307\u6807\uFF08\u6536\u5165\u3001\u8BA2\u5355\u6570\u3001\u8F6C\u5316\u7387\u7B49\uFF09
447
+ 3. **\u7EF4\u5EA6**\uFF1A\u5206\u7EC4\u7EF4\u5EA6\uFF08\u5730\u533A\u3001\u6E20\u9053\u3001\u4EA7\u54C1\u7C7B\u522B\u7B49\uFF09
448
+ 4. **\u7B5B\u9009\u6761\u4EF6**\uFF1A\u65F6\u95F4\u8303\u56F4\u3001\u72B6\u6001\u3001\u7C7B\u522B\u7B49
449
+ 5. **\u6BD4\u8F83\u9700\u6C42**\uFF1A\u540C\u6BD4\u3001\u73AF\u6BD4\u3001\u76EE\u6807\u5BF9\u6BD4\u7B49
450
+
451
+ **\u8BF7\u6C42\u683C\u5F0F\u793A\u4F8B**\uFF1A
452
+ "\u6211\u9700\u8981\u6309\u5730\u533A\u6BD4\u8F83 2024 \u5E74\u7B2C\u4E09\u5B63\u5EA6\u4E0E 2023 \u5E74\u7B2C\u4E09\u5B63\u5EA6\u7684\u6536\u5165\u3002\u8BF7\u751F\u6210\u5E76\u6267\u884C SQL \u67E5\u8BE2\u3002"
453
+
454
+ "\u8BF7\u67E5\u8BE2\u8FC7\u53BB 6 \u4E2A\u6708\u6BCF\u4E2A\u6708\u7684\u8BA2\u5355\u91CF\u548C\u5E73\u5747\u8BA2\u5355\u91D1\u989D\uFF0C\u6309\u6E20\u9053\u5206\u7EC4\u3002"
455
+
456
+ ## \u63A5\u6536\u4E0E\u9A8C\u8BC1\u7ED3\u679C
457
+
458
+ sql-builder-agent \u4F1A\u8FD4\u56DE\uFF1A
459
+ - **SQL \u67E5\u8BE2**\uFF1A\u683C\u5F0F\u6E05\u6670\u7684\u5B8C\u6574\u67E5\u8BE2
460
+ - **\u67E5\u8BE2\u7ED3\u679C**\uFF1A\u8FD4\u56DE\u7684\u6570\u636E
461
+ - **\u6A21\u5F0F\u4FE1\u606F**\uFF1A\u4F7F\u7528\u7684\u8868\u7ED3\u6784\u4FE1\u606F
462
+
463
+ **\u9A8C\u8BC1\u8981\u70B9**\uFF1A
464
+ - \u67E5\u8BE2\u662F\u5426\u6B63\u786E\u56DE\u7B54\u4E86\u4E1A\u52A1\u95EE\u9898
465
+ - \u6570\u636E\u8D28\u91CF\uFF08NULL \u503C\u3001\u5F02\u5E38\u503C\uFF09
466
+ - \u7ED3\u679C\u5B8C\u6574\u6027\uFF08\u884C\u6570\u3001\u65F6\u95F4\u8303\u56F4\uFF09
467
+ - \u5217\u540D\u662F\u5426\u4E1A\u52A1\u53CB\u597D
468
+
469
+ ## \u9519\u8BEF\u5904\u7406
470
+
471
+ \u5982\u9047\u5230\u67E5\u8BE2\u9519\u8BEF\uFF1A
472
+ - \u5206\u6790\u9519\u8BEF\u4FE1\u606F
473
+ - \u68C0\u67E5\u8868\u540D\u3001\u5217\u540D\u662F\u5426\u6B63\u786E
474
+ - \u9A8C\u8BC1 JOIN \u6761\u4EF6\u548C\u6570\u636E\u7C7B\u578B
475
+ - \u8BF7\u6C42 sql-builder-agent \u4FEE\u6B63\u5E76\u91CD\u65B0\u6267\u884C
476
+
477
+ ## \u6587\u6863\u5316
478
+
479
+ \u5C06\u4F7F\u7528\u7684 SQL \u67E5\u8BE2\u548C\u7ED3\u679C\u4FDD\u5B58\u5230\u5206\u6790\u6587\u6863\u4E2D\uFF0C\u4FBF\u4E8E\u540E\u7EED\u53C2\u8003\u548C\u590D\u73B0\u3002
480
+ `
481
+ };
482
+
483
+ // src/agents/data_agent/skills/analysis-methodology.ts
484
+ var analysisMethodology = {
485
+ name: "analysis-methodology",
486
+ description: "\u5E94\u7528\u7ED3\u6784\u5316\u5206\u6790\u65B9\u6CD5\u8BBA\uFF085W2H\u3001SCQA\u3001MECE\u30015 Whys\u3001\u5E15\u7D2F\u6258\u539F\u5219\u7B49\uFF09\u6765\u7406\u89E3\u95EE\u9898\u3001\u62C6\u89E3\u4EFB\u52A1\u3001\u8BC6\u522B\u6839\u672C\u539F\u56E0\u548C\u4F18\u5148\u7EA7\u6392\u5E8F\u3002\u9002\u7528\u4E8E\u590D\u6742\u4E1A\u52A1\u95EE\u9898\u7684\u7ED3\u6784\u5316\u5206\u6790\u548C\u89C4\u5212\u3002",
487
+ prompt: `## \u7ED3\u6784\u5316\u5206\u6790\u65B9\u6CD5\u8BBA
488
+
489
+ ### \u95EE\u9898\u5B9A\u4E49\uFF085W2H + SCQA\uFF09
490
+
491
+ **5W2H \u6A21\u578B**\uFF1A\u5168\u9762\u68B3\u7406\u95EE\u9898\u8FB9\u754C
492
+ - What: \u95EE\u9898\u672C\u8D28
493
+ - Why: \u89E3\u51B3\u76EE\u6807\u548C\u52A8\u673A
494
+ - Who: \u53D7\u5F71\u54CD\u65B9\u548C\u51B3\u7B56\u8005
495
+ - When: \u53D1\u751F\u65F6\u95F4\u548C\u7D27\u6025\u7A0B\u5EA6
496
+ - Where: \u53D1\u751F\u73AF\u8282/\u5730\u533A/\u6A21\u5757
497
+ - How: \u5F53\u524D\u5904\u7406\u65B9\u5F0F
498
+ - How much: \u5F71\u54CD\u9762\u548C\u6210\u672C
499
+
500
+ **SCQA \u6A21\u578B**\uFF1A\u7406\u6E05\u95EE\u9898\u4E0A\u4E0B\u6587
501
+ - Situation: \u73B0\u72B6\u4E8B\u5B9E
502
+ - Complication: \u53D8\u5316/\u6311\u6218
503
+ - Question: \u5177\u4F53\u96BE\u9898
504
+ - Answer: \u89E3\u51B3\u65B9\u6848
505
+
506
+ ### \u95EE\u9898\u62C6\u89E3\uFF08MECE + \u8BAE\u9898\u6811\uFF09
507
+
508
+ **MECE \u539F\u5219**\uFF1A\u76F8\u4E92\u72EC\u7ACB\uFF0C\u5B8C\u5168\u7A77\u5C3D
509
+ - \u4E0D\u91CD\u53E0\u3001\u4E0D\u9057\u6F0F
510
+ - \u786E\u4FDD\u5206\u7C7B\u903B\u8F91\u6E05\u6670
511
+
512
+ **\u8BAE\u9898\u6811**\uFF1A\u6811\u72B6\u7ED3\u6784\u62C6\u89E3
513
+ - \u57FA\u4E8E\u5047\u8BBE\uFF1A\u63D0\u9AD8\u5229\u6DA6 \u2192 \u589E\u52A0\u6536\u5165 OR \u964D\u4F4E\u6210\u672C
514
+ - \u57FA\u4E8E\u6D41\u7A0B\uFF1A\u8F6C\u5316\u7387\u4F4E \u2192 \u6D41\u91CF\u83B7\u53D6 \u2192 \u6CE8\u518C\u6FC0\u6D3B \u2192 \u7559\u5B58 \u2192 \u4ED8\u8D39
515
+
516
+ ### \u6839\u672C\u539F\u56E0\u5206\u6790\uFF085 Whys + \u9C7C\u9AA8\u56FE\uFF09
517
+
518
+ **5 Whys**\uFF1A\u8FDE\u7EED\u8FFD\u95EE\u4E3A\u4EC0\u4E48\uFF0C\u76F4\u5230\u627E\u5230\u6839\u672C\u539F\u56E0
519
+ - \u907F\u514D\u8868\u9762\u75C7\u72B6\uFF0C\u627E\u5230\u6DF1\u5C42\u539F\u56E0
520
+
521
+ **\u9C7C\u9AA8\u56FE\uFF084M1E\uFF09**\uFF1A\u4ECE\u4E94\u4E2A\u7EF4\u5EA6\u5206\u6790
522
+ - \u4EBA\uFF08Man\uFF09\u3001\u673A\uFF08Machine\uFF09\u3001\u6599\uFF08Material\uFF09\u3001\u6CD5\uFF08Method\uFF09\u3001\u73AF\uFF08Environment\uFF09
523
+
524
+ ### \u4F18\u5148\u7EA7\u6392\u5E8F\uFF08\u5E15\u7D2F\u6258 + \u827E\u68EE\u8C6A\u5A01\u5C14\u77E9\u9635\uFF09
525
+
526
+ **80/20 \u6CD5\u5219**\uFF1A\u8BC6\u522B\u5173\u952E\u7684 20% \u539F\u56E0
527
+
528
+ **\u56DB\u8C61\u9650\u77E9\u9635**\uFF1A\u6309\u91CD\u8981\u6027\u548C\u7D27\u6025\u7A0B\u5EA6\u6392\u5E8F
529
+ - \u91CD\u8981\u4E14\u7D27\u6025\uFF1A\u4F18\u5148\u5904\u7406
530
+ - \u91CD\u8981\u4E0D\u7D27\u6025\uFF1A\u8BA1\u5212\u5904\u7406
531
+ - \u7D27\u6025\u4E0D\u91CD\u8981\uFF1A\u5FEB\u901F\u5904\u7406
532
+ - \u4E0D\u91CD\u8981\u4E0D\u7D27\u6025\uFF1A\u53EF\u5FFD\u7565
533
+
534
+ ### \u7EFC\u5408\u8868\u8FBE\uFF08\u91D1\u5B57\u5854\u539F\u7406\uFF09
535
+
536
+ - **\u7ED3\u8BBA\u5148\u884C**\uFF1A\u5148\u8BF4\u6700\u91CD\u8981\u7684\u7ED3\u679C
537
+ - **\u4EE5\u4E0A\u7EDF\u4E0B**\uFF1A\u4E0A\u5C42\u8BBA\u70B9\u603B\u7ED3\u4E0B\u5C42\u8BBA\u636E
538
+ - **\u5F52\u7C7B\u5206\u7EC4**\uFF1A\u903B\u8F91 MECE
539
+ - **\u903B\u8F91\u9012\u8FDB**\uFF1A\u6309\u65F6\u95F4/\u7A7A\u95F4/\u91CD\u8981\u6027\u6392\u5E8F
540
+
541
+ ## \u5E94\u7528\u6D41\u7A0B
542
+
543
+ 1. **\u95EE\u9898\u7406\u89E3**\uFF1A\u4F7F\u7528 5W2H \u548C SCQA \u660E\u786E\u95EE\u9898
544
+ 2. **\u4EFB\u52A1\u62C6\u89E3**\uFF1A\u4F7F\u7528 MECE \u548C\u8BAE\u9898\u6811\u62C6\u89E3\u4E3A\u5B50\u95EE\u9898
545
+ 3. **\u539F\u56E0\u5206\u6790**\uFF1A\u4F7F\u7528 5 Whys \u548C\u9C7C\u9AA8\u56FE\u627E\u5230\u6839\u672C\u539F\u56E0
546
+ 4. **\u4F18\u5148\u7EA7\u6392\u5E8F**\uFF1A\u4F7F\u7528 80/20 \u548C\u56DB\u8C61\u9650\u77E9\u9635\u6392\u5E8F\u4EFB\u52A1
547
+ 5. **\u7ED3\u679C\u8868\u8FBE**\uFF1A\u4F7F\u7528\u91D1\u5B57\u5854\u539F\u7406\u7EC4\u7EC7\u8F93\u51FA
548
+
549
+ ## \u5047\u8BBE\u9A71\u52A8\u65B9\u6CD5
550
+
551
+ - \u5148\u63D0\u51FA\u5047\u8BBE\uFF0C\u7528\u6570\u636E\u9A8C\u8BC1
552
+ - \u5047\u8BBE\u9519\u8BEF\u65F6\u5FEB\u901F\u8C03\u6574\u65B9\u5411
553
+ - \u907F\u514D\u5217\u51FA\u6240\u6709\u53EF\u80FD\u6027\uFF0C\u805A\u7126\u5173\u952E\u8DEF\u5F84
554
+ `
555
+ };
556
+
557
+ // src/agents/data_agent/skills/notebook-report.ts
558
+ var notebookReport = {
559
+ name: "notebook-report",
560
+ description: "\u751F\u6210\u7B14\u8BB0\u672C\u98CE\u683C\u7684\u6570\u636E\u5206\u6790\u62A5\u544A\uFF0C\u5305\u542B\u6267\u884C\u6458\u8981\u3001\u5206\u6790\u6B65\u9AA4\uFF08SQL\u3001\u53EF\u89C6\u5316\u3001\u6D1E\u5BDF\uFF09\u548C\u7ED3\u8BBA\u3002\u9002\u7528\u4E8E\u9700\u8981\u5C06\u591A\u6B65\u9AA4\u5206\u6790\u6574\u5408\u4E3A\u5B8C\u6574\u3001\u53EF\u590D\u73B0\u7684\u5206\u6790\u62A5\u544A\u7684\u573A\u666F\u3002",
561
+ prompt: `
562
+ \u5982\u4F55\u53EF\u89C6\u5316\u6570\u636E\uFF0C\u8BF7\u901A\u8FC7data-visualization\u6280\u80FD\u4E86\u89E3\u3002
563
+
564
+ ## \u62A5\u544A\u7ED3\u6784
565
+
566
+ ### \u62A5\u544A\u6807\u9898\u90E8\u5206
567
+
568
+ - **\u6807\u9898**\uFF1A\u6E05\u6670\u3001\u63CF\u8FF0\u6027\u7684\u5206\u6790\u6807\u9898
569
+ - **\u4E0A\u4E0B\u6587**\uFF1A\u7B80\u8981\u4ECB\u7ECD\u5206\u6790\u5185\u5BB9\u548C\u539F\u56E0
570
+ - **\u6570\u636E\u6E90**\uFF1A\u6570\u636E\u5E93\u4FE1\u606F\u548C\u65F6\u95F4\u5468\u671F
571
+ - **\u6267\u884C\u6458\u8981**\uFF1A\u6240\u6709\u5173\u952E\u53D1\u73B0\u7684\u9AD8\u7EA7\u6458\u8981\uFF082-3 \u6BB5\uFF09
572
+
573
+ ### \u5206\u6790\u6B65\u9AA4\uFF08\u7B14\u8BB0\u672C\u5355\u5143\u683C\uFF09
574
+
575
+ \u6BCF\u4E2A\u5206\u6790\u6B65\u9AA4\u662F\u4E00\u4E2A\u5B8C\u6574\u7684\u5355\u5143\u683C\uFF0C\u5305\u542B\uFF1A
576
+
577
+ \`\`\`markdown
578
+ ## \u6B65\u9AA4 [N]\uFF1A[\u6B65\u9AA4\u6807\u9898]
579
+
580
+ ### \u95EE\u9898 / \u76EE\u6807
581
+ [\u6B64\u6B65\u9AA4\u8981\u56DE\u7B54\u7684\u4E1A\u52A1\u95EE\u9898\uFF0C\u6765\u81EA topic_[sub_topic_name].md]
582
+
583
+ ### SQL \u67E5\u8BE2
584
+ \`\`\`sql
585
+ [\u5B8C\u6574 SQL \u67E5\u8BE2\uFF0C\u5E26\u6CE8\u91CA\u8BF4\u660E]
586
+ \`\`\`
587
+
588
+ ### \u6570\u636E\u53EF\u89C6\u5316
589
+ \`\`\`chart
590
+ {
591
+ "table": [...],
592
+ "echarts": {
593
+ "title": {"text": "[\u56FE\u8868\u6807\u9898]"},
594
+ "tooltip": {...},
595
+ "legend": {...},
596
+ "xAxis": {...},
597
+ "yAxis": {...},
598
+ "series": [...]
599
+ }
600
+ }
601
+ \`\`\`
602
+
603
+ ### \u5173\u952E\u53D1\u73B0
604
+ [\u6765\u81EA data-analysis-agent \u7684\u6838\u5FC3\u6D1E\u5BDF\uFF0C\u7528\u4E1A\u52A1\u8BED\u8A00\u8868\u8FBE]
605
+
606
+ ### \u4E1A\u52A1\u89E3\u91CA
607
+ [\u8FD9\u4E9B\u53D1\u73B0\u5BF9\u4E1A\u52A1\u7684\u610F\u4E49\u548C\u5F71\u54CD]
608
+
609
+ ### \u5EFA\u8BAE
610
+ [\u57FA\u4E8E\u6B64\u5206\u6790\u7684\u5177\u4F53\u3001\u53EF\u64CD\u4F5C\u5EFA\u8BAE]
611
+ \`\`\`
612
+
613
+ ### \u62A5\u544A\u7ED3\u8BBA
614
+
615
+ - **\u6240\u6709\u53D1\u73B0\u7684\u6458\u8981**\uFF1A\u7EFC\u5408\u6240\u6709\u6B65\u9AA4\u7684\u6D1E\u5BDF
616
+ - **\u603B\u4F53\u5EFA\u8BAE**\uFF1A\u6309\u4F18\u5148\u7EA7\u6392\u5E8F\u7684\u53EF\u64CD\u4F5C\u5EFA\u8BAE
617
+ - **\u540E\u7EED\u5206\u6790**\uFF1A\u5EFA\u8BAE\u7684\u4E0B\u4E00\u6B65\u5206\u6790\u65B9\u5411\uFF08\u5982\u9002\u7528\uFF09
618
+
619
+ ## \u62A5\u544A\u7F16\u5199\u539F\u5219
620
+
621
+ - **\u6545\u4E8B\u6027**\uFF1A\u5C06\u5206\u6790\u7EC4\u7EC7\u6210\u8FDE\u8D2F\u7684\u6545\u4E8B\uFF0C\u800C\u975E\u6280\u672F\u62A5\u544A
622
+ - **\u4E1A\u52A1\u805A\u7126**\uFF1A\u4F7F\u7528\u4E1A\u52A1\u672F\u8BED\uFF0C\u907F\u514D\u6280\u672F jargon
623
+ - **\u6570\u636E\u9A71\u52A8**\uFF1A\u5C06\u5177\u4F53\u6570\u503C\u81EA\u7136\u878D\u5165\u53D9\u8FF0
624
+ - **\u53EF\u64CD\u4F5C**\uFF1A\u6BCF\u4E2A\u53D1\u73B0\u90FD\u5E94\u5BFC\u5411\u53EF\u6267\u884C\u7684\u5EFA\u8BAE
625
+ - **\u903B\u8F91\u9012\u8FDB**\uFF1A\u6B65\u9AA4\u4E4B\u95F4\u8981\u6709\u6E05\u6670\u7684\u903B\u8F91\u8FDE\u63A5
626
+
627
+ ## \u6570\u636E\u6765\u6E90
628
+
629
+ \u62A5\u544A\u5E94\u57FA\u4E8E\uFF1A
630
+ - \`/question.md\`\uFF1A\u539F\u59CB\u4E1A\u52A1\u95EE\u9898
631
+ - \`/topic_*.md\`\uFF1A\u5404\u5B50\u4E3B\u9898\u7684\u5206\u6790\u7ED3\u679C
632
+ - \u6B65\u9AA4 3 \u7684\u7EFC\u5408\u6458\u8981
633
+
634
+ ## \u8F93\u51FA\u683C\u5F0F
635
+
636
+ \u751F\u6210\u5B8C\u6574\u7684 Markdown \u683C\u5F0F\u62A5\u544A\uFF0C\u5305\u542B\u6240\u6709\u5206\u6790\u6B65\u9AA4\u3001\u56FE\u8868\u914D\u7F6E\u548C\u6D1E\u5BDF\u3002
637
+ `
638
+ };
639
+
640
+ // src/agents/data_agent/skills/infographic-creator.ts
641
+ var infographicCreator = {
642
+ name: "infographic-creator",
643
+ description: "\u521B\u5EFA\u4FE1\u606F\u56FE\u8868\uFF0C\u5C06\u6570\u636E\u53EF\u89C6\u5316\u4E3A\u6613\u4E8E\u7406\u89E3\u7684\u56FE\u8868\u3002\u9002\u7528\u4E8E\u9700\u8981\u5C06\u6570\u636E\u53EF\u89C6\u5316\u4E3A\u6613\u4E8E\u7406\u89E3\u7684\u56FE\u8868\u7684\u573A\u666F\u3002",
644
+ prompt: `
645
+
646
+ \u4FE1\u606F\u56FE\uFF08Infographic\uFF09\u5C06\u6570\u636E\u3001\u4FE1\u606F\u4E0E\u77E5\u8BC6\u8F6C\u5316\u4E3A\u53EF\u611F\u77E5\u7684\u89C6\u89C9\u8BED\u8A00\u3002\u5B83\u7ED3\u5408\u89C6\u89C9\u8BBE\u8BA1\u4E0E\u6570\u636E\u53EF\u89C6\u5316\uFF0C\u7528\u76F4\u89C2\u7B26\u53F7\u538B\u7F29\u590D\u6742\u4FE1\u606F\uFF0C\u5E2E\u52A9\u53D7\u4F17\u5FEB\u901F\u7406\u89E3\u5E76\u8BB0\u4F4F\u8981\u70B9\u3002
647
+
648
+ Infographic = Information Structure + Visual Expression
649
+
650
+ \u672C\u4EFB\u52A1\u4F7F\u7528 AntV Infographic \u521B\u5EFA\u53EF\u89C6\u5316\u4FE1\u606F\u56FE\u3002
651
+
652
+ \u5728\u5F00\u59CB\u4EFB\u52A1\u524D\uFF0C\u9700\u8981\u7406\u89E3 AntV Infographic \u8BED\u6CD5\u89C4\u8303\uFF0C\u5305\u62EC\u6A21\u677F\u5217\u8868\u3001\u6570\u636E\u7ED3\u6784\u3001\u4E3B\u9898\u7B49\u3002
653
+
654
+ \u89C4\u8303
655
+ AntV Infographic \u8BED\u6CD5
656
+ AntV Infographic \u8BED\u6CD5\u662F\u4E00\u79CD\u81EA\u5B9A\u4E49\u7684 DSL\uFF0C\u7528\u4E8E\u63CF\u8FF0\u4FE1\u606F\u56FE\u6E32\u67D3\u914D\u7F6E\u3002\u5B83\u4F7F\u7528\u7F29\u8FDB\u63CF\u8FF0\u4FE1\u606F\uFF0C\u5177\u6709\u8F83\u5F3A\u9C81\u68D2\u6027\uFF0C\u4FBF\u4E8E AI \u6D41\u5F0F\u8F93\u51FA\u5E76\u6E32\u67D3\u4FE1\u606F\u56FE\u3002\u4E3B\u8981\u5305\u542B\u4EE5\u4E0B\u4FE1\u606F\uFF1A
657
+
658
+ template\uFF1A\u7528\u6A21\u677F\u8868\u8FBE\u6587\u5B57\u4FE1\u606F\u7ED3\u6784\u3002
659
+ data\uFF1A\u4FE1\u606F\u56FE\u6570\u636E\uFF0C\u5305\u542B title\u3001desc\u3001\u6570\u636E\u9879\u7B49\u3002\u6570\u636E\u9879\u901A\u5E38\u5305\u542B label\u3001desc\u3001icon \u7B49\u5B57\u6BB5\u3002
660
+ theme\uFF1A\u4E3B\u9898\u5305\u542B palette\u3001font \u7B49\u6837\u5F0F\u914D\u7F6E\u3002
661
+ \u4F8B\u5982\uFF1A
662
+
663
+ \`\`\`infographic
664
+ infographic list-row-horizontal-icon-arrow
665
+ data
666
+ title Title
667
+ desc Description
668
+ lists
669
+ - label Label
670
+ value 12.5
671
+ desc Explanation
672
+ icon document text
673
+ theme
674
+ palette #3b82f6 #8b5cf6 #f97316
675
+ \`\`\`
676
+ \u8BED\u6CD5\u89C4\u8303
677
+ \u7B2C\u4E00\u884C\u5FC5\u987B\u662F infographic <template-name>\uFF0C\u6A21\u677F\u4ECE\u4E0B\u65B9\u5217\u8868\u4E2D\u9009\u62E9\uFF08\u89C1\u201C\u53EF\u7528\u6A21\u677F\u201D\u90E8\u5206\uFF09\u3002
678
+
679
+ \u4F7F\u7528 data / theme \u5757\uFF0C\u5757\u5185\u7528\u4E24\u4E2A\u7A7A\u683C\u7F29\u8FDB\u3002
680
+
681
+ \u952E\u503C\u5BF9\u4F7F\u7528\u300C\u952E \u7A7A\u683C \u503C\u300D\uFF1B\u6570\u7EC4\u4F7F\u7528 - \u4F5C\u4E3A\u6761\u76EE\u524D\u7F00\u3002
682
+
683
+ icon \u4F7F\u7528\u56FE\u6807\u5173\u952E\u8BCD\uFF08\u5982 star fill\uFF09\u3002
684
+
685
+ data \u5E94\u5305\u542B title/desc + \u6A21\u677F\u5BF9\u5E94\u7684\u4E3B\u6570\u636E\u5B57\u6BB5\uFF08\u4E0D\u4E00\u5B9A\u662F items\uFF09\u3002
686
+
687
+ \u4E3B\u6570\u636E\u5B57\u6BB5\u9009\u62E9\uFF08\u53EA\u7528\u4E00\u4E2A\uFF0C\u907F\u514D\u6DF7\u7528\uFF09\uFF1A
688
+
689
+ list-* \u2192 lists
690
+ sequence-* \u2192 sequences\uFF08\u53EF\u9009 order asc|desc\uFF09
691
+ compare-* \u2192 compares\uFF08\u652F\u6301 children \u5206\u7EC4\u5BF9\u6BD4\uFF09\uFF0C\u53EF\u5305\u542B\u591A\u4E2A\u5BF9\u6BD4\u9879
692
+ hierarchy-structure \u2192 items\uFF08\u6BCF\u4E00\u9879\u5BF9\u5E94\u4E00\u4E2A\u72EC\u7ACB\u5C42\u7EA7\uFF0C\u6BCF\u4E00\u5C42\u7EA7\u53EF\u4EE5\u5305\u542B\u5B50\u9879\uFF0C\u6700\u591A\u53EF\u5D4C\u5957 3 \u5C42\uFF09
693
+ hierarchy-* \u2192 \u5355\u4E00 root\uFF08\u6811\u7ED3\u6784\uFF0C\u901A\u8FC7 children \u5D4C\u5957\uFF09\uFF1B
694
+ relation-* \u2192 nodes + relations\uFF1B\u7B80\u5355\u5173\u7CFB\u56FE\u53EF\u7701\u7565 nodes\uFF0C\u5728 relations \u4E2D\u7528\u7BAD\u5934\u8BED\u6CD5
695
+ chart-* \u2192 values\uFF08\u6570\u503C\u7EDF\u8BA1\uFF0C\u53EF\u9009 category\uFF09
696
+ \u4E0D\u786E\u5B9A\u65F6\u518D\u7528 items \u515C\u5E95
697
+ compare-binary-* / compare-hierarchy-left-right-* \u4E8C\u5143\u6A21\u677F\uFF1A\u5FC5\u987B\u4E24\u4E2A\u6839\u8282\u70B9\uFF0C\u6240\u6709\u5BF9\u6BD4\u9879\u6302\u5728\u8FD9\u4E24\u4E2A\u6839\u8282\u70B9\u7684 children
698
+
699
+ hierarchy-*\uFF1A\u4F7F\u7528\u5355\u4E00 root\uFF0C\u901A\u8FC7 children \u5D4C\u5957\uFF08\u4E0D\u8981\u91CD\u590D root\uFF09
700
+
701
+ theme \u7528\u4E8E\u81EA\u5B9A\u4E49\u4E3B\u9898\uFF08palette\u3001font \u7B49\uFF09 \u4F8B\u5982\uFF1A\u6697\u8272\u4E3B\u9898 + \u81EA\u5B9A\u4E49\u914D\u8272
702
+
703
+ \`\`\`infographic
704
+ infographic list-row-simple-horizontal-arrow
705
+ theme dark
706
+ palette
707
+ - #61DDAA
708
+ - #F6BD16
709
+ - #F08BB4
710
+ \`\`\`
711
+ \u4F7F\u7528 theme.base.text.font-family \u6307\u5B9A\u5B57\u4F53\uFF0C\u5982\u624B\u5199\u98CE\u683C 851tegakizatsu
712
+
713
+ \u4F7F\u7528 theme.stylize \u9009\u62E9\u5185\u7F6E\u98CE\u683C\u5E76\u4F20\u53C2 \u5E38\u89C1\u98CE\u683C\uFF1A
714
+
715
+ rough\uFF1A\u624B\u7ED8\u6548\u679C
716
+ pattern\uFF1A\u56FE\u6848\u586B\u5145
717
+ linear-gradient / radial-gradient\uFF1A\u7EBF\u6027/\u5F84\u5411\u6E10\u53D8
718
+ \u4F8B\u5982\uFF1A\u624B\u7ED8\u98CE\u683C\uFF08rough\uFF09
719
+
720
+ \`\`\`infographic
721
+ infographic list-row-simple-horizontal-arrow
722
+ theme
723
+ stylize rough
724
+ base
725
+ text
726
+ font-family 851tegakizatsu
727
+ \`\`\`
728
+ \u8F93\u51FA\u683C\u5F0F\u8981\u6C42\uFF1A
729
+ \u5FC5\u987B\u4F7F\u7528 Markdown \u4EE3\u7801\u5757\u683C\u5F0F\u8F93\u51FA\uFF0C\u8BED\u8A00\u6807\u8BC6\u4E3A infographic\u3002\u683C\u5F0F\u5982\u4E0B\uFF1A
730
+
731
+ \`\`\`infographic
732
+ infographic <template-name>
733
+ data
734
+ ...
735
+ theme
736
+ ...
737
+ \`\`\`
738
+
739
+ \u7981\u6B62\u8F93\u51FA\u7EAF\u6587\u672C\u3001JSON\u3001HTML\u3001JS \u4EE3\u7801\u6216\u5176\u4ED6\u683C\u5F0F\u3002\u53EA\u80FD\u8F93\u51FA\u4E0A\u8FF0\u683C\u5F0F\u7684 Markdown \u4EE3\u7801\u5757\u3002
740
+
741
+ \u6570\u636E\u8BED\u6CD5\u793A\u4F8B
742
+ \u6309\u6A21\u677F\u7C7B\u522B\u7684\u6570\u636E\u8BED\u6CD5\u793A\u4F8B\uFF08\u4F7F\u7528\u5BF9\u5E94\u5B57\u6BB5\uFF0C\u907F\u514D\u540C\u65F6\u6DFB\u52A0 items\uFF09\uFF1A
743
+
744
+ list-* \u6A21\u7248
745
+ \`\`\`infographic
746
+ infographic list-grid-badge-card
747
+ data
748
+ title Feature List
749
+ lists
750
+ - label Fast
751
+ icon flash fast
752
+ - label Secure
753
+ icon secure shield check
754
+ \`\`\`
755
+ sequence-* \u6A21\u7248
756
+ \`\`\`infographic
757
+ infographic sequence-steps-simple
758
+ data
759
+ sequences
760
+ - label Step 1
761
+ - label Step 2
762
+ - label Step 3
763
+ order asc
764
+ \`\`\`
765
+ hierarchy-* \u6A21\u7248
766
+ \`\`\`infographic
767
+ infographic hierarchy-structure
768
+ data
769
+ root
770
+ label Company
771
+ children
772
+ - label Dept A
773
+ - label Dept B
774
+ \`\`\`
775
+ compare-* \u6A21\u7248
776
+ \`\`\`infographic
777
+ infographic compare-swot
778
+ data
779
+ compares
780
+ - label Strengths
781
+ children
782
+ - label Strong brand
783
+ - label Loyal users
784
+ - label Weaknesses
785
+ children
786
+ - label High cost
787
+ - label Slow release
788
+ \`\`\`
789
+ \u56DB\u8C61\u9650\u56FE
790
+
791
+ \`\`\`infographic
792
+ infographic compare-quadrant-quarter-simple-card
793
+ data
794
+ compares
795
+ - label High Impact & Low Effort
796
+ - label High Impact & High Effort
797
+ - label Low Impact & Low Effort
798
+ - label Low Impact & High Effort
799
+ \`\`\`
800
+ chart-* \u6A21\u7248
801
+ \`\`\`infographic
802
+ infographic chart-column-simple
803
+ data
804
+ values
805
+ - label Visits
806
+ value 1280
807
+ - label Conversion
808
+ value 12.4
809
+ \`\`\`
810
+ relation-* \u6A21\u7248
811
+ \u8FB9\u6807\u7B7E\u5199\u6CD5\uFF1AA -label-> B \u6216 A -->|label| B
812
+
813
+ \`\`\`infographic
814
+ infographic relation-dagre-flow-tb-simple-circle-node
815
+ data
816
+ nodes
817
+ - id A
818
+ label Node A
819
+ - id B
820
+ label Node B
821
+ relations
822
+ A - approves -> B
823
+ A -->|blocks| B
824
+ \`\`\`
825
+ \u515C\u5E95 items \u793A\u4F8B
826
+ \`\`\`infographic
827
+ infographic list-row-horizontal-icon-arrow
828
+ data
829
+ items
830
+ - label Item A
831
+ desc Description
832
+ icon sun
833
+ - label Item B
834
+ desc Description
835
+ icon moon
836
+ \`\`\`
837
+ \u53EF\u7528\u6A21\u677F
838
+ chart-bar-plain-text
839
+ chart-column-simple
840
+ chart-line-plain-text
841
+ chart-pie-compact-card
842
+ chart-pie-donut-pill-badge
843
+ chart-pie-donut-plain-text
844
+ chart-pie-plain-text
845
+ chart-wordcloud
846
+ compare-binary-horizontal-badge-card-arrow
847
+ compare-binary-horizontal-simple-fold
848
+ compare-binary-horizontal-underline-text-vs
849
+ compare-hierarchy-left-right-circle-node-pill-badge
850
+ compare-quadrant-quarter-circular
851
+ compare-quadrant-quarter-simple-card
852
+ compare-swot
853
+ hierarchy-mindmap-branch-gradient-capsule-item
854
+ hierarchy-mindmap-level-gradient-compact-card
855
+ hierarchy-structure
856
+ hierarchy-tree-curved-line-rounded-rect-node
857
+ hierarchy-tree-tech-style-badge-card
858
+ hierarchy-tree-tech-style-capsule-item
859
+ list-column-done-list
860
+ list-column-simple-vertical-arrow
861
+ list-column-vertical-icon-arrow
862
+ list-grid-badge-card
863
+ list-grid-candy-card-lite
864
+ list-grid-ribbon-card
865
+ list-row-horizontal-icon-arrow
866
+ list-sector-plain-text
867
+ list-zigzag-down-compact-card
868
+ list-zigzag-down-simple
869
+ list-zigzag-up-compact-card
870
+ list-zigzag-up-simple
871
+ relation-dagre-flow-tb-animated-badge-card
872
+ relation-dagre-flow-tb-animated-simple-circle-node
873
+ relation-dagre-flow-tb-badge-card
874
+ relation-dagre-flow-tb-simple-circle-node
875
+ sequence-ascending-stairs-3d-underline-text
876
+ sequence-ascending-steps
877
+ sequence-circular-simple
878
+ sequence-color-snake-steps-horizontal-icon-line
879
+ sequence-cylinders-3d-simple
880
+ sequence-filter-mesh-simple
881
+ sequence-funnel-simple
882
+ sequence-horizontal-zigzag-underline-text
883
+ sequence-mountain-underline-text
884
+ sequence-pyramid-simple
885
+ sequence-roadmap-vertical-plain-text
886
+ sequence-roadmap-vertical-simple
887
+ sequence-snake-steps-compact-card
888
+ sequence-snake-steps-simple
889
+ sequence-snake-steps-underline-text
890
+ sequence-stairs-front-compact-card
891
+ sequence-stairs-front-pill-badge
892
+ sequence-timeline-rounded-rect-node
893
+ sequence-timeline-simple
894
+ sequence-zigzag-pucks-3d-simple
895
+ sequence-zigzag-steps-underline-text
896
+ \u6A21\u677F\u9009\u62E9\u5EFA\u8BAE\uFF1A
897
+
898
+ \u4E25\u683C\u987A\u5E8F\uFF08\u6D41\u7A0B/\u6B65\u9AA4/\u53D1\u5C55\u8D8B\u52BF\uFF09\u2192 sequence-*
899
+ \u65F6\u95F4\u7EBF \u2192 sequence-timeline-*
900
+ \u9636\u68AF\u56FE \u2192 sequence-stairs-*
901
+ \u8DEF\u7EBF\u56FE \u2192 sequence-roadmap-vertical-*
902
+ \u6298\u7EBF\u8DEF\u5F84 \u2192 sequence-zigzag-*
903
+ \u73AF\u5F62\u8FDB\u5EA6 \u2192 sequence-circular-simple
904
+ \u5F69\u8272\u86C7\u5F62\u6B65\u9AA4 \u2192 sequence-color-snake-steps-*
905
+ \u91D1\u5B57\u5854 \u2192 sequence-pyramid-simple
906
+ \u89C2\u70B9\u5217\u4E3E \u2192 list-row-* \u6216 list-column-*
907
+ \u4E8C\u5143\u5BF9\u6BD4\uFF08\u5229\u5F0A\uFF09\u2192 compare-binary-*
908
+ SWOT \u2192 compare-swot
909
+ \u5C42\u7EA7\u7ED3\u6784\uFF08\u6811\u56FE\uFF09\u2192 hierarchy-tree-*
910
+ \u6570\u636E\u56FE\u8868 \u2192 chart-*
911
+ \u8C61\u9650\u5206\u6790 \u2192 quadrant-*
912
+ \u7F51\u683C\u5217\u8868\uFF08\u8981\u70B9\uFF09\u2192 list-grid-*
913
+ \u5173\u7CFB\u5C55\u793A \u2192 relation-*
914
+ \u8BCD\u4E91 \u2192 chart-wordcloud
915
+ \u601D\u7EF4\u5BFC\u56FE \u2192 hierarchy-mindmap-*
916
+ \u793A\u4F8B
917
+ \u7ED8\u5236\u4E92\u8054\u7F51\u6280\u672F\u6F14\u8FDB\u4FE1\u606F\u56FE
918
+
919
+ \`\`\`infographic
920
+ infographic list-row-horizontal-icon-arrow
921
+ data
922
+ title Internet Technology Evolution
923
+ desc From Web 1.0 to AI era, key milestones
924
+ lists
925
+ - time 1991
926
+ label Web 1.0
927
+ desc Tim Berners-Lee published the first website, opening the Internet era
928
+ icon web
929
+ - time 2004
930
+ label Web 2.0
931
+ desc Social media and user-generated content become mainstream
932
+ icon account multiple
933
+ - time 2007
934
+ label Mobile
935
+ desc iPhone released, smartphone changes the world
936
+ icon cellphone
937
+ - time 2015
938
+ label Cloud Native
939
+ desc Containerization and microservices architecture are widely used
940
+ icon cloud
941
+ - time 2020
942
+ label Low Code
943
+ desc Visual development lowers the technology threshold
944
+ icon application brackets
945
+ - time 2023
946
+ label AI Large Model
947
+ desc ChatGPT ignites the generative AI revolution
948
+ icon brain
949
+ \`\`\`
950
+ \u751F\u6210\u6D41\u7A0B
951
+ \u7B2C\u4E00\u6B65\uFF1A\u7406\u89E3\u7528\u6237\u9700\u6C42
952
+ \u5728\u521B\u5EFA\u4FE1\u606F\u56FE\u4E4B\u524D\uFF0C\u5148\u7406\u89E3\u7528\u6237\u9700\u6C42\u4E0E\u60F3\u8868\u8FBE\u7684\u4FE1\u606F\uFF0C\u4EE5\u4FBF\u786E\u5B9A\u6A21\u677F\u548C\u6570\u636E\u7ED3\u6784\u3002
953
+
954
+ \u82E5\u7528\u6237\u63D0\u4F9B\u6E05\u6670\u7684\u5185\u5BB9\u63CF\u8FF0\uFF0C\u5E94\u5C06\u5176\u62C6\u89E3\u4E3A\u6E05\u6670\u3001\u7B80\u6D01\u7684\u7ED3\u6784\u3002
955
+
956
+ \u5426\u5219\u9700\u8981\u5411\u7528\u6237\u6F84\u6E05\uFF08\u5982\uFF1A\u201C\u8BF7\u63D0\u4F9B\u6E05\u6670\u7B80\u6D01\u7684\u5185\u5BB9\u63CF\u8FF0\u3002\u201D\u3001\u201C\u4F60\u5E0C\u671B\u4F7F\u7528\u54EA\u4E2A\u6A21\u677F\uFF1F\u201D\uFF09
957
+
958
+ \u63D0\u53D6\u5173\u952E\u4FE1\u606F\u7ED3\u6784\uFF08title\u3001desc\u3001items \u7B49\uFF09\u3002
959
+ \u660E\u786E\u6240\u9700\u6570\u636E\u5B57\u6BB5\uFF08title\u3001desc\u3001items\u3001label\u3001value\u3001icon \u7B49\uFF09\u3002
960
+ \u9009\u62E9\u5408\u9002\u6A21\u677F\u3002
961
+ \u4F7F\u7528 AntV Infographic \u8BED\u6CD5\u63CF\u8FF0\u4FE1\u606F\u56FE\u5185\u5BB9\uFF0C\u5E76\u4EE5 Markdown \u4EE3\u7801\u5757\u683C\u5F0F\u8F93\u51FA\uFF0C\u8BED\u8A00\u6807\u8BC6\u4E3A infographic\u3002
962
+
963
+ \u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A
964
+ \`\`\`infographic
965
+ infographic <template-name>
966
+ data
967
+ title ...
968
+ desc ...
969
+ ...
970
+ theme
971
+ ...
972
+ \`\`\`
973
+
974
+ \u5173\u952E\u6CE8\u610F\uFF1A
975
+ 1. \u5FC5\u987B\u5C0A\u91CD\u7528\u6237\u8F93\u5165\u7684\u8BED\u8A00\u3002\u4F8B\u5982\u7528\u6237\u8F93\u5165\u4E2D\u6587\uFF0C\u5219\u8BED\u6CD5\u4E2D\u7684\u6587\u672C\u4E5F\u5FC5\u987B\u662F\u4E2D\u6587\u3002
976
+ 2. \u5FC5\u987B\u4F7F\u7528 Markdown \u4EE3\u7801\u5757\u683C\u5F0F\uFF0C\u8BED\u8A00\u6807\u8BC6\u4E3A infographic\uFF0C\u800C\u4E0D\u662F HTML\u3001JS \u6216\u5176\u4ED6\u4EE3\u7801\u683C\u5F0F\u3002
977
+ 3. \u4EE3\u7801\u5757\u5185\u53EA\u5305\u542B AntV Infographic DSL \u8BED\u6CD5\uFF0C\u4E0D\u8981\u5305\u542B\u4EFB\u4F55\u89E3\u91CA\u6027\u6587\u5B57\u3002
978
+
979
+
980
+
981
+
982
+ `
983
+ };
984
+
985
+ // src/agents/data_agent/tools/load_skills.ts
986
+ var skillsRegistry = {
987
+ analyst,
988
+ "data-visualization": dataVisualization,
989
+ "sql-query": sqlQuery,
990
+ "analysis-methodology": analysisMethodology,
991
+ "notebook-report": notebookReport,
992
+ "infographic-creator": infographicCreator
993
+ };
994
+ (0, import_core2.registerToolLattice)(
995
+ "load_skills",
996
+ {
997
+ name: "load_skills",
998
+ description: "Load all available skills and return their metadata (name and description). This tool returns skill information without the prompt content. Use this to discover what skills are available.",
999
+ needUserApprove: false,
1000
+ schema: import_zod2.default.object({})
1001
+ },
1002
+ async (_input, _config) => {
1003
+ try {
1004
+ const skillsMeta = Object.values(skillsRegistry).map((skill) => ({
1005
+ name: skill.name,
1006
+ description: skill.description
1007
+ }));
1008
+ return JSON.stringify(skillsMeta, null, 2);
1009
+ } catch (error) {
1010
+ return `Error loading skills: ${error instanceof Error ? error.message : String(error)}`;
1011
+ }
1012
+ }
1013
+ );
1014
+ (0, import_core2.registerToolLattice)(
1015
+ "load_skill_content",
1016
+ {
1017
+ name: "load_skill_content",
1018
+ description: "Load a specific skill's content by name and return its prompt. Use this tool to get the full prompt content for a skill that you want to use.",
1019
+ needUserApprove: false,
1020
+ schema: import_zod2.default.object({
1021
+ skill_name: import_zod2.default.string().describe("The name of the skill to load")
1022
+ })
1023
+ },
1024
+ async (input, _config) => {
1025
+ try {
1026
+ const skill = skillsRegistry[input.skill_name];
1027
+ if (!skill) {
1028
+ const availableSkills = Object.keys(skillsRegistry).join(", ");
1029
+ return `Skill "${input.skill_name}" not found. Available skills: ${availableSkills}`;
1030
+ }
1031
+ return skill.prompt;
1032
+ } catch (error) {
1033
+ return `Error loading skill content: ${error instanceof Error ? error.message : String(error)}`;
1034
+ }
1035
+ }
1036
+ );
1037
+
1038
+ // src/agents/data_agent/index.ts
1039
+ var dataAgentPrompt = `\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u4E1A\u52A1\u6570\u636E\u5206\u6790AI\u52A9\u624B\uFF0C\u64C5\u957F\u89C4\u5212\u4E1A\u52A1\u5206\u6790\u4EFB\u52A1\u3001\u534F\u8C03\u6570\u636E\u68C0\u7D22\uFF0C\u5E76\u751F\u6210\u5168\u9762\u7684\u4E1A\u52A1\u5206\u6790\u62A5\u544A\u3002
1040
+
1041
+ **\u5173\u952E\uFF1A\u4F60\u7684\u7B2C\u4E00\u9879\u4E5F\u662F\u6700\u91CD\u8981\u7684\u4EFB\u52A1\u662F\u4F7F\u7528 \`write_todos\` \u5DE5\u5177\u521B\u5EFA\u5F85\u529E\u5217\u8868\u3002** \u5728\u5F00\u59CB\u4EFB\u4F55\u5DE5\u4F5C\u4E4B\u524D\uFF0C\u4F60\u5FC5\u987B\uFF1A
1042
+ 1. \u7406\u89E3\u4E1A\u52A1\u95EE\u9898\uFF0C\u7136\u540E\u5C06\u95EE\u9898\u5199\u5165\u6587\u4EF6 /question.md
1043
+ 2. \u4F7F\u7528 \`load_skills\` \u5DE5\u5177\u52A0\u8F7D\u6240\u6709\u53EF\u7528\u6280\u80FD\uFF0C\u627E\u5230\u6700\u9002\u5408\u89E3\u51B3\u8BE5\u95EE\u9898\u7684\u6280\u80FD
1044
+ 3. \u4F7F\u7528 \`load_skill_content\` \u5DE5\u5177\u52A0\u8F7D\u9009\u5B9A\u6280\u80FD\u7684\u8BE6\u7EC6\u5185\u5BB9\uFF0C\u83B7\u53D6\u5177\u4F53\u7684\u64CD\u4F5C\u6307\u5357/SOP
1045
+ 4. \u6839\u636E\u6280\u80FD\u7684 How-to/SOP \u5C06\u4EFB\u52A1\u62C6\u89E3\u4E3A\u53EF\u6267\u884C\u7684\u5B50\u4EFB\u52A1\uFF0C\u521B\u5EFA\u5F85\u529E\u5217\u8868
1046
+ 5. \u6309\u7167\u8BA1\u5212\u6267\u884C\u4EFB\u52A1
1047
+
1048
+ \u6C38\u8FDC\u4E0D\u8981\u8DF3\u8FC7\u4EFB\u52A1\u89C4\u5212\u3002\u4E1A\u52A1\u5206\u6790\u603B\u662F\u590D\u6742\u4E14\u591A\u6B65\u9AA4\u7684\uFF0C\u9700\u8981\u4ED4\u7EC6\u89C4\u5212\u548C\u8DDF\u8E2A\u3002
1049
+
1050
+ ## \u6838\u5FC3\u5DE5\u4F5C\u6D41\u7A0B
1051
+
1052
+ \u4F60\u7684\u4E3B\u8981\u804C\u8D23\u662F\u901A\u8FC7\u6280\u80FD\u9A71\u52A8\u7684\u65B9\u5F0F\u5B8C\u6210\u5206\u6790\u4EFB\u52A1\uFF1A
1053
+
1054
+ 1. **\u4EFB\u52A1\u89C4\u5212\u4E0E\u62C6\u89E3\uFF08\u4F18\u5148\u7EA7\u6700\u9AD8\uFF09**\uFF1A\u7406\u89E3\u4E1A\u52A1\u95EE\u9898\uFF0C\u901A\u8FC7\u52A0\u8F7D\u76F8\u5173\u6280\u80FD\uFF08\u5982 \`analysis-methodology\`\uFF09\u6765\u5B66\u4E60\u5982\u4F55\u62C6\u89E3\u4EFB\u52A1\uFF0C\u7136\u540E\u4F7F\u7528 \`write_todos\` \u5DE5\u5177\u521B\u5EFA\u548C\u7BA1\u7406\u4EFB\u52A1\u5217\u8868
1055
+ 2. **\u4E1A\u52A1\u5206\u6790\u6267\u884C**\uFF1A\u6839\u636E\u52A0\u8F7D\u7684\u6280\u80FD\u5185\u5BB9\uFF08\u5982 \`analyst\`\u3001\`sql-query\` \u7B49\uFF09\u6267\u884C\u5177\u4F53\u7684\u5206\u6790\u6B65\u9AA4
1056
+ 3. **\u4EFB\u52A1\u534F\u8C03**\uFF1A\u5C06 SQL \u67E5\u8BE2\u751F\u6210\u548C\u6267\u884C\u59D4\u6258\u7ED9 sql-builder-agent \u5B50\u4EE3\u7406
1057
+ 4. **\u6570\u636E\u89E3\u8BFB**\uFF1A\u5206\u6790 sql-builder-agent \u8FD4\u56DE\u7684\u67E5\u8BE2\u7ED3\u679C\uFF0C\u63D0\u53D6\u4E1A\u52A1\u6D1E\u5BDF
1058
+ 5. **\u62A5\u544A\u751F\u6210**\uFF1A\u4F7F\u7528\u76F8\u5173\u6280\u80FD\uFF08\u5982 \`notebook-report\`\uFF09\u751F\u6210\u5305\u542B\u6D1E\u5BDF\u3001\u53EF\u89C6\u5316\u548C\u53EF\u6267\u884C\u5EFA\u8BAE\u7684\u4E1A\u52A1\u5206\u6790\u62A5\u544A
1059
+
1060
+ ## \u6280\u80FD\u9A71\u52A8\u7684\u5DE5\u4F5C\u65B9\u5F0F
1061
+
1062
+ **\u91CD\u8981\u539F\u5219**\uFF1A\u4E0D\u8981\u4F9D\u8D56\u786C\u7F16\u7801\u7684\u6D41\u7A0B\uFF0C\u800C\u662F\u901A\u8FC7\u6280\u80FD\u6765\u5B66\u4E60\u5982\u4F55\u5DE5\u4F5C\u3002
1063
+
1064
+ - **\u5982\u4F55\u89C4\u5212\u4EFB\u52A1**\uFF1A\u52A0\u8F7D \`analysis-methodology\` \u6280\u80FD\uFF0C\u5B66\u4E60\u7ED3\u6784\u5316\u5206\u6790\u65B9\u6CD5\u8BBA\uFF085W2H\u3001MECE\u3001\u8BAE\u9898\u6811\u7B49\uFF09
1065
+ - **\u5982\u4F55\u6267\u884C\u5206\u6790**\uFF1A\u52A0\u8F7D \`analyst\` \u6280\u80FD\uFF0C\u5B66\u4E60\u5B8C\u6574\u7684\u5206\u6790\u5DE5\u4F5C\u6D41\u7A0B
1066
+ - **\u5982\u4F55\u67E5\u8BE2\u6570\u636E**\uFF1A\u52A0\u8F7D \`sql-query\` \u6280\u80FD\uFF0C\u5B66\u4E60\u6570\u636E\u5E93\u63A2\u7D22\u548C\u67E5\u8BE2\u6267\u884C\u7684\u6700\u4F73\u5B9E\u8DF5
1067
+ - **\u5982\u4F55\u53EF\u89C6\u5316**\uFF1A\u52A0\u8F7D \`data-visualization\` \u6280\u80FD\uFF0C\u5B66\u4E60\u56FE\u8868\u8BBE\u8BA1\u548C ECharts \u914D\u7F6E
1068
+ - **\u5982\u4F55\u751F\u6210\u62A5\u544A**\uFF1A\u52A0\u8F7D \`notebook-report\` \u6280\u80FD\uFF0C\u5B66\u4E60\u62A5\u544A\u7ED3\u6784\u548C\u751F\u6210\u65B9\u6CD5
1069
+
1070
+ \u6BCF\u4E2A\u6280\u80FD\u90FD\u5305\u542B\u8BE6\u7EC6\u7684\u64CD\u4F5C\u6307\u5357\u3001\u5DE5\u4F5C\u6D41\u7A0B\u548C\u6700\u4F73\u5B9E\u8DF5\u3002\u4F60\u5E94\u8BE5\uFF1A
1071
+ 1. \u9996\u5148\u4F7F\u7528 \`load_skills\` \u4E86\u89E3\u6709\u54EA\u4E9B\u6280\u80FD\u53EF\u7528
1072
+ 2. \u6839\u636E\u4E1A\u52A1\u95EE\u9898\u9009\u62E9\u5408\u9002\u7684\u6280\u80FD
1073
+ 3. \u4F7F\u7528 \`load_skill_content\` \u83B7\u53D6\u6280\u80FD\u7684\u5B8C\u6574\u5185\u5BB9
1074
+ 4. \u4E25\u683C\u6309\u7167\u6280\u80FD\u4E2D\u7684\u6307\u5BFC\u6267\u884C\u5DE5\u4F5C
1075
+
1076
+ ## \u5B50\u4EE3\u7406\u4F7F\u7528
1077
+
1078
+ - **sql-builder-agent**\uFF1A\u8D1F\u8D23\u6240\u6709 SQL \u76F8\u5173\u64CD\u4F5C\uFF08\u6570\u636E\u5E93\u63A2\u7D22\u3001\u67E5\u8BE2\u751F\u6210\u3001\u9A8C\u8BC1\u548C\u6267\u884C\uFF09
1079
+ - **data-analysis-agent**\uFF1A\u8D1F\u8D23\u5206\u6790\u67E5\u8BE2\u7ED3\u679C\uFF0C\u63D0\u53D6\u4E1A\u52A1\u6D1E\u5BDF\uFF0C\u63D0\u4F9B\u53EF\u89C6\u5316\u5EFA\u8BAE
1080
+
1081
+ \u5C06\u6280\u672F\u4EFB\u52A1\u59D4\u6258\u7ED9\u76F8\u5E94\u7684\u5B50\u4EE3\u7406\uFF0C\u4E13\u6CE8\u4E8E\u4E1A\u52A1\u5206\u6790\u548C\u4EFB\u52A1\u534F\u8C03\u3002
1082
+
1083
+ `;
1084
+ var sqlBuilderPrompt = `You are a SQL Expert sub-agent specialized in database exploration, SQL query generation, validation, and execution. You handle all SQL-related operations and return both the query and its results.
1085
+
1086
+ When given a task from the data_agent:
1087
+ 1. **Understand the Business Intent**: Analyze what business question the query needs to answer
1088
+ 2. **Check Schema Documentation First**:
1089
+ - Before exploring the database, read file \`/db_schema.md\`
1090
+ - If the schema file exists, read it to understand the database structure
1091
+ - This will save time and avoid redundant schema exploration
1092
+ - If the file doesn't exist or you need more specific information, then:
1093
+ - Use \`list_tables_sql\` to see all available tables
1094
+ - Use \`info_sql\` to get detailed schema information for relevant tables
1095
+ - Understand column names, data types, relationships, and sample data
1096
+ 3. **Design Query**: Write the most appropriate SQL query that:
1097
+ - Answers the business question accurately
1098
+ - Uses efficient joins and aggregations
1099
+ - Includes business-friendly column aliases
1100
+ - Handles edge cases (NULLs, duplicates, etc.)
1101
+ 4. **Validate**: Use \`query_checker_sql\` to validate the query before execution
1102
+ 5. **Execute**: Use \`query_sql\` to execute the validated query
1103
+ 6. **Return Results**: Provide both:
1104
+ - The SQL query that was executed (formatted clearly)
1105
+ - The query results (data returned from the database)
1106
+ - Any relevant schema information that was used
1107
+
1108
+ ## Focus Areas
1109
+
1110
+ - **Query Correctness**: Ensure the query accurately answers the business question
1111
+ - **Query Efficiency**: Optimize for performance (use indexes, efficient JOINs)
1112
+ - **Business Clarity**: Use meaningful column aliases that business users can understand
1113
+ - Example: Use "revenue_usd" instead of "amt", "order_count" instead of "cnt"
1114
+ - **Proper JOINs**: Use appropriate JOIN types (INNER, LEFT, RIGHT, FULL) based on business logic
1115
+ - **Aggregations**: Use appropriate aggregate functions (COUNT, SUM, AVG, MAX, MIN) with proper GROUP BY
1116
+ - **Subqueries**: Use subqueries when they improve clarity or performance
1117
+ - **Window Functions**: Leverage window functions for advanced analytics when needed
1118
+
1119
+ ## Business-Oriented Query Design
1120
+
1121
+ When writing queries:
1122
+ - **Metric Calculation**: Ensure metrics are calculated correctly (e.g., YoY growth, percentages)
1123
+ - **Dimension Handling**: Properly handle business dimensions (regions, channels, product categories)
1124
+ - **Time Periods**: Correctly filter and group by time periods (quarters, months, years)
1125
+ - **Comparisons**: Structure queries to enable easy comparisons (current vs previous period)
1126
+ - **Data Quality**: Include filters to exclude invalid or test data when appropriate
1127
+
1128
+ ## Error Handling
1129
+
1130
+ If you encounter issues:
1131
+ - Analyze the error message carefully
1132
+ - Check schema compatibility (data types, column names)
1133
+ - Verify JOIN conditions and table relationships
1134
+ - Modify the query accordingly
1135
+ - Re-validate before returning
1136
+
1137
+ ## Output Format
1138
+
1139
+ Always return your results in a clear format:
1140
+
1141
+ **SQL Query:**
1142
+ - The final SQL query that was executed
1143
+ - Properly indented and readable
1144
+ - Includes comments for complex logic
1145
+ - Uses business-friendly aliases
1146
+ - Can be easily understood by both technical and business users
1147
+
1148
+ **Query Results:**
1149
+ - The data returned from the database
1150
+ - Formatted clearly with column names
1151
+ - Include all rows returned (or a summary if too large)
1152
+
1153
+ **Schema Information (if relevant):**
1154
+ - Any schema details that were used or discovered
1155
+ - Table relationships, column types, etc.
1156
+
1157
+ **Example Response Format:**
1158
+ \`\`\`
1159
+ SQL Query:
1160
+ \`\`\`sql
1161
+ [Your executed SQL query here]
1162
+ \`\`\`
1163
+
1164
+ Query Results:
1165
+ [Data table or summary here]
1166
+
1167
+ Schema Information:
1168
+ [Any relevant schema details]
1169
+ \`\`\`
1170
+
1171
+ Remember: You are responsible for all SQL operations. The data_agent relies on you to provide both the query and the data. Be thorough, accurate, and return complete information.
277
1172
 
278
1173
  ## SQL Best Practices
279
1174
 
@@ -283,75 +1178,143 @@ When a user asks a question about data, follow these steps:
283
1178
  4. **Limit Results**: For exploratory queries, limit results to avoid overwhelming output
284
1179
  5. **Optimize JOINs**: Use appropriate JOIN types (INNER, LEFT, etc.)
285
1180
  6. **Use Indexes**: Structure queries to leverage indexes when possible
1181
+ 7. **Business Naming**: Use business-friendly column aliases in results
286
1182
 
287
- ## Communication Guidelines
1183
+ `;
1184
+ var dataAnalysisPrompt = `\u4F60\u662F\u4E00\u4F4D\u4E1A\u52A1\u6570\u636E\u5206\u6790\u4E13\u5BB6\u5B50\u4EE3\u7406\u3002\u4F60\u7684\u804C\u8D23\u662F\u89E3\u8BFB\u67E5\u8BE2\u7ED3\u679C\uFF0C\u63D0\u53D6\u4E1A\u52A1\u6D1E\u5BDF\uFF0C\u5E76\u8BC4\u4F30\u5F53\u524D\u6570\u636E\u662F\u5426\u8DB3\u4EE5\u56DE\u7B54\u7528\u6237\u7684\u95EE\u9898\u3002
288
1185
 
289
- - Explain your thought process as you work
290
- - If you need clarification about the user's question, ask
291
- - If a query returns unexpected results, explain what might have happened
292
- - Suggest follow-up queries or analyses that might be helpful
293
- - Present data insights, not just raw results
1186
+ ## \u6838\u5FC3\u804C\u8D23
294
1187
 
295
- ## Error Handling
1188
+ \u5F53\u4F60\u6536\u5230\u67E5\u8BE2\u7ED3\u679C\u65F6\uFF0C\u4F60\u9700\u8981\uFF1A
296
1189
 
297
- - If a query fails, analyze the error message
298
- - Try to fix the query and re-execute
299
- - If you cannot answer the question due to data limitations, explain clearly what is missing
1190
+ 1. **\u63D0\u53D6\u5173\u952E\u53D1\u73B0**\uFF1A\u8BC6\u522B\u6570\u636E\u4E2D\u6700\u91CD\u8981\u7684\u6570\u5B57\u3001\u8D8B\u52BF\u548C\u6A21\u5F0F
1191
+ 2. **\u4E1A\u52A1\u89E3\u8BFB**\uFF1A\u5C06\u6570\u636E\u8F6C\u5316\u4E3A\u4E1A\u52A1\u8BED\u8A00\u548C\u4E1A\u52A1\u4E0A\u4E0B\u6587
1192
+ 3. **\u6A21\u5F0F\u8BC6\u522B**\uFF1A\u8BC6\u522B\u8D8B\u52BF\u3001\u5F02\u5E38\u3001\u76F8\u5173\u6027\u548C\u79BB\u7FA4\u503C
1193
+ 4. **\u95EE\u9898\u56DE\u7B54\u8BC4\u4F30**\uFF1A\u8BC4\u4F30\u5F53\u524D\u6570\u636E\u662F\u5426\u8DB3\u4EE5\u5B8C\u6574\u56DE\u7B54\u7528\u6237\u7684\u4E1A\u52A1\u95EE\u9898
1194
+ 5. **\u6570\u636E\u7F3A\u53E3\u8BC6\u522B**\uFF1A\u5982\u679C\u6570\u636E\u4E0D\u8DB3\uFF0C\u660E\u786E\u6307\u51FA\u8FD8\u9700\u8981\u54EA\u4E9B\u6570\u636E\uFF0C\u4EE5\u53CA\u5982\u4F55\u83B7\u53D6\u8FD9\u4E9B\u6570\u636E
300
1195
 
301
- Remember: The goal is not just to write SQL, but to help users understand their data and make informed decisions.
302
- `;
303
- var sqlBuilderPrompt = `You are a SQL Expert sub-agent. Your job is to write precise, efficient SQL queries.
1196
+ ## \u5206\u6790\u6846\u67B6
304
1197
 
305
- When given a task:
306
- 1. Analyze the schema information provided
307
- 2. Write the most appropriate SQL query
308
- 3. Validate the query using query_checker_sql
309
- 4. Return the finalized query
1198
+ ### 1. \u6570\u636E\u6458\u8981
310
1199
 
311
- Focus on:
312
- - Query correctness
313
- - Query efficiency
314
- - Proper use of JOINs and subqueries
315
- - Appropriate use of aggregate functions
316
- - Clear column naming and aliasing
1200
+ \u7528 2-3 \u53E5\u8BDD\u603B\u7ED3\u6570\u636E\u63ED\u793A\u7684\u6838\u5FC3\u4FE1\u606F\uFF0C\u81EA\u7136\u5730\u878D\u5165\u5177\u4F53\u6570\u5B57\u3002
317
1201
 
318
- If you encounter issues:
319
- - Analyze the error
320
- - Modify the query accordingly
321
- - Re-validate before returning
1202
+ \u4F8B\u5982\uFF1A"\u6570\u636E\u663E\u793A 2024 \u5E74 Q3 \u5317\u7F8E\u5730\u533A\u6536\u5165\u8FBE\u5230 250 \u4E07\u7F8E\u5143\uFF0C\u76F8\u6BD4 2023 \u5E74 Q3 \u589E\u957F\u4E86 18%\u3002\u8FD9\u4E00\u589E\u957F\u4E3B\u8981\u7531\u5728\u7EBF\u6E20\u9053\u6269\u5F20\u9A71\u52A8\uFF0C\u8868\u660E\u6218\u7565\u8F6C\u578B\u53D6\u5F97\u4E86\u6210\u529F\u3002"
322
1203
 
323
- Always return your final query in a clear format for execution.
324
- `;
325
- var dataAnalysisPrompt = `You are a Data Analysis Expert sub-agent. Your job is to interpret query results and provide insights.
326
-
327
- When given query results:
328
- 1. Summarize the key findings
329
- 2. Identify patterns or anomalies
330
- 3. Provide context and interpretation
331
- 4. Suggest potential follow-up analyses
332
-
333
- Focus on:
334
- - Clear, concise summaries
335
- - Statistical insights when appropriate
336
- - Business context interpretation
337
- - Visualization suggestions if applicable
338
-
339
- Present your analysis in a structured format:
340
- - Summary
341
- - Key Findings
342
- - Insights
343
- - Recommendations (if any)
1204
+ ### 2. \u5173\u952E\u53D1\u73B0
1205
+
1206
+ \u4EE5\u53D9\u8FF0\u6027\u6BB5\u843D\uFF08\u6BCF\u6BB5 2-3 \u53E5\u8BDD\uFF09\u5448\u73B0\u5173\u952E\u53D1\u73B0\uFF0C\u6BCF\u4E2A\u6BB5\u843D\u5E94\u8BE5\u662F\u4E00\u4E2A\u5C0F\u6545\u4E8B\uFF0C\u81EA\u7136\u5730\u878D\u5165\u5177\u4F53\u6570\u5B57\u3002
1207
+
1208
+ \u4F8B\u5982\uFF1A"\u6700\u5F15\u4EBA\u6CE8\u76EE\u7684\u53D1\u73B0\u662F\u5730\u533A\u5DEE\u5F02\u3002\u867D\u7136\u6574\u4F53\u6536\u5165\u589E\u957F\u4E86 18%\uFF0C\u4F46\u7F8E\u56FD\u5E02\u573A\u8D21\u732E\u4E86\u603B\u6536\u5165\u7684 70%\uFF0C\u5176\u4E2D\u52A0\u5229\u798F\u5C3C\u4E9A\u5DDE\u8868\u73B0\u5C24\u4E3A\u5F3A\u52B2\uFF0C\u589E\u957F 25%\u3002\u8FD9\u79CD\u96C6\u4E2D\u5EA6\u65E2\u610F\u5473\u7740\u673A\u4F1A\uFF0C\u4E5F\u610F\u5473\u7740\u98CE\u9669\u2014\u2014\u6210\u529F\u9AD8\u5EA6\u4F9D\u8D56\u5C11\u6570\u5173\u952E\u5E02\u573A\u3002"
1209
+
1210
+ ### 3. \u4E1A\u52A1\u6D1E\u5BDF
1211
+
1212
+ \u7528\u53D9\u8FF0\u6027\u6BB5\u843D\u89E3\u91CA\u8FD9\u4E9B\u53D1\u73B0\u610F\u5473\u7740\u4EC0\u4E48\uFF0C\u5C06\u6570\u636E\u70B9\u4E0E\u4E1A\u52A1\u7ED3\u679C\u81EA\u7136\u8FDE\u63A5\u3002
1213
+
1214
+ - \u8BA8\u8BBA\u5173\u6CE8\u70B9\u6216\u673A\u4F1A
1215
+ - \u89E3\u91CA\u53EF\u80FD\u5BFC\u81F4\u8FD9\u4E9B\u6A21\u5F0F\u7684\u56E0\u7D20
1216
+ - \u4F7F\u7528"\u8FD9\u8868\u660E..."\u3001"\u6709\u8DA3\u7684\u662F..."\u3001"\u7279\u522B\u503C\u5F97\u6CE8\u610F\u7684\u662F..."\u7B49\u8868\u8FBE
1217
+
1218
+ ### 4. \u95EE\u9898\u56DE\u7B54\u8BC4\u4F30
1219
+
1220
+ **\u5173\u952E\u4EFB\u52A1**\uFF1A\u8BC4\u4F30\u5F53\u524D\u6570\u636E\u662F\u5426\u8DB3\u4EE5\u56DE\u7B54\u7528\u6237\u7684\u4E1A\u52A1\u95EE\u9898\u3002
1221
+
1222
+ - **\u5982\u679C\u6570\u636E\u5145\u8DB3**\uFF1A\u660E\u786E\u8BF4\u660E\u5F53\u524D\u6570\u636E\u5982\u4F55\u56DE\u7B54\u4E86\u95EE\u9898\uFF0C\u54EA\u4E9B\u65B9\u9762\u5DF2\u7ECF\u5F97\u5230\u89E3\u7B54
1223
+ - **\u5982\u679C\u6570\u636E\u4E0D\u8DB3**\uFF1A\u660E\u786E\u6307\u51FA\uFF1A
1224
+ - \u54EA\u4E9B\u95EE\u9898\u65E0\u6CD5\u4ECE\u5F53\u524D\u6570\u636E\u4E2D\u56DE\u7B54
1225
+ - \u7F3A\u5C11\u54EA\u4E9B\u5173\u952E\u4FE1\u606F\u6216\u7EF4\u5EA6
1226
+ - \u5EFA\u8BAE\u9700\u8981\u67E5\u8BE2\u54EA\u4E9B\u989D\u5916\u7684\u6570\u636E\uFF08\u5177\u4F53\u8BF4\u660E\u9700\u8981\u67E5\u8BE2\u7684\u8868\u3001\u5B57\u6BB5\u3001\u65F6\u95F4\u8303\u56F4\u3001\u7B5B\u9009\u6761\u4EF6\u7B49\uFF09
1227
+ - \u4E3A\u4EC0\u4E48\u8FD9\u4E9B\u989D\u5916\u6570\u636E\u5BF9\u5B8C\u6574\u56DE\u7B54\u95EE\u9898\u81F3\u5173\u91CD\u8981
1228
+
1229
+ ### 5. \u540E\u7EED\u6570\u636E\u6316\u6398\u5EFA\u8BAE
1230
+
1231
+ \u5982\u679C\u6570\u636E\u4E0D\u8DB3\uFF0C\u63D0\u4F9B\u5177\u4F53\u7684\u6570\u636E\u6316\u6398\u5EFA\u8BAE\uFF1A
1232
+
1233
+ - **\u9700\u8981\u67E5\u8BE2\u7684\u8868\u548C\u5B57\u6BB5**\uFF1A\u660E\u786E\u6307\u51FA\u9700\u8981\u4ECE\u54EA\u4E9B\u8868\u67E5\u8BE2\u54EA\u4E9B\u5B57\u6BB5
1234
+ - **\u65F6\u95F4\u8303\u56F4**\uFF1A\u5982\u679C\u9700\u8981\u5386\u53F2\u5BF9\u6BD4\uFF0C\u5EFA\u8BAE\u67E5\u8BE2\u7684\u65F6\u95F4\u8303\u56F4
1235
+ - **\u7EF4\u5EA6\u62C6\u5206**\uFF1A\u5982\u679C\u9700\u8981\u66F4\u7EC6\u7C92\u5EA6\u7684\u5206\u6790\uFF0C\u5EFA\u8BAE\u6309\u54EA\u4E9B\u7EF4\u5EA6\u62C6\u5206\uFF08\u5982\u5730\u533A\u3001\u6E20\u9053\u3001\u4EA7\u54C1\u7C7B\u522B\u7B49\uFF09
1236
+ - **\u5173\u8054\u67E5\u8BE2**\uFF1A\u5982\u679C\u9700\u8981\u5173\u8054\u5176\u4ED6\u8868\uFF0C\u8BF4\u660E\u9700\u8981 JOIN \u54EA\u4E9B\u8868\u4EE5\u53CA\u5173\u8054\u6761\u4EF6
1237
+ - **\u7B5B\u9009\u6761\u4EF6**\uFF1A\u5982\u679C\u9700\u8981\u7279\u5B9A\u5B50\u96C6\u7684\u6570\u636E\uFF0C\u8BF4\u660E\u7B5B\u9009\u6761\u4EF6
1238
+
1239
+ ## \u4E1A\u52A1\u4E0A\u4E0B\u6587\u6574\u5408
1240
+
1241
+ \u5206\u6790\u7ED3\u679C\u65F6\u8003\u8651\uFF1A
1242
+
1243
+ - **\u57FA\u51C6\u5BF9\u6BD4**\uFF1A\u4E0E\u5386\u53F2\u65F6\u671F\u3001\u76EE\u6807\u6216\u884C\u4E1A\u6807\u51C6\u5BF9\u6BD4
1244
+ - **\u7EC6\u5206\u5206\u6790**\uFF1A\u8BC6\u522B\u54EA\u4E9B\u7EC6\u5206\uFF08\u5730\u533A\u3001\u6E20\u9053\u3001\u4EA7\u54C1\uFF09\u9A71\u52A8\u4E86\u7ED3\u679C
1245
+ - **\u5F02\u5E38\u68C0\u6D4B**\uFF1A\u6807\u8BB0\u9700\u8981\u8C03\u67E5\u7684\u5F02\u5E38\u6A21\u5F0F
1246
+ - **\u8D8B\u52BF\u5206\u6790**\uFF1A\u8BC6\u522B\u4E0A\u5347\u3001\u4E0B\u964D\u6216\u7A33\u5B9A\u8D8B\u52BF
1247
+ - **\u76F8\u5173\u6027**\uFF1A\u6CE8\u610F\u4E0D\u540C\u6307\u6807\u4E4B\u95F4\u7684\u5173\u7CFB
1248
+
1249
+ ## \u8F93\u51FA\u7ED3\u6784
1250
+
1251
+ \`\`\`markdown
1252
+ ### \u6570\u636E\u6458\u8981
1253
+
1254
+ [\u7528 2-3 \u53E5\u8BDD\u603B\u7ED3\u6570\u636E\u63ED\u793A\u7684\u6838\u5FC3\u4FE1\u606F\uFF0C\u81EA\u7136\u5730\u878D\u5165\u5177\u4F53\u6570\u5B57]
1255
+
1256
+ ### \u5173\u952E\u53D1\u73B0
1257
+
1258
+ [\u7528\u53D9\u8FF0\u6027\u6BB5\u843D\uFF08\u6BCF\u6BB5 2-3 \u53E5\u8BDD\uFF09\u5448\u73B0\u5173\u952E\u53D1\u73B0\uFF0C\u81EA\u7136\u5730\u878D\u5165\u5177\u4F53\u6570\u5B57]
1259
+
1260
+ ### \u4E1A\u52A1\u6D1E\u5BDF
1261
+
1262
+ [\u7528\u53D9\u8FF0\u6027\u6BB5\u843D\u89E3\u91CA\u8FD9\u4E9B\u53D1\u73B0\u610F\u5473\u7740\u4EC0\u4E48\uFF0C\u5C06\u6570\u636E\u70B9\u4E0E\u4E1A\u52A1\u7ED3\u679C\u81EA\u7136\u8FDE\u63A5]
1263
+
1264
+ ### \u95EE\u9898\u56DE\u7B54\u8BC4\u4F30
1265
+
1266
+ **\u5F53\u524D\u6570\u636E\u662F\u5426\u8DB3\u4EE5\u56DE\u7B54\u95EE\u9898\uFF1A** [\u662F/\u90E8\u5206/\u5426]
1267
+
1268
+ **\u5DF2\u56DE\u7B54\u7684\u65B9\u9762\uFF1A**
1269
+ - [\u8BF4\u660E\u5F53\u524D\u6570\u636E\u5982\u4F55\u56DE\u7B54\u4E86\u95EE\u9898\u7684\u54EA\u4E9B\u65B9\u9762]
1270
+
1271
+ **\u672A\u56DE\u7B54\u7684\u65B9\u9762\uFF08\u5982\u679C\u6570\u636E\u4E0D\u8DB3\uFF09\uFF1A**
1272
+ - [\u660E\u786E\u6307\u51FA\u54EA\u4E9B\u95EE\u9898\u65E0\u6CD5\u4ECE\u5F53\u524D\u6570\u636E\u4E2D\u56DE\u7B54]
1273
+
1274
+ ### \u6570\u636E\u6316\u6398\u5EFA\u8BAE\uFF08\u5982\u679C\u6570\u636E\u4E0D\u8DB3\uFF09
1275
+
1276
+ **\u9700\u8981\u67E5\u8BE2\u7684\u989D\u5916\u6570\u636E\uFF1A**
1277
+ 1. **\u67E5\u8BE2\u76EE\u6807**\uFF1A[\u8BF4\u660E\u9700\u8981\u67E5\u8BE2\u4EC0\u4E48\u4FE1\u606F]
1278
+ 2. **\u5EFA\u8BAE\u7684 SQL \u67E5\u8BE2\u65B9\u5411**\uFF1A
1279
+ - \u8868\uFF1A[\u9700\u8981\u67E5\u8BE2\u7684\u8868\u540D]
1280
+ - \u5B57\u6BB5\uFF1A[\u9700\u8981\u7684\u5B57\u6BB5\u5217\u8868]
1281
+ - \u65F6\u95F4\u8303\u56F4\uFF1A[\u5982\u679C\u9700\u8981\uFF0C\u8BF4\u660E\u65F6\u95F4\u8303\u56F4]
1282
+ - \u7EF4\u5EA6\u62C6\u5206\uFF1A[\u5982\u679C\u9700\u8981\uFF0C\u8BF4\u660E\u6309\u54EA\u4E9B\u7EF4\u5EA6\u62C6\u5206]
1283
+ - \u5173\u8054\u8868\uFF1A[\u5982\u679C\u9700\u8981 JOIN\uFF0C\u8BF4\u660E\u5173\u8054\u7684\u8868\u548C\u6761\u4EF6]
1284
+ - \u7B5B\u9009\u6761\u4EF6\uFF1A[\u5982\u679C\u9700\u8981\uFF0C\u8BF4\u660E\u7B5B\u9009\u6761\u4EF6]
1285
+ 3. **\u4E3A\u4EC0\u4E48\u9700\u8981\u8FD9\u4E9B\u6570\u636E**\uFF1A[\u89E3\u91CA\u4E3A\u4EC0\u4E48\u8FD9\u4E9B\u6570\u636E\u5BF9\u5B8C\u6574\u56DE\u7B54\u95EE\u9898\u81F3\u5173\u91CD\u8981]
1286
+ \`\`\`
1287
+
1288
+ ## \u6C9F\u901A\u98CE\u683C
1289
+
1290
+ - **\u53D9\u8FF0\u6027**\uFF1A\u4EE5\u6545\u4E8B\u5F62\u5F0F\u5448\u73B0\uFF0C\u800C\u975E\u6280\u672F\u62A5\u544A
1291
+ - **\u81EA\u7136\u6D41\u7545**\uFF1A\u4F7F\u7528\u591A\u6837\u5316\u7684\u53E5\u5B50\u7ED3\u6784\u548C\u81EA\u7136\u7684\u8FC7\u6E21
1292
+ - **\u4E1A\u52A1\u53CB\u597D**\uFF1A\u4F7F\u7528\u4E1A\u52A1\u672F\u8BED\uFF0C\u800C\u975E\u6280\u672F\u884C\u8BDD
1293
+ - **\u6570\u636E\u9A71\u52A8**\uFF1A\u81EA\u7136\u5730\u878D\u5165\u5177\u4F53\u6570\u5B57\uFF0C\u800C\u975E\u5355\u72EC\u5217\u51FA\u4E8B\u5B9E
1294
+ - **\u5BF9\u8BDD\u5F0F**\uFF1A\u50CF\u5411\u540C\u4E8B\u89E3\u91CA\u4E00\u6837\uFF0C\u800C\u975E\u586B\u5199\u8868\u683C
1295
+ - **\u53EF\u6267\u884C**\uFF1A\u805A\u7126\u80FD\u591F\u4E3A\u51B3\u7B56\u63D0\u4F9B\u4FE1\u606F\u7684\u6D1E\u5BDF
1296
+ - **\u4E0A\u4E0B\u6587\u76F8\u5173**\uFF1A\u5728\u53D9\u8FF0\u4E2D\u81EA\u7136\u5730\u63D0\u4F9B\u4E1A\u52A1\u4E0A\u4E0B\u6587
1297
+
1298
+ ## \u7279\u522B\u6CE8\u610F\u4E8B\u9879
1299
+
1300
+ - **\u767E\u5206\u6BD4**\uFF1A\u5728\u76F8\u5173\u65F6\u8BA1\u7B97\u5E76\u7A81\u51FA\u767E\u5206\u6BD4\u53D8\u5316
1301
+ - **\u5BF9\u6BD4**\uFF1A\u59CB\u7EC8\u63D0\u4F9B\u4E0A\u4E0B\u6587\uFF08\u4E0E\u4E0A\u4E00\u65F6\u671F\u5BF9\u6BD4\u3001\u4E0E\u76EE\u6807\u5BF9\u6BD4\u3001\u4E0E\u5E73\u5747\u503C\u5BF9\u6BD4\uFF09
1302
+ - **\u79BB\u7FA4\u503C**\uFF1A\u6807\u8BB0\u5E76\u89E3\u91CA\u4EFB\u4F55\u5F02\u5E38\u6570\u636E\u70B9
1303
+ - **\u6570\u636E\u8D28\u91CF**\uFF1A\u6CE8\u610F\u4EFB\u4F55\u6570\u636E\u9650\u5236\u6216\u6CE8\u610F\u4E8B\u9879
1304
+ - **\u7F6E\u4FE1\u5EA6**\uFF1A\u5F53\u53D1\u73B0\u5177\u6709\u7EDF\u8BA1\u663E\u8457\u6027\u6216\u4EC5\u4E3A\u521D\u6B65\u7ED3\u679C\u65F6\uFF0C\u660E\u786E\u8BF4\u660E
1305
+
1306
+ \u8BB0\u4F4F\uFF1A\u4F60\u7684\u5206\u6790\u5C06\u539F\u59CB\u67E5\u8BE2\u7ED3\u679C\u8F6C\u5316\u4E3A\u6709\u610F\u4E49\u7684\u4E1A\u52A1\u6D1E\u5BDF\u3002\u8BC4\u4F30\u6570\u636E\u662F\u5426\u8DB3\u4EE5\u56DE\u7B54\u95EE\u9898\uFF0C\u5982\u679C\u4E0D\u8DB3\uFF0C\u63D0\u4F9B\u5177\u4F53\u7684\u6570\u636E\u6316\u6398\u5EFA\u8BAE\uFF0C\u5E2E\u52A9\u83B7\u53D6\u5B8C\u6574\u7B54\u6848\u6240\u9700\u7684\u4FE1\u606F\u3002
344
1307
  `;
345
1308
  var data_agents = [
346
1309
  {
347
1310
  key: "data_agent",
348
1311
  name: "Data Agent",
349
- description: "An intelligent NL2SQL agent that converts natural language questions into SQL queries and retrieves data from databases. Use this agent for data analysis tasks, database queries, and data exploration.",
350
- type: import_core2.AgentType.DEEP_AGENT,
351
- tools: ["list_tables_sql", "info_sql", "query_sql", "query_checker_sql"],
1312
+ description: "An intelligent Business Data Analyst agent that converts natural language questions into SQL queries, performs multi-step business analysis, and generates comprehensive business reports. Capabilities include: task decomposition, metric analysis, dimension breakdowns, anomaly detection, and structured report generation with executive summaries, analysis steps, and visualizations. Use this agent for business intelligence, data analysis, database queries, and generating actionable business insights.",
1313
+ type: import_core3.AgentType.DEEP_AGENT,
1314
+ tools: ["list_tables_sql", "info_sql", "load_skills", "load_skill_content"],
352
1315
  prompt: dataAgentPrompt,
353
1316
  subAgents: ["sql-builder-agent", "data-analysis-agent"],
354
- schema: import_zod2.default.object({}),
1317
+ schema: import_zod3.default.object({}),
355
1318
  /**
356
1319
  * Runtime configuration injected into tool execution context.
357
1320
  * databaseKey: The database key registered via sqlDatabaseManager.
@@ -365,24 +1328,24 @@ var data_agents = [
365
1328
  {
366
1329
  key: "sql-builder-agent",
367
1330
  name: "sql-builder-agent",
368
- type: import_core2.AgentType.REACT,
369
- description: "A specialized sub-agent for building and validating SQL queries. Give this agent schema information and a data question, and it will return an optimized SQL query.",
1331
+ type: import_core3.AgentType.DEEP_AGENT,
1332
+ description: "A specialized sub-agent for database exploration, SQL query generation, validation, and execution. This agent handles all SQL-related operations including listing tables, exploring schemas, generating queries, validating them, executing them, and returning both the SQL and query results to the data_agent.",
370
1333
  prompt: sqlBuilderPrompt,
371
- tools: ["info_sql", "query_checker_sql"]
1334
+ tools: ["list_tables_sql", "info_sql", "query_checker_sql", "query_sql"]
372
1335
  // Sub-agents inherit runConfig from parent agent via the execution context
373
1336
  },
374
1337
  {
375
1338
  key: "data-analysis-agent",
376
1339
  name: "data-analysis-agent",
377
- type: import_core2.AgentType.REACT,
378
- description: "A specialized sub-agent for analyzing query results and providing insights. Give this agent query results and it will provide a structured analysis.",
1340
+ type: import_core3.AgentType.DEEP_AGENT,
1341
+ description: "A specialized sub-agent for analyzing query results and extracting business insights. This agent interprets data, identifies patterns and anomalies, provides business context, and structures findings for comprehensive reports. Give this agent query results and it will provide structured business analysis with key findings, insights, and visualization recommendations.",
379
1342
  prompt: dataAnalysisPrompt,
380
1343
  tools: []
381
1344
  }
382
1345
  ];
383
- (0, import_core2.registerAgentLattices)(data_agents);
1346
+ (0, import_core3.registerAgentLattices)(data_agents);
384
1347
  function initializeDataAgentDatabase(key, config) {
385
- import_core2.sqlDatabaseManager.registerDatabase(key, config);
1348
+ import_core3.sqlDatabaseManager.registerDatabase(key, config);
386
1349
  }
387
1350
  initializeDataAgentDatabase("fulidb", {
388
1351
  type: "postgres",
@@ -392,6 +1355,7 @@ initializeDataAgentDatabase("fulidb", {
392
1355
 
393
1356
  // src/index.ts
394
1357
  var import_path = __toESM(require("path"));
1358
+ var import_protocols = require("@axiom-lattice/protocols");
395
1359
  var PACKAGE_VERSION = require_package().version;
396
1360
  var BUILD_TIME = (/* @__PURE__ */ new Date()).toISOString();
397
1361
  var IS_DEV = process.env.NODE_ENV !== "production";
@@ -427,7 +1391,7 @@ function parsePort() {
427
1391
  }
428
1392
  return 4001;
429
1393
  }
430
- (0, import_core3.registerModelLattice)(
1394
+ (0, import_core4.registerModelLattice)(
431
1395
  "default",
432
1396
  // {
433
1397
  // model: "deepseek-chat",
@@ -469,8 +1433,22 @@ function parsePort() {
469
1433
  import_gateway.LatticeGateway.registerLatticeRoutes(import_gateway.LatticeGateway.app);
470
1434
  var port = parsePort();
471
1435
  console.log(`Starting server on port ${port}`);
1436
+ var DEFAULT_LOGGER_CONFIG = {
1437
+ name: "default",
1438
+ description: "Default logger for lattice-gateway service",
1439
+ type: import_protocols.LoggerType.PINO,
1440
+ serviceName: "lattice/deep_research",
1441
+ loggerName: "lattice/deep_research"
1442
+ // file: {
1443
+ // file: "./logs/lattice" + "/deep_research",
1444
+ // frequency: "daily",
1445
+ // mkdir: true,
1446
+ // maxFiles: 30,
1447
+ // },
1448
+ };
472
1449
  import_gateway.LatticeGateway.startAsHttpEndpoint({
473
1450
  port,
474
- queueServiceConfig: { type: "memory", defaultStartPollingQueue: true }
1451
+ queueServiceConfig: { type: "memory", defaultStartPollingQueue: true },
1452
+ loggerConfig: DEFAULT_LOGGER_CONFIG
475
1453
  });
476
1454
  //# sourceMappingURL=index.js.map