Блог пользователя soullless

Автор soullless, 8 месяцев назад, По-русски

1. Что именно за проблема

Во время раундов появилась конкретная схема: участник получает у LLM готовый код и просто отправляет его, почти не понимая. Это не всегда ловится плагиатом: человек может изменить переменные, поменять местами некоторые части кода.

2. Идея

Xeppelin — open-source tool, изначально сделанный для ICPC, который:

  • запускается локально перед контестом
  • логирует изменения файлов в рабочей директории
  • сохраняет таймлайн разработки (когда и как менялся код)
  • не записывает экран, клавиатуру, сеть или вкладки
  • после контеста строит визуализацию активности

Это не мой tool, но вы можете найти его тут

3. Что именно предлагается для Codeforces (реализация, не идея)

Предложение — использовать Xeppelin как внешний источник поведенческих данных, без вмешательства в CF-инфраструктуру. Поток работы:

  1. Участник запускает Xeppelin перед раундом

  2. Решает задачи как обычно (локально, в IDE)

  3. После раунда Xeppelin выдаёт:

  • лог изменений файлов
  • таймлайн активности

Этот лог можно автоматически связать с CF-сабмитами (по contestId + handle)

CF при этом:

  • не меняет процесс сабмита
  • не получает данные в реальном времени
  • не требует изменений в CF и может быть полностью опциональным: участник сам решает, прикладывать ли activity log.

4. Какие именно данные получаются

Из Xeppelin доступны чёткие и простые метрики:

  • количество изменений файла до AC
  • размеры отдельных изменений
  • время активной работы vs простои
  • был ли код написан постепенно или “одним куском”
  • повторяется ли одинаковый паттерн по нескольким задачам

Это метаданные процесса, не содержимое экрана и не ввод пользователя.

5. Почему это хорошо ловит именно читеров:

Типичный паттерн копипаста или списывания LLM-решения:

  • долгий простой
  • один большой апдейт файла
  • почти отсутствие правок
  • сразу AC

Этот паттерн:

  • редко встречается у людей, которые реально пишут код
  • хорошо виден именно в файловом таймлайне
  • плохо подделывается без реального переписывания решения

6. Как это можно использовать на практике (без банов)

Xeppelin не доказательство, а сигнал. Реалистичные применения:

  • дополнительный input для пост-контест анализа
  • основание для provisional rating в явно аномальных случаях
  • инструмент для модераторов/авторов, а не авто-наказание

7. Почему это безопасно для CF

  • нет прокторинга
  • нет вмешательства в сабмиты
  • нет обязательных установок
  • нет real-time нагрузки

Xeppelin работает полностью снаружи, CF получает данные после контеста или вообще только по запросу.

8. Ограничение и компромиссное решение

Недостаток

Очевидный минус такого подхода — невозможно и не нужно покрывать 100% участников. Часть людей не сможет или не захочет использовать внешний логгер (устройства, политика установки, личные причины).

Попытка сделать такой софт обязательным для всех rated-раундов действительно слишком жёсткая и может навредить доступности Codeforces.

Компромиссное решение (без изменения базовой системы CF)

Вместо этого предлагается следующий вариант:

  • Рейтинг остаётся один и тот же, как сейчас
  • У каждого результата появляется статус:
  • Verified — если участник приложил activity log (Xeppelin)

  • Unverified — обычное участие, без логов
  • Это не отдельный рейтинг и не “вторая лига”

  • Это дополнительный слой доверия, похожий по духу на unofficial standings или verified badges

Практически это даёт:

  • возможность фильтровать лидерборд по Verified
  • приоритет доверия к verified-результатам
  • меньше provisional-проверок для verified участников

При этом:

  • никто не теряет доступ к рейтингу
  • формат раундов не ломается
  • честным участникам появляется понятный стимул подтверждать процесс

9. TL;DR

Есть уже существующий инструмент (Xeppelin), который логирует процесс разработки без слежки. Его можно напрямую связать с CF-раундами и использовать как дополнительный сигнал против копипаста LLM-решений — без банов и без ломания платформы.

  • Проголосовать: нравится
  • +392
  • Проголосовать: не нравится

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been translated by soullless (original revision, translated revision, compare)

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +58 Проголосовать: не нравится

Я вижу, что этот пост был написан LLM, но не могу это доказать

»
8 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +53 Проголосовать: не нравится

