Session 1. Configure the assistant and the repository instructions — Mon 14 Sep

Day one: the mental model, then two prompts

What this bootcamp is

Three weeks, fifteen sessions, one capstone: a source-grounded research assistant. Every class ends with something that runs and a check that says so. The last week connects your assistant to real external APIs, safely. One coherent stack, built and tested by you.

The vocabulary (pin this)

Word Means
Model The probabilistic text engine
Prompt Everything the model sees this call
Tool A bounded capability the app executes
Workflow Fixed steps, no decisions
Agent A loop where the model decides
MCP server Tools packaged behind a protocol
Coding assistant An agent whose tools edit code

Request → context → model → tool → verification

Every call through every framework has the same five parts.

Part Who controls it
Request the user, or the previous step of a loop
Context you: the files, the policy, the retrieved text
Model the provider. It fills one gap, probabilistically
Tool you: what it may call, with what arguments, capped how
Verification you: the parser, the test, the check cell, the reviewer

Where the model is probabilistic: the same question, phrased twice, returns two answers. A confident tone is not correct content. It cannot reliably say "I don't know" unless you engineer the refusal. Everything else in the row is deterministic and yours. That ratio is the whole course.

The smallest call

from bootcamp_agent.llm import FakeLLM

hello_llm = FakeLLM(
    responses={"hello": "Hello! I am a deterministic stand-in for a language model."},
    default="I have no canned answer for that — a real model would improvise here.",
)
print(hello_llm.complete(system="You are concise.", user="Say hello to the bootcamp"))
Hello! I am a deterministic stand-in for a language model.

system: how to behave. user: the task. The return: text. This is the boundary every framework wraps, and FakeLLM answers from a keyword table, so tests can assert on it. Session 2 puts the real providers behind the same seam.

The capstone, and its bar

src/bootcamp_agent/ is the final shape. You rebuild the pieces week by week. By session 12 it is a research assistant that answers from a versioned six-document corpus, cites doc ids the code verifies, refuses unsupported questions, and shows its trace and its eval results.

A coding assistant is the same shape pointed at your repository. Its request is your instruction. Its context is the policy file you write today. Its tools edit files and run commands. Its verification is you. Today is about the context and the verification, because those are the two parts you own.

The same assistant, two prompts

Weak:

add a search feature

Output: invents an architecture, touches five files, adds a dependency,
        writes a test that asserts the mock.

Project-aware:

read AGENTS.md, then propose a plan to add a tags filter to search_documents in src/bootcamp_agent/tools.py. Plan only, no edits.

Output: names the file, follows the conventions in AGENTS.md,
        lists the three lines it would change, waits for approval.

The difference is not the model. It is the harness.

What changed between the two

Weak Project-aware
Context none the policy file, read first
Scope open one function, one file
Output edits a plan
Who decides the assistant you

Run both in your own assistant during the warm-up. Paste short excerpts into the notebook's first logbook cell. The rest of the session is about making the second prompt the default without typing it every time.