文件最后提交记录最后更新时间
🌐 chore: translate non-English comments to English in agent-runtime examples and siliconcloud provider (#14332) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>24 天前
chore: clean up LOBE-XXX code annotations (#15135) * chore: clean up LOBE-XXX annotations from codebase comments - Remove 【LOBE-XXX】 bracket markers - Remove LOBE-XXXX references from inline comments - Clean up test descriptions containing LOBE identifiers - Preserve linear.app URLs and code-level regex patterns - Generated: 2026-05-23 02:30:09 * 🐛 fix(tests): restore () in arrow callbacks broken by annotation cleanup The LOBE-XXX annotation cleanup script over-matched `(LOBE-XXXX', () =>` and stripped the callback `()`, leaving invalid syntax like `describe(..., => {` and `it(..., async => {` across 24 test files. This caused parse failures in Test Packages, Test Desktop App, Test Database lint, and Test App shard runs. Restoring `()` / `async ()` unblocks the suites while keeping the ticket-text cleanup intact. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 🐛 fix(hintFormat-test): restore label + ellipsis in stripMarkdownLinks fixture The annotation cleanup stripped `LOBE-8516` from a markdown-link's *label* (`[LOBE-8516](/task/T-1)` → `[](/task/T-1)`), which then survived `stripMarkdownLinks` because the pattern requires non-empty link text — the test expected the link to disappear and asserted equality on a LOBE-free output. The same line also lost a `.` from the trailing `...` indicator in both input and expected strings. Substitute a neutral Chinese label (`发布计划`) so the link continues to exercise the multi-link substitution path, and restore the full `...` ellipsis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Arvin Xu <arvinxx@lobehub.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>20 小时前
✨ feat: support use remote device in IM integration (#12798) * support timezone in system prompt refactor to improve user prompts refactor tool engine refactor tools map mode add bot callback service clean improve cli update agentic tracing refactor cli login refactor cli add device auth improve device gateway implement implement gateway pipeline support device Gateway connect support gateway * revert electron device * inject builtins agent prompts * update tracing * add testing * refactor the activeDeviceId * refactor BotCallbackService * fix test and lint * fix test and lint * add tests * fix tests * fix lint2 个月前
🐛 fix(context-engine): account for `tool_calls` + reasoning + tool defs in compression budget (#14813) 🐛 fix(context-engine): account for tool_calls + reasoning + tool defs in compression budget The pre-compression token check (`shouldCompress`) only counted `msg.content`, which under-counted typical agent conversations by ~58% — tool_calls (~33% of payload), reasoning traces (~17%), and top-level tool definitions (~2%) were all silently ignored. As a result, conversations that the provider tokenizer measured at ~656K passed the harness's 524K threshold without firing compression, and were rejected upstream as ExceededContextWindow. Verified empirically against 2 op snapshots in the same topic that hit the failure mode (LOBE-8964): harness counted 267K, deepseek measured 649K — a 380K (58.8%) gap. ~92% of that gap is fixable by accounting for the missing fields; the remaining ~8% is `tokenx` vs provider tokenizer drift, compensated by a 1.25× multiplier on the trigger path. Changes: - New `@lobechat/context-engine/tokenAccounting` module exporting `countContextTokens({messages, tools, options})`. Returns structured per-source + per-message + per-tool breakdown — usable both by the compression trigger and by UI panels showing "context by type". - `shouldCompress` in agent-runtime delegates to `countContextTokens`, applies the 1.25× drift multiplier on `adjustedTotal` for the trigger decision, exposes raw count via `currentTokenCount`. Signature now takes `UIChatMessage[]` directly. - Removed deprecated `calculateMessageTokens` / `estimateTokens` / `TokenCountMessage` from agent-runtime — the new module supersedes them. `createAgentExecutors.ts` updated to call `countContextTokens` directly for post-compression telemetry. - Added `raw-md` plugin to agent-runtime vitest config (needed once context-engine is imported transitively, since the import graph pulls in `@lobechat/agent-templates` `.md` files). What's intentionally NOT counted (DB-only fields not sent to provider): `plugin`, `pluginState`, `chunksList`, `extra`, `fileList`, etc. Counting these would over-estimate and trigger compression too early. Tests: - 19 new unit tests for `countContextTokens` covering content / tool_calls / reasoning / tool_call_id / tool definitions / fast-path / aggregation / DB-only field exclusion. - `tokenCounter.test.ts` updated for new drift semantics + UIChatMessage signature; one boundary case now triggers compression (intentional — the drift multiplier kicks in at the threshold). Refs: LOBE-8964 (ECW edge boundary), LOBE-8972 (ECW umbrella), LOBE-8973 (openrouter `:free` ctx), LOBE-8976 (compression diagnostics). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>9 天前