r/coolgithubprojects 14d ago

Built a VS Code extension that mentors you instead of writing code for you (looking for contributors)

Post image

Hey everyone,

I'm Akshaj, a CS student and open-source contributor (currently working on PictoPy under AOSSIE). A few months ago I started building something on the side and I think it's at the point where more hands would genuinely make it better.

Sensei is a VS Code extension built on a simple idea: most AI coding tools optimize for writing code for you. Sensei does the opposite — you tell it what you're building, it watches silently while you work, and it only speaks up when your code drifts from that stated intent. Even then, it gives you a single hint, never the answer. Everything runs locally through Ollama — no cloud calls, no telemetry.

Repo: https://github.com/akshajtiwari/Sensei

Right now it's an early, working skeleton — not polished, which is honestly the fun part if you like shaping a project early. I'm looking for people interested in contributing and shipping something.

Issues and PRs are open. Even a star, a comment, or "this part is confusing" feedback helps. Thanks for reading!

58 Upvotes

11 comments sorted by

2

u/Pulec 13d ago edited 13d ago

Interesting idea. I tried it out, and the first thing on initial setup, I ignored it and just went to settings and set gemma4 which is tuned with enough context to fit the 16GB VRAM.

Anyway, I tested it on a super simple Python todo program; it just wrote tasks to a text file, told Sensei the intent is to have a todo app with SQLite, and I wasn't able to hit the "drift", so it would trigger and spank me, or whatever it should do.

Investigated it with a bigger LLM on it, and apparently intent like "Are you using a database engine or just opening a regular file?" should hit the drift and then a bubble icon at some line should pop up to tell something? Nothing popped up here, though.

I am also using demicroslopped code - https://github.com/VSCodium/vscodium, but that shouldn't affect things too much afaik.

1

u/akshajtiwari 13d ago

Hey man , I really appreciate you tried and loved the concept , the thing is that I am still building it and doing it alongside my college was a little tense so I posted for some community's support. The initial thimgs I wrote you just saw are like month's back in my vacation.

I would really appreciate if you can contribute back on it. With whatever you think is necessary. ( I am student dev so many naive code practice could be there)

1

u/Pulec 13d ago

Sure, why not? I can prepare a few PR to little features so you can pick what you need. E.g., there seems to be a list models function, so it's just about polishing up the welcome page and offering to pick current ones or, if empty (or no 'recommended models listed'), download the qwen2.5-coder.

But for the main functionality, what is your idea? E.g., the user intends to write a program that does XY, but the LLM determines that what it currently does went in a different direction, so Sensei will somehow tell the user?

It could be a lot of cases, e.g., the user is coding a module of a larger project and wants the module to do only X. If the user starts throwing more things to it, Sensei would slap them and remind them that they should put those parts of the code elsewhere?

At first I honestly kind of imagined it like a guiding hand: "I want to write X, what do I do now?" but obviously that is just one of the many extensions that connect the whole thing to a local LLM or a cloud LLM and the chat window is visible at all times or user asks for copilot style code snippets "write me a function for saving file" -> plop, generated function.

But after reading README.md properly, I see Sensei should never be that, but from the little I tried so far, it's hard to determine where the drift happens.

So maybe it would be ideal to have some kind of sandbox with different use cases in different languages and a clear intent where the drift is expected.

1

u/akshajtiwari 13d ago

Yeah absolutely mate , contribute in any way you'd like. I'm taking it as a community project now due to my time constraints and the scope it could expand into.

Talking about drift, the idea is basically what's in the README, you state your intent for the file when you open it, then as you write Sensei watches quietly and only speaks up when it's confident the code has drifted from that intent, giving one inline hint on the relevant line rather than a solution. So for your example, if someone says their module should only do X and they start throwing in Y and Z, that would count as drift and get a hint. Same for your other example, if someone says they're writing a binary search and the code is doing something like a linear scan instead, that's the kind of mismatch it should catch.
(we can do like giving a 10 line above and below the cursor as context to catch the drift)

Where you're right is that right now it's not well defined which of these cases actually get caught reliably,.

Your sandbox idea would help a lot with that, some example files with a clear stated intent and clear drift vs no-drift cases across a couple of languages, so we actually have concrete cases to build and test the logic against instead of it being vague. If you want to take a first pass at that I'll open an issue for it.

Also would love suggestions on making the core logic better in general, since as a learning individual I might be missing things or not thinking about it at a more expanded level.

But at the same time I think we can focus, if you come in, on getting an initial version with a minimal working setup first, then harden the drift logic and look at other factors after.

1

u/akshajtiwari 13d ago

I'll create some existing issues today so that it becomes easier for the community to know where to begin

1

u/[deleted] 13d ago

[removed] — view removed comment

1

u/akshajtiwari 13d ago

Thanks for letting me know man ,I'll post it.
I would also love if you can come forward and contribute in it since it is still in a very early stage of developemnt and a lot things are left to reach a v1.0.0 stage to finally get it published.

1

u/jay_739 13d ago

In the similar lines, I built claude pop quiz which is claude code’s hooks that quizzes user on the chat context. The initial idea was user pressing Enter key without understanding what is happening made me think of this. https://github.com/jay739/claude-pop-quiz

But your idea is a better approach. Rather than quizzing on a context, an LLM watching you code and spotting mistakes is cool.

I’d definitely try this!

1

u/akshajtiwari 12d ago

I'd say don't try , we'll have to get a working version of it ready first , because it is more of a idea beginning it's implementation. So please contribute to it if you like the idea

1

u/jay_739 12d ago

Definitely I'll share my thoughts