Files
2026-03-12 17:29:39 +00:00
..
2026-03-12 17:29:39 +00:00
2026-03-12 17:29:39 +00:00
2026-03-12 17:29:39 +00:00
2026-03-12 17:29:39 +00:00

Code Companion

A set of developer-focused scripts that use OpenJarvis tool-using agents to automate common coding tasks: code review, debugging, and test generation.

What This Demonstrates

Each script wires up a Jarvis instance with the native_react (ReAct) agent and a curated set of tools. The ReAct loop lets the agent reason step by step -- reading files, running commands, and thinking -- before producing a final structured answer. This is the same pattern you can adapt for any code intelligence workflow.

Script Purpose Tools Used
reviewer.py Review a git diff between two branches git_diff, git_log, file_read, think
debugger.py Investigate an error and propose a fix file_read, shell_exec, think
test_gen.py Generate comprehensive tests for a Python module file_read, think, file_write

Prerequisites

  1. Install OpenJarvis (from the repo root):

    uv sync --extra dev
    
  2. Start an inference engine. The default is Ollama:

    ollama serve
    ollama pull qwen3:8b
    

    Alternatively, set up a cloud engine by sourcing your API keys:

    source .env
    

Quick Start

Code Review

Review the diff between a feature branch and main:

python examples/code_companion/reviewer.py --branch feature-x

Review the current HEAD against a specific base:

python examples/code_companion/reviewer.py --branch HEAD --base develop

Debug Assistant

Investigate an error message:

python examples/code_companion/debugger.py --error "TypeError: NoneType has no attribute 'split'"

Point it at the file where the error occurred for faster root-cause analysis:

python examples/code_companion/debugger.py \
    --error "KeyError: 'user_id'" \
    --file src/app/views.py

Test Generation

Generate pytest tests for a module:

python examples/code_companion/test_gen.py --module src/openjarvis/tools/calculator.py

Use unittest instead, and write to a specific file:

python examples/code_companion/test_gen.py \
    --module src/openjarvis/tools/calculator.py \
    --framework unittest \
    --output tests/test_calculator_generated.py

How the ReAct Agent Loop Works

Each script uses the native_react agent, which follows the Thought-Action-Observation cycle:

  1. Thought -- The agent reasons about what to do next (often using the think tool to structure its reasoning).
  2. Action -- The agent calls a tool (e.g., git_diff, file_read, shell_exec).
  3. Observation -- The tool result is fed back to the agent.
  4. Repeat until the agent has enough information to produce a final answer.

This loop allows the agent to adaptively explore the codebase rather than relying on a single prompt/response exchange. For example, the reviewer might read a diff, notice a suspicious function call, then read the source of that function before making its assessment.

Customization

Model and Engine

All three scripts accept --model and --engine flags:

python examples/code_companion/reviewer.py --model gpt-4o --engine cloud
python examples/code_companion/debugger.py --model claude-sonnet-4-20250514 --engine cloud

Tools

To change which tools an agent can use, edit the tools list in the script. Available tools include calculator, web_search, shell_exec, code_interpreter, memory_store, memory_search, and more. Run uv run jarvis eval list or inspect src/openjarvis/tools/ for the full registry.

Prompts

Each script contains a prompt string that instructs the agent. Modify this to change the review criteria, debugging strategy, or test generation style to match your team's conventions.

SDK Pattern

All three scripts follow the same core pattern:

from openjarvis import Jarvis

j = Jarvis(model="qwen3:8b", engine_key="ollama")
try:
    response = j.ask(
        "Your task description here...",
        agent="native_react",
        tools=["git_diff", "file_read", "think"],
    )
    print(response)
finally:
    j.close()