Calling Xeppelin "made for ICPC" is misleading. It was made for ICPC, but as a tool for analyzing performance in virtual contests by a single team. It was not made for invigilation purposes and it's not affiliated with the ICPC.

As said here, Xeppelin requires a very specific work flow. I do not think it is suitable for codeforces.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

You can just ask AI to edit the logs to make them seem legit

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    More like, it's extremely easy to rig the logs. Just yap gibberish on the .cpp file until GPT gives you the answer.

    • »
      »
      »
      8 месяцев назад, скрыть # ^ |
       
      Проголосовать: нравится +10 Проголосовать: не нравится

      You can read exactly what part of the code a person is changing, what they're rewriting, and how they're debugging. Of course, you can't tell if a person cheated in just one round, but if suspicious activity accumulates over several rounds, it will become obvious that they did.

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Write the logs in encrypted form. (Similar to RSA). They won't be able to modify it meaningfully unless they have quantum computers. I also suggest that the logs should be written no in a straightforwardly structured manner, but in an informal manner. Because structured writing can make it easier to reverse engineer it

    • »
      »
      »
      8 месяцев назад, скрыть # ^ |
       
      Проголосовать: нравится +2 Проголосовать: не нравится

      Edit the logs before they're encrypted. Possibly even override all inputs of the tool. Reverse engineering ftw.

      Non-straightforwardly structured also means harder to parse afterwards — proportionally so.

      • »
        »
        »
        »
        8 месяцев назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится

        implementing some system such that logs are always properly timestamped (i.e. cannot be created with an arbitrary timestamp) should solve this (needs another machine/server with a trusted clock). then, at some point of time, assuming you do not have the solution yet (your llm is still thinking), a sufficiently advanced system will be able to recognize that your inputs aren't meaningfully leading you to the solution, even if you reverse engineer the tool and gain some way to create whatever inputs of your choosing.

        • »
          »
          »
          »
          »
          8 месяцев назад, скрыть # ^ |
           
          Проголосовать: нравится +4 Проголосовать: не нравится

          A sufficiently advanced system will need so much effort to develop you're better off racing Musk to Mars.

          • »
            »
            »
            »
            »
            »
            8 месяцев назад, скрыть # ^ |
            Rev. 2  
            Проголосовать: нравится 0 Проголосовать: не нравится

            humans are a sufficiently advanced system :)

            for example, if we made the logs public or public to people with a rating > x (definitely compromises some privacy though), then motivated contestants would have a much easier time spotting cheaters.

            • »
              »
              »
              »
              »
              »
              »
              8 месяцев назад, скрыть # ^ |
              Rev. 3  
              Проголосовать: нравится 0 Проголосовать: не нравится

              Humans are also not on the catching cheaters side any more than the cheating side. The current situation is proof of that. Your idea is like saying that a sum of n bits is close to n or that in a tug of war, the rope will quickly accelerate because there's a lot of people pulling.

              • »
                »
                »
                »
                »
                »
                »
                »
                8 месяцев назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится

                I think all of the blogs about cheaters are enough proof that there is at least some motivation for catching cheaters. The purpose of this tool was never to outright find all cheaters, but instead to provide a way to easily check if a given contestant is definitely cheating, which I think is relatively practical to implement compared to the large majority of cf anticheat proposals.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  Again it's not if there's at least some motivation but if there's significantly more motivation. I say if there was, all cheaters would be caught near-instantly, it wouldn't be just the occasional blog.

                  You've had a ton of reasons why it's not practical pointed out. Go do an experiment with catching cheaters your way and report the results if you believe it'll work.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +45 Проголосовать: не нравится

Actually, for non-cheaters, copying a template during a contest should be considered normal behavior.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится -16 Проголосовать: не нравится

Isn't developing a desktop application for Codeforces contests a valid option? Enforcing restrictions would be easier.

The desktop application could come with an integrated IDE for coding. If you want to use a template or something similar, the application could remember your own notebook (or those from other users who made them public) and give you access to your templates inside the IDE. Leaving your local environment would be the trade-off, but over time the IDE could support more features for customization.

The idea is something like a Lockdown Browser, but for Codeforces.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

Sounds like far too much data to analyze, there's 30k contestants in most contests nowadays.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

I found it might not consider some who writes codes on local editor.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +33 Проголосовать: не нравится

