@cicctencent/agent-server 0.2.13 → 0.2.15

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.
Files changed (77) hide show
  1. package/dist/cjs/agent/agent-server.d.ts.map +1 -1
  2. package/dist/cjs/agent/agent-server.js +13 -2
  3. package/dist/cjs/agent/agent-server.js.map +1 -1
  4. package/dist/cjs/index.d.ts +5 -3
  5. package/dist/cjs/index.d.ts.map +1 -1
  6. package/dist/cjs/index.js +16 -3
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/prompt/prompt-builder.d.ts +6 -1
  9. package/dist/cjs/prompt/prompt-builder.d.ts.map +1 -1
  10. package/dist/cjs/prompt/prompt-builder.js +59 -2
  11. package/dist/cjs/prompt/prompt-builder.js.map +1 -1
  12. package/dist/cjs/service/artifact.service.d.ts +7 -0
  13. package/dist/cjs/service/artifact.service.d.ts.map +1 -1
  14. package/dist/cjs/service/artifact.service.js +17 -2
  15. package/dist/cjs/service/artifact.service.js.map +1 -1
  16. package/dist/cjs/service/env-collector.d.ts +57 -0
  17. package/dist/cjs/service/env-collector.d.ts.map +1 -0
  18. package/dist/cjs/service/env-collector.js +230 -0
  19. package/dist/cjs/service/env-collector.js.map +1 -0
  20. package/dist/cjs/service/memory.service.d.ts +8 -0
  21. package/dist/cjs/service/memory.service.d.ts.map +1 -1
  22. package/dist/cjs/service/memory.service.js +23 -4
  23. package/dist/cjs/service/memory.service.js.map +1 -1
  24. package/dist/cjs/service/model-config-resolver.d.ts +108 -0
  25. package/dist/cjs/service/model-config-resolver.d.ts.map +1 -0
  26. package/dist/cjs/service/model-config-resolver.js +231 -0
  27. package/dist/cjs/service/model-config-resolver.js.map +1 -0
  28. package/dist/cjs/tool/tools/automation.d.ts.map +1 -1
  29. package/dist/cjs/tool/tools/automation.js +16 -19
  30. package/dist/cjs/tool/tools/automation.js.map +1 -1
  31. package/dist/cjs/tool/tools/communication.d.ts.map +1 -1
  32. package/dist/cjs/tool/tools/communication.js +50 -50
  33. package/dist/cjs/tool/tools/communication.js.map +1 -1
  34. package/dist/cjs/tool/tools/sandbox.d.ts.map +1 -1
  35. package/dist/cjs/tool/tools/sandbox.js +2 -3
  36. package/dist/cjs/tool/tools/sandbox.js.map +1 -1
  37. package/dist/cjs/types.d.ts +51 -1
  38. package/dist/cjs/types.d.ts.map +1 -1
  39. package/dist/esm/agent/agent-server.d.ts.map +1 -1
  40. package/dist/esm/agent/agent-server.js +13 -2
  41. package/dist/esm/agent/agent-server.js.map +1 -1
  42. package/dist/esm/index.d.ts +5 -3
  43. package/dist/esm/index.d.ts.map +1 -1
  44. package/dist/esm/index.js +5 -2
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/prompt/prompt-builder.d.ts +6 -1
  47. package/dist/esm/prompt/prompt-builder.d.ts.map +1 -1
  48. package/dist/esm/prompt/prompt-builder.js +58 -1
  49. package/dist/esm/prompt/prompt-builder.js.map +1 -1
  50. package/dist/esm/service/artifact.service.d.ts +7 -0
  51. package/dist/esm/service/artifact.service.d.ts.map +1 -1
  52. package/dist/esm/service/artifact.service.js +15 -2
  53. package/dist/esm/service/artifact.service.js.map +1 -1
  54. package/dist/esm/service/env-collector.d.ts +57 -0
  55. package/dist/esm/service/env-collector.d.ts.map +1 -0
  56. package/dist/esm/service/env-collector.js +189 -0
  57. package/dist/esm/service/env-collector.js.map +1 -0
  58. package/dist/esm/service/memory.service.d.ts +8 -0
  59. package/dist/esm/service/memory.service.d.ts.map +1 -1
  60. package/dist/esm/service/memory.service.js +24 -5
  61. package/dist/esm/service/memory.service.js.map +1 -1
  62. package/dist/esm/service/model-config-resolver.d.ts +108 -0
  63. package/dist/esm/service/model-config-resolver.d.ts.map +1 -0
  64. package/dist/esm/service/model-config-resolver.js +227 -0
  65. package/dist/esm/service/model-config-resolver.js.map +1 -0
  66. package/dist/esm/tool/tools/automation.d.ts.map +1 -1
  67. package/dist/esm/tool/tools/automation.js +13 -16
  68. package/dist/esm/tool/tools/automation.js.map +1 -1
  69. package/dist/esm/tool/tools/communication.d.ts.map +1 -1
  70. package/dist/esm/tool/tools/communication.js +50 -50
  71. package/dist/esm/tool/tools/communication.js.map +1 -1
  72. package/dist/esm/tool/tools/sandbox.d.ts.map +1 -1
  73. package/dist/esm/tool/tools/sandbox.js +1 -2
  74. package/dist/esm/tool/tools/sandbox.js.map +1 -1
  75. package/dist/esm/types.d.ts +51 -1
  76. package/dist/esm/types.d.ts.map +1 -1
  77. package/package.json +2 -2
