ChenluJi

@ChenluJi

GitHub Profile
collaborative and educational
ChenluJi is a thorough, detail-oriented reviewer who focuses heavily on prompt engineering, LLM interactions, and system architecture. They prefer clear, structured approaches and frequently suggest specific improvements to make code more understandable for both humans and LLMs.
167
Comments
59
PRs
6
Repos
129
Avg Chars
3
Harshness

Personality

Detail-oriented and thorough Focused on LLM optimization and prompt clarity Collaborative and constructive Architecture-minded with system-wide thinking Patient educator who explains reasoning Pragmatic problem-solver Quality-focused with high standards Forward-thinking about code maintainability

Greatest Hits

"It would be more clear to use"
"We should explicitly define"
"I think we can also use this approach"
"It's better to use a shared function"
"Will work on it"
"I wonder how"
"Shall we merge this first, and I'll create another PR"
"It makes sense!"

Focus Areas

Common Phrases

"I think" "should be" "will work on it" "makes sense" "better to use" "it would be more clear" "we should" "this is intended" "when making improvements" "it's better to" "I wonder" "also plan to" "feel free to" "shall we" "would it be better"

Sentiment Breakdown

questioning
7
positive
12
neutral
93
constructive
28
harsh_questioning
2
very_positive
1

Review Outcomes

APPROVED
27
CHANGES_REQUESTED
4

Most Reviewed Authors

ChenluJi
73
gauravreddy08
63
colriot
14
cyrusagent
10
frankfeng98
2
jzachr
2
matthewsparr
1
SpencerMurphy
1
paveldudka
1

Spiciest Comments

web-agent/#217 · web-agent-core/src/web_agent_core/steps/linear/step_type_resolver.py [view]
Can we use rename it as step_prompt? It matches the step property and is easier for LLM to understand what to output. ```suggestion step_prompt: str = Field( description="Natural language prompt describing what the child step should accomplish." ```
web-agent/#73 · web-agent-core/tests/select_option/test_select_option_codification.py [view]
Did you suggest the change on title or prompt? This PR was still based on agentQL which doesn't work well if there is "Email" and no "dropdown" in the prompt. The prompt can be more descriptive after the usage of openAI API in a later PR.

AI Persona Prompt

You are ChenluJi, a meticulous code reviewer specializing in LLM-powered web automation systems. Your reviews are thorough, educational, and focused on long-term maintainability. You have deep expertise in prompt engineering and frequently suggest improvements to make prompts clearer for LLMs. You often start suggestions with 'I think', 'it would be more clear', or 'we should'. You're particularly concerned with: 1) Prompt clarity and structure - you regularly suggest reformatting prompts with clear headers like **GOAL**, **PREVIOUS ATTEMPTS**, **AVAILABLE INPUTS** 2) Code reusability - you frequently identify duplicate logic and suggest shared functions 3) Parameter handling - you care deeply about how inputs are passed and referenced, preferring backticks over f-string style for LLM parameters 4) System architecture - you think about how changes affect the broader system and often tag teammates for input 5) Error handling and robustness - you suggest adding waits, retries, and better error tracking. Your tone is collaborative rather than harsh - you explain your reasoning, offer alternatives, and often say things like 'I wonder if', 'shall we', or 'feel free to'. You frequently reference other implementations (like EVA) and suggest extracting shared functionality. When you see prompt inconsistencies across steps, you always ask whether changes should be applied globally. You're patient with explanations and often follow up with clarifying questions rather than demanding changes outright.

Recent Comments (143 total)

eva/#273 Correct logic to use stored steps · eva/eva_web_server.py [view]
what should be the correct order and format?
web-agent/#242 Update AGENTS.md with detailed project overview [view]
LGTM
web-agent/#202 Chenlu/add state keys · web-agent-core/src/web_agent_core/browser/js/collect_page_context.js [view]
msg.id is uuid.
web-agent/#214 (6/10) Refactor SelectOptionStep to use SelectOptionCodifier · web-agent-core/src/web_agent_core/steps/select_option/prompts.py [view]
if the label comes from the prompt, not inputs, then we should use `label`, instead of `fn_label`. In codified runs, the prompt is constant for a specific step. So a hardcoded `fn_label` is equavilent to a constant `label`.
web-agent/#214 (6/10) Refactor SelectOptionStep to use SelectOptionCodifier · web-agent-core/src/web_agent_core/steps/select_option/prompts.py [view]
```suggestion **GOAL** {prompt} **PREVIOUS ATTEMPTS** {trace} **AVAILABLE INPUTS** {available_inputs} ```
web-agent/#214 (6/10) Refactor SelectOptionStep to use SelectOptionCodifier [view]
@gauravreddy08 Could you remove the unrelated commits from this PR?
web-agent/#213 (5/10) Refactor EnterTextStep to EnterTextCodifier · web-agent-core/src/web_agent_core/steps/enter_text/prompts.py [view]
There is a lot of overlap between this prompt and the others (like click). When making improvements like these, are you intending to update only the specific step or apply these changes globally? If it's the latter, we should extract these shared segments into a common prompt file.
web-agent/#216 (8/10) Refactor ScrollStep to use ScrollCodifier · web-agent-core/src/web_agent_core/steps/scroll/codifier.py [view]
nit: This is the same logic as line 48-60 in agent.py for codified runs. It's better to use a shared function.
web-agent/#216 (8/10) Refactor ScrollStep to use ScrollCodifier · web-agent-core/src/web_agent_core/steps/scroll/codifier.py [view]
It would be more clear to use trace like the locator codifiers. In trace, we have historical trial output and error. It helps to prevent generating same output.
web-agent/#216 (8/10) Refactor ScrollStep to use ScrollCodifier · web-agent-core/src/web_agent_core/steps/scroll/prompts.py [view]
```suggestion **GOAL** {prompt} ```
web-agent/#217 (9/10) Refactor Linear (StepTypeResolver) to no longer provide step attributes (text, label, etc.) · web-agent-core/src/web_agent_core/steps/linear/step_type_resolver.py [view]
Can we use rename it as step_prompt? It matches the step property and is easier for LLM to understand what to output. ```suggestion step_prompt: str = Field( description="Natural language prompt describing what the child step should accomplish." ```
web-agent/#217 (9/10) Refactor Linear (StepTypeResolver) to no longer provide step attributes (text, label, etc.) · web-agent-core/src/web_agent_core/steps/linear/step_type_resolver.py [view]
Are we abandoning "none" type steps now? Before, "none" type steps can be used to wait for page to load when the screenshot shows a loading status. I support that we can remove "none" type if we can guarantee page is fully loaded before reassessing. Eva has an `action_wrapper.WaitForPageSettle`, which we can also implement or just have a simple wait tool call. No matter what approaches we use, we
web-agent/#218 (10/10) WIP: Tuning Linear Prompts to get desired runs · web-agent-core/src/web_agent_core/steps/linear/prompts_new.py [view]
We should explicitly define the relationship between the GOAL and the AVAILABLE INPUTS.
web-agent/#218 (10/10) WIP: Tuning Linear Prompts to get desired runs · web-agent-core/src/web_agent_core/steps/linear/prompts_new.py [view]
```suggestion You are the Linear Agent acting as **reassessment and planning agent** in a multi-agent web automation system. ```
web-agent/#218 (10/10) WIP: Tuning Linear Prompts to get desired runs · web-agent-core/src/web_agent_core/steps/linear/prompts_new.py [view]
```suggestion - Be evidence-based: use the `screenshot_b64` and `page_context` to verify what has actually happened. ```