文件最后提交记录最后更新时间
refactor: consolidate all config/env/docs into config/ and docs/ directories Move all configuration files, environment variables, templates, and documentation out of the project root into organized directories: - config/: runtime config, templates, env vars, AGFS/OpenClaw configs - docs/: ENV.md, OGMEMORY_ENV.md moved from root - docker/: Dockerfiles moved from root Update all loading paths (providers/unified_config.py, cli/commands/*, openclaw plugin, scripts) to read from config/ instead of root. Delete 4 duplicate templates (docker/ogmemory.example.yaml, docker/agfs-config.yaml, docker/openclaw-ogmem.json, agfs/config.example.yaml) replaced by unified config/ templates. Enhance ogmem onboard with mode-aware flows (local/docker/plugin), add --storage-backend flag, DB init, Docker deploy helpers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 25 天前
perf: fix M1/M3, multi-worker plan B, P1/P2 security fixes, report filtering M1 fix (rate_cards.py): - Split load_rate_card() into _load_cached(resolved_path: str) and public wrapper. lru_cache now keyed on resolved str path so same-path calls reuse cache. M3 fix (recorder.py): - Re-raise KeyError from compute_cost instead of silent $0 fallback. Unknown model without default in rate card must surface as error. Multi-worker plan B (recorder.py): - OGMEM_WORKER_ID env → perf.w{id}.jsonl suffix on JSONL path. - load_events() accepts directory → glob+merge all *.jsonl files. P1 fix (server/app.py): - POST /api/v1/perf/events now enforces _build_authenticated_context when perf is enabled (symmetric with GET). P2 fix (server/app.py): - GET response now documents that events is non-empty only with MemorySink. Default JsonlSink should use perf.report CLI to read persisted JSONL. Report filtering (report.py): - Use parent_span is None (not span=="") to identify stage root events, fixing synthetic events with named spans being misclassified as sub-spans. Dockerfile (standalone): - Remove COPY lifecycle/ (directory removed from workspace). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> 7 天前
merge: resolve PR #47 conflicts — keep retry logic + async drain + api_tool_choice Conflict resolution strategy: 1. openai_llm complete_with_tools: taoying's retry + tool_choice fallback + _track_usage 2. openai_llm complete_with_tools_messages: our api_tool_choice mapping + _track_usage 3. memory_service drain_outbox_sync: _async_drain with account_id param 4. memory_service after_turn: our async thread approach Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
perf: fix M1/M3, multi-worker plan B, P1/P2 security fixes, report filtering M1 fix (rate_cards.py): - Split load_rate_card() into _load_cached(resolved_path: str) and public wrapper. lru_cache now keyed on resolved str path so same-path calls reuse cache. M3 fix (recorder.py): - Re-raise KeyError from compute_cost instead of silent $0 fallback. Unknown model without default in rate card must surface as error. Multi-worker plan B (recorder.py): - OGMEM_WORKER_ID env → perf.w{id}.jsonl suffix on JSONL path. - load_events() accepts directory → glob+merge all *.jsonl files. P1 fix (server/app.py): - POST /api/v1/perf/events now enforces _build_authenticated_context when perf is enabled (symmetric with GET). P2 fix (server/app.py): - GET response now documents that events is non-empty only with MemorySink. Default JsonlSink should use perf.report CLI to read persisted JSONL. Report filtering (report.py): - Use parent_span is None (not span=="") to identify stage root events, fixing synthetic events with named spans being misclassified as sub-spans. Dockerfile (standalone): - Remove COPY lifecycle/ (directory removed from workspace). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> 7 天前