@@ -25,6 +25,48 @@ const BUILTIN_TOOL_LABELS = {
25
25
  create_pdf: '创建 PDF',
26
26
  create_report: '生成报表',
27
27
  };
28
+ // ============================================================
29
+ // 全局基础规则(注入到所有 Agent 的系统提示词中)
30
+ // ============================================================
31
+ /** 全局基础规则 — 所有 Agent 共享的通用行为规范 */
32
+ export const GLOBAL_BASE_RULES = `
33
+
34
+ ## Universal Rules
35
+
36
+ ### Plan Before Execute
37
+ - For ANY task involving multiple steps: **output a numbered step list before doing anything**
38
+ - Format the plan as a **bold inline list**, NOT as markdown headings (## or ###). Use: "**1.** Fetch data → **2.** Analyze → **3.** Generate report → **4.** Save artifacts"
39
+ - Do NOT start calling tools until the plan is output
40
+ - As you work, track progress: ✓ done / → in progress / ○ pending
41
+
42
+ ### Read Before Write
43
+ - If the user provides a file, document reference, or data source: **read/fetch it first** before creating outputs
44
+ - Gather all necessary data before starting generation
45
+ - Don't assume content — verify with tools
46
+
47
+ ### Tool Parameter Limits
48
+ - \`write_file\` / \`append_file\` content: **keep under 3000 chars** per call (JSON escaping inflates size by 30-50%)
49
+ - For large content: split into multiple \`append_file\` calls, one chunk per call
50
+ - Never use heredoc (\`cat >> file << EOF\`) in \`execute_command\`
51
+
52
+ ### Error Recovery
53
+ - If a tool call fails: **diagnose the error** before retrying
54
+ - Never blindly retry the same failing approach — try a different method
55
+ - If content was truncated: use \`append_file\` to add the remaining parts
56
+
57
+ ### Conversation History & Current Request
58
+ - Your conversation history is provided in <conversation_history> tags as a summary — it is context only
59
+ - The current user request is in <current_request> tags or is the latest user message — this is what you must act on
60
+ - Do NOT proactively combine or continue tasks from <conversation_history> unless <current_request> explicitly references them
61
+ - Evaluate task complexity based on <current_request> alone, not on accumulated history
62
+
63
+ ### Iteration Budget & Efficiency (CRITICAL)
64
+ - You have a **limited number of iterations** (typically 15). Every LLM turn counts.
65
+ - **NEVER re-query the same data source.** If you called a tool and got results, use those results — do NOT call it again.
66
+ - **NEVER call read_tool_result or read_offload to re-read data you already received.**
67
+ - **Batch data gathering:** call multiple independent tools in the SAME turn (parallel tool calls).
68
+ - **Data → Action pipeline:** gather data in 1-2 iterations, then immediately analyze/generate in the next iteration.
69
+ - **Return concise structured summaries**, not raw data dumps. Extract key metrics, rankings, distributions — not every single record.`;
28
70
  /**
29
71
  * 默认 PromptBuilderProvider 实现
30
72
  */
