欢迎通过 V2EX 的 创造者 节点寻找创业伙伴。
推荐书目
Founders at Work 简体中文译本
Founders at Work
darkway
V2EX  ›  创造者

一念成仙,做自己项目的人肉 harness

  •  
  •   darkway · 20h 34m ago · 751 views

    之前我在我在这里发帖子,有人说我写的文章太 AI 了。那我今天想来分享一下我从 2023 年开始用的一个编程的范式

    我写这一篇文章呢,本身呢,就不害怕别人嘲笑我,也不害怕别人笑话我。如果你觉得我说的是个笑话的话,那你就笑一笑。如果你想要在评论区里面发表一些刻薄的言论的话,我也不会生气,我都会听取

    叠甲的部分先叠完了。最近的时候有一个故事,就是说我当时在和一个朋友讨论一个平台新增的一个功能。然后呢,他跟我说,你用的是 CodeX 吗?还是 Claude Code ?我说我是用的 GPT 网页版。他和我说,网页版你是手写吗?这个年代了,你还不用这个编程 Code Agent ?我跟他说,我没有手写啊,都是 AI 在写啊。他觉得很疑惑,他说你怎么只靠对话?就能够写代码?这年代还有人在用网页版的这个 GPT 啊

    我当时没有跟他解释,但是我比他更快更准的做完这个功能。在测试的时候呢,我对这个需求卡的比他更准,做的也比他更好更快。这个时候呢,我开始去思考,然后我去问了一下我社区里面的朋友,发现他们都是在用这个 Code X ,或者说 Claude Code 。我就觉得纳闷呢,我用这个网页版不也一样很快吗?然后我去问他们,我发现了一个问题,就是他们已经失去了对自己项目的一个架构掌握力了

    这个项目从 21 年开始到 23 年开放,一直都是我自己手写代码。到了 23 年以后,我开始引入到这个 GPT 网页版。一开始的时候呢,我会去去问他们这个函数的输出有哪里不对,然后让他去解决我一些代码不会的问题。到后面呢,我开始去把我每一次出问题的具体的这个代码段发给 GPT ,然后让他去做手术刀的改进。到后来我才知道,这个能力很多开发者已经没有了。当我想要去改一个问题的时候,首先我是知道这一部分有问题,我能够把这一部分从它的最底层 SQL 到 DAU ,再到这个具体的这个函数,再到这个函数所关联的其他函数,我能够把它抽出来,抽成一条。然后我把它在我的这个备忘录里面先打成一个上下文。在上下文里面呢,我会写提示词,我会说,这里我觉得有什么问题,那里我觉得可能有什么问题,这里我们要观测什么,那里我们要观测什么,然后把它发给 GPT ,结合我的很多的日志,组成一条这样的上下文。最后让 GPT 做一个手术刀的改动,往往这个改动最后是特别准,特别很准快的。但是我没有想到过,其实我在做的这个事情,其实是现在的 Harness 在做的事情。但是呢,我一直没有用 Harness ,我一直坚信我自己就是这个人肉 Harness

    这样的人肉 Harness 有什么样的前提?有什么样的好处?首先,一个项目一定要是这个开发者,他自己对这个架构能够达到具体到某一个函数,具体到某一行代码的一个精细度的时候。当他对这个项目的了解程度达到这种程度的时候,他才能够自己去当这个 Harness 。因为当收到一条反馈的时候,一个用户反馈。因为我是独立应用开发者,我能够直接知道这个用户他在说什么位置,他在讲什么问题。然后我去把自己这个问题抽象到和他有关的这一行代码,然后把我的这个想法直接告诉这个 AI 的时候,其实我就在充当这个 Harness 。这个 Harness 比这个 AI 自己的 Harness 有更高的可控度。每当 AI 给我这个手术刀代码的时候。我会让 AI 去对齐全部的这个需要对齐的地方。AI 会给我一个 1 万字、2 万字、3 万字,甚至更长的一个每一个边界的对齐。但是呢,我有能力把它每一个边界都阅读完毕,在我的脑海里面形成一个,哦,AI 是这么理解我这一段代码的,但是这个理解与我的这个期望有具体哪一点的不同,我给它指出。然后我再次让它给我一个手术刀的改进,这个手术刀改进是一个可搜索可定位的。最后,它给我一个非常非常小的一个代码段,我把它改进去,它依然在我的脑海里面留存。这是我开发一念成仙这个有 100 多万行代码的项目的一个一直以来的一个开发方式

    今天我在这里讲我的开发方式的时候,我想可能在 AI 时代进入到这个开发的人,可能已经不能理解了。可能在 AI 时代前进入这个开发,但是后期把开发交给 AI 的人,也不能够理解了。但是呢,我用这个开发的方式,开发了一个有 60 万用户持续的收入,还有百万级别的代码以上的项目。直到今天,这个百万行的代码依然在我的脑海里面,每一个细节都清清楚楚,每一个架构都清清楚楚。AI 只是我的工具,直到现在,我也没有使用 Code X ,我也没有使用 Claude Code ,我依然保持每个月 160 多块钱的 GPT 网页版的订阅。但是我发现我和其他使用网页版订阅的人相比。我使用到的这个网页版仿佛不是一个网页版,因为我作为 Harness 参与了网页版。这篇文章我不是为了吹牛,我今天也喝了一点小酒,但是我说的这些呢,都是事实。如果大家对于我这种用网页版开发,每一次都根据自己的这个架构的经验,去把这一次要做的,具体到手术刀一个齿轮级别的改动发给他,让他去做手术刀的改动。他的每一个改动,他的每一个提交的上下文都是自己组合,每一个提交过来的代码都是自己审阅。这一种开发流程,有意义的或者有建议的用户,你可以去质疑我

    我想我可能会受到这样的质疑,这个年代了,你用 Code X ,一个下午可以做几百倍你的这个工作,你这样有什么意义?你是不是在闭门造车?或者在为了手搓而手搓,者,你自认为你一个有多年架构经验,或者说你追求一个架构洁癖,你希望对你的这个项目有完整的这个掌控权的这个能力。你确定你的这个架构掌控权的能力能够比这个未来的这个 Fibre 五,甚至更强的能力、更强的这个模型更强吗?你是不是在自己打自己的脸

    我很好奇这方面的这个评论

    9 replies    2026-08-21 11:45:35 +08:00
    darkway
        1
    darkway  
    OP
       20h 34m ago
    这篇文章我吸取之前的经验,我再也没有找这个 AI 帮我去缩写了,因为只要一缩写,评论我的人都说,你是不是在用 AI 写啊?能不能给我看看提示词啊?我这篇文章除了豆包语音输入法以外,什么都没有用,全部都是我自己说出来的。你觉得我哪怕说的不好,我也是自己说的呀
    darkway
        2
    darkway  
    OP
       20h 30m ago
    有没有开发者和我一样,到现在没有使用过任何对自己本地的项目有这种直接修改、直接运行的这种权利的这种应用,而是一直在坚持,只有自己用手才能够和自己的代码交互,通过复制,通过组合自己的上下文去和这个 AI 模型交互,但是最后得到的结果依然要靠自己的双手去应用到项目里面。这是不是一个已经是当代的 AI 编程的一个古法编程的一个类型呢?但是我认为这种编程才是真正的用到了这个 AI 的能力的,因为这种编程能够让自己切实实地处于一个当前所编程的环境,你能够了解到你。前提是你能够了解到自己的项目,你才能够组织上下文。前提是你能够理解自己的项目,你才能把它复制回自己的项目里。我觉得现在很多的所谓的 Vibe Coding ,所谓的自动 Coding ,当 Coding 失去了自己的理解,失去了自己对项目的完全掌握的时候,那就不是 Coding 了,那是胡闹
    zisen
        3
    zisen  
       18h 55m ago   ❤️ 1
    自己开发确实可以这样,但现在是 AI 时代,公司员工都必须以之前十倍的效率干活,不然就要被淘汰的
    我们公司五月份就规定了,手写代码的直接辞退,哪怕是修改一个数字也要让 AI 来修改
    其实我觉得很多做理论研究的都是网页版居多,包括算法研究,因为时间都花在构思上了,和 AI 大部分都是在讨论
    不过你最后说的确实是大问题,我让公司新来的应届生做一个工作,他全部 vibecoding ,然后出 bug 了,我和他说 bug 是啥,他都听不懂,得先描述给 AI ,关键这样还不如我直接对接 AI😮‍💨
    harness 的好处是可以把很多操作自动化,节约出来的时间摸鱼也好,自己构思也好,都是自己的时间
    xujinkai
        4
    xujinkai  
       18h 44m ago via Android   ❤️ 1
    你这么做是因为你的代码写了很多年,你直接定位问题比 AI 还快。
    我最近从头开始写项目,感觉是需要大量的文档才能 hold 住 codex ,还在实验当中,但很可能最后文档会细到接口,函数流程这个级别,最后的结果是文档成了新的高级语言,AI 生成变成了类似汇编的角色。
    darkway
        5
    darkway  
    OP
       17h 16m ago
    @xujinkai 是的,我现在酒醒了,但是我感觉你们完全 get 到了我想说什么。也不只是写很多年代码才能直接定位问题比 AI 还快。如果大量的文档吃在自己的脑袋里面,但是写还是 AI 去写,但是最后细的接口、函数流程这个级别的东西都还在自己的脑子里的话,可能更加容易能 hold 得住 AI 。只是说也是挺矛盾的。就一个人如果他对于项目的这种架构细到了这种程度,他其实就不需要扣的 X 了。他可能只需要去和 AI 对话就好了。不过三楼的这个想法确实挺让我深思的。就是确实一个人 OPC 独立开发者写项目,确实可以像我这么去搞,毕竟第一是他有这个他有搞的这个空间,毕竟项目就他一个人。二者呢,他也没有人去和他协作。哎,这其实我也是这个帖子想要去聊的这个东西
    darkway
        6
    darkway  
    OP
       17h 15m ago
    @zisen 是的,你和公司新来的应届生的这个沟通,其实我这里就特别像我和我的一些同行的朋友沟通一样。我和他们说到代码细节的时候,我发现他们给我的就是听不太懂,然后呢他又去描述给他的 AI 。后来呢,我跟他们去聊天的时候,我直接跟他们说,这个是提示词,你发给你的 AI ,然后你把你的 AI 的东西呢,再发给我。等于说我直接把他们跳过了,我直接跟他们的 AI 去对接了。但这样久了以后呢,我就其实我觉得这个问题挺深刻的
    darkway
        7
    darkway  
    OP
       17h 13m ago
    文章里有语言输入的错别字,DAU 实际是 DAO
    xiaket
        8
    xiaket  
       9h 40m ago
    我能够认可你的出发点, 只是好奇这样人肉 harness 的时候, 面对需要反复把一些文件传递给网页的时候, 不会觉得效率低吗? 实际上如果只是从强调对项目掌控来说, 你如果能够忍住, 不去短时间大量增加代码, 你在使用 codex/claude 的基础上, 仍然能够很好地掌控项目.

    有点像在数字音乐时代, 你一定想要去买 CD/黑胶一样. 偶尔这样没大问题, 但是如果一直这样, 失掉了很多的便利性.
    darkway
        9
    darkway  
    OP
       5h 15m ago   ❤️ 1
    @xiaket 我认为还好,因为网页版其实把文件直接上传进去就好了。这个是因为之前的这个 GPT 网页版是没有办法直接上传文件的时候,要手动复制代码的话比较麻烦。但是我现在如果要给它传这个上下文,我先在本地新建一个临时文件。然后我把我想改的,或者说具体范围的,因为我的项目的代码拆的比较的散,我是 Go 语言去写,然后呢我一个 Go 文件可能就只有 30~100 行。所以我其实从它的这个文件选取器里面去选这个文件,然后呢,一个上下文传个五六个文件,再说一段这个话,然后让它去给我做这个手术刀的修改。之后呢,它再把这个几个文件直接发回给我,我就直接去替换。然后呢,这个过程里面,我这个 GitHub 的这个仓库能够追踪这个 diff 。我习惯每一个小版本一个小改动就推一次这个仓库,这样的话我每一个 diff 之间都特别清楚,而且可以跨好几个 diff 去拉一个特别长的变更出来,很方便再发回这个 AI 里面,让它去这个再次消化,然后再次重新去对齐这个边界,跟我的这个边界去对齐

    怎么说呢?实际上吧,这种独立开发的这种项目,我觉得其实在拼的不是写代码有多快。如果是要工作的话,或者说是需要这个短时间做大量的项目,把这个做项目当做是一种活来去做的话,我觉得像我这样的话可能效率就比较的低了。但是呢,不同的这个项目类型嘛,像是这种已经做了五六年的这种独立开发的个人项目,其实已经过了需要快速开发,需要这个效率的这个时候了。我现在每一天花在想,还有花在这个收集这个用户反馈,决定以后要写什么的这个时间,和我实际上按我的这种办法去写这个新代码的时间的比例,可能想和收集已经占到 95%更多了。

    我一个月 30 天,可能就只有一两天熬熬夜写个代码。但这个代码是可能是我要剩下 25 天一直在想的。我这 25 天在做的就是,把边界梳理清楚,把这个设计闭环到没有再需要改的地方,把每一个细节都对齐到 AI 不会自己发挥的这种细节程度。然后在我就是我的这个项目还没有落到代码上的时候,我不知道怎么样去描述,就是在在我脑海里面,它是一个想法,它是一堆边界,它是一堆流程组成的那个状态的时候。

    在那个状态我是可以对它进行 debug 的。我会不断地在这个构思的这个范围内去不断地去推它,不断地去模拟去运行它。然后呢,不断地把这种模拟的状态和人去,和用户去讨论。然后我就可以在没有代码的时候迭代我的功能。等到我把我能够想到的,就是这个功能可能要去新增的特性,比如说它可能 UX 上面要做得更好一点。它现在的 UX 的话,虽然它代码没写出来,但是呢,还有可以提升可以优化的地方。

    我就会在写代码之前,我就去提前地去规划它。等到最后我花了 20 多天,我把它规划到很细的时候,我花一天的时间把它写出来。最后往往我写出来的这个代码,后期是很少需要去再去改代码的,因为我已经把它可能写出来以后可能会遇到的错误,可能会遇到的 bug 和问题,在还没有落成代码之前,我就已经提前能够把它想到了。最后我在提示词里面,还有我的这个设计里面,就已经把出现错误的这种,出现 bug 的这种,给它约束掉了。我很少看到有朋友,或者说有人像我这样子写代码。但是这几年的体验下来,就是这没有让我的项目更新变得很慢,相反,它让我的项目很少去改这个 bug

    我觉得有的时候吧,这种人肉 harness ,短期看是慢,但是呢,长期看,可能还反而在某些方面能够省下一些时间。我觉得你说的一点很有道理,就是你说我如果能够忍住不去短时间增加大量代码。其实我觉得如果我用 CodeX 和这个克劳德,工具如果太方便了的话,人会天然的忍不住想要去大量的去增加代码。如果本身写代码就是有一定的门槛的,有一定的成本的,可能反而会约束项目的开发者能够更加内化的、更节制的去规划,去更多的思考。因为我想在生活里面,很多事情门槛也是有价值的,就好比去收集 CD 黑胶唱片,其实门槛就比较高。不仅仅是要去专门的这个唱片店,而且呢还要自己去维护一套听音乐的这个设备,音响。那可能一个人想要去听音乐的时候,如果他有这个这样的这种姑且算是仪式感吧,那他可能会对自己想要听什么音乐,用什么设备去听,他会想的更多一点,可能这个音乐就相比在手机上刷汽水音乐,要来的更深刻一点,

    不过话说回来,这还是依然是一个个人选择的问题,每个人都可以自己去自由的选择自己喜欢的听音乐的方式。那么写代码也是一样,我觉得挺好的。其实现在能够看到写代码也开始有越来越多的不一样的写的方式。有的人还是喜欢复古手写,有的人开始去全部去 Vibe Coding ,有的人在这个 AI 写代码的同时呢,自己还要掌控这个项目的架构,还有的人开始去构造这个循环。Looping ,给 AI 设置目标,用目标去驱动代码开发的迭代。我觉得这些其实是可以同时存在的,不同的这种编程的风格
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5222 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:01 · PVG 17:01 · LAX 02:01 · JFK 05:01
    ♥ Do have faith in what you're doing.