mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-05-22 11:13:51 +00:00
refactor(telemetry): update session event fields to match current config
- Remove deprecated fields: embedding_model, api_key_enabled, vertex_ai_enabled, log_prompts_enabled - Add new fields: truncate_tool_output_threshold, truncate_tool_output_lines, hooks, ide_enabled, interactive_shell_enabled This aligns telemetry data with the current CLI configuration options. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
fed08cb1dd
commit
6e0cf6541d
5 changed files with 53 additions and 47 deletions
|
|
@ -139,16 +139,16 @@ Logs are timestamped records of specific events. The following events are logged
|
|||
- `qwen-code.config`: This event occurs once at startup with the CLI's configuration.
|
||||
- **Attributes**:
|
||||
- `model` (string)
|
||||
- `embedding_model` (string)
|
||||
- `sandbox_enabled` (boolean)
|
||||
- `core_tools_enabled` (string)
|
||||
- `approval_mode` (string)
|
||||
- `api_key_enabled` (boolean)
|
||||
- `vertex_ai_enabled` (boolean)
|
||||
- `code_assist_enabled` (boolean)
|
||||
- `log_prompts_enabled` (boolean)
|
||||
- `file_filtering_respect_git_ignore` (boolean)
|
||||
- `debug_mode` (boolean)
|
||||
- `truncate_tool_output_threshold` (number)
|
||||
- `truncate_tool_output_lines` (number)
|
||||
- `hooks` (string, comma-separated hook event types, omitted if hooks disabled)
|
||||
- `ide_enabled` (boolean)
|
||||
- `interactive_shell_enabled` (boolean)
|
||||
- `mcp_servers` (string)
|
||||
- `output_format` (string: "text" or "json")
|
||||
|
||||
|
|
|
|||
|
|
@ -148,15 +148,11 @@ describe('loggers', () => {
|
|||
const mockConfig = {
|
||||
getSessionId: () => 'test-session-id',
|
||||
getModel: () => 'test-model',
|
||||
getEmbeddingModel: () => 'test-embedding-model',
|
||||
getSandbox: () => true,
|
||||
getCoreTools: () => ['ls', 'read-file'],
|
||||
getApprovalMode: () => 'default',
|
||||
getContentGeneratorConfig: () => ({
|
||||
model: 'test-model',
|
||||
apiKey: 'test-api-key',
|
||||
authType: AuthType.USE_VERTEX_AI,
|
||||
}),
|
||||
getTruncateToolOutputThreshold: () => 25000,
|
||||
getTruncateToolOutputLines: () => 1000,
|
||||
getTelemetryEnabled: () => true,
|
||||
getUsageStatisticsEnabled: () => true,
|
||||
getTelemetryLogPromptsEnabled: () => true,
|
||||
|
|
@ -174,6 +170,9 @@ describe('loggers', () => {
|
|||
getOutputFormat: () => OutputFormat.JSON,
|
||||
getToolRegistry: () => undefined,
|
||||
getChatRecordingService: () => undefined,
|
||||
getHookSystem: () => undefined,
|
||||
getIdeMode: () => false,
|
||||
getShouldUseNodePtyShell: () => true,
|
||||
} as unknown as Config;
|
||||
|
||||
const startSessionEvent = new StartSessionEvent(mockConfig);
|
||||
|
|
@ -186,19 +185,20 @@ describe('loggers', () => {
|
|||
'event.name': EVENT_CLI_CONFIG,
|
||||
'event.timestamp': '2025-01-01T00:00:00.000Z',
|
||||
model: 'test-model',
|
||||
embedding_model: 'test-embedding-model',
|
||||
sandbox_enabled: true,
|
||||
core_tools_enabled: 'ls,read-file',
|
||||
approval_mode: 'default',
|
||||
api_key_enabled: true,
|
||||
vertex_ai_enabled: true,
|
||||
log_user_prompts_enabled: true,
|
||||
truncate_tool_output_threshold: 25000,
|
||||
truncate_tool_output_lines: 1000,
|
||||
file_filtering_respect_git_ignore: true,
|
||||
debug_mode: true,
|
||||
mcp_servers: 'test-server',
|
||||
mcp_servers_count: 1,
|
||||
mcp_tools: undefined,
|
||||
mcp_tools_count: undefined,
|
||||
hooks: undefined,
|
||||
ide_enabled: false,
|
||||
interactive_shell_enabled: true,
|
||||
output_format: 'json',
|
||||
skills: undefined,
|
||||
subagents: undefined,
|
||||
|
|
|
|||
|
|
@ -115,19 +115,20 @@ export function logStartSession(
|
|||
'event.name': EVENT_CLI_CONFIG,
|
||||
'event.timestamp': new Date().toISOString(),
|
||||
model: event.model,
|
||||
embedding_model: event.embedding_model,
|
||||
sandbox_enabled: event.sandbox_enabled,
|
||||
core_tools_enabled: event.core_tools_enabled,
|
||||
approval_mode: event.approval_mode,
|
||||
api_key_enabled: event.api_key_enabled,
|
||||
vertex_ai_enabled: event.vertex_ai_enabled,
|
||||
log_user_prompts_enabled: event.telemetry_log_user_prompts_enabled,
|
||||
file_filtering_respect_git_ignore: event.file_filtering_respect_git_ignore,
|
||||
debug_mode: event.debug_enabled,
|
||||
truncate_tool_output_threshold: event.truncate_tool_output_threshold,
|
||||
truncate_tool_output_lines: event.truncate_tool_output_lines,
|
||||
mcp_servers: event.mcp_servers,
|
||||
mcp_servers_count: event.mcp_servers_count,
|
||||
mcp_tools: event.mcp_tools,
|
||||
mcp_tools_count: event.mcp_tools_count,
|
||||
hooks: event.hooks,
|
||||
ide_enabled: event.ide_enabled,
|
||||
interactive_shell_enabled: event.interactive_shell_enabled,
|
||||
output_format: event.output_format,
|
||||
skills: event.skills,
|
||||
subagents: event.subagents,
|
||||
|
|
|
|||
|
|
@ -415,20 +415,20 @@ export class QwenLogger {
|
|||
|
||||
const applicationEvent = this.createViewEvent('session', 'session_start', {
|
||||
properties: {
|
||||
model: event.model,
|
||||
approval_mode: event.approval_mode,
|
||||
embedding_model: event.embedding_model,
|
||||
sandbox_enabled: event.sandbox_enabled,
|
||||
core_tools_enabled: event.core_tools_enabled,
|
||||
api_key_enabled: event.api_key_enabled,
|
||||
vertex_ai_enabled: event.vertex_ai_enabled,
|
||||
debug_enabled: event.debug_enabled,
|
||||
hooks: event.hooks,
|
||||
ide_enabled: event.ide_enabled,
|
||||
interactive_shell_enabled: event.interactive_shell_enabled,
|
||||
mcp_servers: event.mcp_servers,
|
||||
telemetry_enabled: event.telemetry_enabled,
|
||||
telemetry_log_user_prompts_enabled:
|
||||
event.telemetry_log_user_prompts_enabled,
|
||||
model: event.model,
|
||||
sandbox_enabled: event.sandbox_enabled,
|
||||
skills: event.skills,
|
||||
subagents: event.subagents,
|
||||
telemetry_enabled: event.telemetry_enabled,
|
||||
truncate_tool_output_lines: event.truncate_tool_output_lines,
|
||||
truncate_tool_output_threshold: event.truncate_tool_output_threshold,
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import type { ApprovalMode } from '../config/config.js';
|
|||
import type { CompletedToolCall } from '../core/coreToolScheduler.js';
|
||||
import { DiscoveredMCPTool } from '../tools/mcp-tool.js';
|
||||
import type { FileDiff } from '../tools/tools.js';
|
||||
import { AuthType } from '../core/contentGenerator.js';
|
||||
import type { AuthType } from '../core/contentGenerator.js';
|
||||
import {
|
||||
getDecisionFromOutcome,
|
||||
ToolCallDecision,
|
||||
|
|
@ -35,55 +35,60 @@ export class StartSessionEvent implements BaseTelemetryEvent {
|
|||
'event.timestamp': string;
|
||||
session_id: string;
|
||||
model: string;
|
||||
embedding_model: string;
|
||||
sandbox_enabled: boolean;
|
||||
core_tools_enabled: string;
|
||||
core_tools_enabled?: string;
|
||||
approval_mode: string;
|
||||
api_key_enabled: boolean;
|
||||
vertex_ai_enabled: boolean;
|
||||
debug_enabled: boolean;
|
||||
truncate_tool_output_threshold: number;
|
||||
truncate_tool_output_lines: number;
|
||||
mcp_servers: string;
|
||||
telemetry_enabled: boolean;
|
||||
telemetry_log_user_prompts_enabled: boolean;
|
||||
file_filtering_respect_git_ignore: boolean;
|
||||
mcp_servers_count: number;
|
||||
mcp_tools_count?: number;
|
||||
mcp_tools?: string;
|
||||
output_format: OutputFormat;
|
||||
hooks?: string;
|
||||
ide_enabled: boolean;
|
||||
interactive_shell_enabled: boolean;
|
||||
skills?: string;
|
||||
subagents?: string;
|
||||
|
||||
constructor(config: Config) {
|
||||
const generatorConfig = config.getContentGeneratorConfig();
|
||||
const mcpServers = config.getMcpServers();
|
||||
const toolRegistry = config.getToolRegistry();
|
||||
|
||||
let useGemini = false;
|
||||
let useVertex = false;
|
||||
if (generatorConfig && generatorConfig.authType) {
|
||||
useGemini = generatorConfig.authType === AuthType.USE_GEMINI;
|
||||
useVertex = generatorConfig.authType === AuthType.USE_VERTEX_AI;
|
||||
}
|
||||
|
||||
this['event.name'] = 'cli_config';
|
||||
this.session_id = config.getSessionId();
|
||||
this.model = config.getModel();
|
||||
this.embedding_model = config.getEmbeddingModel();
|
||||
this.sandbox_enabled =
|
||||
typeof config.getSandbox() === 'string' || !!config.getSandbox();
|
||||
this.core_tools_enabled = (config.getCoreTools() ?? []).join(',');
|
||||
const coreTools = (config.getCoreTools() ?? []).join(',');
|
||||
if (coreTools) {
|
||||
this.core_tools_enabled = coreTools;
|
||||
}
|
||||
this.approval_mode = config.getApprovalMode();
|
||||
this.api_key_enabled = useGemini || useVertex;
|
||||
this.vertex_ai_enabled = useVertex;
|
||||
this.debug_enabled = config.getDebugMode();
|
||||
this.truncate_tool_output_threshold =
|
||||
config.getTruncateToolOutputThreshold();
|
||||
this.truncate_tool_output_lines = config.getTruncateToolOutputLines();
|
||||
this.mcp_servers = mcpServers ? Object.keys(mcpServers).join(',') : '';
|
||||
this.telemetry_enabled = config.getTelemetryEnabled();
|
||||
this.telemetry_log_user_prompts_enabled =
|
||||
config.getTelemetryLogPromptsEnabled();
|
||||
this.file_filtering_respect_git_ignore =
|
||||
config.getFileFilteringRespectGitIgnore();
|
||||
this.mcp_servers_count = mcpServers ? Object.keys(mcpServers).length : 0;
|
||||
this.output_format = config.getOutputFormat();
|
||||
this.ide_enabled = config.getIdeMode();
|
||||
this.interactive_shell_enabled = config.getShouldUseNodePtyShell();
|
||||
|
||||
const hookSystem = config.getHookSystem();
|
||||
if (hookSystem) {
|
||||
const allHooks = hookSystem.getAllHooks();
|
||||
const uniqueEventNames = [...new Set(allHooks.map((h) => h.eventName))];
|
||||
if (uniqueEventNames.length > 0) {
|
||||
this.hooks = uniqueEventNames.join(',');
|
||||
}
|
||||
}
|
||||
|
||||
if (toolRegistry) {
|
||||
const mcpTools = toolRegistry
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue