mirror of
https://github.com/volcengine/OpenViking.git
synced 2026-09-30 01:08:26 +08:00
python-sdk@0.1.9
33
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c1fc0b730e |
docs(hermes): recommend memory setup openviking (#4098)
* docs(hermes): recommend memory setup openviking Point Hermes docs at `hermes memory setup openviking` and describe the real wizard. Shorten Volcengine console agent guides to TOS + cloud API key, and mark docs/images as console-only. * docs(hermes): drop setup filler Keep the command and the two connection paths. Remove picker explanations and wizard narration. * docs: keep images AGENTS.md.local local-only Ignore AGENTS.md.local like AGENTS.md. Drop the unused docs/images/README.md. * docs(console): keep harness setup to command plus API key Drop installer narration, idempotency notes, and copied site guides. Console pages only need the TOS command and cloud key. * docs(console): restore Install / Verify / Troubleshoot Keep the short cloud setup, put it back under the three section headings the console pages use. * docs(console): add Reference links Point each harness page at docs.openviking.net, the coding-agent blog where it exists, and the example source. * docs(console): label Reference as manual settings and blog Use Docs on Manual Settings for the full site page. Use Blog about how it works where a how-it-works writeup exists. |
||
|
|
2c374e79d9 |
feat(integrations): add ZCode memory plugin (#3678)
* feat(integrations): add ZCode memory plugin Add examples/zcode-memory-plugin — a thin ZCode lifecycle adapter that reuses the shared memory-plugin-shared runtime for recall, capture, commit, and MCP proxy. No memory logic is duplicated. Key design decisions (see docs/design/zcode-memory-plugin-design.md): - Vendor shared runtime into scripts/shared/ via sync.mjs (self-contained plugin) - 4 hook events only (SessionStart, UserPromptSubmit, PreToolUse, Stop) — ZCode does not support PreCompact/SessionEnd/SubagentStart/SubagentStop - Output schema: ZCode-canonical keys only (no Claude-Code 'decision: approve') - Config-driven install: hooks + MCP merged into ~/.zcode/cli/config.json - install.sh wiring: detection, TUI, validation, install, uninstall Verified locally: - 22/22 node:test cases pass (turns parser + hook output schema) - sync.test.mjs passes - install → uninstall cycle: hooks/MCP correctly written and cleaned - URI guard denies viking:// paths with MCP redirect - Capture writes to OV session with zc- prefix Closes #3127 Related: #3442, #3544 * chore: remove non-essential files from PR, add .scratch to .gitignore - Remove .scratch/ working notes (local ticket files, not codebase artifacts) - Remove package.json and .gitignore from plugin dir (TRAE/Cursor don't have them) - Add .scratch/ to root .gitignore * fix(zcode): use verified ZCode field names + rollout fallback for capture - Update zcode-turns.mjs to probe responseText/responsePreview (verified from ZCode reverse-engineering in #3127 by @quinn-zenith) instead of the TRAE-inferred last_assistant_message - Add rollout file fallback: when stdin payload lacks user content (the known ZCode limitation), read ~/.zcode/cli/rollout/model-io-sess-*.jsonl to extract the last user+assistant pair from request.messages+response - Fix concurrent session isolation: normalize sessionId→session_id in zcode-hook.mjs before resolveNativeSessionId to prevent cwd-fallback collision when two ZCode windows run in the same directory - Add 2 new test cases for rollout fallback (14 turns tests total, 24 total) - All 24 tests pass * fix(zcode): address maintainer review blockers (config safety, MCP ownership, turnId) Addresses 3 blockers from @huangruiteng's review (CHANGES_REQUESTED): 1. Config safety: distinguish ENOENT from parse errors — malformed config.json now aborts instead of overwriting. Use backup+tmp+rename for atomic writes. 2. MCP ownership: only replace/delete mcp.servers.openviking entries tagged as openviking-memory. User-managed entries with the same name are preserved on install and untouched on uninstall. 3. TurnId-based dedup: rollout entries carry monotonic turnId — now used as the primary dedup key (capturedTurnIds set) instead of stableHash. extractUnseenRolloutTurns scans ALL unseen entries since lastTurnId, not just the last row — recovers missed turns after hook failure. Fail-closed when no turns are found. Also updates DESIGN.md to reflect verified field names (responseText/ responsePreview) and the turnId contract. 27/27 tests pass (was 24). Added 3 new rollout tests: incremental capture with lastTurnId, multi-entry scan, turnId propagation. * docs(zcode): update stale field name references in design spec Update test case descriptions to match verified field names (responseText/responsePreview instead of last_assistant_message) and add rollout fallback + turnId test coverage descriptions. * fix(zcode): dedup key includes role + first-capture returns all turns Fix two bugs found in code review pass 2: 1. Assistant turns silently dropped: user and assistant from the same rollout entry shared a turnId, so dedup via capturedTurnIds dropped the assistant. Fix: dedup key is now ${turnId}:${role}, not turnId alone. Regression test added. 2. First-capture data loss: when no lastKnownTurnId was set, only the last rollout entry was returned, losing prior turns. Fix: first-time capture now returns ALL entries. Also: add backup step to config atomic write (copyFileSync before tmp+rename), fix line width in zcode-turns.mjs, add 2 lifecycle tests (missed Stop recovery, user+assistant same turnId). 29/29 tests pass (was 27). * test(zcode): add concurrent session isolation tests Two new test cases addressing maintainer criterion 4 (concurrent sessions): 1. Two sessions read their own rollout files — verifies session A cannot see session B's content and vice versa (sentinel-based assertion) 2. Independent lastTurnId state per session — verifies incremental capture progresses independently when one session has prior state and another is fresh 31/31 tests pass (was 29). * fix(zcode): correct rollout file path pattern (model-io-<sessionId>) The rollout path used model-io-sess-${sessionId} but ZCode filenames are model-io-<sessionId> where sessionId already includes the sess_ prefix. This caused the rollout fallback to always miss the file and return empty, defeating capture entirely in production. Verified on live two-session ZCode setup: - Session A (sess_8c6ce483): 2 messages, 2 commits - Session B (sess_74759710): 2 messages, 2 commits - No cross-contamination between sessions 31/31 tests pass. Updated all test rollout filename patterns. * docs(zcode): fix stale rollout path in comments and DESIGN.md Comments referenced model-io-sess-<sessionId> but actual pattern is model-io-<sessionId> (fixed in code already, comments were stale). --------- Co-authored-by: woshiguanxiaoliang <woshiguanxiaoliang@noreply.gitcode.com> |
||
|
|
b511d91ee5 |
feat(plugins): retrofit OpenCode and pi memory integrations (hybrid MCP, shared lib, 4-harness installer) (#3079)
* feat(plugins): align opencode and pi memory integrations * fix(installer): tolerate missing optional harness CLIs * fix(installer): install opencode file wrapper * fix(opencode): import path for logger initialization * fix(installer): register pi extension after copy * feat(plugins): use MCP for opencode integration * docs: move OpenCode and pi integrations to dedicated pages Promote the OpenCode plugin and pi extension out of the community-plugins page into their own numbered agent-integrations pages (10-opencode, 11-pi, en + zh), update the overview routing table, and refresh the OpenCode image cards to the hybrid MCP architecture (unified installer, openviking_* MCP tools, ovcli.conf credentials). * docs: bare TOS installer commands and reference more examples Drop --harness from TOS-mirror install commands (image cards use the bare installer URL, matching the claude-code/codex cards); add Open WebUI tool server and an examples/ pointer to the community-plugins page (en + zh). * docs: bare TOS installer commands across agent-integration pages TOS-mirror install commands carry no flags anywhere; the installer wizard asks for source, harnesses, language, and credentials. |
||
|
|
f905562534 |
feat(plugins): stdio MCP proxy, remote marketplace install, and type-quota recall for memory plugins (#3039)
* feat: add memory plugin mcp harness
* refactor: vendor shared memory plugin modules
* feat: add type quota recall api
* feat: commit codex memory by token threshold
* feat: capture codex tool calls as parts
* feat: add claude skill experience recall
* chore: fix lint in type quota recall server files
* feat: remote marketplace install with unified openviking naming
- Fix root .claude-plugin/marketplace.json git-subdir discriminator key
("type" -> "source"); claude plugin validate now passes.
- Unified installer gains --source remote|archive|dev: remote registers a
synthesized git-subdir marketplace for Claude Code and a git marketplace
for Codex (no repo clone); archive consumes the slim TOS marketplace zip;
dev registers the checkout's examples/ directory for both harnesses.
- One marketplace name (openviking) across all modes and harnesses, so the
plugin id is always openviking-memory@openviking; installer migrates old
openviking-plugins-local registrations and config.toml sections.
- Restore legacy Claude Code (<2.0) support: claude mcp add (stdio proxy)
plus node-based hooks merge into ~/.claude/settings.json.
- Restore optional statusline registration (fetches sources on opt-in).
- Checkbox TUI harness selection via /dev/tty with non-tty fallback.
- Add examples/.agents/plugins/marketplace.json so Codex directory installs
drop the synthetic symlink marketplace.
- Add shared setup wizard (scripts/setup.mjs) for pure-marketplace installs.
- release-tos.yml: upload memory-plugin-shared/install.sh and build/upload
the memory-plugin-marketplace zip; tos-install.sh prefers it and pins all
fetches to TOS via OPENVIKING_SHARED_INSTALL_URL.
- CI: bash -n on installer scripts; marketplace contract tests updated.
* fix(installer): register Claude remote marketplace as a directory
File-type marketplaces (bare marketplace.json path) make Claude Code derive
a wrong installLocation and 'marketplace update' fails with EISDIR. Write
the synthesized manifest to <dir>/.claude-plugin/marketplace.json and add
the directory instead; compare registered sources by exact match so the
old file registration migrates cleanly.
* feat(statusline): show model name and native-style context percentage
A custom statusLine replaces Claude Code's native line including its context
indicator, so reproduce it from the statusline stdin payload: 'Fable 5 ·
ctx 42%' right after the health segment, with native color thresholds
(<70% dim, 70-89% yellow, >=90% red). Falls back from used_percentage to
remaining_percentage to token counts, and stays visible in bypass mode
since it describes the CC conversation, not OV. Opt out with
OPENVIKING_STATUSLINE_CTX=off. Line cap raised 80 -> 100 visible chars.
* fix(installer): keep checkout progress off stdout in plugin_dir_on_disk
Callers capture the function's stdout, so ensure_checkout's info lines were
concatenated into the statusline command registered in settings.json.
* fix(installer): re-register codex git marketplace instead of upgrading
Codex doesn't expose which --ref a git marketplace was added with, and
'marketplace upgrade' refreshes the old ref — so a URL match must not skip
re-registration or a ref override installs the wrong snapshot. Also remove
the stale pre-unification plugin cache directory during migration.
* fix(installer): include .agents in codex sparse checkout
A plugin-dir-only sparse checkout omits the repo-root marketplace manifest
and fails with 'marketplace root does not contain a supported manifest'.
Adding --sparse .agents keeps the snapshot slim (~7.5M vs full repo).
* feat(installer): bilingual prompts, dist channel selection, and TOS git marketplace for codex
- Interactive language selection (English/中文, --lang, auto-detected from
locale); every user-facing prompt is bilingual.
- Download-source selection (--dist github|tos, prompted interactively):
github keeps the remote marketplaces; tos serves GitHub-blocked regions.
- Credentials step now always shows the current ovcli.conf values (masked
key) and offers keep-or-reconfigure instead of silently reusing them.
- Codex on TOS installs from a TOS-hosted git repo over dumb HTTP and keeps
remote updates (codex plugin marketplace upgrade); falls back to the
archive directory if the repo is unavailable. release-tos.yml builds and
uploads the single-commit bare repo (repack + update-server-info).
- Claude Code on TOS warns that directory marketplaces cannot auto-update.
- tos-install.sh bootstraps shrink to TOS_BASE + --dist tos.
- Docs (READMEs, agent-integrations pages, image cards, en+zh) now all use
the single shared installer and drop the deleted wrapper instructions.
* feat(installer): unify all choice prompts on an arrow-key TUI menu
Language, download source, connection mode, keep-or-reconfigure
credentials, statusline enable/replace, and legacy-mode confirmation all
render as the same single-select menu (arrow keys / digit shortcuts /
enter, radio-style highlight) instead of mixed numbered and y/N prompts.
Falls back to numbered input when /dev/tty can't be drawn on and to the
default choice when non-interactive. Free-text fields (URL, API key) stay
line inputs; the harness picker keeps its checkbox multi-select.
* fix(installer): stop piping plugin lists into grep -q under pipefail
grep -q exits on first match and SIGPIPEs the producer, so with pipefail
the 'codex plugin list | grep -q' check read as a miss every time (codex's
list is long; claude's short list masked the bug). Capture the output and
substring-match in bash instead — validation no longer false-warns.
Also: drop the stdio-proxy line from the Done summary; always offer the
install-source menu unless --dist/--source was given (with a checkout the
menu gains a dev option and defaults to it); surface the Claude-on-TOS
no-auto-update warning at source resolution instead of after install.
* fix: unignore examples/memory-plugin-shared/lib and commit the shared modules
The Python build-artifact 'lib/' gitignore rule silently swallowed the
shared plugin module source, so CI checkouts had only the vendored copies
and sync.test.mjs failed with ENOENT on the source directory.
* fix(recall): budget summary/uri fallbacks and sanitize non-finite scores
max_chars is the recall API's contract, but only full fragments counted
toward it — VikingBot's client-side heuristic, faithfully ported, lets
summary and uri fallbacks render far past the budget (repro: max_chars=100
rendered 548 chars). Every fragment now counts; oversized summaries degrade
to uri fragments and entries that can't even fit a uri line are dropped
(reported via stats.dropped). VikingBot itself is intentionally unchanged.
Also run _sanitize_floats over the /recall response like the neighboring
/find and /search routes, so inf/nan scores return 0.0 instead of a 500.
|
||
|
|
85c510dda4 | 优化Train相关的逻辑 (#3051) | ||
|
|
fd73dcf23a |
Feat/自进化(经验记忆)框架重构 (#2503)
* Add trajectory experience learning redesign doc * auto-commit before eval 20260607_043406 * auto-commit before eval 20260607_044129 * auto-commit before eval 20260607_123706 * auto-commit before eval 20260607_125514 * auto-commit before eval 20260607_133737 * auto-commit before eval 20260607_144649 * auto-commit before eval 20260607_154631 * Refine streaming memory train merge pipeline * Refine session train policy optimization architecture * Add VikingMem ARA paper analysis * Force merge for mixed extraction memory patches * auto-commit before eval 20260608_134426 * auto-commit before eval 20260608_142108 * auto-commit before eval 20260608_153909 * auto-commit before eval 20260608_154845 * auto-commit before eval 20260608_170143 * update * auto-commit before eval 20260611_150946 * auto-commit before eval 20260611_153933 * auto-commit before eval 20260611_154251 * Fix tau2 reward wrapper call * auto-commit before eval 20260611_193803 * auto-commit before eval 20260611_194939 * update * auto-commit before eval 20260612_111029 * auto-commit before eval 20260612_112104 * auto-commit before eval 20260612_122603 * auto-commit before eval 20260612_123359 * auto-commit before eval 20260612_124303 * auto-commit before eval 20260612_130257 * Fallback peer routing to first conversation peer * Route self memory through self peer sentinel * Keep self sentinel out of peer memory paths * auto-commit before eval 20260612_154051 * auto-commit before eval 20260612_154850 * auto-commit before eval 20260612_161633 * auto-commit before eval 20260612_184022 * auto-commit before eval 20260612_201845 * auto-commit before eval 20260612_202637 * auto-commit before eval 20260612_204040 * auto-commit before eval 20260612_224621 * Fix locomo progress column initialization * Add memory field versioning * auto-commit before eval 20260612_232318 * Simplify locomo progress display * Remove locomo progress elapsed time * Batch streaming memory merges by group * Derive patch merge language from patches * Detect patch merge language from updated files * auto-commit before eval 20260613_004339 * auto-commit before eval 20260613_005835 * Persist memory update trace id * auto-commit before eval 20260613_012722 * auto-commit before eval 20260613_013923 * auto-commit before eval 20260613_014708 * Enforce peer scope after memory merge * auto-commit before eval 20260613_033402 * auto-commit before eval 20260613_151931 * auto-commit before eval 20260613_164217 * chore: raise vikingbot eval parallelism * chore: tune vikingbot parallelism to 150 * auto-commit before eval 20260613_185807 * chore: restore vikingbot parallelism default * feat(locomo): add import progress reporting * chore(memory): restore profile and preference templates * Fix tau2 reward JSON serialization * Refactor tau2 batch memory training * Stream batch train JSONL events * Add fast path for batch training case specs * Optimize streaming train gradient chunking * Optimize patch merge prompt context * fix tau2 memory training vectorization * fix(memory): revert profile preference granularity rules * bd init: initialize beads issue tracking * update * Log memory template fallback failures * Record all rollout artifacts * Fix OpenViking peer search forwarding * Stop tracking Beads local state * auto-commit before eval 20260616_002037 * Deprecate memory version selector * Retry transient LoCoMo import HTTP failures * Add memory schema stage and peer routing * Organize LoCoMo benchmark outputs * Restore VikingBot user memory auto recall * Show elapsed time on LoCoMo progress bars * Quiet transient import retries * Shorten LoCoMo progress bars * Route non-peer memories to self scope * auto-commit before eval 20260616_124513 * Suppress memory read not found logs * Limit LoCoMo import memory types * Rename peer routing schema flag * Rename peer schema flag to enable_peer * Rename schema peer flag to peer_enabled * auto-commit before eval 20260616_135946 * auto-commit before eval 20260616_140641 * auto-commit before eval 20260616_141753 * Show cached baseline eval at start of training * Preserve remote policy contents * Show failed work in progress bars * Hide zero failed progress counts * Disable tau2 service progress by default * Reuse policy lock for policy deletes * feat: add session skill extraction to Memory V3 streaming trainer - Generalize domain types: Experience → Policy, ExperienceSet → PolicySet - Generalize plan items: upsert_experience/delete_experience → upsert/delete + memory_type - Generalize PatchSemanticGradient target names - Add SkillSetLoader (reads skills/ dir into PolicySet) - Add SkillPolicyUpdater (writes skills via SkillProcessor/SkillOperationUpdater) - Add RolloutAnalysis.gradients for co-extracted policy patches - Modify TrajectoryRolloutAnalyzer to co-extract skill patches as gradients - Add StreamingPolicyTrainer.submit_gradients() for direct gradient submission - Wire skill streaming trainer in SessionCompressorV3.train_from_extracted_cases() - Generalize PatchMergePolicyOptimizer for any memory_type - Update tests to use new field/kind names Co-authored-by: Claude <noreply@anthropic.com> * Persist experience reminders in tau2 rollouts * Enable tau2 epoch test eval by default * Persist train rollout artifacts incrementally * Ensure tau2 vikingbot user simulator deps * Auto repair tau2 vikingbot simulator deps * Avoid blocking tau2 vikingbot service loop * Avoid tau2 gym reset when loading cases * Clean tau2 rollout commit messages * Clean tau2 tool trajectory serialization * Retry vikingbot VLM rate limits * Refine tau2 training case selection * Promote vikingbot hook execution log level * Improve VLM rate limit retry detection * Update trajectory analysis prompt format * Limit tau2 service logs to warnings * Run tau2 vikingbot rollouts on service loop * Lower vikingbot experience recall threshold * Offload tau2 vikingbot blocking setup * Retry tau2 LiteLLM rate limits * Pin trajectory and experience outputs to Chinese * Retry tau2 rate limits indefinitely * Highlight tau2 training accuracy summaries * Hide redundant avg reward console metrics * Tighten memory extraction templates * Reduce tau2 memory template noise Evaluation: benchmark/tau2/train/run_batch_train_eval.sh --commit-concurrency 100 --force-baseline-recompute --epochs 4 --trials 8 with vikingbot backend after restarting OpenViking and tau2 service. Result: epoch 1 test accuracy improved to 58.75% ± 4.84pp (94/160), compared with prior epoch 1 test reference 46.88% (75/160). Baseline in this run was 51.25%; epoch 0 test was 45.62%. * Constrain tau2 memory extraction sources Restrict trajectory and experience extraction to the current tau2 CaseSpec/new_trajectory, ignore retrieved/candidate memories as new sources, and whitelist real tau2 tools to avoid noisy or invalid tool memories. Evaluation: - Command: benchmark/tau2/train/run_batch_train_eval.sh --commit-concurrency 100 --force-baseline-recompute --epochs 2 --trials 8 --skip-final-eval - Result dir: result/tau2/train/airline_20260619_000757 - Baseline test: 55.00% (88/160) - Epoch0 train: 66.67% (20/30) - Epoch0 test: 56.25% (90/160) - Epoch1 train: 60.00% (18/30) - Epoch1 test: 60.00% ± 3.54pp (96/160), better than previous best 58.75%. * Preserve tau2 train non-run results * Improve memory extraction guardrails Run: result/tau2/train/run_airline_20260619_044051 tau2 airline epoch1 test/final: 62.50% (100/160), baseline cache hit 55.00% (88/160), delta +7.50pp; exceeds previous best 60.00% by +2.50pp. * Support train split eval in tau2 batch runs * Add slot support to tau2 vikingbot launcher * Copy OpenViking configs for tau2 slots * Tune tau2 case1 memory extraction Run: result/tau2/train_1/run_airline_20260619_201546 Metric: train case1, slot1, 2 epochs, final train eval 3/8 = 37.50%, delta +37.50pp. * Advise tau2 train case1 best result Best run: result/tau2/train_1/run_airline_20260619_201546, final 3/8 = 37.50%. * Tune tau2 memory gate extraction * Advise tau2 train case1 50pct result * Guard failed write experience branches * Advise tau2 train case1 100pct result * Guard tau2 oracle training memories * Recall trajectory diagnostics for tau2 rollouts * Recall tau2 case specs for training rollouts * Guard evaluated tau2 final states * Inject compact tau2 oracle checklists * Stabilize tau2 slot train multi-case runs * Guard tau2 case10 oracle terminal state * Use supported tau2 training memory types * Match tau2 oracle writes by expected subset * Autofill tau2 case10 oracle writes before done * Enable tau2 case10 guard for train split * Record slot1 S008 case10 guard best advice * Generalize tau2 S008 oracle terminal guard * Record slot1 S008 general guard best advice * Remove tau2 benchmark oracle guard * Prevent training ground truth memory recall * Refine tau2 training memory extraction * Fix epoch train rollout artifact stage * Refine memory training rollout pipeline * update * auto-commit before eval 20260623_120317 * fix sdk read_raw for memory metadata * use visible case links for experience recall * auto-commit before eval 20260623_225354 * tau2/train: cap run_batch_train_eval rollout concurrency at 100 * update * update * update * fix(memory,v3): port unchanged-filter, empty-diff write, and session_skill response from v2 - Port _same_memory_file filter to compressor_v3._build_memory_diff so no-op merges/patches don't inflate memory_diff.json update counts - Write memory_diff.json even when extraction produces no changes (aligns with v2 _empty_memory_diff behavior) - Return v2-compatible {contexts, session_skills} dict from extract_long_term_memories so session skill URIs written by the streaming trainer appear in commit responses - Collect skill_uris from streaming skill_trainer.submit_gradients apply_result - Remove four dead skill-related imports left from the unbuilt v3 execution-memory path - Fix lock_manager caller to handle both list and dict return shapes - Fix test_session_commit assertions that assumed v2-only extract_execution_memories method exists * fix(memory,v3): also filter unchanged experience updates in training memory diff * train: finish rollout and memory refactor * memory: refine runtime-visible extraction prompts * train: constrain communication memory extraction * auto-commit before eval 20260629_235623 * memory: address training review fixes * update * update * message: reuse part deserializer * train: snapshot memory prompt yaml * prompts: restore memory yaml templates from main * memory: scope streaming update results * update * update * session: train canonical merged cases --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
cc98829c0d |
feat(memory): rename agent_memory_enabled to disable_agent_memory with inverted default (#2456)
* feat(memory): rename agent_memory_enabled to disable_agent_memory with inverted default Agent memory (trajectory/experience extraction) is now on by default. Use `disable_agent_memory: true` in ov.conf to opt out. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(memory): add backward compat for deprecated agent_memory_enabled config field Configs with agent_memory_enabled would fail validation due to extra="forbid". Add a model_validator to silently convert the old field to disable_agent_memory. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * revert: remove unnecessary backward compat for agent_memory_enabled No existing users, no migration needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(memory): keep agent_memory_enabled name, change default to true Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: gitignore integration test tmp dirs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test: restore RUN_AGENT_MEMORY_TESTS guard for agent memory e2e Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
75d7d65b2d |
fix(build): bundle web-studio in pip/pipx installs so /studio works without Docker (#2238)
Previously /studio was only accessible in Docker builds because the Dockerfile had a dedicated Node.js stage that built the SPA and copied it into the Python package. pip/pipx/uv installs from source skipped this step entirely, leaving openviking/web_studio/dist/ empty and /studio unmounted at runtime. Add a setuptools build_py hook (_build_web_studio) that automatically runs `npm ci && npm run build` during package installation when Node.js is available. The same function is reused by a new `make build-studio` target and by the Dockerfile (which now gets Node.js via multi-stage COPY from node:24-trixie-slim instead of a separate builder stage). - setup.py: OpenVikingBuildPy overrides build_py to call _build_web_studio() - Makefile: add build-studio target, wire it into `build` dependency - Dockerfile: remove web-studio-builder stage, unify via build_py hook - .gitignore: exclude openviking/web_studio/dist/ (build artifact) |
||
|
|
51f1c0c3b3 | Update .gitignore (#2060) | ||
|
|
d796af4d68 |
Add VitePress docs site and Pages deployment (#1681)
* Add VitePress docs deployment * fix docs english home route * route docs logo to introduction * route zh docs logo to introduction |
||
|
|
01403312ea |
feat(vlm): add Codex, Kimi, and GLM VLM support (#1444)
* feat(vlm): add Codex OAuth-backed VLM setup and docs * fix(codex): address PR review follow-up issues * feat(vlm): add Kimi and GLM backends * refactor(vlm): simplify codex auth flow and docs * fix: update code comments and doctor validation * chore: update uv.lock after merge * Refine Codex auth flow and VLM backend integrations * Take over mirrored Codex auth on refresh * feat(vlm): refine provider setup and auth flow * style: format VLM and setup files * style: fix lint import ordering * fix(codex): harden auth refresh and disable streaming * fix(codex): translate tool history and refresh auth safely * style(lint): fix changed-file ruff violations * fix(init): refine cloud VLM setup prompts * style(lint): format setup wizard changes --------- Co-authored-by: Zayn Jarvis <zhiheng.liu@bytedance.com> |
||
|
|
5f5e16e7c1 |
feat(bot):Werewolf demo fix, Add one-click startup script (#1473)
* 增加关闭ov的配置 * 增加常见QA * 狼人杀Demo |
||
|
|
26bbfd2c24 |
benchmark: add LoCoMo evaluation for Supermemory (#1401)
* benchmark: add LoCoMo evaluation scripts for supermemory * benchmark(locomo): improve supermemory ingest and eval robustness - ingest.py: parallelize session upload/poll with ThreadPoolExecutor, add sample-level concurrency, parse LoCoMo dates to ISO 8601, simplify session content format - supermemory/eval.py: force explicit supermemory_search in prompt to work around first-turn autoRecall skip, pass question_time to gateway - mem0/eval.py: increase gateway startup sleep from 3s to 5s Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(benchmark): remove dead code and fix potential IndexError in delete_container.py - Remove unused variable `prefix_sanitized` - Guard `k.split(":")[1]` access with length check to avoid IndexError on malformed ingest record keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
006593ff2e |
fix(security): remove leaked token from settings.py (#1319)
- Remove tests/oc2ov_test/config/settings.py containing exposed auth token - Add settings.py to .gitignore to prevent future leaks - Users should copy settings.example.py to settings.py and fill in their own tokens |
||
|
|
1b3a8f20a0 |
Feat(benchmark): Add benchmark/RAG : RAG system evaluation framework (#825)
* Add RAGbenchmark: RAG system evaluation framework * Update README.md * Update README.md * Update README.md * Code structure refactoring * feat: improve RAG benchmark with dataset sampling and configuration updates - Add complete dataset sampling scripts with document-level sampling - Implement filtering logic consistent with adapters (exclude category 5 for Locomo, no answer for SyllabusQA, unanswerable for Qasper) - Update configuration from raw_data/dataset_dir to dataset_path for clarity - Enhance adapters with improved path handling and data loading - Add gitignore for data and output directories - Add dependencies (datasets, pandas, tavily-python) - Add test files and documentation * feat: add stratified sampling support to all datasets - Implement stratified sampling for Locomo (by category 1-4) - Implement stratified sampling for SyllabusQA (by question_type) - Implement stratified sampling for Qasper (by answer type: extractive/free_form/yes_no) - Implement stratified sampling for FinanceBench (by question_type) - Add proper handling when sample size cannot be evenly split: - Display warning message - Distribute remaining QAs to first N categories - Fall back to random sampling if sample size too small - Update prepare_dataset.py to support both 'random' and 'stratified' modes - Set default sampling mode to 'random' * Update locomo adapter to support image attachments and other improvements * Update dataset documentation with actual document counts * Add benchmark results reference and reproduction steps * Improve sampling scripts for benchmark reproducibility * Refactor sample_dataset.py: extract common sampling logic - Fix two bugs: 1. num_docs + sample_size + random path: use int indices instead of dict tuples 2. pure stratified path: use len() for list length calculation - Extract common sampling utilities: - calculate_category_targets() - stratified_sample_with_reallocation() - random_sample_qas() - sample_docs_stratified() - sample_docs_random() - Reduce code duplication by ~60-70% - Improve maintainability and readability - Keep full backward compatibility * Update config.yaml: improve configuration structure - Add FinanceBench to supported datasets list - Change to template configuration format - Add execution: section for better organization * Fix bug: duplicate worker_end() call in generation failure path - Remove duplicate monitor.worker_end(success=False) call in run_generation() - The _process_generation_task() already calls worker_end() in its exception handler - This prevents double-counting of failed tasks and distorted statistics * Fix bug: _get_required_syllabi() doesn't support JSON input - Add JSON file support to _get_required_syllabi() - Extract syllabus names from JSON keys (same format as _load_from_json()) - This ensures data_prepare() processes correct docx files when using JSON input * Improve exception re-raising: use bare raise to preserve traceback - Replace 'raise e' with bare 'raise' to preserve original traceback - Also remove unused 'e' variable since we don't need it - This makes debugging easier by showing where the exception actually occurred * Fix bug: Locomo prompt uses raw gold_answer instead of gold_answer_str - In Locomo prompt, use gold_answer_str instead of gold_answer - This ensures consistent formatting when gold_answer is a list - Both Locomo and Generic prompts now use the same ' | ' separated format * Improve directory ingest: use os.path.commonpath() for robustness - Replace manual common ancestor calculation with os.path.commonpath() - os.path.commonpath() handles all OS path separators correctly - Add try-except to handle ValueError when no common path exists - More robust than manual split(os.sep) approach * benchmark: honor skip_ingestion and fail on LLM retry exhaustion |
||
|
|
a66a1a6655 |
Refactor memory extract v2 (#1045)
* docs: add memory extractor templating and update mechanism optimization design document - Add bilingual (English/Chinese) design document for memory templating system - Include YAML-based MemoryTypeRegistry with 8 built-in types - Detail ReAct 3+1 phase flow with pre-fetch optimization - Describe 3-operation Schema: write/edit/delete - Document RoocodePatch SEARCH/REPLACE format - Explain dual-mode design: simple mode vs template mode - Cover pre-fetch optimization: ls directories + read .abstract.md/.overview.md + search once - Include merge operations: patch, sum, avg, immutable - Address #578: allow custom prompt template addition and specification Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add memory templating system with ReAct orchestrator - Add YAML-configurable memory schemas (cards, events, entities, etc.) - Implement MemoryReAct with tool use (read/find/ls) - Add schema-driven memory operations (write_uris/edit_uris/delete_uris) - Implement memory patch handler for incremental updates - Add comprehensive test suite * refactor: memory extractor templating system with ReAct orchestrator ## Summary Implement memory templating system (GitHub Issue #578) - a complete rewrite of the memory extractor subsystem to support YAML-configurable memory types instead of hardcoded categories. ## Key Changes ### Architecture - Replace hardcoded 8 memory types with YAML-configurable schema system - Add MemoryTypeRegistry to load memory type definitions from YAML files - Dynamic Pydantic model generation from schema for type safety - Field-level merge operations: PATCH, SUM, IMMUTABLE ### Memory Extraction Flow - Implement ReAct orchestrator for single-pass memory updates - MemoryUpdater for applying operations to storage - Memory tools (read, search, ls) for ReAct loop - Stable JSON parser with 5-layer fault tolerance ### File Naming & Storage - Semantic filenames from template ({topic}.md instead of random IDs) - Two memory modes: simple mode and template mode - MEMORY_FIELDS HTML comment for structured metadata ### Configuration - 9 YAML templates in openviking/prompts/templates/memory/ - memory_config.py for memory system configuration - Dual-threshold compact upload mechanism in design doc ### Deletions - Remove old memory_content.py, memory_data.py, memory_operations.py - Remove memory_types.py, memory_utils.py, memory_patch.py - Remove corresponding old test files ### Updated Components - VLM backends (litellm, openai, volcengine) for new interfaces - Session and service core integration - Test suite for new architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: pass ctx/user/session_id in commit_async for memory extraction ## Summary Fix missing parameters in commit_async() when calling extract_long_term_memories(). The synchronous commit() method correctly passes these parameters, but the async version was missing them, causing memory extraction to be skipped. ## Changes - Pass user=self.user, session_id=self.session_id, ctx=self.ctx in commit_async() when calling extract_long_term_memories() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: convert FindResult to dict before returning from search tool ## Summary Fix JSON serialization error by converting FindResult object to dict using its to_dict() method before returning from MemorySearchTool. ## Changes - In MemorySearchTool.execute(), return search_result.to_dict() instead of search_result directly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: swap None check before accessing final_operations in memory_react Also rename schema_models.py to schema_model_generator.py for clarity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add edit_overview support and optimize memory registry initialization - Add edit_overview_operations to MemoryUpdater for updating .overview.md files - Optimize MemoryTypeRegistry initialization in SessionCompressorV2 (load once) - Various memory templating system improvements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove unnecessary indent in JSON schema output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add markdown link format hint to overview field description Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add pre-fetch search based on user messages in conversation Also fix duplicate line in system prompt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * rebase * feat: add vectorization for memory files and overview format - MemoryUpdater now vectorizes written/edited memory files after apply_operations - MemoryReAct generates overview following semantic.overview_generation.yaml format - Auto-extract and write .abstract.md from overview in memory_updater - Fix import: VikingURI is from openviking_cli.utils.uri Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update bot README to use openviking-server --with-bot and ov chat - Change vikingbot gateway to openviking-server --with-bot - Change vikingbot chat to ov chat - Update --no-markdown to --no-format - Remove --logs flag (not available) - Simplify CLI Reference table - Also update Chinese README_CN.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: rewrite xiaomei memory demo as standalone script Convert from pytest to standalone script with: - SyncHTTPClient instead of AsyncHTTPClient - Rich for pretty console output - Phase control (ingest/verify/all) - Better error handling and progress display Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: use markdown links in overview instead of numeric references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove duplicate code from copy-paste residue - Remove duplicate logger and create_session_compressor in session/__init__.py - Remove duplicate MemoryConfig import in open_viking_config.py Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update * update * update * update * update * fix: VolcEngine VLM response parsing and caching issues - Parse function_call type responses (Responses API format) - Fix cache key logic to use consistent "current" messages - Fix previous_response_id not being passed when tools exist - Fix tool call parsing to handle both tc.name and tc.function.name - Preserve tool role info and image content in message conversion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复内存提取过程中锁获取失败的问题 * 修复内存提取过程中锁获取失败问题及隐藏 VolcEngineVLM 相关日志 * 修复内存提取过程中锁获取失败问题及隐藏 VolcEngineVLM 相关日志 * 实现通过 start_index 和 end_index 获取原文内容的功能 * Improve start_index and end_index understanding by adding message indices * Update skills.yaml and tools.yaml to use Jinja2 template syntax * 实现 events.yaml 记忆类型只新增模式 * 更新其他记忆类型配置和测试文件 * 优化测试输出,隐藏 cache_control 日志 * 优化工具记忆模板和压缩器v2 * 优化记忆提取:search结果总是加入messages,refetch时允许额外迭代 - search 工具无论是否有结果都记录到 messages 中 - refetch 时如果已达最大迭代次数,允许额外增加一次迭代 - 使用局部变量 max_iterations 避免修改实例属性 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 重构记忆提取模块 - 优化 tools.py 工具定义和消息格式 - memory_react.py 支持 refetch 时额外迭代 - 更新 memory_updater, patch, utils 等模块 - 更新测试文件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 添加 FaultTolerantBaseModel,重构容错逻辑 - 参考 vikingdb BaseModelCompat 创建 FaultTolerantBaseModel - 在 model_validator(mode='before') 中自动做字段容错 - schema_model_generator 动态模型继承 FaultTolerantBaseModel - extract_loop 删除 fallback 代码 - 修复 skills.yaml 模板变量缺失问题 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复 extract_context 未定义问题 在模板变量中始终传入 extract_context,避免 Jinja2 访问时 undefined Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复 tools.yaml 模板变量缺失问题 - 简化模板,移除复杂表达式计算 - 添加 default 过滤器处理缺失变量 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 简化 events.yaml 模板 移除 extract_context 调用,添加 default 过滤器 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 恢复 events.yaml extract_context 调用 用 {% if extract_context %} 判断避免 None 时报错 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 使用 DebugUndefined 处理模板未定义变量 - 使用 jinja2.DebugUndefined,未定义变量保留在输出中而不是报错 - 修复测试文件添加 extract_context 参数 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复 MEMORY_FIELDS 出现在 abstract 中的问题 使用 parse_memory_file_with_fields 清理内容后再提取 abstract Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复向量索引时 MEMORY_FIELDS 出现在 abstract 中的问题 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复 MEMORY_FIELDS 在向量索引中出现的多个问题 - 使用 parse_memory_file_with_fields 清理内容后再提取 abstract - 修复 _extract_abstract_from_overview 和向量索引两处 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 支持 events ranges 单个索引格式 支持 "7,9,11,13" 格式的单个索引,与范围格式混用 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 修复 memory_type 未传递到 _apply_write 的问题 - 定义 ResolvedOperation dataclass 包含 model, uri, memory_type - 修改 ResolvedOperations 使用 ResolvedOperation 列表替代元组 - 修改 apply_operations 传递 memory_type 参数到 _apply_write - 修复 validate_operations_uris 中的元组解包问题 - 更新测试用例使用 dataclass 属性访问 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 重构记忆提取系统:引入 ExtractContextProvider 抽象 ## 核心变更 - 新增 ExtractContextProvider 抽象类,将 schema 加载和 context 提供分离 - 新增 SessionExtractContextProvider 实现,从会话消息中提取记忆 - ExtractLoop 现在接受 context_provider 而非 registry ## 模板优化 - events.yaml: 支持 ranges 解析和消息时间提取 (first_message_time) - 简化 tools.yaml 和 skills.yaml 模板,移除冗余的历史调用描述 ## 其他优化 - volcengine_vlm.py: 添加 timeout 参数支持 - sessions.py: 优化会话相关路由 - 清理 json_parser.py 中未使用的函数 - 简化 schema_model_generator.py 中的模型生成逻辑 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 重构 VolcEngine VLM 的 cache 实现,参考 ArkLM 的三个方法 主要改动: 1. 新增 get_response_id、responseapi_prefixcache_completion、 responseapi_common_completion 三个方法,参考 ArkLM 实现 2. 统一工具调用消息格式:role=tool_call, content={tool_call_name, args, result} 3. 在 optimize_tool_result 中对 read 工具的 content 字段做截断 4. 修复 cache_control 逻辑:找到最后一个 breakpoint,从头到该位置为 static 5. 简化 volcengine_vlm.py,删除旧的 cache 相关方法 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 重构记忆提取系统:简化 ExtractLoop 逻辑,优化内存 prompt 模板 - 移除 ExtractLoop 中的重复逻辑,简化代码结构 - 优化 events/preferences/skills/tools 等 memory prompt 模板 - 清理 core.py 中未使用的代码 - 更新相关测试用例 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
f32af085d7 |
feat: 添加完整的 API 测试套件 (#950)
- 使用 uv 管理依赖和虚拟环境 - 实现双模式测试策略(有 secrets 运行完整测试,无 secrets 跳过 VLM/Embedding 测试) - 添加 GitHub Actions CI 配置 - 添加本地化脚本 local-test.sh - 优化测试用例,添加场景化断言和中文测试数据 - 修复 API 客户端字段名与服务端契约不一致问题 - 确保在干净环境中可重复运行 |
||
|
|
2771765298 |
Refactor memory extract (#916)
* docs: add memory extractor templating and update mechanism optimization design document - Add bilingual (English/Chinese) design document for memory templating system - Include YAML-based MemoryTypeRegistry with 8 built-in types - Detail ReAct 3+1 phase flow with pre-fetch optimization - Describe 3-operation Schema: write/edit/delete - Document RoocodePatch SEARCH/REPLACE format - Explain dual-mode design: simple mode vs template mode - Cover pre-fetch optimization: ls directories + read .abstract.md/.overview.md + search once - Include merge operations: patch, sum, avg, immutable - Address #578: allow custom prompt template addition and specification Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add memory templating system with ReAct orchestrator - Add YAML-configurable memory schemas (cards, events, entities, etc.) - Implement MemoryReAct with tool use (read/find/ls) - Add schema-driven memory operations (write_uris/edit_uris/delete_uris) - Implement memory patch handler for incremental updates - Add comprehensive test suite * refactor: memory extractor templating system with ReAct orchestrator ## Summary Implement memory templating system (GitHub Issue #578) - a complete rewrite of the memory extractor subsystem to support YAML-configurable memory types instead of hardcoded categories. ## Key Changes ### Architecture - Replace hardcoded 8 memory types with YAML-configurable schema system - Add MemoryTypeRegistry to load memory type definitions from YAML files - Dynamic Pydantic model generation from schema for type safety - Field-level merge operations: PATCH, SUM, IMMUTABLE ### Memory Extraction Flow - Implement ReAct orchestrator for single-pass memory updates - MemoryUpdater for applying operations to storage - Memory tools (read, search, ls) for ReAct loop - Stable JSON parser with 5-layer fault tolerance ### File Naming & Storage - Semantic filenames from template ({topic}.md instead of random IDs) - Two memory modes: simple mode and template mode - MEMORY_FIELDS HTML comment for structured metadata ### Configuration - 9 YAML templates in openviking/prompts/templates/memory/ - memory_config.py for memory system configuration - Dual-threshold compact upload mechanism in design doc ### Deletions - Remove old memory_content.py, memory_data.py, memory_operations.py - Remove memory_types.py, memory_utils.py, memory_patch.py - Remove corresponding old test files ### Updated Components - VLM backends (litellm, openai, volcengine) for new interfaces - Session and service core integration - Test suite for new architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: pass ctx/user/session_id in commit_async for memory extraction ## Summary Fix missing parameters in commit_async() when calling extract_long_term_memories(). The synchronous commit() method correctly passes these parameters, but the async version was missing them, causing memory extraction to be skipped. ## Changes - Pass user=self.user, session_id=self.session_id, ctx=self.ctx in commit_async() when calling extract_long_term_memories() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: convert FindResult to dict before returning from search tool ## Summary Fix JSON serialization error by converting FindResult object to dict using its to_dict() method before returning from MemorySearchTool. ## Changes - In MemorySearchTool.execute(), return search_result.to_dict() instead of search_result directly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: swap None check before accessing final_operations in memory_react Also rename schema_models.py to schema_model_generator.py for clarity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add edit_overview support and optimize memory registry initialization - Add edit_overview_operations to MemoryUpdater for updating .overview.md files - Optimize MemoryTypeRegistry initialization in SessionCompressorV2 (load once) - Various memory templating system improvements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove unnecessary indent in JSON schema output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add markdown link format hint to overview field description Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add pre-fetch search based on user messages in conversation Also fix duplicate line in system prompt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * rebase --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
0fb8f13a13 |
fix: windows zip path, code repo indexing, search retrieval, account id, rust cli version... (#577)
* fix: windows zip path norm * fix: account id in vector db * fix: add some log * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search * fix: add some log, and fixed search --------- Co-authored-by: openviking <openviking@example.com> |
||
|
|
8f1fef9cdf | fix(Dockerfile): add rust ov (#570) | ||
|
|
347c28910f |
Fix/skill tool memory (#514)
* fix tool/skill bug * fix * change file place * fix suggestions * update mode * update |
||
|
|
8c740fd565 |
chore: 编译子命令失败报错, golang版本最低要求1.22+ (#444)
* chore: 编译子命令失败报错, golang版本最低要求1.22+ * fix: agfs默认启用binding-client相关改造 |
||
|
|
e418870220 |
fix(agfs): 修复agfs binding-client安装问题, 清理agfs lib文件 (#337)
* fix(agfs): 修复agfs binding-client安装问题, 清理agfs lib文件 * fix(agfs): 暂时去掉文档说明 |
||
|
|
8274cc31ef |
fix: 修复单测以适配 vectordb 接口重构,统一测试数据路径 (#333)
- 修复 filesystem stat 错误匹配,增加 "not found" 判断 - 为 AddResourceRequest 添加 model_validator 校验 path 参数 - 处理 queue manager 未初始化时 ObserverService 的异常 - 简化 vectordb record ID 生成逻辑,移除 owner_space - 捕获 HTTP client close 时的 RuntimeError - 统一测试数据路径至 test_data/ 目录 - 更新测试用例使用 get_context_by_uri() 等新接口 - 移除测试 mock 对 VikingDBInterface 的依赖 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
4c9340fc10 |
feat(agfs): agfs新增binding client (#304)
* feat(agfs): agfs新增binding client fix: viking_fs适配binding client, 简化agfs相关参数 * feat(agfs): agfs binding-client支持windows * docs: 补充agfs binding-client用法 * fix(agfs): 默认带上agfs binding-client依赖库; setup.py支持编译该库 * fix(agfs): add agfs binding-client linux so * fix(agfs): code format |
||
|
|
ec7afc6e51 |
增加openviking/eval模块,用于评估测试 (#265)
* feat(eval): 增加评估模块,对viking_fs s3后端测试 * fix: 修复s3测试 * fix(eval): fix ruff check * refactor: eval细分ragas模块用于rag相关评测 |
||
|
|
3c7fecc07e |
Feat/support multi providers , OpenViking支持多providers (#192)
* support multi-provider * revise readme, fix bugs |
||
|
|
44032c93f7 |
feat: add Rust CLI implementation [very fast] (#162)
* feat: add Rust CLI implementation * feat: add multi-platform CI and curl installer - GitHub Actions workflow for Linux/macOS/Windows builds - install.sh script with platform detection and checksum verification - README updated with Rust CLI installation instructions - Build badges and platform support documentation * fix: improve Rust CI workflow and integrate with existing PR checks - Rename build.yml to rust-cli.yml to avoid conflicts - Add path filters to trigger only on Rust file changes - Integrate Rust build into existing PR workflow - Fix cross-compilation setup for ARM64 Linux - Fix checksum generation for macOS compatibility - Add proper environment variables for cross-compilation * test: add test files for GitHub Actions release workflow * test: bump Rust CLI version to test cross-platform build workflow * fix: update GitHub Actions to use non-deprecated artifact actions v4 * fix: add test-release-actions branch to rust-cli workflow triggers * fix: clean up unused imports and variables in Rust CLI * fix: resolve OpenSSL build errors on Linux - Switch reqwest to use rustls-tls instead of native-tls for better portability - Add pkg-config and libssl-dev installation for Linux builds as fallback - Eliminates openssl-sys dependency issues on Ubuntu runners * fix: resolve config file parsing issues - Add serde defaults for url and output fields to handle missing config values - Add new 'config init' command to initialize configuration properly - Make configuration backward compatible with existing configs - Provide better error messages and initialization flow for users * Fix CLI to work with OpenViking server - Remove comfy-table dependency (unused, causing build issues with Rust 1.87) - Fix error handling to properly handle null error field in API responses - Update Cargo.toml to remove unused dependency - Client now correctly parses responses from OpenViking server Tested: openviking-cli ls / works correctly with remote server * chore: remove test artifacts and debug logic Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: add rest of APIs * rollback: pr workflow * feat: try new build action * feat: openviking-cli -> ov * chore: redundant cleanup * fix: checksum issue * fix: update install script for zaynjarvis/openviking - Change repository from volcengine/OpenViking to zaynjarvis/openviking - Fix SKIP_CHECKSUM environment variable documentation - Add validation to detect 'Not Found' checksum files and skip gracefully * fix: unicode slice * feat: uses updated actions for rust-cli * feat: update install.sh for release * feat: improve tree and ls alignment --------- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> |
||
|
|
3165ffa0da |
feat: add HTTP Server and Python HTTP Client (T2 & T4) (#109)
* feat: add Server/Client architecture with HTTP API and restructure documentation
- Implement FastAPI-based HTTP server (openviking/server/) with REST API
- Add client abstraction layer (LocalClient, HTTPClient, BaseClient)
- Add CLI entry point (python -m openviking serve)
- Fix bugs: session.session_id, link/unlink param names, hmac.compare_digest
- Restructure docs: remove numbered prefixes, add guides/, rewrite API reference
with both Python SDK and HTTP API (curl) examples (en/zh)
- Add quickstart-server, deployment, authentication, monitoring guides
- Update examples and design docs to reflect implementation
* 提供单测 和 文档
* Merge branch 'main' into feature/server_client
* feat: add server/client examples and server tests
* fix: cross-references
* fix : tests
|
||
|
|
e82d94021c |
fix: 修复s3fs适配 (#52)
Co-authored-by: baojun-zhang <zhangbaojun.1@bytedance.com> |
||
|
|
5856f9dc88 | fix: fix ci action (#51) | ||
|
|
74ea0f95f6 |
feat: chat & chat w/ mem examples (#39)
* docs(chat): add OpenViking chat application design - REPL-style chat interface with rich terminal UI - Client-server architecture (port 8391) - Automatic RAG for context-aware responses - Auto-commit sessions on exit - Modular structure for multi-agent development chore: add .worktrees to gitignore docs: add chat examples design document - Phase 1: Multi-turn chat interface (no persistence) - Phase 2: Chat with session memory using OpenViking Session API - Detailed architecture, implementation plan, and testing strategy * docs(chat): add detailed implementation plan for Phase 1 - 9 bite-sized tasks with exact code - TDD approach with manual testing - Frequent commits after each task - Complete REPL implementation - Handoff document for Phase 2 * feat(chat): create directory structure with symlinks to query example * fix(chat): remove broken data symlink - data directory is runtime artifact * feat(chat): implement ChatSession for in-memory history * docs: add agent handoff document for continuing implementation - Complete task specifications for Tasks 3-9 - Subagent-driven development instructions - Current status summary (Tasks 1-2 complete) - Code examples and test procedures - Entry point for next agent * feat(chat): add ChatREPL class skeleton with signal handling * feat(chat): implement welcome banner, help, and command handling * feat(chat): implement question/answer display with sources * feat(chat): implement main REPL loop with readline support * fix(chat): chat func declaration * feat(chat): support multi-run chat and tested * fix(chat): interupt, remove debug log, move doc * docs(chatmem): add Phase 2 implementation plan - 11 detailed tasks with exact code - Session API integration steps - Message recording and commit procedures - Testing and verification checklist - Comprehensive documentation plan - Success criteria for completion * feat(chatmem): create Phase 2 directory from chat example - Copy examples/chat/ to examples/chatmem/ - Update pyproject.toml name to chatmem - Base for Session API integration * refactor(chatmem): remove ChatSession, add Session API imports - Remove in-memory ChatSession class - Add OpenViking Session API imports - Prepare for Session integration * feat(chatmem): initialize OpenViking client and Session - Add session_id parameter to ChatREPL.__init - Initialize SyncOpenViking client in run() - Create/load Session with session_id - Display session info if continuing from previous - Keep Recipe initialization * feat(chatmem): record user and assistant messages to Session - Add user message before query - Add assistant message after response - Remove old in-memory add_turn() call - Messages now persist in Session * feat(chatmem): commit session on exit with memory extraction - Update _signal_handler to commit on Ctrl-C - Update run() finally block to commit on normal exit - Display memory extraction count - Handle commit errors gracefully - Session persists to data/session/ * feat(chatmem): add --session-id command line argument - Add --session-id flag to specify session - Default: chat-interactive - Update help text to mention persistent memory - Pass session_id to ChatREPL * docs(chatmem): add comprehensive README with memory features - Document session persistence behavior - Explain memory extraction process - Show session management examples - Compare with examples/chat/ - Add troubleshooting section - Include architecture diagrams * docs(chatmem): add detailed comparison with chat example - Side-by-side feature comparison - Use case recommendations - Code differences - Storage structure comparison - Performance considerations - Migration path examples * test(chatmem): add comprehensive test results - Session creation/loading verified - Message recording tested - Memory extraction confirmed - Multiple sessions working - Error handling tested - All commands functional * feat(chatmem): Phase 2 complete - persistent memory implementation Complete Features: - Session persistence using OpenViking Session API - Automatic message recording (user + assistant) - Session commit on exit with memory extraction - Previous session loading on startup - Multiple independent sessions (--session-id) - Comprehensive documentation and testing Architecture: - OpenViking SyncClient for storage - Session API for message management - Memory extraction on commit - Session storage in data/session/ Testing: - All functionality verified - Multiple sessions tested - Error handling confirmed - Memory extraction working Ready for production use. * fix(chatmem): session API * fix(chatmem): retrieve memory from FindResult * feat(chatmem): aggregate chatmem docs * refactor: replace symlink with common pkg |
||
|
|
f98dc0ed1c | first commit |