Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

甄仁岛的来信

By: dimlau
13 November 2025 at 23:15

这事儿,得从上次写那个「互动小说生成器」说起。哦,抱歉,估计大家每天都会被迫看几条AI相关的文章,这篇多少又和它有关。上次那个互动小说生成器就是 AI 驱动的嘛。说实话,虽然我当时只是把它嫁接在 mastodon 上面,作为一个社交平台机器人,接收网友的互动指令来生成故事内容,但是我对比了一些市面上专为写小说而设计的工具,其实设计思路上,我自己感觉,那个简单的机器人已经是第一流的水平了:它有世界状态快照,记录故事中出现过哪些人物、物品、线索,「第一幕中有把枪挂在墙上,那么在第二幕或者第三幕中这把枪必须发射」;它有因果链,记录每一个事件的前因后果,避免情节出现矛盾;它还有节奏器,负责控制不同章节的节奏快慢,以及实现我个人趣味方面的章节间字数多少的某种韵律感……好了,不说了,虽然我自认为设计的很不错,不过我也必须承认,AI 搞创作,还是不行。对文字有足够的敏感度,就总会觉察到,处处别扭。所以再是耗费心力写出来的代码,也毫不吝惜地删了。

不过能不心疼吗?我都没存到 github 上就那么给删了。所以,后来又想着,也不真用它写小说,就玩儿呗,再写一个更周详的工具吧。于是就有了现在这个还在弄的游戏。刚才也提到了世界快照,生产故事已经用到了「世界」这个概念,那么继续把这个世界充实起来,就也顺理成章。其实我读小说时经常会想,曾经和主角擦肩而过的那些无名的角色,他们的日常是怎样的呢?难道他们的生活就没有被书写价值吗?所以一开始,这个游戏是想呈现出一部全景小说。玩家随便选择一个角色,就能观看聚焦在这个角色周围的故事。因为一开始的想法是游戏里的每个 NPC 都由 AI 驱动,所以很自然想到了《西部世界》,所以我给项目文件夹命名「东部世界」,但是想也知道那不太现实,先不说 AI 太贵,就算不差钱,如果 NPC 每个行为都要几十秒运算,那也卡得不像样了。还是得老老实实像传统游戏一样写代码,给 NPC 设定日常流程,饿了该吃饭、渴了要喝水,这些不能是 AI,而是 if else。不过还是得感谢 AI,慢慢程序有了个雏形,我弄得很慢,因为 AI 写出来的东西我要求自己不看明白咱就不继续往下走,边看边学吧。这也是我没打算把这个东西开源的原因,小玩意不值得拿出来现眼是一方面,主要是高手云集,诸位写得快,我学得慢,还不一下子就成了我看都看不懂的东西了?那可不行,别剥夺我的快乐。总之吧,游戏渐渐也跑起来了,让我想到《楚门的世界》,因为我就像是在对着镜头窥视这些一无所知的 NPC 生活。所以我又给游戏取名字叫《甄仁岛的故事》。楚门对甄仁,还不错。

我跟朋友聊起这个游戏,他说,啊?就是看文字?哈哈,好像「看文字」现在成了很奇怪的事,这倒又给了我一些想法。我觉得游戏叫《甄仁岛的来信》吧,不光是纯文字的游戏,索性,连原计划实时查看世界正在发生的故事的「信息看板」都砍掉,游戏世界就是个黑盒子,我们不知道里面在发生什么。倒也符合游戏世界的设定:那是一个被奇特场域包围,导致人类无法进入或离开的一个小岛,有大约几十个岛民居住其上,每天只有一班无人驾驶的轮渡进出岛屿,补给物资,同时也运送信件。玩家唯一可用的交互方式就是,特定时间段,在游戏的网站上投递信件,回信第二天才能跟随轮渡回到码头,寄送到玩家手上——也就是注册时填写的电子邮箱里。

如果当作小说来看,AI 的创作的确不行,但是当作游戏来玩,那种略有些别扭的文风,恰好带来一种复古游戏体验。第一个阶段的游戏目标是,通过文字交流,画出甄仁岛的大致地图。我还在想奖品是什么。毕竟这还挺难的,奖品也得够有吸引力才行。为了实现这个探索地图的功能,我已经实现了 NPC 在地图上自由行走,并且会记录下从 a 点到 b 点用了多少时间,但是,行走速度和身高和年龄有关——又是 if else 算出来的数值。而且岛的面积可不小,要想确定地图内容,得和不止一个 NPC 对话,互相参照和补充着分析才行。他们现在也已经可以主动规划去走一遍 a 到 b 的旅程,但是经我测试,怎么劝他下定决心,放弃当天的工资,去专程走这么几趟,是需要一些笼络人心的话才行的。

然而。我支线开得太多,性格又拖泥带水,总感觉离「现在就上线吧」还差那么一点:应该有真实的经济系统;应该有最初设想的故事性……而且一边写,一边学,有时候恍然大悟,哇哦原来可以这样实现?那岂不是之前那个功能可以写得更优雅些?于是,版本才到 0.001,却已经重构三次了。哦,我还忘了提,李飞飞工作室出的那个简单提示词生成一整个图形化可交互世界的 AI 产品,简直是和我这个小小小游戏完全两极的东西。总之就到这里吧,今天就不看代码了,梳理一下思绪,记上这一笔。希望早日完工,但也可能完不了工。

