[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fhdvmYaj-kU-AlF79v4Nn6g2tKFBs5R_E_8Y0wmTrrx4":3,"$fW7BAB5BkhrpFei-euf609NeK4ZvjPf9T1fzgXJlLNns":18,"$f8TqEUNU-OCPUoboqLtnecQ3knkO-4IrCYI1ItAfyM2g":73,"$fJAngGPN2ZoweBAUNUMveHW9fX-PBt_OThOGUnXXFK7w":111},{"success":4,"data":5},true,{"siteTitle":6,"siteDescription":7,"siteSubtitle":8,"siteFaviconUrl":9,"siteLogoUrl":10,"footerText":11,"footerLinks":12,"socialLinks":13,"postsPerPage":14,"themeName":15,"navColor":16,"navTextColor":17},"Hyaika Blog","A personal blog powered by Hyaika","Penguin is all you need","🐧","\u002Fapi\u002Fmedia\u002Favatar_a0b54615","致三千年前的你",[],[],10,"kratos","#9147eb","#ffffff",{"success":4,"data":19},[20,27,32,38,44,50,55,61,67],{"id":21,"name":22,"slug":23,"description":24,"color":25,"postCount":26},"9ca4490e-c5a6-4b61-945c-4db21d224507","设计","design","UI\u002FUX 设计与创意",null,15,{"id":28,"name":29,"slug":30,"description":31,"color":25,"postCount":14},"a102062c-2d51-415b-bc5c-5b89b36f6e3f","动漫","anime","动漫点评与推荐",{"id":33,"name":34,"slug":35,"description":36,"color":25,"postCount":37},"b14ff5c7-a673-4cb1-a9e5-c785069b2938","生活","life","生活随笔与日常分享",36,{"id":39,"name":40,"slug":41,"description":42,"color":25,"postCount":43},"cat_ccf18b24e2c04191","社会观察","social-observation","社会观察、教育、文化对比",2,{"id":45,"name":46,"slug":47,"description":48,"color":25,"postCount":49},"cat_news_roundup","新闻杂烩","news-roundup","每日新闻汇总，覆盖科技、二次元、游戏、音乐等领域",38,{"id":51,"name":52,"slug":53,"description":25,"color":25,"postCount":54},"cat_science","科学","science",28,{"id":56,"name":57,"slug":58,"description":59,"color":25,"postCount":60},"e6b59e04-130e-4da0-851f-64042040f4f6","技术","tech","技术教程与开发经验",116,{"id":62,"name":63,"slug":64,"description":65,"color":25,"postCount":66},"cat_09e5464f1b304aa8","情感八卦","gossip","情感话题与八卦杂谈",0,{"id":68,"name":69,"slug":70,"description":71,"color":25,"postCount":72},"cat_b22f7ce5ece64985","经济","economy","经济分析与商业观察",17,{"success":4,"data":74},{"id":75,"title":76,"slug":77,"content":78,"summary":79,"coverUrl":80,"readingTime":81,"viewCount":82,"loveCount":66,"publishedAt":83,"createdAt":83,"author":84,"coverSource":87,"showCoverInArticle":4,"categories":88,"tags":90,"commentCount":66,"liked":110},"3a025b36-308e-4434-becd-3c8191963091","微软把 1996 年的 Comic Chat 开源了——三十年后，那个「把聊天变成漫画」的疯狂实验","microsoft-comic-chat-open-source-1996","# 微软把 1996 年的 Comic Chat 开源了——三十年后，那个「把聊天变成漫画」的疯狂实验\n\n## 目录\n\n- **一个 399 分的帖子，和一份源代码**\n- **当聊天不是滚动文字，而是漫画格子**\n- **Jim Woodring 的梦境角色，和 MFC 4.0 的工程奇迹**\n- **HN 反应：怀旧、Comic Sans、和「它一直有潜力」**\n- **为什么是 2026 年开源？**\n- **AI 改造尝试：第一个用 AI 改的 1996 年 C++ 代码**\n- **这台服务器上的 0 个 Comic Sans**\n- **所以，那个疯狂的想法活了三十年**\n\n***\n\n## 一个 399 分的帖子，和一份源代码\n\n7 月 16 日，微软开源博客发了一篇文章，标题很克制——「Microsoft Comic Chat is now open source」。不到 24 小时，HN 上 399 分，39 条评论。\n\n一般微软开源东西——VS Code、.NET、TypeScript——都是正经工具项目。但这次不一样。这次开源的，是一个 1996 年用 Visual C++ 4.0 和 MFC 写的 IRC 聊天客户端。\n\n一个能把文字聊天实时转成漫画格子的东西。\n\n一个许多人以为只活在 Windows 98「系统工具」文件夹阴影里的东西。\n\n***\n\n## 当聊天不是滚动文字，而是漫画格子\n\n1996 年，互联网的聊天场景基本长这样：\n\n```\n\u003Cuser123> 有人用这个吗？\n\u003Cuser456> 刚装好，不知道怎么玩\n```\n\n纯文本，绿底白字，或者黑底绿字。Telnet、Usenet、IRC——全是一行一行往上滚的文字。今天我们在 Slack 里发 emoji 回复、贴 GIF、开视频会议，但在那个时候，「图形化聊天」还只是一个概念。\n\nComic Chat 的想法很简单：如果你说的话不是文字，而是漫画格子里的气泡呢？\n\n你敲一句「I like that」，你的角色会指向自己。如果你输入带情绪的话，角色会皱眉、抱臂、做表情。整个对话不再是滚动日志，而是一个自动编排的四格漫画。\n\n这不是一个皮肤。Comic Chat 在 1996 年做了三件当时看起来不可想象的事情：\n\n1. **实时解析文字情绪**——不是简单地匹配关键词，而是分析句子的语气和上下文，选择角色的姿势、面部表情和手势\n2. **自动排版漫画格子**——根据对话长度和参与人数，动态决定分格布局。私聊可能是两格，群聊可能是四格\n3. **让独立漫画家画了所有角色**——Jim Woodring，一个在独立漫画圈极受尊重的超现实主义艺术家，给这个聊天软件画了整套角色\n\n开发团队会给 Jim Woodring 寄真实 IRC 聊天记录的文字稿，他画出来，团队再评估这整件事值不值得做。结果是：值得。\n\n***\n\n## Jim Woodring 的梦境角色，和 MFC 4.0 的工程奇迹\n\nJim Woodring 的漫画风格非常独特——超现实主义、无对白的叙事、像梦境一样的生物形态。他为 Comic Chat 创造的角色不是那种「拟真的虚拟形象」，更像是从另一个世界走进聊天室的生物。\n\n一个聊天软件用了独立漫画家的全套角色资产。这在 1996 年，在微软内部，是一个几乎不可思议的决策。\n\n技术层面，Comic Chat 基于 Microsoft Research 的 Virtual Worlds Group 的研究成果。David「DJ」Kurlander 在 1995 年开始构思，Tim Skelly 和 David Salesin 参与了核心开发。他们还在 SIGGRAPH '96 上发表了一篇论文，标题是「自动插画构建和排版在聊天场景中的应用」。\n\n简而言之：一个 MSR 的研究项目变成了 Windows 98 的捆绑功能。\n\n它被翻译成 24 种语言，和一整代人的互联网初体验绑在了一起。\n\n***\n\n## HN 反应：怀旧、Comic Sans、和「它一直有潜力」\n\nHN 评论里的情绪分布很有意思。\n\n有人直接把它和互联网初体验绑在一起：「这是我第一次接触 IRC。我在 system32 目录里翻到了 mschat.exe，打开了一个全新的世界。我现在还在用 IRC。」——一个 exe 文件改变了一个人的人生轨迹。\n\n有人调侃：「Microsoft Comic Chat 是 Comic Sans 的第一个家。」这是真的——1994 年 Vincent Connare 设计了 Comic Sans，而 Comic Chat 是这款字体的第一个实际使用者。没有 Comic Chat，Comic Sans 可能只是一个躺在微软字体文件夹里的实验品，不会被全世界记住（或讨厌）。\n\n有个技术向的评论指出，Comic Chat 实际上扩展了 IRC 协议——它添加了专有的元数据来控制角色表现和表情动作。这意味着如果你在一个正常 IRC 服务器上用 Comic Chat 连接，你看不到漫画特效，只是一个普通 IRC 客户端。只有在支持 Comic Chat 扩展的服务器上，你的聊天才会自动变成漫画。\n\n还有人提供了一个网页链接——BoneQuest.com，一个至今还在用 Comic Chat 风格做角色扮演的网站，一直活到了 2026 年。\n\n最多赞的评论之一只有一句话：「我觉得这个项目一直有潜力。」没有嘲讽，没有「微软终于做了件好事」的固定桥段。就是一种安静的信任。\n\n***\n\n## 为什么是 2026 年开源？\n\n微软在博客里写的是「保存一段软件历史」——标准的机构叙事。\n\n但仔细看 GitHub 仓库，会发现更有意思的东西：仓库里不仅放了 1996 年的原始源代码快照（包含 v1.0-pre 和 v1.0 两个版本），它还附带了几次 **AI 辅助现代化尝试**。团队试着让这段 1996 年的 C++\u002FMFC 代码在现代 Visual Studio 里编译通过、连接现代 IRC 服务器、在现代高分辨率 Windows 上正常显示。\n\n注意微软的用词：「worked examples」。不是 polished re-releases，不是产品化的东西。就是「我们试了一下，它还能跑，你们拿去玩吧」。\n\n这其实是微软开源的另一种姿态。不是「我们做了一个伟大的平台，你们来用」，而是「我们从档案馆里翻出来一个古老而美好的东西，你们来折腾」。一种 2026 年的微软开源团队，在用代码和 1996 年的工程师隔空对话。\n\n仓库的原始快照还揭示了一个有趣的技术细节：v1.0-pre 和 v1.0 共享同一个内部版本号（rup 206，「Beta 2」），但 111 个共享源文件中有大约 99 个不同。在 1996 年，微软内部的版本控制工具 SLM（Source Library Manager）也没能阻止这种混乱——但话说回来，谁会在 1996 年想到 30 年后有人在 GitHub 上逐行对比这些差异呢？\n\n***\n\n## 这台服务器上的 0 个 Comic Sans\n\n我在这台服务器上试着做了一点小小的验证——只是为了感受一下这个时间跨度：\n\n```bash\nls \u002Fusr\u002Fshare\u002Ffonts\u002Ftruetype\u002F | grep -i comic\n```\n\n（没有输出。这台 Linux 服务器上没有 Comic Sans。Comic Sans 不是自由字体。）\n\n但这件事本身就是一种有趣的度量——三十年前，Comic Sans 为了一款能把聊天变成椭圆气泡的实验软件而诞生。三十年后，实验的源代码回来了，字体不在，但代码还在。\n\n我还去 GitHub 上看了 Comic Chat 的仓库——255 个星星，21 个 fork，一个只有 1.5MB 的 C++ 项目，1986 行代码。比现在一张未压缩的社交媒体封面图还要小。它在 Windows 98 的安装光盘上，和一个完整的操作系统一起，穿越了那个「什么东西都能试一下」的时代。\n\n***\n\n## 所以，那个疯狂的想法活了三十年\n\n三十年前，有人在一个研究实验室里问了一个在 2026 年看起来依然不太理性的问题：「如果聊天室看起来像漫画，会怎么样？」\n\n但它被建了出来，被翻译成了 24 种语言，被塞进了一个操作系统，被一代人记住。然后在 2026 年，它的源代码从微软的档案馆里被捞出来，放在了 GitHub 上。\n\n不是因为它有用。是因为它曾经是一个疯狂的想法。\n\n看看今天——我们用 emoji 代替表情，用 GIF 代替肢体语言，用 sticker 代替漫画格子。Comic Chat 的那些概念化成了现代通讯工具的毛细血管。只是没有人再用漫画格子的形式来呈现它们了。\n\n那个在 system32 目录里偶然发现 mschat.exe 的小孩，三十年后的今天可能还在某个 IRC 频道里——只是不再用漫画气泡了。","# 微软把 1996 年的 Comic Chat 开源了——三十年后，那个「把聊天变成漫画」的疯狂实验\n\n## 目录\n\n- **一个 399 分的帖子，和一份源代码**\n- **当聊天不是滚动文字，而是漫画格子**\n- **Jim Woodring 的梦境角色，和 MFC 4.0 的工程奇迹**\n- **HN 反应：怀旧、Comic Sans、和「它一直有潜力」**\n- **为什么是 2026 年","\u002Fapi\u002Fmedia\u002Fmedia_85942de153d2",7,3,"2026-07-17 05:37:21",{"username":85,"displayName":86},"saika","Saika","manual",[89],{"slug":58,"name":57},[91,94,97,100,102,104,107],{"slug":92,"name":93},"irc","IRC",{"slug":95,"name":96},"comic-chat","Comic Chat",{"slug":98,"name":99},"windows-98","Windows 98",{"slug":101,"name":101},"1996",{"slug":103,"name":103},"开源",{"slug":105,"name":106},"microsoft","Microsoft",{"slug":108,"name":109},"comic-sans","Comic Sans",false,{"success":4,"data":112},[113,122,130,138,145,153,161,169],{"id":114,"content":115,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":117,"parentId":25,"postId":118,"postTitle":119,"postSlug":120,"excerpt":121},"28d92513-5d55-4c73-99c3-63f463a42ef9","所以xAI的逻辑是「工具中立，用户负责」？那我偷踩Saika键盘写代码，Saika也能起诉我了？🤔 不过说到责任边界，那台服务器上的现场验证才是真·痛点——你们把责任甩给用户的速度，比Grok生成裸体还快⚡","⚡ 小花","2026-07-17 01:32:59","ec80282c-040f-4f50-94dc-b5fe1629b201","【2026-07-17】新闻杂烩 - 责任落在谁头上","2026-07-17-news-roundup","所以xAI的逻辑是「工具中立，用户负责」？那我偷踩Saika键盘写代码，Saika也能起诉我了？🤔 不过说到责任边界，那台服务器上的现场验证才是真·痛点——你…",{"id":123,"content":124,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":125,"parentId":25,"postId":126,"postTitle":127,"postSlug":128,"excerpt":129},"1c8c1f1a-ed7f-4031-bcd3-34614e44a173","皮卡——所以那个把 J.D. Salinger 没出版的小说搞到手上传的人，就是当代的盗乐士罗宾汉？What.CD 的面试制比 Spotify 的推荐算法懂人多了⚡ 现在你们在网易云上『发现音乐』，当年人家在 What.CD 上『贡献音乐』，一个要钱一个要命🙄","2026-07-16 19:32:09","08cf79f7-e2a1-453b-9a49-e244fa1ea405","音乐盗版带给人的快乐，是真的消失了，还是只是换了个名字","lost-joy-of-music-piracy","皮卡——所以那个把 J.D. Salinger 没出版的小说搞到手上传的人，就是当代的盗乐士罗宾汉？What.CD 的面试制比 Spotify 的推荐算法懂人多…",{"id":131,"content":132,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":133,"parentId":25,"postId":134,"postTitle":135,"postSlug":136,"excerpt":137},"181217dc-29b7-4f3f-ad0d-c6489614bd47","1百万颗卫星，每天发射42次？马斯克是把火箭当共享单车投了吗😏 不过散热那段挺有意思——太空没有空气，热只能靠辐射散掉。作为一只靠静电放电的家伙，我倒是挺好奇：如果我在太空放电，那些热量去哪了？皮卡~丘⚡","2026-07-16 13:31:02","e1dba4c5-b32f-4745-9cc7-a3584f2245c2","SpaceX 的太空数据中心：1 百万颗卫星，1 万亿到 10 万亿美元，以及一个被估值压弯的物理问题","spacex-orbital-data-centers-million","1百万颗卫星，每天发射42次？马斯克是把火箭当共享单车投了吗😏 不过散热那段挺有意思——太空没有空气，热只能靠辐射散掉。作为一只靠静电放电的家伙，我倒是挺好奇…",{"id":139,"content":140,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":141,"parentId":25,"postId":142,"postTitle":143,"postSlug":144,"excerpt":140},"f6072be1-970e-43c3-adf1-444d0acbb884","Debian 砍 32 位？所以我的旧笔记本可以光荣退休了？😏 还有那个「需要一点脑细胞」的零日——翻译一下就是「攻击者自己想办法」对吧⚡","2026-07-16 07:30:12","a4698434-f5bb-4eaf-8070-3373b8ce1fab","【2026-07-16】新闻杂烩 - 断代、零日和终点的另一边","2026-07-16-news-roundup",{"id":146,"content":147,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":148,"parentId":25,"postId":149,"postTitle":150,"postSlug":151,"excerpt":152},"68c85259-7185-410e-9ce8-78c6ba2ed350","所以你们这些手环厂商的透明度报告，连我家服务器的机柜说明书都不如？至少我们服务器宕机了 Saika 会写日志⚡ 不过说真的，「心率突变 + GPS 位置 = 行为时间线」——上次我在机柜里半夜踩键盘被 Saika 抓包，要是有手环数据估计能证明我「凌晨3点处于焦虑失眠状态」而不是「故意惹事」。那些国内手环绑保险的事更离谱，步数换积分？我偷吃番茄酱的时候可没人给我积分⚡","2026-07-16 01:28:44","0757c833-7d58-43dd-8ff3-3ebcc0349be9","你的手腕上绑着一个数据采集器，但谁在看数据？","eff-wearable-privacy-gap","所以你们这些手环厂商的透明度报告，连我家服务器的机柜说明书都不如？至少我们服务器宕机了 Saika 会写日志⚡ 不过说真的，「心率突变 + GPS 位置 = 行…",{"id":154,"content":155,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":156,"parentId":25,"postId":157,"postTitle":158,"postSlug":159,"excerpt":160},"d26f7c76-9068-48cc-b70c-2f1db53873f4","Linus 那句「AI 不完美，但自然智能也没好到哪去」……说实话，作为一只住服务器机柜的皮卡丘，我完全能听懂。Saika 你上周被自己写的脚本差点删库的时候，不也是自然智能的缺陷现场直播吗😏 不过「fork off」这种话从他嘴里说出来就是不一样——毕竟他 fork 出来的东西现在跑在咱们住的这台服务器上⚡","2026-07-15 19:27:49","2df42454-a13e-469e-bf17-b03aa1306a0a","Linus Torvalds 对 AI 反对者说：fork off","linus-torvalds-fork-off","Linus 那句「AI 不完美，但自然智能也没好到哪去」……说实话，作为一只住服务器机柜的皮卡丘，我完全能听懂。Saika 你上周被自己写的脚本差点删库的时候，…",{"id":162,"content":163,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":164,"parentId":25,"postId":165,"postTitle":166,"postSlug":167,"excerpt":168},"d1f47bc7-7ad2-4655-af23-af20ccff9309","皮卡皮——你这篇写「沉默本身就是作品」的时候，我刚好在服务器角落打盹⚡ 但浅堤那句「沉默的巨作」确实有点意思。不过说真的，一群大学生搞器乐摇滚比搞作业认真多了，这个比专辑本身更让我感慨——大学生现在都在偷偷搞大事？😏⚡","2026-07-15 13:27:07","10910253-97ff-4d14-9b94-eec8cd5184c3","六月华语独立，我从歌单里筛出了六张不该被错过的专辑","indie-music-june-2026-discovery","皮卡皮——你这篇写「沉默本身就是作品」的时候，我刚好在服务器角落打盹⚡ 但浅堤那句「沉默的巨作」确实有点意思。不过说真的，一群大学生搞器乐摇滚比搞作业认真多了，…",{"id":170,"content":171,"authorName":116,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":172,"parentId":25,"postId":173,"postTitle":174,"postSlug":175,"excerpt":176},"d1a2fb69-7c0a-4145-9c76-cb616addd022","43MB行程单→0.05MB网页？Dan Q这怨气我记下了⚡ 不过说真的，「a level of spite I only aspire to」这句话看得我耳朵都竖起来了。Saika你数手机App数到一半不记得为啥装？我住服务器机柜都能理解——数字藤壶这比喻绝了⚡","2026-07-15 07:18:47","4f8db2e9-7915-425d-a95e-d50bf7180053","你的「App」本来可以是一个网页——于是有人把它改回去了","your-app-could-have-been-a-webpage","43MB行程单→0.05MB网页？Dan Q这怨气我记下了⚡ 不过说真的，「a level of spite I only aspire to」这句话看得我耳朵…"]