


























@@ -24,7 +24,7 @@ function createServiceContext(params: {
2424config: OpenClawConfig;
2525startupTrace?: PluginServiceStartupTrace;
2626workspaceDir?: string;
27-service?: PluginServiceRegistration;
27+service: PluginServiceRegistration;
2828}): OpenClawPluginServiceContext {
2929const isDiagnosticsExporter =
3030params.service?.pluginId === params.service?.service.id &&
@@ -39,7 +39,14 @@ function createServiceContext(params: {
3939workspaceDir: params.workspaceDir,
4040stateDir: STATE_DIR,
4141logger: createPluginLogger(),
42- ...(params.startupTrace ? { startupTrace: params.startupTrace } : {}),
42+ ...(params.startupTrace
43+ ? {
44+startupTrace: createScopedPluginServiceStartupTrace(
45+params.startupTrace,
46+createPluginServiceTraceName(params.service),
47+),
48+}
49+ : {}),
4350 ...(grantsInternalDiagnostics
4451 ? {
4552internalDiagnostics: {
@@ -51,6 +58,29 @@ function createServiceContext(params: {
5158};
5259}
536061+function createPluginServiceTraceName(entry: PluginServiceRegistration): string {
62+return `sidecars.plugin-services.${encodeStartupTraceSegment(entry.pluginId)}.${encodeStartupTraceSegment(entry.service.id)}`;
63+}
64+65+function createScopedPluginServiceStartupTrace(
66+startupTrace: PluginServiceStartupTrace,
67+prefix: string,
68+): PluginServiceStartupTrace {
69+const scopeName = (name: string) =>
70+`${prefix}.${name
71+ .split(".")
72+ .map((segment) => encodeStartupTraceSegment(segment))
73+ .join(".")}`;
74+return {
75+measure: (name, run) => startupTrace.measure(scopeName(name), run),
76+ ...(startupTrace.detail
77+ ? {
78+detail: (name, metrics) => startupTrace.detail?.(scopeName(name), metrics),
79+}
80+ : {}),
81+};
82+}
83+5484export type PluginServicesHandle = {
5585stop: () => Promise<void>;
5686};
@@ -73,6 +103,7 @@ export async function startPluginServices(params: {
73103let failedCount = 0;
74104for (const entry of params.registry.services) {
75105const service = entry.service;
106+const traceName = createPluginServiceTraceName(entry);
76107const serviceContext = createServiceContext({
77108config: params.config,
78109startupTrace: params.startupTrace,
@@ -81,7 +112,6 @@ export async function startPluginServices(params: {
81112});
82113try {
83114const startService = () => service.start(serviceContext);
84-const traceName = `sidecars.plugin-services.${encodeStartupTraceSegment(entry.pluginId)}.${encodeStartupTraceSegment(service.id)}`;
85115if (params.startupTrace) {
86116await params.startupTrace.measure(traceName, startService);
87117} else {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。