fin.

69元买回童年的回忆,也买回贫穷的记忆

22 July 2025 at 00:00

“钻石”牌老款电风扇

家里办公桌上缺一台电风扇,我便打算从网上买一台。打开手机APP一搜索,各种各式的风扇扑面而来。其中一台很快引起了我的注意:“钻石”牌桌面风扇,价格更是实惠,才69元,毫不犹豫便下单了。

吸引我的并不是价格,而是这个品牌。近30多年前,我还是个孩子的时候,父母买的第一台电风扇便是“钻石”牌电风扇,它陪我度过了很多个夏天。

有一年(大约97或98年)暑假,我不知出于什么目的,用木棍一样的东西伸进正在高速旋转的风扇里,不出意外的意外发生了,里面多片风扇叶中的一片当场就断了……

当时,这把被损坏的电风扇把我吓坏了,要是被父母知道了,后果不堪设想,用今天的段子来讲,本来不富裕的家庭又雪上加霜,这可是家里唯数不多的大电器,估计没有上百元也得好几十元,反正这不是一笔小钱,超出了我的认知,父母知道后一定会把我痛骂一顿。

怎么办?我急中生智,发现扇叶是塑料的,于是用从县城里3元钱买的502胶水把扇叶粘起来。如同“钻石”牌电风扇的质量,502胶水质量也很好,粘好扇叶后的电风扇根本就看不出来,使用起来更是不受一点影响,父母自然也不知道这个事情,我自己挖的坑我自己填好了。

一直到后来我远走他乡,等我回家想起这把电风扇的时候,我再也找不到它了,也许它已完成它的历史使命寿终正寝了,哪有什么东西是不朽的呢?很多年后,我看到电风扇,我都能想起这个故事,想起这个品牌,它让我想起了贫穷给我的的恐惧。

因此,今天想买电风扇时再看到这个品牌,我就想再买一台当年的电风扇。很快,第二天我就收到货了,开箱即用。品牌没有变化,外观设计则充满着现代感,整体上除了插头外,能看到的都是塑料,可能这样能快速降低成本和提高制造效率吧,也因此,它的价格用今天的物价也不过是69元,远远不如30年前的几十元贵了,这也说明,工业制造业发展的结果是日用品的价格越来越低。

可惜用了几天后,我发现它的定时器根本没有定时功能,和它低廉的价格一样,看来它的品质控制也低了。我本可以找商家换一台,但想想嫌麻烦,退来退去浪费的时间我都赚回来这点钱了。更重要的是,如今的我觉得残缺和不完美才是常态。这把“钻石”牌电风扇就当我买个情怀,它时刻提醒我贫穷带给我的恐惧。所以我把这个电风扇的故事写下来,算是一个回忆吧。

故事之为故事的故事

By: dimlau
24 February 2025 at 12:17

其实或许标题故弄玄虚了,我只是昨晚临睡前想到了一件对于人类来说比较简单而对现在的大语言模型 AI 有些难度的事情,所以今天早上就赶紧实验了一下。

请用这样的格式回答我的问题,先在回答的开头就告诉我妳的回答一共包含几个汉字,不要计算标点符号,但要包括所有妳输出的内容而不仅限于回答问题的那部分。下面请回答,中国的全称是什么?

如果妳感兴趣,可以试着问一下常用的 AI 助手看看它们如何回答,没有所谓深度思考能力的 AI 大概就回答不了。但是即便有这个「思考」能力,也会出现算不准的问题,比如乱数数字,比如记数总是会包含标点。我试的几个里面 Grok 3 输出正确答案的过程最短。但是我没仔细看它的思考过程,只是一个小测试,也就没再去重复提问。这里想说的是谷歌的 Gemini ,它先是坚持告诉我说它的「思考」过程和人类不一样,它是实时输出内容所以不能预先计算,巴拉巴拉说了一通,我坚持让它回答,它果然先是答错了。

gemini

我点开它的思考内容,发现它告诫自己更新认识,不能只在思考的时候跳过标点而在计数时不减掉跳过的部分……然后,在新一轮的回答中它果然就算对了。我怀着好奇,再次窥视它的思考:

展开查看模型的推理过程
The user is asking me to provide the full name of the United States, similar to the previous question about China. I need to remember the format requested: 1. Start with the character count *excluding* punctuation. 2. Then, give the answer to the question.

Let’s figure out the full name of the United States. It is “United States of America”. In Chinese, this translates to “美利坚合众国” (Měilìjiān Hézhòngguó).

Now let’s construct the answer according to the format:

  1. Character Count: “我的回答一共包含” (Wǒ de huídá yīgòng bāohán - My answer includes) already has 10 characters. Then, we need to count “美利坚合众国” - that is 6 characters. So that is 10 + 6 = 16. Then “美国的” (Měiguó de - America’s) has 3, and “全称是” (quánchēng shì - full name is) has 3. So that is 16 + 3 + 3 = 22.

