fix: 修复滚动限制 + 自动检测Shell类型

滚动修复:
- scroll() 使用实际渲染行数而非消息数计算 maxOffset
- 解决 /help 等多行输出无法滚动到顶部的问题

Shell 检测:
- Windows 自动检测 PowerShell 7+ > Windows PowerShell > cmd.exe
- 动态调整 BashTool 描述,告知AI使用正确的命令语法
- 系统提示词包含详细的 Shell 使用指南(PowerShell cmdlets)
- header 显示检测到的 Shell 类型
- Unix 优先 bash,回退 sh

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
abel533
2026-04-04 18:33:42 +08:00
co-authored by Copilot
parent e47a3445df
commit a30dfa9ad0
3 changed files with 156 additions and 17 deletions
@@ -1,5 +1,7 @@
package com.claudecode.context;
import com.claudecode.tool.impl.BashTool;
/**
* 系统提示词构建器 —— 对应 claude-code/src/prompts.ts。
* <p>
@@ -66,8 +68,8 @@ public class SystemPromptBuilder {
sb.append("- Working directory: ").append(workDir).append("\n");
sb.append("- OS: ").append(osName).append("\n");
sb.append("- User: ").append(userName).append("\n");
sb.append("- Shell: ").append(System.getenv().getOrDefault("SHELL",
System.getenv().getOrDefault("COMSPEC", "unknown"))).append("\n");
// 使用 BashTool 检测到的 shell 信息(比 COMSPEC/SHELL 环境变量更准确)
sb.append(BashTool.getShellHint());
sb.append("\n");
// 行为准则