it wont catch users who ask AI to get the idea, then implement from scratch on their own

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится +46 Проголосовать: не нравится

    There is no solution for THIS problem, but my idea destroys cheaters who don't even understand solutions

    • »
      »
      »
      8 месяцев назад, скрыть # ^ |
       
      Проголосовать: нравится +3 Проголосовать: не нравится

      What if they just look at the code and retype it, maybe moving functions / code blocks around?

      Sure that would be different from someone solving / implementing legitimately, but telling the difference is difficult if not impossible, especially considering that behaviour would differ from person to person.

      In fact, if someone does do it that way, then they will probably also test their retyped "solution" just to know that it's correct, so you can't even rely on them not testing or something like that.

      • »
        »
        »
        »
        8 месяцев назад, скрыть # ^ |
         
        Проголосовать: нравится +6 Проголосовать: не нравится

        It seems to me that inhuman actions like too little debugging or too few rewrites can accumulate over time, and this will ultimately give such a person too much of a suspicion penalty.

        • »
          »
          »
          »
          »
          8 месяцев назад, скрыть # ^ |
           
          Проголосовать: нравится +8 Проголосовать: не нравится

          What if a grandmaster writes the contest? What if he comes up with a solution and implements it without errors, but is considered a cheater?

        • »
          »
          »
          »
          »
          8 месяцев назад, скрыть # ^ |
          Rev. 2  
          Проголосовать: нравится 0 Проголосовать: не нравится

          I think that if your idea is approved and they start monitoring this method of cheating, people who were cheating will simply start rewriting the code manually, changing more variables, replacing BFS with DFS and vice versa (not always, of course, but where possible), as well as with other algorithms, test, write their own stress tests, and test. Are you sure you can completely defeat cheating? P.S.: There was a case when a person took first place in a contest, and it was LGM, and he turned out to be a cheater. How do you suggest fighting fairly intelligent cheaters who know a little or maybe a lot about sports programming?

          • »
            »
            »
            »
            »
            »
            8 месяцев назад, скрыть # ^ |
             
            Проголосовать: нравится +3 Проголосовать: не нравится

            To be honest, I think it will decrease the number of cases when person doesn't even know what is going on in his code, and also cheating will become more uncomfortable

            • »
              »
              »
              »
              »
              »
              »
              8 месяцев назад, скрыть # ^ |
               
              Проголосовать: нравится 0 Проголосовать: не нравится

              I agree with that, but haven't you considered that those who want to continue stealing will find other ways to do so? For example, they could hire a special person (a booster) or find some other way?

              • »
                »
                »
                »
                »
                »
                »
                »
                8 месяцев назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится

                Other ways of cheating weren't such an annoying, and people usually didn't pay attention to this because the small amount of such a cheaters.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                  Rev. 2  
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  That's how it was. And the problem is that it will be. That's why looking at ratings isn't always cool. But for some reason, when I write a comment with a low rating, they just delete my post. Super platform. By the way, it is still impossible to delete an account on this platform. Why is that? Let's all just leave and let the cheaters compete among themselves to see who can better use artificial intelligence in the allotted time. That's it. This will solve all issues related to cheating.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  Let's take online chess, for example. One cheater's account was banned, so he created a second one and went back to playing and satisfying his needs. There have also been cases of cheating offline. We can also recall that not so long ago, two participants (from the Chinese team) were found with phones at the IOI. Does anyone like the fact that a cheater at the IOI, for example, may simply not receive a medal because the cheater is smart enough to find a very cunning way to hide their fraudulent activities? It's annoying that there are more cheaters now — yes. But they have always been around, and now it has reached a very large scale. By the way, now it's really possible to level up your skills so much in a year that I think ANYONE can get into the top in any online competition. Someone wrote earlier that they had reached the master level, but if they start constantly writing contests now, their rating will drop by about 500 points (this is not my opinion, because I have never been a master on this platform). Are you still sure that you can combat cheating in this way? P.S.: You probably just wanted to get a lot of likes to try your luck at blogging and possibly earn some money?)

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  Dude, I don't have any advandage because of my contribution, I just suggested way to solve the huge problem, why are you trying to find negative sides?

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  I'm not looking for negative aspects. What I wrote, I thought, was obvious to you, that it won't solve the problem, but will only force cheaters to do their dirty deeds in a different way. Or was that not obvious to you?)

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  I didn't say that it will solve the problem with all cheaters, I mentioned that it will illuminate cheaters who don't even understand the problems and solutions, who just use chatgpt and 0% brain, idk how did you read my post

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  8 месяцев назад, скрыть # ^ |
                   
                  Проголосовать: нравится 0 Проголосовать: не нравится

                  To be honest, I didn't read your post in its entirety, just skimmed through it. But what's the point of fighting cheaters who don't understand what they're doing? Well, they'll start learning basic algorithms and using more intelligence. And? Will you completely eradicate cheating? What's the point of your post? Let's say your ideas start to catch on, and cheaters start using more complex algorithms in contests. What then?

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    I do not think there is any possible solution to this way of cheating

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    There is basically no way to catch this if you can't monitor them physically, just like if you ask your roommate or somebody for help.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Прототип кто-нибудь выкатит?

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