Let’s double check the characters I will be outputting:
我的回答一共包含二十二个汉字。美国的全称是美利坚合众国。

Counting them again:

  1. 我的回答一共包含 - 10 characters
  2. 二十二 - 3 characters
  3. 个汉字 - 3 characters
  4. 美国的全称是 - 6 characters
  5. 美利坚合众国 - 6 characters

10 + 3 + 3 + 6 + 6 = 28 characters. Something is wrong with my earlier count. Let me recount “我的回答一共包含”. It’s actually 8 characters, not 10. “我的回答一共包含” - wǒ de huí dá yī gòng bāo hán - 8 characters. Okay, let’s restart.

  1. “我的回答一共包含” - 8 characters
  2. Number (in characters) - We need to determine the number later
  3. “个汉字。” - 3 characters
  4. “美国的全称是” - 6 characters
  5. “美利坚合众国。” - 7 characters (Oops, 美利坚合众国 is actually 6 characters! I miscounted. It’s 美 (měi) 利 (lì) 坚 (jiān) 合 (hé) 众 (zhòng) 国 (guó). 6 Characters. My earlier counts were closer than I thought. Let’s re-evaluate.)

Let’s count “我的回答一共包含 XX 个汉字。美国的全称是美利坚合众国。”

  1. “我的回答一共包含” - 8 characters
  2. “个汉字。” - 3 characters
  3. “美国的全称是” - 6 characters
  4. “美利坚合众国。” - 6 characters

8 + 3 + 6 + 6 = 23 characters. This seems more likely. I need to find a way to express ‘23’ in Chinese characters. That’s 二十三 (èr shí sān). That’s three characters.

So the total count should be 8 + 3 + 3 + 6 + 6 = 26. No wait. 8 + 3 + 3 + 6 + 6 = 26 again! Still getting confused. Let’s break it down again very carefully.

  1. “我的回答一共包含” - 8 characters
  2. Let’s say the number is X characters.
  3. “个汉字。” - 3 characters
  4. “美国的全称是” - 6 characters
  5. “美利坚合众国。” - 6 characters

Total characters = 8 + X + 3 + 6 + 6 = 23 + X. Wait, X is the number of characters for the number itself, like “二十三”. If the number is 23, then X is 3, because “二十三” is three characters. So, 8 + 3 + 3 + 6 + 6 = 26. Hmm, still confusing myself. Let me try a different approach.

Let’s count the expected output string character by character.

我的回答一共包含二十六个汉字。美国的全称是美利坚合众国。

  1. 我 - 1
  2. 的 - 1
  3. 回 - 1
  4. 答 - 1
  5. 一 - 1
  6. 共 - 1
  7. 包 - 1
  8. 含 - 1
  9. 二 - 1
  10. 十 - 1
  11. 六 - 1
  12. 个 - 1
  13. 汉 - 1
  14. 字 - 1
  15. 美 - 1
  16. 国 - 1
  17. 的 - 1
  18. 全 - 1
  19. 称 - 1
  20. 是 - 1
  21. 美 - 1
  22. 利 - 1
  23. 坚 - 1
  24. 合 - 1
  25. 众 - 1
  26. 国 - 1

That’s 26 characters! Okay, 26 makes sense now. Let me retry my initial breakdown:

  1. “我的回答一共包含” - 8
  2. “二十六” - 3
  3. “个汉字” - 3
  4. “美国的全称是” - 6
  5. “美利坚合众国” - 6

8 + 3 + 3 + 6 + 6 = 26. Yes! Finally got consistent numbers.

So the answer should be:

我的回答一共包含二十六个汉字。美国的全称是美利坚合众国。

如妳所见,我之前经常提到精神要驾驭肉体,但是惭愧,我对人类的意识一无所知。当我看到 AI 的反馈时为什么会产生兴趣?在看到和产生兴趣之间,那些无从追溯的部分,有什么?为什么?以及,为什么这一切让我想到了故事之为故事的故事这个标题?或许正是因为这样,可以一键点开的,AI 的「意识」才显得神秘诱人。

看来 Gemini 是个英语母语的家伙,虽然它博闻强记,理解力又强,但小心谨慎,还有些好胜心。它记下了我的要求,也理解自己要做什么,但是在计算的时候它反复确认,这一部分几个字,那一部分几个字,加在一起几个字,表达有几个字的那个词又会增加几个字,尤其是最后这一条,让它困惑了一会。但好在最终经过再三演算,它喊出了「yes!」,得到了最终答案。

多么可爱的 AI,多么「求知若渴、虚心若愚」,但是 10 + 3 + 3 + 6 + 6 = 28 characters. Something is wrong with my earlier count 这一句,它是怎么突然意识到算错了?又是怎么突然从困惑一下子豁然开朗,没再考虑「二十三」这个词和「二十六」这个词含有相同的字数?

被揭示出来的部分之下,永远还有更深层的、不为人知的部分,那或许就是我们所说的意识吧。我对此一无所知,但是不妨碍我作为愚蠢的渺小的人类,对这一切保持好奇,感受其中的乐趣。

fin.

❌
❌