Skip to content

Commit 8bd4a29

Browse files
chenjwclaude
andcommitted
fix(memory): skills template None value causes empty content
- skills.yaml: use |default(0, true) to handle None values in Jinja2 template (default() only replaces undefined, not None) - content.py: log and raise on template rendering failure instead of silently swallowing the exception (results in empty content) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 0a960dc commit 8bd4a29

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

openviking/prompts/templates/memory/skills.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ enabled: true
77
content_template: |
88
Skill: {{ skill_name }}
99
10-
- Success rate: {{ ((success_count|default(0) / (total_executions|default(1) if total_executions|default(0) > 0 else 1)) * 100)|round|int }}% ({{ success_count|default(0) }}/{{ total_executions|default(0) }})
10+
- Success rate: {{ ((success_count|default(0, true) / (total_executions|default(1, true) if total_executions|default(0, true) > 0 else 1)) * 100)|round|int }}% ({{ success_count|default(0, true) }}/{{ total_executions|default(0, true) }})
1111
- Best for: {{ best_for|default('N/A') }}
1212
- Recommended flow: {{ recommended_flow|default('N/A') }}
1313
- Key dependencies: {{ key_dependencies|default('N/A') }}

openviking/session/memory/utils/content.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@ def serialize_with_metadata(
7676

7777
jinja_template = env.from_string(content_template)
7878
content = jinja_template.render(**template_vars).strip()
79-
except Exception:
80-
# If template rendering fails, use content as-is
81-
pass
79+
except Exception as e:
80+
from openviking.telemetry import tracer
81+
82+
tracer.error(f"Template rendering failed, skipping write: {e}")
83+
raise
8284

8385
# Clean metadata - remove None values and memory_type
8486
clean_metadata = {k: v for k, v in metadata.items() if v is not None and k != "memory_type"}

0 commit comments

Comments
 (0)