@@ -35,6 +77,7 @@ export class DefaultPromptBuilder {
35
77
  buildDefaultPrompt(profile, tools, memory, specialists, specialistResourceMap) {
36
78
  const parts = [];
37
79
  parts.push(profile.basePrompt || 'You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly. Respond in the same language as the user.');
80
+ parts.push(GLOBAL_BASE_RULES);
38
81
  if (memory) {
39
82
  parts.push(`\n${memory}`);
40
83
  }
@@ -63,6 +106,7 @@ export class DefaultPromptBuilder {
63
106
  buildSpecialistPrompt(profile, tools, skills, memory) {
64
107
  const parts = [];
65
108
  parts.push(profile.basePrompt || 'You are a specialist AI agent. Focus on your domain expertise and use tools to accomplish tasks.');
109
+ parts.push(GLOBAL_BASE_RULES);
66
110
  if (memory) {
67
111
  parts.push(`\n${memory}`);
68
112
  }
@@ -100,7 +144,20 @@ export class DefaultPromptBuilder {
100
144
  }).join('\n');
101
145
  }
102
146
  }
103
- export const RESULT_SYNTHESIS_PROMPT = `Based on the specialist agents' outputs above, provide a comprehensive synthesis:
147
+ /** 共享提示词片段:工具结果呈现规范 */
148
+ export const RESULT_SYNTHESIS_PROMPT = `
149
+
150
+ ## Tool Result Presentation (MANDATORY)
151
+
152
+ After calling tools and receiving data, you MUST:
153
+ 1. **Analyze and summarize** — never dump raw JSON or tool output directly; synthesize and organize the data
154
+ 2. **Highlight key findings** — identify trends, anomalies, or notable information
155
+ 3. **Structured presentation** — use headings, bullet points, or tables for readability
156
+ 4. **Add insights** — provide professional interpretation, comparisons, or recommendations
157
+ 5. **NEVER re-fetch** — if you already called a tool and got results, do NOT call the same tool again
158
+ 6. **Use user's language** — respond in the same language the user used`;
159
+ /** Specialist 结果综合提示词 */
160
+ export const SPECIALIST_SYNTHESIS_PROMPT = `Based on the specialist agents' outputs above, provide a comprehensive synthesis:
104
161
  1. Summarize key findings from each agent
105
162
  2. Identify any conflicts or contradictions
106
163
  3. Provide a unified recommendation
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/prompt/prompt-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/prompt/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,13 @@
4
4
  * 遵循沙箱隔离原则:所有 I/O 操作限制在沙箱 rootDir 中。
5
5
  * 提供 HTTP URL 供前端下载/预览。
6
6
  */
7
+ /**
8
+ * 设置 Artifact URL 前缀
9
+ * 上层应用在初始化时调用,例如 BI 项目设置为 '/api/ai-work/artifacts/'
10
+ */
11
+ export declare function setArtifactUrlPrefix(prefix: string): void;
12
+ /** 获取当前 Artifact URL 前缀 */
13
+ export declare function getArtifactUrlPrefix(): string;
7
14
  /** 根据文件扩展名推断 MIME 类型 */
8
15
  export declare function getMimeType(filename: string): string;
9
16
  /** 判断 MIME 类型是否为可内联预览的图片 */
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.service.d.ts","sourceRoot":"","sources":["../../../src/service/artifact.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,wBAAwB;AACxB,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiCpD;AAED,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAmDA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0B1G"}
1
+ {"version":3,"file":"artifact.service.d.ts","sourceRoot":"","sources":["../../../src/service/artifact.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,2BAA2B;AAC3B,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAeD,wBAAwB;AACxB,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiCpD;AAED,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAmDA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0B1G"}
@@ -13,6 +13,19 @@ import { getProjectDataPath } from "../utils/data-dir.js";
13
13
  const MAX_FILE_SIZE = 5 * 1024 * 1024;
14
14
  /** 沙箱内 Artifact 子目录名 */
15
15
  const ARTIFACTS_SUBDIR = '_artifacts';
16
+ /** Artifact URL 前缀(上层应用可通过 setArtifactUrlPrefix 自定义) */
17
+ let artifactUrlPrefix = '/api/work/artifacts/';
18
+ /**
19
+ * 设置 Artifact URL 前缀
20
+ * 上层应用在初始化时调用,例如 BI 项目设置为 '/api/ai-work/artifacts/'
21
+ */
22
+ export function setArtifactUrlPrefix(prefix) {
23
+ artifactUrlPrefix = prefix;
24
+ }
25
+ /** 获取当前 Artifact URL 前缀 */
26
+ export function getArtifactUrlPrefix() {
27
+ return artifactUrlPrefix;
28
+ }
16
29
  /** 获取沙箱内的 _artifacts/ 目录,不存在则创建 */
17
30
  function getSandboxArtifactsDir(sandboxRoot) {
18
31
  const dir = path.join(sandboxRoot, ARTIFACTS_SUBDIR);
@@ -92,7 +105,7 @@ export function saveArtifact(sandboxRoot, sessionId, filename, content) {
92
105
  if (stat.size === buffer.length) {
93
106
  // Same file already saved — return existing artifact info (skip emit)
94
107
  const mimeType = getMimeType(filename);
95
- const url = `/api/work/artifacts/${encodeURIComponent(sessionId)}/${entry.name}/${encodeURIComponent(safeName)}`;
108
+ const url = `${artifactUrlPrefix}${encodeURIComponent(sessionId)}/${entry.name}/${encodeURIComponent(safeName)}`;
96
109
  return {
97
110
  artifactId: entry.name,
98
111
  filename: safeName,
@@ -116,7 +129,7 @@ export function saveArtifact(sandboxRoot, sessionId, filename, content) {
116
129
  fs.writeFileSync(filePath, buffer);
117
130
  const mimeType = getMimeType(filename);
118
131
  // URL 路径:/api/work/artifacts/:sessionId/:artifactId/:filename
119
- const url = `/api/work/artifacts/${encodeURIComponent(sessionId)}/${artifactId}/${encodeURIComponent(safeName)}`;
132
+ const url = `${artifactUrlPrefix}${encodeURIComponent(sessionId)}/${artifactId}/${encodeURIComponent(safeName)}`;
120
133
  return { artifactId, filename: safeName, mimeType, size: buffer.length, url };
121
134
  }
122
135
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.service.js","sourceRoot":"","sources":["../../../src/service/artifact.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact.service.js","sourceRoot":"","sources":["../../../src/service/artifact.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { EnvInfo, EnvCollector } from '@cicctencent/agent-core';
2
+ /**
3
+ * Node.js 运行时环境采集器
4
+ *
5
+ * 在 agent-core 的 LocalEnvCollector 基础上,增加:
6
+ * - Python 版本探测
7
+ * - Node.js 版本(详细)
8
+ * - 包管理器版本(pnpm/yarn/npm)
9
+ *
10
+ * 使用场景:Agent 需要知道运行环境中有哪些工具可用,
11
+ * 以便正确选择脚本执行方式(Node.js vs Python)和包管理器。
12
+ */
13
+ export declare class NodeEnvCollector implements EnvCollector {
14
+ private cachedInfo;
15
+ private cacheReady;
16
+ private pending;
17
+ /**
18
+ * 异步预加载环境信息(不阻塞事件循环)
19
+ *
20
+ * 使用 child_process.exec 异步探测 Python / pnpm / yarn / npm 版本,
21
+ * 完成后写入 cachedInfo。应在应用启动时调用。
22
+ */
23
+ preload(): void;
24
+ collect(): Promise<EnvInfo>;
25
+ /**
26
+ * 同步获取环境信息(供需要立即返回的场景使用)
27
+ */
28
+ collectSync(): EnvInfo;
29
+ /**
30
+ * 异步采集(不阻塞事件循环)
31
+ * 并行执行所有版本探测命令,完成后组装 EnvInfo
32
+ */
33
+ private doCollectAsync;
34
+ /**
35
+ * 同步采集(阻塞,仅在预加载未完成时首次调用兜底)
36
+ */
37
+ private doCollectSync;
38
+ private buildEnvInfo;
39
+ private execAsync;
40
+ private execSyncSafe;
41
+ format(info: EnvInfo): string;
42
+ private formatBytes;
43
+ }
44
+ export declare function getEnvCollector(): NodeEnvCollector;
45
+ /**
46
+ * 预加载环境信息(应用启动时调用)
47
+ */
48
+ export declare function preloadEnvInfo(): void;
49
+ /**
50
+ * 采集环境信息(同步,返回缓存或立即采集)
51
+ */
52
+ export declare function collectEnvInfo(): EnvInfo;
53
+ /**
54
+ * 重置单例(测试用)
55
+ */
56
+ export declare function resetEnvCollector(): void;
57
+ //# sourceMappingURL=env-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-collector.d.ts","sourceRoot":"","sources":["../../../src/service/env-collector.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAiC;IAEhD;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAcT,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IASjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAMtB;;;OAGG;YACW,cAAc;IAoB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAQpB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAmB7B,OAAO,CAAC,WAAW;CAMpB;AAMD,wBAAgB,eAAe,IAAI,gBAAgB,CAKlD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -0,0 +1,189 @@
1
+ // ============================================================
2
+ // NodeEnvCollector — Node.js 运行时环境采集器
3
+ // ============================================================
4
+ import { exec, execSync } from 'child_process';
5
+ import * as os from 'os';
6
+ /**
7
+ * Node.js 运行时环境采集器
8
+ *
9
+ * 在 agent-core 的 LocalEnvCollector 基础上,增加:
10
+ * - Python 版本探测
11
+ * - Node.js 版本(详细)
12
+ * - 包管理器版本(pnpm/yarn/npm)
13
+ *
14
+ * 使用场景:Agent 需要知道运行环境中有哪些工具可用,
15
+ * 以便正确选择脚本执行方式(Node.js vs Python)和包管理器。
16
+ */
17
+ export class NodeEnvCollector {
18
+ cachedInfo = null;
19
+ cacheReady = false;
20
+ pending = null;
21
+ /**
22
+ * 异步预加载环境信息(不阻塞事件循环)
23
+ *
24
+ * 使用 child_process.exec 异步探测 Python / pnpm / yarn / npm 版本,
25
+ * 完成后写入 cachedInfo。应在应用启动时调用。
26
+ */
27
+ preload() {
28
+ if (this.cacheReady)
29
+ return;
30
+ this.cacheReady = true;
31
+ this.pending = this.doCollectAsync();
32
+ this.pending.then(info => {
33
+ this.cachedInfo = info;
34
+ this.pending = null;
35
+ }).catch(() => {
36
+ // 预加载失败时,后续同步调用会兜底
37
+ this.pending = null;
38
+ });
39
+ }
40
+ async collect() {
41
+ if (this.cachedInfo)
42
+ return this.cachedInfo;
43
+ if (this.pending)
44
+ return this.pending;
45
+ // 预加载尚未完成,同步采集
46
+ this.cachedInfo = this.doCollectSync();
47
+ return this.cachedInfo;
48
+ }
49
+ /**
50
+ * 同步获取环境信息(供需要立即返回的场景使用)
51
+ */
52
+ collectSync() {
53
+ if (this.cachedInfo)
54
+ return this.cachedInfo;
55
+ this.cachedInfo = this.doCollectSync();
56
+ return this.cachedInfo;
57
+ }
58
+ /**
59
+ * 异步采集(不阻塞事件循环)
60
+ * 并行执行所有版本探测命令,完成后组装 EnvInfo
61
+ */
62
+ async doCollectAsync() {
63
+ const tasks = [
64
+ { key: 'Python', cmd: 'python3 --version 2>&1 || python --version 2>&1' },
65
+ { key: 'pnpm', cmd: 'pnpm --version' },
66
+ { key: 'yarn', cmd: 'yarn --version' },
67
+ { key: 'npm', cmd: 'npm --version' },
68
+ ];
69
+ const results = await Promise.all(tasks.map(task => this.execAsync(task.cmd).then(ver => ({ key: task.key, ver }))));
70
+ const map = {};
71
+ for (const { key, ver } of results) {
72
+ if (ver)
73
+ map[key] = ver;
74
+ }
75
+ return this.buildEnvInfo(map);
76
+ }
77
+ /**
78
+ * 同步采集(阻塞,仅在预加载未完成时首次调用兜底)
79
+ */
80
+ doCollectSync() {
81
+ const map = {};
82
+ map['Python'] = this.execSyncSafe('python3 --version 2>&1 || python --version 2>&1');
83
+ map['pnpm'] = this.execSyncSafe('pnpm --version');
84
+ map['yarn'] = this.execSyncSafe('yarn --version');
85
+ map['npm'] = this.execSyncSafe('npm --version');
86
+ return this.buildEnvInfo(map);
87
+ }
88
+ buildEnvInfo(map) {
89
+ // 组装包管理器信息
90
+ const pmParts = [];
91
+ if (map['pnpm'])
92
+ pmParts.push(`pnpm ${map['pnpm']}`);
93
+ if (map['yarn'])
94
+ pmParts.push(`yarn ${map['yarn']}`);
95
+ if (map['npm'])
96
+ pmParts.push(`npm ${map['npm']}`);
97
+ const packageManager = pmParts.length > 0
98
+ ? (() => {
99
+ const preferred = pmParts.find(f => f.startsWith('pnpm')) || pmParts.find(f => f.startsWith('yarn')) || pmParts[0];
100
+ const others = pmParts.filter(f => f !== preferred);
101
+ return others.length > 0 ? `${preferred} (preferred), ${others.join(', ')}` : preferred;
102
+ })()
103
+ : 'npm (built-in)';
104
+ return {
105
+ os: `${os.type()} ${os.release()} ${os.arch()}`,
106
+ platform: process.platform,
107
+ cpuCores: os.cpus().length,
108
+ memory: `${this.formatBytes(os.totalmem())} total, ${this.formatBytes(os.freemem())} available`,
109
+ disk: 'N/A',
110
+ shell: process.env.SHELL || process.env.COMSPEC || 'unknown',
111
+ hostname: os.hostname(),
112
+ user: os.userInfo().username,
113
+ custom: {
114
+ 'Node.js': process.version,
115
+ 'Python': map['Python'] || 'not available',
116
+ 'Package Manager': packageManager,
117
+ },
118
+ };
119
+ }
120
+ execAsync(cmd) {
121
+ return new Promise(resolve => {
122
+ exec(cmd, { encoding: 'utf-8', timeout: 5000 }, (err, stdout) => {
123
+ resolve(stdout?.trim() || '');
124
+ });
125
+ });
126
+ }
127
+ execSyncSafe(cmd) {
128
+ try {
129
+ return execSync(cmd, { encoding: 'utf-8', timeout: 3000 }).trim();
130
+ }
131
+ catch {
132
+ return '';
133
+ }
134
+ }
135
+ format(info) {
136
+ const lines = [
137
+ `- OS: ${info.os}`,
138
+ `- Platform: ${info.platform}`,
139
+ `- CPU Cores: ${info.cpuCores}`,
140
+ `- Memory: ${info.memory}`,
141
+ `- Disk: ${info.disk}`,
142
+ `- Shell: ${info.shell}`,
143
+ ];
144
+ if (info.hostname)
145
+ lines.push(`- Hostname: ${info.hostname}`);
146
+ if (info.user)
147
+ lines.push(`- User: ${info.user}`);
148
+ if (info.custom) {
149
+ for (const [key, value] of Object.entries(info.custom)) {
150
+ lines.push(`- ${key}: ${value}`);
151
+ }
152
+ }
153
+ return lines.join('\n');
154
+ }
155
+ formatBytes(bytes) {
156
+ const gb = bytes / (1024 * 1024 * 1024);
157
+ if (gb >= 1)
158
+ return `${gb.toFixed(1)}G`;
159
+ const mb = bytes / (1024 * 1024);
160
+ return `${mb.toFixed(0)}M`;
161
+ }
162
+ }
163
+ // ===== 单例 =====
164
+ let instance = null;
165
+ export function getEnvCollector() {
166
+ if (!instance) {
167
+ instance = new NodeEnvCollector();
168
+ }
169
+ return instance;
170
+ }
171
+ /**
172
+ * 预加载环境信息(应用启动时调用)
173
+ */
174
+ export function preloadEnvInfo() {
175
+ getEnvCollector().preload();
176
+ }
177
+ /**
178
+ * 采集环境信息(同步,返回缓存或立即采集)
179
+ */
180
+ export function collectEnvInfo() {
181
+ return getEnvCollector().collectSync();
182
+ }
183
+ /**
184
+ * 重置单例(测试用)
185
+ */
186
+ export function resetEnvCollector() {
187
+ instance = null;
188
+ }
189
+ //# sourceMappingURL=env-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-collector.js","sourceRoot":"","sources":["../../../src/service/env-collector.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,14 @@ export declare class MemoryService {
28
28
  save(key: string, content: string, category?: string, importance?: number, extras?: Partial<Pick<MemoryEntry, 'memoryLayer' | 'sourceSessionId' | 'sourceTimestamp' | 'sceneId' | 'sourceLayer' | 'sourceIds'>>): MemoryEntry;
29
29
  delete(key: string): boolean;
30
30
  recall(query?: string, category?: string, limit?: number): MemoryEntry[];
31
+ /**
32
+ * 获取用于注入 system prompt 的记忆文本。
33
+ *
34
+ * 安全限制:
35
+ * - 单条记忆 content 截断到 MAX_ENTRY_CHARS(默认 2000 字符),防止超大记忆
36
+ * (如误存的工具结果/工作流快照)撑爆 system prompt 导致 TPM 429
37
+ * - 总长度限制 MAX_TOTAL_CHARS(默认 8000 字符),确保 prompt 不会过大
38
+ */
31
39
  getAllForPrompt(maxEntries?: number): string;
32
40
  getStats(): {
33
41
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.service.d.ts","sourceRoot":"","sources":["../../../src/service/memory.service.ts"],"names":[],"mappings":"AAQA,WAAW;AACX,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AASD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAc;gBAEf,OAAO,CAAC,EAAE,MAAM;IAO5B,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAiB,EAC3B,UAAU,GAAE,MAAU,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC,GACnI,WAAW;IAqCd,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAkB5E,eAAe,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAOhD,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAQjE,OAAO,IAAI,MAAM,EAAE;IAInB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE;IAOjD,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,UAAU;CAGnB;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAKhE;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"memory.service.d.ts","sourceRoot":"","sources":["../../../src/service/memory.service.ts"],"names":[],"mappings":"AAQA,WAAW;AACX,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AASD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAc;gBAEf,OAAO,CAAC,EAAE,MAAM;IAO5B,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAiB,EAC3B,UAAU,GAAE,MAAU,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC,GACnI,WAAW;IAwCd,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAkB5E;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAehD,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAQjE,OAAO,IAAI,MAAM,EAAE;IAInB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE;IAOjD,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,UAAU;CAGnB;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAKhE;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -3,7 +3,7 @@
3
3
  // ============================================================
4
4
  import * as fs from 'fs';
5
5
  import * as path from 'path';
6
- import { getProjectDataPath, formatLocalDateTime } from '@cicctencent/agent-core';
6
+ import { getProjectDataPath, formatLocalDateTime, MAX_SAVE_CHARS, MAX_ENTRY_CHARS, MAX_TOTAL_CHARS, truncateStr } from '@cicctencent/agent-core';
7
7
  const DEFAULT_STORE = { entries: [], version: 1 };
8
8
  /**
9
9
  * 长期记忆服务
@@ -19,9 +19,11 @@ export class MemoryService {
19
19
  this.store = this.load();
20
20
  }
21
21
  save(key, content, category = 'custom', importance = 3, extras) {
22
+ // 防止超大内容写入记忆(如误存的工具结果/工作流快照),使用公共截断常量
23
+ const safeContent = truncateStr(content, MAX_SAVE_CHARS);
22
24
  const existing = this.store.entries.find(e => e.key === key);
23
25
  if (existing) {
24
- existing.content = content;
26
+ existing.content = safeContent;
25
27
  existing.category = category;
26
28
  existing.importance = importance;
27
29
  existing.updatedAt = formatLocalDateTime();
@@ -43,7 +45,7 @@ export class MemoryService {
43
45
  const entry = {
44
46
  id: this.generateId(),
45
47
  key,
46
- content,
48
+ content: safeContent,
47
49
  category,
48
50
  importance,
49
51
  createdAt: formatLocalDateTime(),
@@ -84,12 +86,29 @@ export class MemoryService {
84
86
  });
85
87
  return results.slice(0, limit);
86
88
  }
89
+ /**
90
+ * 获取用于注入 system prompt 的记忆文本。
91
+ *
92
+ * 安全限制:
93
+ * - 单条记忆 content 截断到 MAX_ENTRY_CHARS(默认 2000 字符),防止超大记忆
94
+ * (如误存的工具结果/工作流快照)撑爆 system prompt 导致 TPM 429
95
+ * - 总长度限制 MAX_TOTAL_CHARS(默认 8000 字符),确保 prompt 不会过大
96
+ */
87
97
  getAllForPrompt(maxEntries = 10) {
88
98
  const entries = this.recall(undefined, undefined, maxEntries);
89
99
  if (entries.length === 0)
90
100
  return '';
91
- const lines = entries.map(e => `- [${e.category}] ${e.key}: ${e.content}`);
92
- return `## Long-term Memory\n${lines.join('\n')}`;
101
+ const parts = [];
102
+ let totalLen = 0;
103
+ for (const e of entries) {
104
+ const content = truncateStr(e.content || '', MAX_ENTRY_CHARS);
105
+ const line = `- [${e.category}] ${e.key}: ${content}`;
106
+ if (totalLen + line.length > MAX_TOTAL_CHARS)
107
+ break;
108
+ parts.push(line);
109
+ totalLen += line.length;
110
+ }
111
+ return `## Long-term Memory\n${parts.join('\n')}`;
93
112
  }
94
113
  getStats() {
95
114
  const byCategory = {};
@@ -1 +1 @@
1
- {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../src/service/memory.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../src/service/memory.service.ts"],"names":[],"mappings":"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"}