W18: context cleanup + CLI fixes + loader audit + CI matrix (W18.1-W18.4)
Some checks failed
CI / Determine matrix (push) Has been cancelled
CI / ${{ matrix.os }} / ${{ matrix.build_type }} (push) Has been cancelled

- W18.1 (王测+林深): Remove g_max_tokens dead API, UTF-8 bounds protection, deduplicate token counting, 0xC0/0xC1 handling, add 13 test blocks (36 checks)
- W18.2 (赵码+朱晴): Fix /context no-session error message, /status 3-state connection display
- W18.3 (曹武+徐磊): plugin_loader security audit — 9 dimensions, rating C, 1 HIGH + 2 MEDIUM findings
- W18.4 (马奔+胡桐): CI dual-platform matrix (Ubuntu clang-18 + Windows clang-cl), ccache, build timing baseline

Build 0 error, ctest 5/5 pass, metadata check clean.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 19:09:21 +08:00
parent 852e2cac08
commit c545d16120
18 changed files with 945 additions and 77 deletions

View File

@@ -185,7 +185,7 @@ static void handle_command(const char* line)
CLR_DIM "Token 估算: " CLR_RESET "%d\n",
count, tokens);
} else {
std::fprintf(stderr, CLR_RED "[ERROR] context service not available\n" CLR_RESET);
std::fprintf(stderr, CLR_RED "[ERROR] No active session\n" CLR_RESET);
}
return;
}
@@ -202,6 +202,13 @@ static void handle_command(const char* line)
std::printf(" base_url: %s\n", base_url ? base_url : "(未设置)");
std::printf(" api_key: %s\n", (api_key && api_key[0]) ? "已设置" : "未设置");
std::printf(" provider: %s\n", provider);
if (g_ai && !g_current_model.empty()) {
std::printf(" 连接状态: 已连接 (%s, %s)\n", provider, g_current_model.c_str());
} else if (g_ai) {
std::printf(" 连接状态: 插件已加载,模型未配置\n");
} else {
std::printf(" 连接状态: 未连接\n");
}
std::printf(" AI 服务: %s\n", g_ai ? "就绪" : "不可用");
std::printf(" Session 服务: %s\n", g_session ? "就绪" : "不可用");
int hc = 0;