Review the code
your AI agent wrote
Your agent finished a task, and the diff is longer than you can read carefully. Open the project in Yenpo, start from Local Changes or a branch diff, and use search, navigation, and the AI Reader to work through one change at a time.
Installation and opening your first project
Local files on Mac · Optional AI · Local changes and Git diffsv0.1.303 EAP · Apple silicon & Intel · macOS 14+Expires (UTC)AI requires a configured model provider; its usage charges apply.
Turn a change you accepted into code you can explain
After a round with Claude Code, Codex, or Cursor, pick one small change you want to own. Make the question concrete: which items should this filter return now, what rule excludes an item, and what would change if that rule changed? Write down your prediction before you ask for an explanation.
Keep the input beside the rule
Open the data, filtering function, and caller in separate tabs. Use file and text search to find the names you see in the feature. Read which values the caller actually supplies.
Check an explanation in the source
With a model provider configured, ask about the rule or branch you cannot explain. Follow source references and read the surrounding conditions, then describe the result in your own words.
Change one rule and check the result
Choose a small manual edit. Predict which cases will change and which will stay the same, then run the focused command or test in your terminal. Keep the explanation with your own notes.
Try the learning loop with a small, runnable filter
The exercise includes fictional data, three output predictions, a one-line change, and checks for the changed behavior. You can do it without a model account. Yenpo gives you a place to read local code; you run the example and its checks yourself.
Review a change through the behavior it affects
Follow one behavior your AI built
Pick one small behavior your agent added that you can’t explain yet. Predict its output, read the rule that decides it, and make one change you can check yourself.
Learn with a runnable filtering exerciseConnect a branch to its callers
Ask which input selects an implementation, what happens after the call, and where an error stops execution. Read the caller as well as the function being explained.
Follow an HTTP requestCheck an AI-written change
Compare selected commits or branches around a narrow concern. Check the cited branch, unchanged callers, and test assertions before accepting an explanation.
Review the changed assertionsYenpo fits work where you keep reading the repository while you discuss a change. It isn’t a coding agent: it doesn’t run builds, execute tests, or merge patches. Keep those steps in Claude Code, Codex, Cursor, or your terminal.
Make a small map before exploring the whole repository
In this teaching project, preview prints “Moon Kite · paper”, while list prints the exhibit names. Both commands use the same data. Follow their paths in the source with the handwritten reading notes below.
- Confirm the entry. Read README.md and package.json. The preview script selects src/preview.mjs with moon-kite as its input. The list script starts src/list.mjs instead. Keep the command and source version with your notes.
- Use an output as a clue. Searching for Moon Kite finds catalog.mjs, which holds data. Follow findExhibit to its caller in build-label.mjs, then buildLabel to preview.mjs. Check the launch script before calling a search match the entry point.
- Name each file’s job. preview.mjs accepts the identifier and prints the result. build-label.mjs coordinates lookup and formatting. catalog.mjs finds the record; format-label.mjs turns it into text. These four roles are enough for this question.
Download the project, completed map, and blank note template. Unzip it, enter exhibit-labels, and run these commands in Terminal with Node.js 22 or later. No dependencies or model connection are needed.
node src/preview.mjs moon-kite
node src/list.mjs
node --test tests/lab.test.mjsThe preview prints “Moon Kite · paper”; list prints “Moon Kite” and “Cloud Loom” on separate lines. All 5 tests pass, including a different selected exhibit and an unknown identifier stopping before output. The archive includes source locations and a file-hash manifest.
For your own repository, keep unanswered questions beside the map: where do the launch arguments come from, which implementation is selected, and does the data come from a file or service? Choose the next file from one of those questions. A folder tree alone cannot tell you the running path.
Keep the relevant files open while you ask
- Find a starting point. Open the extracted exhibit-labels folder as a local project. Use Command-P for preview.mjs, or Search All Files for Moon Kite. Keep the entry and catalog open while you follow the imports. A file, folder, or selection can give the AI Reader a starting point.
- Ask about one behavior. For example: “For the preview command with moon-kite, which files select the record, format its text, and print it? Give source locations and keep the list command separate.” Keep the answer scoped to this path.
- Open the source references. A reference opens the cited lines in Code Quick Look. Use Open File to read the surrounding code in a tab. Check whether those lines actually support the statement.
- Follow the consequences. Use your own notes to record the checked files, their roles, and the next unanswered question. Run a focused command or test in Terminal when you need to confirm behavior. The AI Reader does not run it for you.
Know what stays local and what goes to your model
Local reading and model-assisted reading
Browsing and searching local files do not require a model account. To ask the AI Reader, configure a provider, API type, endpoint, and model in Settings. Supported API types are OpenAI-compatible Chat Completions, OpenAI Responses, and Anthropic Messages. Access and usage charges come from your provider account.
Questions, relevant conversation context, attachments, and code read during the investigation go to your configured endpoint. AI Reader may follow code beyond the attached files. A remote provider processes that content outside your Mac.
Set up a model providerChoose the next check from what is still unclear
If the wrong exhibit is selected in the lab, read the input and lookup. If the record is right but its label is wrong, read the formatter. In a larger project, choose the same way: follow the question into one focused investigation.
- Which setting won? Follow one value from input to output.
- Leave a reproducible handoff record
- Does the AI explanation hold? Check its claims one at a time.
- Where did the run fail? Follow the error to its source.
- What might a change affect? Inspect the consumers and their expectations.
The earlier single-file branch exercise remains available if you want a smaller starting point.
Try it on the next change
your AI makes.
Diffs, Local Changes, and search work right away. Connect a model provider whenever you want to ask the AI Reader something.
Download EAPThe app interface supports English, Simplified and Traditional Chinese, Japanese, Spanish, Brazilian Portuguese, Korean, German, French, and Russian.
v0.1.303 EAP · Apple silicon & Intel · macOS 14+Expires (UTC)