mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 16:25:51 +00:00
* feat: langfuse tracing 增加 thinking 参数记录 在 recordLLMObservation 中添加 thinking 配置(type/budgetTokens), 所有 provider(claude/gemini/openai)及 tokenEstimation、sideQuery 调用处同步传递 thinking 信息,便于 Langfuse 面板观察 thinking 使用情况。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: langfuse tracing 兼容 budget_tokens snake_case 格式 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: 统一传递完整 thinking 配置而非仅 thinkingType Langfuse 追踪直接传递整个 thinking 对象(含 type 和 budget_tokens), Analytics 日志同步补充 thinkingBudgetTokens 字段,logAPIQuery 改为 接收 ThinkingConfig 类型参数。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat: 省略旧消息的代码 diff 展示,仅保留最新消息的完整 diff * fix: Edit 工具增加 Tab/空格规范化匹配,修复中文和缩进文件编辑失败 Read 工具输出将 Tab 渲染为空格,用户复制后 Edit 工具无法匹配。 在 findActualString 中增加 Tab→空格规范化回退匹配,并精确映射回原始文件位置。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs: README 添加安装/更新失败的解决方案提示 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,8 @@ export type Props = {
|
||||
lastThinkingBlockId?: string | null
|
||||
/** UUID of the latest user bash output message (for auto-expanding) */
|
||||
latestBashOutputUUID?: string | null
|
||||
/** Whether to collapse diff display for this message */
|
||||
shouldCollapseDiffs?: boolean
|
||||
}
|
||||
|
||||
function MessageImpl({
|
||||
@@ -99,6 +101,7 @@ function MessageImpl({
|
||||
isUserContinuation = false,
|
||||
lastThinkingBlockId,
|
||||
latestBashOutputUUID,
|
||||
shouldCollapseDiffs,
|
||||
}: Props): React.ReactNode {
|
||||
switch (message.type) {
|
||||
case 'attachment':
|
||||
@@ -181,6 +184,7 @@ function MessageImpl({
|
||||
isUserContinuation={isUserContinuation}
|
||||
lookups={lookups}
|
||||
isTranscriptMode={isTranscriptMode}
|
||||
shouldCollapseDiffs={shouldCollapseDiffs}
|
||||
/>
|
||||
))}
|
||||
</Box>
|
||||
@@ -293,6 +297,7 @@ function UserMessage({
|
||||
isUserContinuation,
|
||||
lookups,
|
||||
isTranscriptMode,
|
||||
shouldCollapseDiffs,
|
||||
}: {
|
||||
message: NormalizedUserMessage
|
||||
addMargin: boolean
|
||||
@@ -309,6 +314,7 @@ function UserMessage({
|
||||
isUserContinuation: boolean
|
||||
lookups: ReturnType<typeof buildMessageLookups>
|
||||
isTranscriptMode: boolean
|
||||
shouldCollapseDiffs?: boolean
|
||||
}): React.ReactNode {
|
||||
const { columns } = useTerminalSize()
|
||||
switch (param.type) {
|
||||
@@ -344,6 +350,7 @@ function UserMessage({
|
||||
verbose={verbose}
|
||||
width={columns - 5}
|
||||
isTranscriptMode={isTranscriptMode}
|
||||
shouldCollapseDiffs={shouldCollapseDiffs}
|
||||
/>
|
||||
)
|
||||
default:
|
||||
|
||||
@@ -55,6 +55,7 @@ export type Props = {
|
||||
columns: number
|
||||
isLoading: boolean
|
||||
lookups: ReturnType<typeof buildMessageLookups>
|
||||
shouldCollapseDiffs?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,6 +142,7 @@ function MessageRowImpl({
|
||||
columns,
|
||||
isLoading,
|
||||
lookups,
|
||||
shouldCollapseDiffs,
|
||||
}: Props): React.ReactNode {
|
||||
const isTranscriptMode = screen === 'transcript'
|
||||
const isGrouped = msg.type === 'grouped_tool_use'
|
||||
@@ -221,6 +223,7 @@ function MessageRowImpl({
|
||||
isUserContinuation={isUserContinuation}
|
||||
lastThinkingBlockId={lastThinkingBlockId}
|
||||
latestBashOutputUUID={latestBashOutputUUID}
|
||||
shouldCollapseDiffs={shouldCollapseDiffs}
|
||||
/>
|
||||
)
|
||||
// OffscreenFreeze: the outer React.memo already bails for static messages,
|
||||
|
||||
@@ -814,6 +814,12 @@ const MessagesImpl = ({
|
||||
streamingToolUseIDs,
|
||||
))
|
||||
|
||||
// Collapse diffs for messages beyond the latest N messages.
|
||||
// verbose (ctrl+o) overrides and always shows full diffs.
|
||||
const DIFF_COLLAPSE_DISTANCE = 0
|
||||
const shouldCollapseDiffs =
|
||||
renderableMessages.length - 1 - index > DIFF_COLLAPSE_DISTANCE
|
||||
|
||||
const k = messageKey(msg)
|
||||
const row = (
|
||||
<MessageRow
|
||||
@@ -838,6 +844,7 @@ const MessagesImpl = ({
|
||||
columns={columns}
|
||||
isLoading={isLoading}
|
||||
lookups={lookups}
|
||||
shouldCollapseDiffs={shouldCollapseDiffs}
|
||||
/>
|
||||
)
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ type Props = {
|
||||
verbose: boolean
|
||||
width: number | string
|
||||
isTranscriptMode?: boolean
|
||||
shouldCollapseDiffs?: boolean
|
||||
}
|
||||
|
||||
export function UserToolResultMessage({
|
||||
@@ -39,6 +40,7 @@ export function UserToolResultMessage({
|
||||
verbose,
|
||||
width,
|
||||
isTranscriptMode,
|
||||
shouldCollapseDiffs,
|
||||
}: Props): React.ReactNode {
|
||||
const toolUse = useGetToolFromMessages(param.tool_use_id, tools, lookups)
|
||||
if (!toolUse) {
|
||||
@@ -96,6 +98,7 @@ export function UserToolResultMessage({
|
||||
verbose={verbose}
|
||||
width={width}
|
||||
isTranscriptMode={isTranscriptMode}
|
||||
shouldCollapseDiffs={shouldCollapseDiffs}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ type Props = {
|
||||
verbose: boolean
|
||||
width: number | string
|
||||
isTranscriptMode?: boolean
|
||||
shouldCollapseDiffs?: boolean
|
||||
}
|
||||
|
||||
export function UserToolSuccessMessage({
|
||||
@@ -46,6 +47,7 @@ export function UserToolSuccessMessage({
|
||||
verbose,
|
||||
width,
|
||||
isTranscriptMode,
|
||||
shouldCollapseDiffs,
|
||||
}: Props): React.ReactNode {
|
||||
const [theme] = useTheme()
|
||||
// Hook stays inside feature() ternary so external builds don't pay a
|
||||
@@ -83,12 +85,16 @@ export function UserToolSuccessMessage({
|
||||
}
|
||||
const toolResult = parsedOutput?.data ?? message.toolUseResult
|
||||
|
||||
// Collapse diff display for old messages (verbose/ctrl+o overrides)
|
||||
const effectiveStyle =
|
||||
shouldCollapseDiffs && !verbose ? 'condensed' : style
|
||||
|
||||
const renderedMessage =
|
||||
tool.renderToolResultMessage?.(
|
||||
toolResult as never,
|
||||
filterToolProgressMessages(progressMessagesForMessage),
|
||||
{
|
||||
style,
|
||||
style: effectiveStyle,
|
||||
theme,
|
||||
tools,
|
||||
verbose,
|
||||
|
||||
Reference in New Issue
Block a user