# (Continuously Updated) My Real-Time Review of Grok 4

**URL:** <https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971>\
**Category:** Discussions\
**Created:** [July 9, 2025, 6:26pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971 "2025-07-09T18:26:10Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![lolshadowban](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/lolshadowban/32/68880_2.png) [@lolshadowban](https://forum.cursor.com/u/lolshadowban)\
**Post date:** [July 11, 2025, 4:58am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/21 "2025-07-11T04:58:15Z")

</div>

I call a spade a spade. I have no issues with Claude or Gemini(bad agent support though).

I am not a prompt engineer, I am a software engineer. So I push these gimmicks to their limits. That is the whole point, I mean you called out Claude.

Interesting tool you have, but issue isn’t code navigation it’s the code it outputs 😆. But come up with one for rust and I’ll give it a try for fun, but I already have memory graph databases etc.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 8:41am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/22 "2025-07-11T08:41:16Z")

</div>

Yes, I took the wrong path out of inexperience (if you’re talking about Agent Docstrings) and now it needs to be redesigned and tested even more.

> <https://github.com/Artemonim/AgentDocstrings/issues/23>
>
> \# Roadmap to Plugin-Based Architecture
> 
> \## Objective
> 
> Define and implement a plu…gin-based architecture for language-specific logic to improve modularity, scalability, and maintainability of the docstring generator.
> 
> \## Goals
> 
> \- Extract language-specific responsibilities (parsing, comment styles, header handling) into separate plugins.
> \- Simplify \`core.py\` to function as a pure orchestrator using a standardized plugin interface.
> \- Maintain shared data structures (\`ClassInfo\`, \`SignatureInfo\`) and common utilities in \`common.py\`.
> \- Improve testability by allowing isolated testing of each language plugin.
> 
> \## Phases
> 
> \### Phase 1: Define Plugin Interface
> 
> \- Introduce \`LanguagePlugin\` interface in \`common.py\` with methods:
> - \`get\_comment\_style() -\> CommentStyle\`
> - \`parse(lines: List\[str\]) -\> Tuple\[List\[ClassInfo\], List\[SignatureInfo\]\]\`
> - \`get\_preserved\_header\_end\_line(lines: List\[str\]) -\> int\`
> - \`remove\_agent\_docstring(text: str) -\> str\`
> \- Document interface contract and update developer guide.
> 
> \### Phase 2: Implement Language Plugins
> 
> \- Create plugin classes for each supported language:
> - Python, Go, Java, Kotlin, JavaScript, TypeScript, C#, C/C++, PowerShell, Delphi.
> \- Move existing language-specific logic from \`core.py\` and \`common.py\` into respective plugin implementations.
> \- Register each plugin in a \`LANG\_PLUGINS\` registry keyed by file extension.
> 
> \### Phase 3: Refactor Core Orchestrator
> 
> \- Replace \`EXT\_TO\_LANG\` and \`LANG\_PARSERS\` maps with the new plugin registry.
> \- Update \`process\_file()\` to load and invoke plugin methods exclusively.
> \- Remove all \`if language == ...\` branches from \`core.py\` and \`common.py\`.
> 
> \### Phase 4: Update Common Utilities
> 
> \- Retain shared data types (\`ClassInfo\`, \`SignatureInfo\`) in \`common.py\`.
> \- Optionally move default comment-style configurations into plugins or keep shared defaults.
> \- Ensure \`common.py\` only defines interfaces and general-purpose helpers.
> 
> \### Phase 5: Testing & Validation
> 
> \- Develop unit tests for each plugin method in isolation.
> \- Update existing core and integration tests to use the plugin-based workflow.
> \- Validate end-to-end functionality across all supported languages.
> 
> \---
> 
> \### Problem Statement
> 
> The current architecture is difficult to support in all languages at the same time.
> 
> \### Priority Level
> 
> 🫠 Critical - Blocking my workflow completely
> 
> \### Implementation Complexity
> 
> \- \[\] 🤔 Simple - Minor change or addition
> \- \[\] 😑 Moderate - Requires new parsing logic
> \- \[x\] 🛠️ Complex - Major feature requiring significant development
> \- \[\] 😎 I don't know
> 
> \### Contribution
> 
> \- \[x\] I would like to implement this feature myself
> \- \[\] I can help with testing
> \- \[\] I can provide sample code files for testing

> <https://github.com/Artemonim/AgentDocstrings/issues/24>
>
> Currently, \`AgentDocstrings\` prepends its Table of Contents (ToC) to the beginni…ng of a file's docstring. While this works for files with no prior documentation, it breaks the established documentation conventions for most supported languages when a docstring already exists.
> 
> The core issue is the \*\*"summary-first" convention\*\*, where documentation generators (like Sphinx, Javadoc, Doxygen, etc.) treat the first line or paragraph of a docstring as a summary for quick reference tables. By prepending the ToC, \`AgentDocstrings\` effectively replaces the intended summary with the ToC, leading to incorrect documentation generation and conflicts with code formatters like \`black\`.
> 
> \## \*\*Concrete Example (Python)\*\*
> 
> A file \*\*without a manual summary\*\* is formatted correctly:
> \`\`\`python
> \# test\_file\_1.py
> """
> --- AUTO-GENERATED DOCSTRING ---
> ...
> --- END AUTO-GENERATED DOCSTRING ---
> """
> \`\`\`
> 
> A file \*\*with a manual summary\*\* is broken, and subsequently "fixed" incorrectly by formatters:
> \`\`\`python
> \# utils.py - Before AgentDocstrings
> """Utility functions for the project."""
> 
> \# After AgentDocstrings runs, it becomes:
> """
> --- AUTO-GENERATED DOCSTRING ---
> ...
> --- END AUTO-GENERATED DOCSTRING ---
> Utility functions for the project.
> """
> \# This is invalid according to PEP 257.
> \`\`\`
> 
> \## \*\*Affected Languages\*\*
> 
> This is a universal problem affecting most, if not all, supported languages:
> \* \*\*Python:\*\* Breaks PEP 257 convention.
> \* \*\*Java/Kotlin (Javadoc/KDoc):\*\* The ToC becomes the class/method summary.
> \* \*\*C#/Delphi (XML Docs):\*\* The ToC can break the XML structure if not injected carefully (e.g., outside the \`\<summary\>\` tag).
> \* \*\*JS/TS (JSDoc/TSDoc):\*\* Same issue as Javadoc.
> \* \*\*Go, C/C++ (Doxygen):\*\* The ToC becomes the brief description.
> \* \*\*PowerShell:\*\* The ToC can be misplaced before the \`.SYNOPSIS\` block.
> 
> \## \*\*Proposed Solution: Intelligent Injection Logic\*\*
> 
> I propose enhancing \`AgentDocstrings\` to intelligently inject the ToC instead of simply prepending it. The new logic should be:
> 
> 1. \*\*Detect Existing Docstring:\*\* Check if a module/class/function docstring already exists.
> 2. \*\*No Docstring:\*\* If none exists, create a new one with the ToC as the content.
> 3. \*\*Existing Docstring:\*\*
> \* \*\*Parse the Summary:\*\* Identify and extract the first paragraph (the summary line/block).
> \* \*\*Identify the Insertion Point:\*\* The ideal insertion point is \*after\* the summary and the mandatory blank line that follows it, but \*before\* the rest of the detailed description.
> \* \*\*Inject ToC:\*\* Insert the \`--- AUTO-GENERATED DOCSTRING ---\` block at this identified insertion point.
> \* \*\*Update ToC:\*\* If an old \`AgentDocstrings\` block already exists, it should be replaced, leaving the manual summary and other parts of the docstring intact.
> 
> \*\*Example of Desired Behavior (Python):\*\*
> 
> \*Initial Code:\*
> \`\`\`python
> """This is a summary line for the module.
> 
> This is a more detailed description that should be preserved.
> """
> \`\`\`
> 
> \*Code After Intelligent Injection:\*
> \`\`\`python
> """This is a summary line for the module.
> 
> --- AUTO-GENERATED DOCSTRING ---
> Table of content is automatically generated by Agent Docstrings v1.3.1
> ...
> --- END AUTO-GENERATED DOCSTRING ---
> 
> This is a more detailed description that should be preserved.
> """
> \`\`\`
> 
> This approach would ensure full compatibility with language standards, documentation generators, and code formatters.
> 
> \---
> 
> \### Priority Level
> 
> 😎 High - Would significantly improve my workflow
> 
> \### Implementation Complexity
> 
> \- \[\] 🤔 Simple - Minor change or addition
> \- \[\] 😑 Moderate - Requires new parsing logic
> \- \[x\] 🛠️ Complex - Major feature requiring significant development
> \- \[\] 😎 I don't know

And if you’re talking about Agent Compass, then it’s universal for everything written through the Cursor IDE.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 3:14pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/23 "2025-07-11T15:14:26Z")

</div>

Well. At least he doesn’t give up like Gemini…

![2025-07-11_18-12-50](https://us1.discourse-cdn.com/cursor1/original/3X/8/f/8f1ce2c1750b98607f56515422a76489ef20ac87.png)  
_the screenshot is from another project written in Kotlin and Python._

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 3:28pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/24 "2025-07-11T15:28:44Z")

</div>

AGI MOMENT 🤯

 ![2025-07-11_18-24-49](https://us1.discourse-cdn.com/cursor1/original/3X/d/9/d9cb7e44762a9344e09ebc033b63bf3d7d01120d.png)

_Context: I’m porting an algorithm developed by Gemini from Python to Kotlin for use on a smartphone. Previously, I managed to hack Python directly into Kotlin, but it was unstable. A proper language-to-language port didn’t work out. This is probably my fourth attempt by now. Grok has been working on the task non-stop for over 45 minutes._

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 4:16pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/25 "2025-07-11T16:16:29Z")

</div>

Grok 4 has been running for 90 minutes now. The task entry on `cursor.com/dashboard?tab=usage` has been stuck for over an hour without any updates. I didn’t anticipate things would go this way, so I didn’t include a progress bar in its pipeline for myself, and now I’m trying to figure out what it’s doing via `git diff` and Gemini.

 ![2025-07-11_19-12-24](https://us1.discourse-cdn.com/cursor1/original/3X/1/2/1296bff5589b5d83e8873a6e52373fd64ae59a1a.png)

It’s not like I understand everything that’s written here, but it doesn’t seem like it’s worth interfering yet.

> The model is making excellent progress. It is no longer just implementing features but is engaged in a sophisticated, structured debugging process. These changes are not random; they are targeted, logical steps toward creating a verified and numerically correct filter, which is a non-trivial task.

_By the way, switching between chat tabs is currently causing Cursor to freeze for a few seconds._

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 4:39pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/26 "2025-07-11T16:39:07Z")

</div>

1 hour and 55 minutes of uninterrupted work. Still working…

 ![2025-07-11_19-37-45](https://us1.discourse-cdn.com/cursor1/original/3X/8/8/8809399a0706be3777f0d3b1c9e60f57948df725.png)

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 4:45pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/27 "2025-07-11T16:45:04Z")

</div>

NOOO!!!

 ![2025-07-11_19-43-20](https://us1.discourse-cdn.com/cursor1/original/3X/a/f/af8a5f6d16aea6f270b0d7e397e3e637430704dd.png)

Perhaps Cursor automatically interrupts tasks that go on for more than two hours…

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 4:56pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/28 "2025-07-11T16:56:03Z")

</div>

> **Grok 4 report**
>
> ### Summary of What I Did During the Session
> 
> During this session, I focused on debugging and refining the Butterworth bandpass filter implementation in `ButterworthBandpassFilter.kt` to make its output match the golden test data generated from the Python sandbox (using SciPy’s `sosfiltfilt`). The goal was to resolve the consistent test failures in `ButterworthBandpassFilterTest.kt`, where the filtered signal values (e.g., the first element often around 0.508 or similar) didn’t match the expected values (e.g., around 0.013).
> 
> Here’s a breakdown of key actions I took:
> 
> - **Gathered Information and Debugged:**
> 
> - **Made Code Changes:**
> 
> - **Tested Changes:**
> 
> - **Other Activities:**
> 
> Overall, progress was made in aligning the Kotlin filter closer to SciPy’s behavior (e.g., better handling of padding and states), but the test still doesn’t pass fully due to subtle mismatches in the filtered output.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 5:25pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/29 "2025-07-11T17:25:51Z")

</div>

If I used to work with Agent as a developer, Grok feels like a real engineer.

 ![2025-07-11_20-20-54](https://us1.discourse-cdn.com/cursor1/original/3X/0/3/03a3609de6f5f2ca38a159a2c0abb2d511e94cd6.png)

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 11, 2025, 6:31pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/30 "2025-07-11T18:31:05Z")

</div>

It feels so odd to use Gemini 2.5 Pro as a _lightweight, low-cost model for quick edits_ 👀

---

<div class="post-metadata">

**Author:** ![lolshadowban](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/lolshadowban/32/68880_2.png) [@lolshadowban](https://forum.cursor.com/u/lolshadowban)\
**Post date:** [July 12, 2025, 8:36am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/31 "2025-07-12T08:36:01Z")

</div>

And here I panic if the model thinks for more than 1 minute lol.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 14, 2025, 7:47pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/32 "2025-07-14T19:47:10Z")

</div>

Right now, Grok 4 is kind of broken. It almost always stops either right after the prompt or mid-execution. He finishes the job in a one-shot style, but maybe I just got lucky. Still, I want a proper chat experience.

I tried Grok 4 in Trae IDE, and honestly, I didn’t like how the Agent works there at all. Not only because I’m too lazy to change the VPN location to give them $3 and not stand in queue, but it’s missing at least one really awesome feature. Cursor Semantic search tool is so good, I’m not even sure my [Agent Docstrings](https://forum.cursor.com/t/agent-docstrings-serve-agents-a-clear-table-of-contents-right-in-your-code/110826) project is worth it anymore 😅

Although knowing that Agent won’t stumble over an endless terminal or over himself is quite calming.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 15, 2025, 10:36am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/33 "2025-07-15T10:36:59Z")

</div>

> [@Artemonim](#):
>
> He finishes the job in a one-shot style

Successfully tested several times. It only crashes unnecessarily when the chat continues.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 15, 2025, 1:03pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/34 "2025-07-15T13:03:20Z")

</div>

**Task: Passing a Pytest in a Test-Driven Development workflow**  
The test cases are offered by Claude 4 when working as a QA Agent in the another repository.

1. Gemini 2.5 Pro
  1. Gemini 2.5 Pro failed to handle it for $0.75;  
launched in an already ongoing long chat

2. Grok 4
  1. Gemini only wrote tests  
_tests are not the same, but they are written by similar prompt and context._
  2. Grok 4 one-shot it for $0.79.

 ![2025-07-15_16-01-04](https://us1.discourse-cdn.com/cursor1/original/3X/4/c/4c9920a9c8c1f53f3c4801ef5aa85f4e72ada43b.png)

---

<div class="post-metadata">

**Author:** ![roy7](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/roy7/32/70872_2.png) [@roy7](https://forum.cursor.com/u/roy7)\
**Post date:** [July 15, 2025, 5:01pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/35 "2025-07-15T17:01:47Z")

</div>

> [@Artemonim](#):
>
> Right now, Grok 4 is kind of broken. It almost always stops either right after the prompt or mid-execution. He finishes the job in a one-shot style, but maybe I just got lucky. Still, I want a proper chat experience.

I’m having this experience as well. With Claude 4 if I ask it to run the tests and try to fix the one that’s broken, it’ll re-run the test each time it tries something new and debug it. With Grok 4 it’ll change some code, re-run the test, then it’s waiting on me with no further output. After the other models it feels weird it just silently stops so often, I assume it’s more of an error state than working as intended.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 15, 2025, 6:07pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/36 "2025-07-15T18:07:36Z")

</div>

> [@roy7](#):
>
> With Claude 4 if I ask it to run the tests and try to fix the one that’s broken, it’ll re-run the test each time it tries something new and debug it.

Strange. I only have such problems with Grok 4 and Gemini 2.5 Pro.

---

<div class="post-metadata">

**Author:** ![roy7](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/roy7/32/70872_2.png) [@roy7](https://forum.cursor.com/u/roy7)\
**Post date:** [July 15, 2025, 7:46pm UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/37 "2025-07-15T19:46:04Z")

</div>

Yeah. To be clear, I’m saying Claude does this correctly and Grok isn’t.

---

<div class="post-metadata">

**Author:** ![Artemonim](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/artemonim/32/56113_2.png) [@Artemonim](https://forum.cursor.com/u/Artemonim)\
**Post date:** [July 16, 2025, 6:23am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/38 "2025-07-16T06:23:25Z")

</div>

While refactoring the current [Agent Enforcer](https://github.com/Artemonim/AgentTools), I gave Grok 4 the rundown on the MCP methodology—but totally forgot to mention FastMCP. So what did Grok do? That’s right—it just dove into the venv and read the FastMCP code on its own 😎

![2025-07-16_09-17-05](https://us1.discourse-cdn.com/cursor1/original/3X/1/1/1147f0a01fb425a59bcc61ed53fb20028a4b2ce4.png)

Just look at how much information it chewed through just to add 190 lines of code.

* * *

The MCP server, however, stopped starting, but the approach is interesting 🌚

---

<div class="post-metadata">

**Author:** ![normalnormie](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/normalnormie/32/18258_2.png) [@normalnormie](https://forum.cursor.com/u/normalnormie)\
**Post date:** [July 16, 2025, 6:37am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/39 "2025-07-16T06:37:41Z")

</div>

Let me explain what happens for those learning: experienced users try to include all the required context at start and the agent gets missing context as a last resort, Grok as a reasoning agent(right now the best) did that but included unneeded context which is called context poisoning and output errors happen, most likely due to context loss and hallucinations.

---

<div class="post-metadata">

**Author:** ![condor](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/condor/32/73148_2.png) [@condor](https://forum.cursor.com/u/condor)\
**Post date:** [July 16, 2025, 9:02am UTC](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971/40 "2025-07-16T09:02:15Z")

</div>

I stopped supplying a lot of context after Sonnet 4 came out. Now my rules are like 10 lines with core principles. Prompts are usually one sentence.

[Previous page](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971.md?page=1)

[Next page](https://forum.cursor.com/t/continuously-updated-my-real-time-review-of-grok-4/115971.md?page=3)