My thought that its not solve of problem, but anyway its better than plagiat system, on other side most of people just want to solve contest without headache with this stuff.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +85 Проголосовать: не нравится

i like how almost every blogpost talking about AI-cheating is written by chatgpt :)

i am not saying it's bad, i just find it funny to imagine that codeforces is just two armies of machines fighting each other.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится

What about someone using two computer — one for getting the AI ready code and other for doing the contest?

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

Кажется иронично, что пост о проблеме использования ЛЛМок для читинга очевидно скопипасчен из ЛЛМ :)

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This is a really cool idea. I think there is a a way we might be able to extend it's functionality.

Since it stores the development lifeline, we could train AI models that detects whether someone is cheating or not depending on the file modification history. People write code differently when they write a solution they understand and a solution they don't, and even a solution they understand but did not develop on their own.

If it's successful, we might be able to detect with high accuracy whether a person wrote a solution by himself or not.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

That's a very cool idea. We can also extend it's application.

Since it stores the development timeline, we can train the AI models to detect cheating based on the code logs. Because we code differently when we understand a solution and when we don't understand it, or even when we understand the solution but didn't come up with it ourselves.

If this is successful, we could even detect potential cheaters with high accuracy.

Even though we don't might never be able to stop cheating entirely, we can drastically reduce it just by making it more difficult

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

That's actually a very cool idea. We can even extend this process further.

We can train AI models to detect cheating based on the development timeline. People write code differently when they understand the solution and when the don't, or even when they understand the solution, but didn't came up with it themselves.

If successful, this could detect cheating with high accuracy. We could drastically reduce cheating, by simple making the process more difficult

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

People like Dominater069 that use online IDEs (in his case codechef IDE) wouldn't like this.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

How about demanding every participant to open his camera and use AI to detect whether they use LLM?

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится -6 Проголосовать: не нравится

    This is far too intrusive.

    Similar to suggestions like "build an online IDE within Codeforces", this is something that could be perhaps considered for things like job interviews or online university exams. Maybe some important online contests. Something big and important.

    A Codeforces round is not a Big Important Event. I wouldn't participate under conditions like that, and I don't think many would.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

what i think so far is One practical way to reduce cheating is ethical behavior from LLMs. Since LLMs can detect live Codeforces contests, they could refuse to provide problem-specific solutions during ongoing contests and instead ask users to solve independently. This would not stop all cheating, but it would reduce easy misuse.

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This clearly helps, but it certainly won't the problem, because the solution is:

Simply type the code from LLM manually, without copy-pasting.

»
8 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +10 Проголосовать: не нравится

As a developer of Xeppelin contest watcher, glad to see the tool mentioned — even though the context is unexpected. Several thoughts on the topic:

  • As a cheater who knows coding and a bit of reverse engineering, you can falsify the contest log not only from Xeppelin but from any tool
  • Generally, as a cheater in online competition, you can cheat without any sign of you cheating.
  • You can't unify the setup for 10k participants.
  • Sending contest log is no different from recording the screen, which some official competitions already ask to do.
  • I believe unless we talking about top-100 in contest with prizes, contestants should not bother about cheaters because they don't deny you of anything but rating points. And rating points are virtual and you shouldn't care about them (or if you care, you should transfer this energy into self-improving).
  • CF is rather good at cleaning the standings post-contest — I don't see any Large Language Models over Legendary Grandmaster Models in the results in contests where it matters.
  • The real issue that contestants have because of LLM cheating is skewed standings during the contest. This would be great to fix but I have no idea how this can be possible.
»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

cheaters gonna cheat anyway but nice thought