mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-31 03:12:16 +00:00
6.6 KiB
6.6 KiB
Changelog
All notable changes to OpenJarvis are documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
Added
- AI stack support for evaluating other agentic frameworks via subprocess.
New
evals/backends/external/subpackage wraps Hermes Agent and OpenClaw as one-shot subprocess backends behind the existingInferenceBackendABC; newevals/comparison/toolkit provides path + commit-pin enforcement (third_party.py), config templating (make_configs.py), and LaTeX table generation (table_gen.py). - New optional extra
framework-comparison(depends onpolars). - New pytest marker
live_externalfor integration tests requiring real foreign-framework installations.
Changed
JarvisAgentBackend.generate_fullandJarvisDirectBackend.generate_fullnow return the spec §6.2 extended fields (energy_joules,peak_power_w,tool_calls,turn_count,framework,framework_commit,error) for cross-framework comparison parity. Existing callers that didn't read these fields are unaffected._third_party.tomlno longer ships user-specific default paths. SetHERMES_AGENT_PATHandOPENCLAW_PATHenv vars to point at your local checkouts before running the framework-comparison harness; missing or empty paths now raiseThirdPartyNotFoundErrorwith an actionable hint.
Skills System (Plans 1, 2A, 2B)
-
Skills core — every skill is a tool. Skills appear in a system prompt catalog, agents invoke them on demand, content (pipeline results, markdown instructions, or both) gets injected into context.
SkillManifest+SkillSteptypes with tags, depends, invocation flags, markdown contentSkillManager— discovery, precedence resolution, catalog XML generation, tool wrappingSkillTool(BaseTool)— auto-extracts parameters from step argument templatesSkillExecutor— sequential pipeline execution with sub-skill delegation- Dependency graph with cycle detection, max depth enforcement, capability unions
- Security: four trust tiers (bundled/indexed/unreviewed/workspace), capability-gated enforcement
- Skill index module for git-backed registry search
-
agentskills.io spec adoption — canonical
SKILL.mdformat with YAML frontmatter following the agentskills.io open standard.SkillParserwith strict spec validation + tolerant field mapping viaFIELD_MAPPINGtableToolTranslatorfor external tool name translation (Bash -> shell_exec, Read -> file_read, etc.)- Source resolvers:
HermesResolver,OpenClawResolver,GitHubResolver SkillImporterwith provenance tracking (.sourcemetadata files), optional script import- Sourced subdirectory layout (
~/.openjarvis/skills/<source>/<name>/)
-
Skills learning loop — trace tagging, pattern discovery, DSPy/GEPA optimization.
- Trace metadata tagging:
skill,skill_source,skill_kindflow through ToolExecutor -> TraceCollector -> TraceStep SkillDiscoverywired intoSkillManager.discover_from_traces()with kebab name normalizationSkillOptimizer— per-skill DSPy/GEPA wrapper that buckets traces and writes sidecar overlaysSkillOverlay— sidecar storage at~/.openjarvis/learning/skills/<name>/optimized.tomlSkillManager._load_overlays()applies optimized descriptions + few-shot examples at discovery timeLearningOrchestrator._maybe_optimize_skills()— opt-in auto-trigger
- Trace metadata tagging:
-
Skills benchmark harness — 4-condition PinchBench evaluation.
- I3 fix:
skill_few_shot_exampleswired through SystemBuilder ->_run_agent->ToolUsingAgent->native_react.REACT_SYSTEM_PROMPT SkillBenchmarkRunner— 4-condition x N-seed x M-task sweep with markdown reportJarvisAgentBackendacceptsskills_enabledandoverlay_dirkwargs- Conditions:
no_skills,skills_on,skills_optimized_dspy,skills_optimized_gepa
- I3 fix:
-
CLI commands:
jarvis skill list/info/run/install/sync/sources/update/remove/searchjarvis skill discover— mine traces for recurring tool patternsjarvis skill show-overlay— inspect optimization outputjarvis optimize skills— run DSPy/GEPA per-skill optimizationjarvis bench skills— run the PinchBench skills benchmark
-
Agent prompt improvement:
native_react.REACT_SYSTEM_PROMPTnow includes "Using Skills" guidance that teaches agents to distinguish executable vs. instructional skill responses{skill_examples}placeholder for optimized few-shot example injection
-
Configuration:
[skills]section:enabled,skills_dir,active,auto_discover,auto_sync,max_depth,sandbox_dangerous[[skills.sources]]section:source,url,filter,auto_update[learning.skills]section:auto_optimize,optimizer,min_traces_per_skill,optimization_interval_seconds,overlay_dirSkillSourceConfigandSkillsLearningConfigdataclasses
-
Documentation:
docs/user-guide/skills.md— comprehensive user guidedocs/architecture/skills.md— technical deep-divedocs/tutorials/skills-workflow.md— end-to-end tutorialdocs/getting-started/configuration.md— expanded with skills config sectionsCLAUDE.md— updated architecture section
Fixed
- Trace metadata flow —
ToolResult.metadatanow propagates throughTOOL_CALL_ENDevent toTraceStep.metadata(was silently dropped at the event-bus boundary) - TaintSet JSON serialization —
ToolExecutor._json_safe_metadata()filters non-JSON-serializable values (likeTaintSet) from event payloads before they reachTraceStore - Non-dict YAML frontmatter — source resolvers handle
yaml.safe_load()returning a string instead of a dict (discovered on real OpenClaw imports) - OpenClaw category/name queries —
jarvis skill install openclaw:owner/slugnow correctly splits into category + name match - SkillDiscovery trace compatibility —
_extract_tool_sequencereads fromstep.input["tool"](the actualTraceStepformat), not the nonexistentstep.tool_nameattribute - LearningOrchestrator skill trigger —
_maybe_optimize_skillsruns BEFORE the SFT-data short-circuit (skills are tagged via trace metadata, not mined as SFT pairs) - PinchBenchScorer constructor —
SkillBenchmarkRunnerconstructsPinchBenchScorer(judge_backend, model)instead of no-args - EvalRunner results access — reads per-task data from
eval_runner.resultsproperty, not nonexistentsummary.results