* docs(changelog): add v0.3.20 and v0.3.21 entries (EN+ZH)
* docs(changelog): add v0.3.20 and v0.3.21 entries (EN+ZH)
* docs(changelog): add v0.3.22 and v0.3.23 entries (EN+ZH)
Extends this PR to the current Latest release. v0.3.22 (2026-05-29) and v0.3.23 (2026-06-03) both shipped after v0.3.21, but the canonical changelog stopped at v0.3.19 before this series. Entries mirror the existing Highlights / Upgrade Notes / Full Changelog format, condensed from the official release notes.
* docs(api): add cached_tokens/reasoning_tokens to get_session() llm_token_usage example
* docs(api): add cached_tokens/reasoning_tokens to get_session() llm_token_usage example
* refactor(storage): delete agfs http mode client
* refactor(storage): refactor protocol to support diff return type
* refactor(storage): refactor code format from lint
* docs(mcp): remove bearer note and sync en page
Remove the Bearer-prefix note from the zh MCP page and update the en MCP page to match the current zh structure and health-check example.
* docs(agents): sync remaining en guides with zh
* docs(trae): fold rollback into en sync PR
* docs(cursor): remove faq divider in zh and en
* docs(agents): remove claude and mcp page titles
Combine the unsubmitted fork edits from patch-6, patch-12, patch-13, patch-14, patch-16, patch-17, and patch-18 into a single PR. The hermes update from patch-15 is already subsumed by patch-6.
#2343 lowered the shipped default of vlm.max_concurrent (semantic-stage LLM
concurrency) from 100 to 64 in openviking_cli/utils/config/vlm_config.py, but
the config docs still documented it as 100.
* fix: embedding images directly
* fix: skip default values in CLI config serialization, relax ovcli.conf validation
- Rust: add skip_serializing_if to Config/UploadConfig fields to avoid
writing null/default values into ovcli.conf
- Python: change OVCLIConfig/OVCLIUploadConfig model_config from
extra: "forbid" to extra: "ignore" for forward compatibility
- Simplify handle_extra_headers_aliases now that extra fields are ignored
- Add VLMProviderAdapter and integrate VLMFactory into _make_provider
* fix(bot): remove unused OpenAI provider and refresh config docs
Drop the unused OpenAI-compatible provider and its stale exports/tests now that explicit provider configs go through the VLM adapter path. Refresh the bot configuration docs with redacted remote OpenViking examples and clarify gateway/chat usage alongside Feishu configuration.
* revert: drop unrelated embedding changes from PR
Restore the embedder and queuefs files to match the upstream volcengine/OpenViking main branch so this PR only carries the bot provider cleanup and documentation updates.
* revert: align remaining embedding helpers with upstream
Restore the context, embedder base, embedding utils, and local index files to match volcengine/OpenViking main so the PR stays focused on bot-only changes.
* docs: sync cn
* feat: 主站和文档站共享cookie配置(主题色&中/英文切换)
* fix: preserve local main site link path
* fix: support configurable docs main site link
---------
Co-authored-by: linweiye <linweiye.voph@bytedance.com>
The 视频/音频 rows in docs/zh/concepts/06-extraction.md had the
parser names swapped — 视频 was mapped to AudioParser and 音频 to
VideoParser. The English doc (docs/en/concepts/06-extraction.md) is
correct, and the source of truth in openviking/parse/parsers/media/
confirms VideoParser handles .mp4/.avi/etc. and AudioParser handles
.mp3/.wav/etc.
Also expanded the extension lists to match constants.py exactly
instead of "等".
* docs(retrieval): note intent-analysis model is configurable via query_planner (#2224)
* docs(retrieval): note intent-analysis model is configurable via query_planner (#2224)
* feat: add batch add_messages API for faster message ingestion
Previously, adding messages required one HTTP request per message,
making bulk operations (e.g. memory extraction, history migration)
very slow due to network round-trip overhead.
Changes:
- Add POST /api/v1/sessions/{id}/messages/batch endpoint
- Add BatchAddMessageRequest model with max_length=500 limit
- Extract _resolve_message_parts() helper to deduplicate part resolution
- Add _defer_meta_save parameter to Session.add_message() for batch optimization
- Add batch_add_messages method to Python SDK clients (base/http/sync)
- Add batch_add_messages to Session wrapper class
- Update LangChain integration to use batch API
- Update Rust CLI add_memory to use batch API
* refactor: rename batch_add_messages to add_messages and add CLI add-messages command
- Rename batch_add_messages → add_messages across Python SDK, server router, and client
- Add 'ov session add-messages' CLI command with parse_messages() helper
- Update API docs (en/zh) to reflect new naming and CLI usage
- HTTP route path /messages/batch unchanged for backward compatibility
* fix: improve input validation and revert router function name
- parse_messages: return explicit errors for invalid JSON instead of silent fallback
- add_messages: validate spec keys to raise ValueError instead of KeyError
- Revert router endpoint function name to batch_add_messages
* revert: restore batch_add_messages naming across all Python layers and docs
* fix: keep Session.add_messages() as core method name, only SDK/Client/Router use batch_add_messages
* docs: overhaul agent-integrations section for clarity and beginner-friendliness
Restructure the agent-integrations documentation (EN + ZH) to be concise,
beginner-friendly, and consistently structured across all runtimes.
* docs(mcp-clients): clarify OAuth flow for Claude Desktop / Claude.ai
* docs(mcp-clients): add public access guide link for OAuth section
* docs: address review — clarify dev-mode auth, add missing import
* docs(mcp-guide): update verified platforms, fix OAuth section scope