feat: show agent activity and simplify starter view

This commit is contained in:
Jesse_Chen
2026-07-22 15:51:54 +08:00
parent 0329f48ba7
commit c07eab2941
9 changed files with 62 additions and 60 deletions
@@ -0,0 +1,25 @@
import { ThinkingOrb, type OrbState } from "thinking-orbs";
const labels = {
working: "正在处理任务…",
searching: "正在搜索相关信息…",
solving: "正在分析问题…",
listening: "正在聆听…",
composing: "正在组织回答…",
shaping: "正在生成结果…",
} as const satisfies Record<OrbState, string>;
export function AgentActivityStatus({
state,
label = labels[state],
}: Readonly<{
state: OrbState;
label?: string;
}>) {
return (
<div className="agent-activity-status" role="status">
<ThinkingOrb aria-hidden="true" state={state} size={20} />
<span>{label}</span>
</div>
);
}
+6 -2
View File
@@ -1,3 +1,4 @@
import { AgentActivityStatus } from "@/components/agent-activity-status";
import { ChatMessageContent } from "@/components/chat-message-content";
import type { ChatMessageView } from "@/lib/chat-message-view";
@@ -22,8 +23,11 @@ export function ChatMessageRow({ message }: { readonly message: ChatMessageView
<div className="message-bubble">
{message.role === "assistant" ? (
message.state === "thinking"
? <div className="thinking"><i /><i /><i /></div>
: <ChatMessageContent text={message.text} />
? <AgentActivityStatus state="working" label="正在核对星盘信息…" />
: <>
{message.state === "streaming" && <AgentActivityStatus state="composing" />}
<ChatMessageContent text={message.text} />
</>
) : <p>{message.text}</p>}
</div>
</div>
@@ -1,23 +0,0 @@
export type ParameterFreezeRow = {
label: string;
value: string;
};
export function ParameterFreezePanel({ rows }: { readonly rows: readonly ParameterFreezeRow[] }) {
return (
<section className="parameter-freeze-panel" aria-label="当前排盘参数冻结">
<div>
<b></b>
<span></span>
</div>
<dl>
{rows.map((row) => (
<div key={row.label}>
<dt>{row.label}</dt>
<dd>{row.value}</dd>
</div>
))}
</dl>
</section>
);
}