MCPcopy Create free account
hub / github.com/echoVic/blade-code / formatContextForPrompt

Function formatContextForPrompt

src/context/utils.ts:14–95  ·  view source on GitHub ↗
(
  context: ContextData,
  compressed?: CompressedContext,
  options: {
    includeSystemInfo?: boolean;
    includeToolHistory?: boolean;
    includeWorkspaceInfo?: boolean;
    maxRecentMessages?: number;
  } = {}
)

Source from the content-addressed store, hash-verified

12 * 将上下文数据格式化为适合 Prompt 的字符串
13 */
14export function formatContextForPrompt(
15 context: ContextData,
16 compressed?: CompressedContext,
17 options: {
18 includeSystemInfo?: boolean;
19 includeToolHistory?: boolean;
20 includeWorkspaceInfo?: boolean;
21 maxRecentMessages?: number;
22 } = {}
23): string {
24 const {
25 includeSystemInfo = true,
26 includeToolHistory = true,
27 includeWorkspaceInfo = true,
28 maxRecentMessages = 20,
29 } = options;
30
31 const sections: string[] = [];
32
33 // 系统信息
34 if (includeSystemInfo) {
35 const systemInfo = `## 系统信息
36角色: ${context.layers.system.role}
37能力: ${context.layers.system.capabilities.join('、')}
38可用工具: ${context.layers.system.tools.join('、')}`;
39 sections.push(systemInfo);
40 }
41
42 // 会话信息
43 const sessionInfo = `## 会话信息
44会话ID: ${context.layers.session.sessionId}
45开始时间: ${new Date(context.layers.session.startTime).toLocaleString()}`;
46 sections.push(sessionInfo);
47
48 // 工作空间信息
49 if (includeWorkspaceInfo && context.layers.workspace.projectPath) {
50 const workspaceInfo = `## 工作空间
51项目路径: ${context.layers.workspace.projectPath}
52当前文件: ${context.layers.workspace.currentFiles.length}个
53最近文件: ${context.layers.workspace.recentFiles.slice(0, 5).join('、')}`;
54 sections.push(workspaceInfo);
55 }
56
57 // 对话历史
58 if (compressed) {
59 // 使用压缩后的上下文
60 const conversationInfo = `## 对话历史摘要
61${compressed.summary}
62
63### 关键要点
64${compressed.keyPoints.map(point => `- ${point}`).join('\n')}
65
66### 最近消息
67${formatMessages(compressed.recentMessages, maxRecentMessages)}`;
68 sections.push(conversationInfo);
69
70 // 工具使用摘要
71 if (includeToolHistory && compressed.toolSummary) {

Callers 1

getContextForPromptMethod · 0.85

Calls 2

formatMessagesFunction · 0.85
formatToolHistoryFunction · 0.85

Tested by

no test coverage detected