Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
Ftt_Common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Ftt_Common
Commits
bf290b43
Commit
bf290b43
authored
Oct 09, 2026
by
段廷瑞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 统计看板显示遮挡优化
parent
fcf80918
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
25 deletions
+29
-25
Tools.Agent.dll
AppHome/Tools.Agent.dll
+0
-0
AgentSettingsForm.cs
Tools.Agent/Forms/AgentSettingsForm.cs
+29
-25
No files found.
AppHome/Tools.Agent.dll
View file @
bf290b43
No preview for this file type
Tools.Agent/Forms/AgentSettingsForm.cs
View file @
bf290b43
...
@@ -264,12 +264,12 @@ namespace Tools.MyAgent.Forms
...
@@ -264,12 +264,12 @@ namespace Tools.MyAgent.Forms
{
{
Text
=
"运行统计(进程实时 + 近 7 天落盘,重启不丢)"
,
Text
=
"运行统计(进程实时 + 近 7 天落盘,重启不丢)"
,
Location
=
new
Point
(
8
,
8
),
Location
=
new
Point
(
8
,
8
),
Size
=
new
Size
(
596
,
172
),
Size
=
new
Size
(
596
,
200
),
};
};
_lblDashKpi
=
new
Label
_lblDashKpi
=
new
Label
{
{
Location
=
new
Point
(
16
,
26
),
Location
=
new
Point
(
16
,
26
),
Size
=
new
Size
(
564
,
1
38
),
Size
=
new
Size
(
564
,
1
66
),
AutoSize
=
false
,
AutoSize
=
false
,
Font
=
new
Font
(
"Consolas"
,
9.5F
),
Font
=
new
Font
(
"Consolas"
,
9.5F
),
UseMnemonic
=
false
,
UseMnemonic
=
false
,
...
@@ -279,7 +279,7 @@ namespace Tools.MyAgent.Forms
...
@@ -279,7 +279,7 @@ namespace Tools.MyAgent.Forms
var
grpOpen
=
new
GroupBox
var
grpOpen
=
new
GroupBox
{
{
Text
=
"完整看板"
,
Text
=
"完整看板"
,
Location
=
new
Point
(
8
,
188
),
Location
=
new
Point
(
8
,
216
),
Size
=
new
Size
(
596
,
116
),
Size
=
new
Size
(
596
,
116
),
};
};
_btnOpenDashboard
=
new
Button
_btnOpenDashboard
=
new
Button
...
@@ -343,27 +343,32 @@ namespace Tools.MyAgent.Forms
...
@@ -343,27 +343,32 @@ namespace Tools.MyAgent.Forms
{
{
var
st
=
Tools
.
MyAgent
.
AgentTelemetry
.
Snapshot
();
var
st
=
Tools
.
MyAgent
.
AgentTelemetry
.
Snapshot
();
var
sb
=
new
System
.
Text
.
StringBuilder
();
var
sb
=
new
System
.
Text
.
StringBuilder
();
sb
.
Append
(
"本进程累计(实时):\n"
);
// 紧凑排版(每段 2~3 行):加"近 7 天"段后原逐行排版超出 Label 高度,末行被裁(真机反馈 2026-10-09)
sb
.
Append
(
string
.
Format
(
" 轮数 {0}(成功 {1} · 失败 {2} · 取消 {3})\n"
,
sb
.
Append
(
"本进程累计:"
);
sb
.
Append
(
string
.
Format
(
"轮数 {0}(成功 {1} · 失败 {2} · 取消 {3})\n"
,
st
.
Runs
,
st
.
Success
,
st
.
Errors
,
st
.
Cancels
));
st
.
Runs
,
st
.
Success
,
st
.
Errors
,
st
.
Cancels
));
if
(
st
.
Duration
.
Count
>
0
)
sb
.
Append
(
" 耗时 P50 "
+
(
st
.
Duration
.
Count
>
0
?
st
.
Duration
.
P50
.
ToString
()
:
"—"
)
sb
.
Append
(
string
.
Format
(
" 耗时 P50 {0}ms · P95 {1}ms · 最大 {2}ms\n"
,
+
" · P95 "
+
(
st
.
Duration
.
Count
>
0
?
st
.
Duration
.
P95
.
ToString
()
:
"—"
)
st
.
Duration
.
P50
,
st
.
Duration
.
P95
,
st
.
Duration
.
Max
)
);
+
" · 最大 "
+
(
st
.
Duration
.
Count
>
0
?
st
.
Duration
.
Max
.
ToString
()
:
"—"
)
+
" ms"
);
if
(
st
.
Ttfb
.
Count
>
0
)
if
(
st
.
Ttfb
.
Count
>
0
)
sb
.
Append
(
string
.
Format
(
" 首包 P50 {0}ms · P95 {1}ms\n"
,
st
.
Ttfb
.
P50
,
st
.
Ttfb
.
P95
));
sb
.
Append
(
string
.
Format
(
" · 首包 P50 {0} / P95 {1} ms"
,
st
.
Ttfb
.
P50
,
st
.
Ttfb
.
P95
));
sb
.
Append
(
string
.
Format
(
" 工具 {0} 次 · LLM {1} 次\n"
,
st
.
ToolCalls
,
st
.
LlmCalls
));
sb
.
Append
(
"\n"
);
sb
.
Append
(
string
.
Format
(
" 工具 {0} 次 · LLM {1} 次"
,
st
.
ToolCalls
,
st
.
LlmCalls
));
long
tokens
=
st
.
PromptTokens
+
st
.
CompletionTokens
;
long
tokens
=
st
.
PromptTokens
+
st
.
CompletionTokens
;
if
(
tokens
>
0
)
sb
.
Append
(
string
.
Format
(
" Token {0} + {1}\n"
,
st
.
PromptTokens
,
st
.
CompletionTokens
));
if
(
tokens
>
0
)
sb
.
Append
(
string
.
Format
(
" · Token {0}+{1}"
,
st
.
PromptTokens
,
st
.
CompletionTokens
));
if
(
st
.
Cost
>
0
)
sb
.
Append
(
" 费用 "
+
Tools
.
MyAgent
.
CostEstimator
.
Format
(
st
.
Cost
)
+
"\n"
);
if
(
st
.
Cost
>
0
)
sb
.
Append
(
" · 费用 "
+
Tools
.
MyAgent
.
CostEstimator
.
Format
(
st
.
Cost
));
if
(
st
.
Dropped
>
0
)
sb
.
Append
(
" ⚠ 丢弃 "
+
st
.
Dropped
+
" 条(采集跟不上)\n"
);
if
(
st
.
Dropped
>
0
)
sb
.
Append
(
string
.
Format
(
" · ⚠丢弃 {0} 条"
,
st
.
Dropped
));
sb
.
Append
(
"\n"
);
// 近 7 天历史(runs_*.jsonl 落盘,重启不丢;与 /admin 完整看板同源)
// 近 7 天历史(runs_*.jsonl 落盘,重启不丢;与 /admin 完整看板同源)
sb
.
Append
(
"\n近 7 天历史(落盘持久化):
\n
"
);
sb
.
Append
(
"\n近 7 天历史(落盘持久化):"
);
try
try
{
{
var
rows
=
new
Tools
.
MyAgent
.
TelemetryStore
().
LoadRuns
();
var
rows
=
new
Tools
.
MyAgent
.
TelemetryStore
().
LoadRuns
();
if
(
rows
.
Length
==
0
)
if
(
rows
.
Length
==
0
)
sb
.
Append
(
" (暂无落盘记录;完成问答后写入 Logs\\runs_*.jsonl)\n"
);
{
sb
.
Append
(
"暂无落盘记录(完成问答后写入 Logs\\runs_*.jsonl)\n"
);
}
else
else
{
{
int
ok
=
0
,
err
=
0
,
cancel
=
0
;
int
ok
=
0
,
err
=
0
,
cancel
=
0
;
...
@@ -380,19 +385,18 @@ namespace Tools.MyAgent.Forms
...
@@ -380,19 +385,18 @@ namespace Tools.MyAgent.Forms
if
(
r
.
TotalMs
>
0
)
ms
.
Add
(
r
.
TotalMs
);
if
(
r
.
TotalMs
>
0
)
ms
.
Add
(
r
.
TotalMs
);
}
}
ms
.
Sort
();
ms
.
Sort
();
sb
.
Append
(
string
.
Format
(
"
轮数 {0}(成功 {1} · 失败 {2} · 取消 {3})\n"
,
rows
.
Length
,
ok
,
err
,
cancel
));
sb
.
Append
(
string
.
Format
(
"轮数 {0}(成功 {1} · 失败 {2} · 取消 {3})\n"
,
rows
.
Length
,
ok
,
err
,
cancel
));
if
(
ms
.
Count
>
0
)
sb
.
Append
(
" 耗时 P50 "
+
(
ms
.
Count
>
0
?
Pct
(
ms
,
0.5
).
ToString
()
:
"—"
)
sb
.
Append
(
string
.
Format
(
" 耗时 P50 {0}ms · P95 {1}ms · 最大 {2}ms\n"
,
+
" · P95 "
+
(
ms
.
Count
>
0
?
Pct
(
ms
,
0.95
).
ToString
()
:
"—"
)
Pct
(
ms
,
0.5
),
Pct
(
ms
,
0.95
),
ms
[
ms
.
Count
-
1
])
);
+
" · 最大 "
+
(
ms
.
Count
>
0
?
ms
[
ms
.
Count
-
1
].
ToString
()
:
"—"
)
+
" ms"
);
if
(
tok
>
0
)
sb
.
Append
(
"
Token "
+
tok
+
"\n"
);
if
(
tok
>
0
)
sb
.
Append
(
"
· Token "
+
tok
);
if
(
cost
>
0
)
sb
.
Append
(
"
费用 "
+
Tools
.
MyAgent
.
CostEstimator
.
Format
(
cost
)
+
"\n"
);
if
(
cost
>
0
)
sb
.
Append
(
"
· 费用 "
+
Tools
.
MyAgent
.
CostEstimator
.
Format
(
cost
)
);
if
(
rows
.
Length
>
0
)
sb
.
Append
(
"\n"
);
sb
.
Append
(
" 最新:"
+
rows
[
0
].
StartedAt
.
ToString
(
"MM-dd HH:mm"
)
+
"("
+
rows
[
0
].
Outcome
+
")\n"
);
sb
.
Append
(
" 最新:"
+
rows
[
0
].
StartedAt
.
ToString
(
"MM-dd HH:mm"
)
+
"("
+
rows
[
0
].
Outcome
+
")\n"
);
}
}
}
}
catch
{
sb
.
Append
(
"
(历史记录读取失败)
\n"
);
}
catch
{
sb
.
Append
(
"
读取失败
\n"
);
}
if
(
st
.
Runs
==
0
)
sb
.
Append
(
"\n(本进程尚未完成任何一轮回答;多日历史见「打开完整看板」)\n"
);
_lblDashKpi
.
Text
=
sb
.
ToString
();
_lblDashKpi
.
Text
=
sb
.
ToString
();
}
}
catch
catch
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment