feat(shell): enable PTY by default and various enhancements

### Shell & Interactive Terminal Improvements
- PTY shell is now enabled by default instead of disabled
- Improved shell output rendering, process termination, and added fallback warning
- Background commands now properly capture subprocess PIDs on non-Windows

### Coding Plan Improvements
- Simplified auth message, added /model tip, improved system info display
- Reordered model list to prioritize glm-5, kimi-k2.5, MiniMax-M2.5
- Model selection is now preserved when updating if the model still exists

### Other Changes
- Added shared symlink utility; debug logs now have latest alias
- Unknown settings warnings go to debug log instead of user-facing warnings
- Fixed subagent confirmation state detection
- Removed debug UI from AgentCreationWizard

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
tanzhenxin 2026-03-05 11:28:13 +08:00
parent 991ae9febc
commit b48e3caa75
31 changed files with 729 additions and 314 deletions

View file

@ -38,6 +38,7 @@ export interface SystemInfo {
export interface ExtendedSystemInfo extends SystemInfo {
memoryUsage: string;
baseUrl?: string;
apiKeyEnvKey?: string;
gitCommit?: string;
proxy?: string;
}
@ -154,12 +155,14 @@ export async function getExtendedSystemInfo(
// For bug reports, use sandbox name without prefix
const sandboxEnv = getSandboxEnv(true);
// Get base URL if using OpenAI auth
const baseUrl =
// Get base URL and apiKeyEnvKey if using OpenAI or Anthropic auth
const contentGeneratorConfig =
baseInfo.selectedAuthType === AuthType.USE_OPENAI ||
baseInfo.selectedAuthType === AuthType.USE_ANTHROPIC
? context.services.config?.getContentGeneratorConfig()?.baseUrl
? context.services.config?.getContentGeneratorConfig()
: undefined;
const baseUrl = contentGeneratorConfig?.baseUrl;
const apiKeyEnvKey = contentGeneratorConfig?.apiKeyEnvKey;
// Get git commit info
const gitCommit =
@ -172,6 +175,7 @@ export async function getExtendedSystemInfo(
sandboxEnv,
memoryUsage,
baseUrl,
apiKeyEnvKey,
gitCommit,
};
}

View file

@ -6,6 +6,7 @@
import type { ExtendedSystemInfo } from './systemInfo.js';
import { t } from '../i18n/index.js';
import { isCodingPlanConfig } from '../constants/codingPlan.js';
/**
* Field configuration for system information display
@ -30,6 +31,7 @@ export function getSystemInfoFields(
addField(fields, t('IDE Client'), info.ideClient);
addField(fields, t('OS'), formatOs(info));
addField(fields, t('Auth'), formatAuth(info));
addField(fields, t('Base URL'), formatBaseUrl(info));
addField(fields, t('Model'), info.modelVersion);
addField(fields, t('Session ID'), info.sessionId);
addField(fields, t('Sandbox'), info.sandboxEnv);
@ -86,15 +88,34 @@ function formatAuth(info: ExtendedSystemInfo): string {
if (!info.selectedAuthType) {
return '';
}
const authType = formatAuthType(info.selectedAuthType);
if (!info.baseUrl) {
return authType;
if (isCodingPlanConfig(info.baseUrl, info.apiKeyEnvKey)) {
return t('Alibaba Cloud Coding Plan');
}
return `${authType} (${info.baseUrl})`;
if (
info.selectedAuthType.startsWith('oauth') ||
info.selectedAuthType === 'qwen-oauth'
) {
return 'Qwen OAuth';
}
return `API Key - ${info.selectedAuthType}`;
}
function formatAuthType(authType: string): string {
return authType.startsWith('oauth') ? 'OAuth' : authType;
function formatBaseUrl(info: ExtendedSystemInfo): string {
if (!info.selectedAuthType || !info.baseUrl) {
return '';
}
if (
info.selectedAuthType.startsWith('oauth') ||
info.selectedAuthType === 'qwen-oauth'
) {
return '';
}
return info.baseUrl;
}
function formatProxy(proxy?: string): string {