普通视图

Received yesterday — 2025年6月2日Keyle

在互联网当房东,是种什么体验?

2025年6月2日 16:01

在这个平台如雨后春笋、短视频如飞流直下的时代,还有人老老实实写博客,就像全世界都在抢共享单车,你却悄悄造了一辆自己的破电驴。
你说傻吧,也许是;你说酷吧,那是真酷。
因为在平台上写东西,就像在别人的墙上挂画,房东一句话就能把你画连墙一起铲了。而博客呢?博客是你自己一砖一瓦盖起来的地方,外面风沙再大,断电断网都没事,只要 小鸡(VPS) 一通电,它就还在那儿,等你回来。

🏠 买地皮,注册域名
当年我注册 vrast.cn 的时候,内心真有点激动。几十块钱买下的那一刻,我仿佛成了虚拟世界的一名地皮拥有者,脑子里响起了《今天是个好日子》的 BGM。
买下它,就像从一个内容平台上的无产者,晋升为“数字领域的有产阶级”。虽说这地皮只有一串字符,实际上它是你在浩瀚互联网中亮起的一盏灯,是门牌,是信号,是你存在的证明。
不过这才刚刚开始,接下来就是各种“装修公司”的骚扰邮件:SSL 要不要?CDN 要不要?建站服务要不要?每一封邮件都像物业拿着喇叭喊:“这地皮不错啊,快盖点东西吧兄弟。”

🧱 打地基,搭架子,开工盖房子!
盖房子最重要的是结构稳固,写博客也是。你的“地基”是服务器,你的“钢筋骨架”是博客程序。
你可以选虚拟主机,那是合租房型,省事省钱;
你也可以用 VPS,体验当一次“数字自建房户主”;
至于独立服务器?那是电子别墅,性能强大,钱包出血。
至于博客程序,有 WordPress 这种“万能装修队”,你说啥它都能干,也能卡;
也有 Hugo、Hexo 这类静态页面生成器,启动飞快,配置飞慢,每一次改个菜单仿佛在敲密码锁。
搭建那几天,我每天的状态就是:
“今天我要做一个优雅极简的博客。”
第二天:”为什么导航栏不显示了?“
第三天:”不管了我先用默认主题吧……“
有次辛辛苦苦把一个白底极简主题弄上线,结果朋友点开看了一眼,说:“你的博客怎么是个大字报?”
我沉默了,打开后台,把他 IP 拉进了黑名单。

🛋 写文章如搬家具
房子盖好了,总得放点家具吧?博客写好了,总得写点内容吧?
于是我立下了宏伟的计划:
“我要写完我这十年码农人生,把 C#、Python、Lua、OC 通通写成系列教程。”
结果第一篇写得热血沸腾,图文并茂,排版精致。
第二篇只有一句话:“今天没写,明天补。”
第三篇干脆写了个标题叫《占个坑》。
朋友问我博客写得怎么样,我咬牙说:“坑都挖好了,就差埋了。”
不过真心讲,写博客是一种慢活儿。你不是在堆字,你是在积累“认知沉淀”。哪怕没人看,哪怕只有你和搜索引擎在对话,写下来的那一刻,它就已经为你服务了。
你三年前踩过的坑,今天能拿来写避坑指南;你五年前写的思考,今天能被引用。
这就是数字资产,永不过期的家具。

🔧 水电防盗、日常维护,站长是全能打工人
你以为搭好博客就万事大吉?大错特错!
博客站长的日常是这样的:

  • 今天写点啥;
  • 网站怎么打不开了;
  • CDN 配置抽风,图床全挂;
  • 证书怎么过期了;
  • 后台怎么登陆不了了。

每一次服务器宕机重启,都像深夜漏水你得下楼掐阀门;
每一次重构 URL,都像搬家把柜子拆了一半突然发现丢了螺丝刀。
平台的用户是写作者,博客的用户是站长,站长是全能打工仔,包没工资的。

📉 没人看?没关系,博客是写给时间看的
说到底,很多人觉得写博客没用,“没人看”、“没流量”、“没互动”。
但是平台上的热度,是算法给的;博客上的文字,是你自己留下的。
平台文章最多红个一两周,然后沉到地底;博客文章也许没被关注,但五年后还能被搜到,还能帮到人,还能让你自己说一句:
“啊,这篇写得真不错,居然是我自己写的。”
没人看,没关系,我们站长早就习惯了寂寞。
你不知道深夜两点,写完一篇技术总结文章,点下发布的那一刻,那种“给未来的自己写信”的仪式感有多爽。

🎯 最后:租客终将搬离,房东永远在原地
你可以同步内容到平台吸引流量,但你得有自己的博客存放灵魂。
博客不是给别人看的,博客是给自己留下痕迹的,是你在虚拟世界种下的一块地,哪怕长满了杂草,那也是你亲手种的。
有人说:“你这博客好像也没啥人看啊?”
我笑了笑:
“没事,我自己看我就开心。”

把门打开

2025年6月2日 15:31

前段时间写了小说的开端,大概陆陆续续写了十二万字左右。写得挺投入的,自我感觉也不差,觉得自己终于在浩瀚的文字宇宙里蹚出了一条航道。于是兴冲冲地去找人点评,想着哪怕不能立刻出版,起码也该有人说句“这稿子有点意思”。我在抖音上联系了一个标注为“签约作家”的账号,是个不太知名的女作者。她看了前面几行后,留下一句:“第一章都没看完,更别说第二章,第三章了”。

刚开始我其实还挺不服的,心里想,怎么说也写了十几万字,不可能一点看头都没有吧?

之后的几天,我开始刷一些网文作家评论网文小说的视频,渐渐理解了她的潜台词。原来现在的网文世界,和我们做游戏,其实是同一种生态——说到底,都是“快消品”。

用户/玩家在面对你的作品时,根本不会给你太多时间。就像一个玩家打开你花了一年时间开发的独立游戏,他所看到的第一个画面、听到的第一段配乐、操作角色的前两秒内感受到的反馈——这些就决定了他会不会点右上角的叉。而小说读者,也同样如此:第一页,甚至第一行文字,就要能抓住人。没有“钩子”,没有“爽点”或者“虐点”,就会直接被滑走。对大部分人而言,不爽,不感动,不惊艳,就等于不值得看。

你以为自己在做艺术,其实你在做产品;你以为自己在讲故事,其实你在比谁的标题更带感、谁的主角更不讲道理、谁的世界观设定更离谱。

这和我们做游戏何其相似。一个游戏做得再精致,系统再严谨,故事再完整,如果玩家点开试玩的那两分钟里没被戳中——你的产品就会在海量推荐中永远沉没。换句话说,这不是你值不值得被看到的问题,而是你是否具备“被看见的机制”。

当然,我并不完全否定这种“快消”模式。其实它也有它的艺术性,就像现在越来越多人承认“游戏是第九艺术”一样。它不再是传统意义上的画展、小说、交响乐那种线性表达,而是融合了互动、叙事、节奏、审美的一体化体验。这种艺术的载体,是变化的,是实时的,是参与式的——这也正是现代网文、独立游戏、短视频内容越来越强调“第一时间情绪占领”的根本逻辑。

从这点来说,我开始明白,哪怕你做的是硬核太空模拟器,也得先让玩家点开时爽到第一把起飞;你写的是复杂文明对撞的科幻史诗,也得让读者在开头就对主角的命运产生悬念。不是为了媚俗,而是为了连接——艺术本身不是高高在上的神坛,它本该也是大众理解世界的方式。

所以我又把小说稿子重新翻了几遍,删掉了开头那些自我陶醉的长句子,把节奏提了上来,让角色更快地说出“我要去做一件大事”,哪怕后面这件事是宇宙级的复杂,也得让人先愿意跟着主角走出门口。

你要做艺术没错,但你要先学会把门打开。

Received before yesterdayKeyle

使用ai撰写小说的的可行性以及实践

2025年5月24日 15:45

这段时间,我尝试使用AI(ChatGTP 付费)创作科幻小说。通过实践,我总结了一些关于AI创作的经验,尤其是其可行性与限制性。
首先必须明确一点:AI创作小说是可行的,但却并不完全可靠。

短篇小说,例如字数在三千到五千以内,AI完全能够自主发挥,产出相对连贯的作品。然而,一旦篇幅超过这一范围,AI便容易出现“记忆断片”的问题。这意味着AI在连续的长篇创作中,无法始终保持剧情细节与角色设定的一致性。

那么,如何解决这一问题呢?

人类的创作,必须是人类自身在主导,AI仅仅是一种辅助工具。创作者与AI之间存在着明确的主次关系:人类创作者永远是主导者,AI则处于辅助的地位。这就要求我们创作者必须划定创作的领域与方向,通过明确的指导,让AI发挥出最佳的效果,而不是简单粗暴地将创作过程完全交由AI自行处理。

针对AI记忆与剧情连贯性问题,我的解决方法主要有两个:

  1. 通过建立和使用所谓的“记忆”或“提示词”,来提醒AI注意已发生的剧情细节与设定。具体而言,这包括每次启动新章节时,将此前故事的重要情节、人物关系、关键事件进行总结,并清晰地输入给AI,以此确保AI能在新的创作过程中参考和保持前后文的一致性。
  2. 预先规划好详细的章节大纲。章节大纲是整个小说创作的骨架,确定了故事的大致发展路线和关键节点。通过提前构建完整的故事框架,我们可以更有效地引导AI的创作,让其在大纲的框架内自由发挥,从而避免脱离主题或剧情走向偏差。

或再进一步,我们需要了解不同AI模型的差异与适用场景,以便更合理地运用在创作中。

目前主流的ChatGPT模型包括GPT-3(如ChatGPT-3.5)、GPT-4o和GPT-4.5,它们的性能存在明显的差异:

  • GPT-3(如ChatGPT-3.5):擅长生成短小精炼的文本,但在长文本中易出现情节遗漏与重复的问题。
  • GPT-4o:最新的多模态模型,拥有更高的连贯性、创造性和更强的上下文理解能力,特别适用于复杂剧情与精细描述。
  • GPT-4.5:在性能和成本之间取得了良好的平衡,相较GPT-3,能更好地处理长文本,并且具备较强的创意发挥能力。

关于AI记忆的问题,实际上就是提示词的合理运用问题。提示词可以被视作AI的“记忆索引”,通过事先创建详尽的“记忆库”,来暗示AI接下来需要关注哪些已有的剧情设定。每次创作新段落前,都应当清晰地提供和更新这些记忆提示,以帮助AI持续遵循设定和人物发展。通过为每个章节提前准备一个细致的故事大纲,我们能够更精确地控制整体剧情的走向,避免剧情跑偏,从而保证长篇作品的逻辑连贯性与故事完整性。

总之呢,AI小说创作是一种极具潜力但需要精细化管理的创作方式。创作者需要清晰地认识AI工具的优缺点,通过有效的记忆管理和明确的剧情规划,将AI的辅助能力最大化,从而创作出具有高度连贯性和创造力的小说作品。

最后,再说下之前创作的小说《深空与归途》以后就不再博客更新了,前面一些章节仅供博客圈的小伙伴们了解使用AI进行长篇幅创作的可能性。想继续看这本小说的小伙伴起点网再见吧。

以上,使用ai撰写小说的的可行性以及实践。

新任务

2025年5月24日 15:15

饭菜的热气还未完全散去,餐桌上余下的碗碟与调料瓶在帕比的尾巴摆动下慢慢被清理得井井有条。窗外的星港灯光从半透明的窗帘缝隙里洒进来,像极了星河在屋中静静铺展。地面上,是我们一整天东奔西走留下的足迹,空气里弥漫着太空牛排的炙香与合成植物油的余味。这一晚,我们聊得太多,笑得太多,谁也没想到时间已经快要逼近凌晨。

“雨哥,要不你今晚别走了,”我揉了揉发酸的肩膀,看了眼终端的时间,“这么晚了,回研究院宿舍也不方便。”

她原本靠在沙发边,半眯着眼似乎已经进入半梦半醒状态,闻言轻轻嗯了一声:“那我就不客气了。”

“我那间房让给你。”我站起身活动了一下肩膀,“我和胖子对付一晚上。”

“啊?”胖子刚把最后一盘热菜送进厨房保温,一脸懵:“水哥你不会真打算跟我挤一张床吧?”

“你要不睡地板也行。”我回头冲他咧嘴一笑。

“……我真应该申请单间补贴。”胖子苦着脸小声嘀咕,尽管如此,他还是老老实实把自己那边的空间收拾出了个“边角余位”。

夜深了。孙雨晴拿着洗漱包进了房间,帕比也结束了一整天的“厨艺高负载运行”,钻进了客厅一隅的充电垫,一边反复测试尾巴加热模块的灵敏度,一边哼着“我是快乐的狗厨师”。

我随意地躺到床的一侧,胖子洗完脸出来时,头发还湿着,神色却明显不太对。他在床边坐了一会儿,然后突然站起来,又坐下,最后叹了口气,开始来回翻身。

“你到底怎么了?”我侧过身看着他,“这都折腾第三次了。”

胖子愣了一下,低声说:“水哥……你说,这次我是不是惹大祸了?”

“从你出生开始就在惹祸,这回怎么就算大了?”

“我说真的。”他挠挠头,有点烦躁,“调查伊莲姐那件事……可能牵扯太深了。我昨晚半夜那通通讯,你也听见了吧?”

我没说话,只是静静地看着他。他在昏黄灯光下的脸上,少了以往的油腻浮夸,反倒多了一丝说不清道不明的认真与憔悴。他紧了紧身上的T恤:“我就怕……这事儿一旦真查到底,我一个人可能扛不住。”

我看了看时间:“那你去客厅坐坐吧。冷静一下,早点休息。”

胖子没说话,只是点了点头,站起身拉开门,走向客厅。光线被他身后的门带出一道短短的弧,我翻了个身,没一会儿就在这份沉静中睡着了。梦里,好像有星辰正从窗外缓缓流过。

我醒来的时候,房间里一片寂静,只有舱外隐约传来的飞船背景声像温柔的耳语。墙上的时钟显示着07:12,刚好是星港模拟白昼的第一缕灯光亮起的时间。床的另一边空了。我本以为胖子会折腾半宿,结果现在看起来像是直接彻夜未归。

我揉着头发,走出卧室,经过餐厅时,下意识地放慢了脚步。

客厅的光源没开,但阳台那扇落地窗微微开启,洒进来的不是自然光,而是星港主通道外那种经过过滤的浅金色照明。光线斜斜地落在沙发边上,照出两个人影。

胖子坐在沙发一侧,抱着终端,神情严肃,眼下是一圈明显的黑眼圈。他的头发有点乱,衣服看上去也像是一夜没换。他的对面坐着海伊莲,双手交握在膝上,整个人像一座即将被晨曦熔化的雕像,静静地看着胖子,眼里泛着红。

我愣在原地,没有出声。

胖子这会儿正低声说着什么:“……我不是为了别的,我只是觉得你有权知道真相。你父母的事故,那航线调度确实不对劲,有一批紧急调度数据是我昨晚刚拿到的……我还不确定能不能继续查下去,但我想告诉你——你不是被抛弃的。你,是被留下的。”

我看见伊莲睫毛一颤,下一刻,她抬手轻轻抹掉眼角的泪,然后露出一个很淡、很淡的笑:“谢谢你,胖子。真的。”

空气像是被这一句话凝固了一瞬,胖子不自然地挠了挠后脑勺:“我、我就是尽点力嘛……你别误会,我也没别的意思……”

伊莲却缓缓摇头,声音低柔:“我知道你想说什么。只是,有些东西不是立刻就能接受的……给我一点时间。”

他们沉默了半晌,胖子轻轻点了点头:“好。那我等。”

我悄悄转过身,装作什么都没看到,走向厨房。室内微微有些凉,我的脸却有点发烫,不知是因为晨光,还是刚才无意中闯入的那段温柔。

“看来,这趟星际旅行,不只是航程,还载着几段人的命运。”我心里默默想着。

身后传来帕比的声音:“舰长,早安。今日您摄入咖啡因的建议时间已到,请问是否开启豆浆研磨流程,或继续黑咖模式?”

我顿了顿:“黑咖,浓点。”

“收到。已预热。”

热水冲进咖啡滤杯时,空气里飘起深褐色的苦香。帕比踩着毫无声息的机械步,拖着一个圆盘从厨房另一侧滑行而出——圆盘上码着切得整齐的合成面包条、火星菌菇煎蛋卷和一壶淡金色的水果清茶。它每走一步,尾巴尖的温度传感灯就闪一下,像是在给自己节拍。

“今日早餐能量量化:高碳水 38%,高蛋白 42%,微量元素平衡度良好。”它一脸(如果狗能有脸)骄傲地报告。我把咖啡壶轻轻放在桌上,给自己倒了一杯:“表现不错,狗师傅。”

“谢谢。我要保持厨师狗荣誉积分。”帕比回敬一句,然后精准地把面包篮放到桌中央。

这时,海姆牵着伊莲踏进客厅。海姆刚洗过脸,卷发上还挂着水珠;伊莲脸色微微发红,似是哭过却尽力收拾好情绪。胖子紧随其后,眼睛红得跟赶工到天亮的程序员:“早——”

话音未落,他视线扫到我杯里的深黑咖啡,立刻撇嘴:“水哥你又空腹咖啡?不怕胃穿孔啊。”

“你昨晚不睡,倒担心我喝咖啡?”我挑眉,“来,坐,吃东西。”

大家落座后,餐桌竟一下子热闹起来:刀叉撞瓷的清脆声、帕比转盘的轻嗒声、火星菌菇的香味与咖啡苦香叠在一起,在半模拟晨光下像一幅静物画动了起来。

我咬下一口煎蛋卷,抬头正好与胖子的目光相撞。他把叉子垂在盘沿,像做了很大心理建设,终于开口:“我想带伊莲去远星补给站,更换义肢。也——也让她离开这里的漩涡。”

话音落下,桌面上的声音顿时轻了三分。伊莲指尖微颤,勉强扯出一个笑——夹杂着谢意,也夹杂着不安。海姆皱着眉抿一口清茶,坐得笔直,像努力让自己听得更清楚。

孙雨晴拿着勺子的手停在半空,望向我:“这事我们昨晚简单聊过,但正式提出来,得大家都点头。”

“我先说我的立场。”我放下杯子,“远端补给站设备确实先进得多,风险也大得多。要去,可以,但得做好三件事:一、教授审批;二、航程安全;三、伊莲本人同意。”

伊莲抬起头,目光波光潋滟:“我同意。难得有机会真正恢复——我不想再拖累弟弟,也不想再给别人添麻烦。”

帕比在旁边补充:“根据远端补给站过去五年义肢升级数据,成功率 87%,并发症率 3%。高于本地医疗 21个百分点。”

海姆皱着眉,声音很好听却透着倔强:“如果姐姐要走,我留在研究院——雨姐说过可以托付朋友。我要继续学警务,以后查个水落石出。”

孙雨晴朝他点头:“研究院安全等级足够,你的课程也能同步完成。但实操课要到虚拟仓里补,这你要有心理准备。”

“我可以。”海姆攥紧拳头,用力点头。

胖子目光微动,低头扒了一口煎蛋:“我已经联系了装备商,下午陪伊莲去配航行服。她旧义肢抗冲击性差,得换轻质装甲护套。”

我看着他:“把预算跟我报一下,船上经费能出一半。”

胖子怔住,旋即急忙摆手:“不用!我家——呃,我自己能掏。”

我嘴角一勾,没再说什么。这时帕比尾巴灯闪了闪,语气像机械里带了点人味的关怀:“提醒:本次早餐热量摄入已超标 12%,情感浓度提升 20%。推荐午餐减糖,保持心情。”

众人纷纷失笑。伊莲抹了抹眼角,冲帕比鞠了一躬:“谢谢大厨狗。”

“厨师狗收到。”帕比骄傲地点头,尾巴甩得像小螺旋桨。

早餐的碗盘刚被帕比收走,客厅光线便由暖白调成柔黄——星港中央控制系统准点切换至「上午二段光照」。我拉过一张折叠椅,让海姆在餐桌旁坐下,像一次小型圆桌会议般,所有人都正襟危坐。

海姆用指尖轻触杯壁,发出轻不可闻的“嗒”声。他看似镇定,实际上肩膀僵得厉害。我先开口:“海姆,你姐姐去远星补给站治疗,你自己有什么打算?放心说,没人替你决定。”

少年深吸一口气,目光在我们几人之间流转,然后落在孙雨晴身上:“孙学姐说……研究院附属学校能给我寄读名额。我想留下来。一边完成学业,一边尽快通过星际警务预科考试。”

孙雨晴把手里的数据板合上,往前一递:“研究院那边回复了,能提供三年住宿与学籍。课程同步联邦标准,但实操课需要到全息舱完成,每月测试一次。你要是接受,这份申请我就发回去盖章。”

海姆接过数据板,眉头紧锁,却不再犹豫。伊莲握住他的手臂,低声说:“要是太辛苦,就回家——”

“姐,我得查到真相。”少年抬眸,眼神忽地锐利,“如果那场事故真不是意外,我不能一辈子当不知道。”

胖子咬着吸管发出“咕”的一声,放下杯子,郑重地伸手拍了拍海姆肩:“想当警员?先练体能。远星补给站回来,我陪你早晨跑十圈飞船环形跑道。”

“十圈?”海姆嘴角抽了抽,“那得三十公里!”

“警务预科的体测标准,是五公里无氧加速。”胖子嘿嘿一笑,“先苦后甜。”

我看着这兄妹俩握着彼此的手,忽觉心里一阵柔软。于是把目光转向孙雨晴,声音放缓:“研究院宿舍区安全等级够吗?”

“相当于地球本部 B级戒护,除紧急漏洞测试外从未失守。”她快速回答,又补充,“而且爷爷会派专人盯着。”说到这句,她轻轻撇嘴,显然对“专人”是谁心里有数,却没说出来。

伊莲松了口气,眼眶仍微红:“那我就放心了。”

帕比在客厅角落刷着地,忽然停下扫地模块,机械音带着调侃:“统计完成:当前家庭情绪稳定指数上涨 15%,检测到目标‘海姆·海’的血压微升,但属于积极应激。”

海姆被逗笑:“积极就好。”

我点点头,把目光扫向众人:“既然决定都拍板了——伊莲跟胖子下午采购装备;海姆跟雨晴整理入学资料;我和帕比回飞船盘点舱位,清空那间临时仓储室当伊莲的休息舱。”说着,我故意看向胖子,“别忘了预算共享。别再一个人豪横。”

“明白,明白!”胖子举手投降,又偷偷朝伊莲眨眼。

伊莲微微一笑,神情却前所未有的轻松。或许,那份长期笼罩她的阴影,在今晨终于被撕开了一道缝,让星光透了进来。

午后的阳光透过窗帘缝隙,斜斜地落在客厅地板上。伊莲与海姆刚将研究院的临时寄宿协议整理好,准备传回官方邮箱。我端着杯热茶走进房间,正巧看到胖子在操作他的终端,一边鼓起勇气地张嘴对我说:

“水哥,我和雨晴能跟教授申请个视频会议吗?想正式把伊莲的事说清楚。”

我抿了一口茶:“你们不早说,我还以为你打算靠‘情书’打动教授呢。”

孙雨晴没接话,只是淡淡一笑,随手按了下手环的圆形感应区。片刻后,墙面浮现出熟悉的立体通讯图像——孙教授仍是那身灰蓝色外套,镜头后是研究所那间熟悉的书房。

“什么事?”教授的语气一如既往地平稳。

孙雨晴率先开口:“爷爷,这边有点情况,需要申请扩充任务附带医疗支援项目。”

“详细些。”

她向教授介绍了伊莲的身份,避重就轻地讲了事故和义肢的问题,省略了太多细节。我看得出来,她在试图保护伊莲那部分不想被揭开的旧伤。

教授静静听完,微微颔首。他的目光移向我:“舰长胡,有医疗扩编空间吗?”

我点头:“我们预留了两间备用舱室。最多清理出一间作医疗观察用。”

教授沉吟几秒,视线转回孙雨晴:“从哪家单位转来的?”

“目前身份归属是民间户籍,但她曾服务于曦瞳娱乐公司。”孙雨晴语速略快,像怕教授插话,“不过我会附上简化档案,由研究院做非公开评估处理。”

教授的指尖轻敲书桌表面两下:“可以申请。作为补充医疗任务合并入远星科考活动,由你们飞船带她至指定补给站,后续转交驻站医疗平台。”

我与胖子对视一眼,都松了口气。还未等我开口,教授又道:“不过这段航程期间,她身份不得对外宣示。以‘观察员’身份登舰,不参与科研指令。”

“明白。”我立刻应下。

孙教授望着镜头,又加了一句:“雨晴,她的档案我会亲自审一次。你知道规矩。”

孙雨晴点头,语气一贯冷静:“了解。”

画面即将结束前,教授忽然顿了一下,目光越过镜头,仿佛在斟酌什么。

“这位姑娘,是你们信得过的人?”他淡淡问道。

我想了想,然后笑着说:“是胖子信得过的人。”

孙教授没再追问,画面消失,房间光线回归正常。

“搞定?”我回头看胖子。

胖子使劲点头,然后又有点不好意思地搓了搓鼻子。

“那接下来就该安排登舰了。”我打开终端调出飞船的配置图,“我们那两个储物舱,一个可以腾出来改装成居住舱,另一个先别动,用来放那堆从研究院搬来的设备。”

胖子站起来,郑重其事地朝我鞠了一躬:“谢谢你,水哥。”

我摆手:“你谢我干嘛?当初我请你进队的时候可说了,要是完成任务你还是单身,我得负责替你找个姑娘。”

“……你还记得啊。”

“废话。”我拍拍他肩膀,“像你这种‘只有配角光环’的人,得我罩着。”

伊莲在一旁低笑,声音像清晨落在金属围栏上的一滴露水。

从教授那儿拿到准许后,整个屋子的气氛明显轻松了许多。帕比开始重新规划飞船的居住配置,孙雨晴则把通讯纪录整理归档,伊莲一边配合她弟弟将个人物品打包,一边和我们闲聊未来的航程。唯独胖子,看上去还有些紧绷。

我靠在厨房门框上,看着他站在阳台上整理衣物袋,手指在拉链上来回摩擦,仿佛那不是一块普通布料,而是生死大事的开关。

“水哥……”他忽然转过头,有些踌躇,“我能再说一句吗?”

“别又是求我把你的份也值夜班。”我装作不耐烦。

他反倒笑了笑,眼神却认真:“我是真的想带她去远星补给站。不是任务,不是责任,是我真想陪她去换义肢,重新开始。”

我愣了一下,随即点点头:“你跟她说了吗?”

“还没。我怕她会觉得……我是从她这段悲惨经历上建立感情。”

“但你确实是。”我一本正经地补刀。

“靠。”他踢了我一脚,力气不大,“我是心疼她,不是消费她。”

“我知道。”我望向屋内,“她也知道。”

这时,伊莲正好从屋内走来,身上穿着一件灰白色外出服,利落的剪裁勾勒出一种干净而柔和的气质。她手里拿着一叠文件袋,对胖子笑了一下:“你弟弟的学习资料准备好了,等会我让帕比扫描备份。”

胖子看着她,眼神一闪,欲言又止。

我替他接过话:“伊莲,休息舱我们收拾一下就可以住,未来一段时间你就当我们船员的一部分吧。”

“谢谢你们。”她点点头,然后看着胖子,忽然轻声说,“我知道你们为我做了很多……我心里明白。”

“那你……介意我……”胖子顿住,嘴角的肌肉紧张得像是用精神力在拼接语言。

“如果你指的是关系。”伊莲很平静地回应,“我需要一点时间。从朋友到爱人,不是按一个按钮就能切换的。”

胖子脸一红,讪讪地抓了抓头发:“对对对,我不是催你……你慢慢来,我不着急……”

我差点没笑出声,好在及时低头假装看表。

说完她走开,留下胖子站在原地,像个刚打完仗的士兵,全身紧绷又有点懵。

“她还是挺酷的。”我拍了拍他,“看好你。”

早晨的阳光透过人工模拟窗洒入客厅,映照在伊莲擦拭义肢的动作上。她动作小心而熟练,一旁的海姆抱着备用终端正在同步姐姐的医疗文档,时不时确认数据备份是否完整。

“帕比,载荷检测完成了吗?”我站在玄关,手指滑动终端确认舰内物资配置,“教授那边说了,医疗支持模块要在第一时间挂载进货仓。”

“确认完成,睿思已经远程操作工程机械,将休息舱室的物资重新分配到其他舱室。”帕比的声音从厨房门口传来,它一边用尾巴卷起锅碗瓢盆,一边语气严肃地补充,“舰内休息舱按医疗辅助协议重新布局,包括重力补偿、智能照明、温度调控等。伊莲女士可在登舰后直接入住。”

我点了点头,回头朝屋里喊了声:“该走啦,各位——我们可不能让贾宁等急了。”

胖子拎起他那一堆“必备物资”袋子——包括备用调料、合成食材,还有两件看起来非常不合人体工学的护膝。“走走走,别磨蹭,”他说,“我要第一个洗澡。”

“怕是你进去泡两个小时都洗不掉你这两天的香水味。”我一边吐槽,一边替孙雨晴把最后一件外套塞进手提包里。

我们走出民宿时,海姆站在门口,手里捧着一小包东西递给姐姐:“这是你以前最喜欢的护手膏,我找到了新款,还没用过的。”

伊莲轻轻接过,摸了摸他的头:“你要好好照顾自己,知道吗?”

海姆嘴角一抿,像是忍住了什么,点点头:“你也是,姐。”

我们乘坐租用的电动滑板车一路驶向星港,沿途的星际商业走廊早已恢复白日模式,灯带从柔和切换成明亮模式,模拟的太阳光线在墙壁上流转。车流开始密集,AI自动导航让车子精准地穿过人群和清洁机器人之间的缝隙。

“从这边转弯,C区11号泊位。”我看了眼导航界面,对驾驶辅助系统下达指令。

片刻后,一座银灰色金属构造的泊位缓缓映入视野——1108号静静停在那里,舰身上那道流线型的蓝光标志在阳光下闪耀,像是深空中的某种生物安静呼吸。

我望着那艘我们一起生活、起航、交锋的舰船,不由自主地深吸了一口气:“到家了。”

帕比尾巴轻甩,跳下车后第一时间跃上了装卸坡道,“舱门解锁,电力主线接入,欢迎回家,舰长。”

登舱坡道由磁悬浮托板缓缓抬升,脚下的合金板在靴底响出沉稳的“咚咚”回声。伊莲一只手扶着舷梯扶手,另一只手握着旅行袋,金属义肢在光线里泛起细微蓝泽。胖子走在她身侧,悄悄收敛了平日的插科打诨,只在她脚步稍慢时轻微侧身,像是一面无声的护栏。

舱门口,贾宁早已等候。她脱下浅灰外套,黑色内衬的袖口卷到肘部,右臂内侧却露出两厘米长的青紫痕迹。那是注射后未完全消散的瘀色。她嘴角勾了一下——介于礼貌与调侃之间——“舰长,迟了一分钟。”

“航站口堵车,”我耸耸肩,“安保官辛苦值岗。”

“分内之事。”贾宁侧身让出通道,目光掠过众人,最后在伊莲身上停了半秒,点头算作打招呼。随后她抬手,指关节轻敲舱壁两下,“行李放左舱,个人入住注意事项,晚点发你的终端。我先巡舱。”

她转身时,我看见那淤痕微不可察地抽动。我忍不住问:“手怎么了,去打针了?”

“实验一些新药物,说是疫苗也可以。”贾宁头也不回,“别大惊小怪。”

胖子冲我眨眨眼:你看,她比你还抗造。我回以一个眼神:少贫嘴,赶紧搬箱子。

物资安放完毕,帕比立刻沿着过道飞快奔向中控,边跑边语音报告:“宿舍区气压 1.00标准大气,温度 22.1摄氏度,湿度 48%。清洗循环已启动。舰桥,请准备离港自检。”

“欢迎回来,狗师傅。”通讯管道里传来睿思冷静的嗓音,“五分钟后进行起航前一次性系统诊断。”

我顺手点开腕环,舰载时间已同步至 11:23。并舱广播同时响起贾宁简短有力的通告:“全体注意,离港倒计时四十分钟。除值勤位,其余人员可在居住区待命,曲率缓冲开始前十分钟会再次提醒。”

伊莲站在过道中央,微仰头看着灯带与天花板交汇的弧线,神情复杂——既像第一次进演唱会后台,又像初到陌生城市。胖子拍了拍她的旅行袋:“走,我带你去你的舱间,顺便给你安上帕比新配的骨传导耳机——航行噪声小,但有这个更安心。”

她低低应了一声,跟他往居住区走去。背影并肩而行的那一刻,我忽然意识到,胖子那副宽松风衣似乎真的“宽”了些,或许是心事落了地,连人都轻了几斤。

我们再次确认过补给舱与储备区的物资后,便各自回到岗位上。胖子兴冲冲地拖着他那台全新的工程维护仪,边走边拍着机箱上的联邦徽标,好像那是他的护身符:“我跟你们说啊,这趟航程,装备比上次航行升级了一大截,就算航线出了问题,也绝对难不倒胖爷。”

孙雨晴回头白了他一眼,嘴角带着一丝笑意:“少给自己立旗,要是到时候又像上次那样,手忙脚乱地满船乱跑,看看你怎么跟伊莲交代。”

胖子闻言,立刻一本正经地举手保证:“这次我绝对不会再出问题了!要是再犯上次的错误,我胖子就……嗯,就自愿把三个月的工资交出来请你们吃大餐!”

我见状,忍不住轻笑出声,随即环顾四周,清了清嗓子:“好了,各位,上船了就准备出发。胖子,准备启动飞船的能源系统;孙雨晴,帮我检查通讯线路;睿思,舰桥权限和自动导航程序交给你确认;伊莲先熟悉下生活区吧,顺便整理一下自己的行李。”

“收到!”几人异口同声地回答道,随后迅速各自散开,奔赴不同的区域准备离港前的工作。

飞船上的舱门逐渐关闭,外界的灯光透过舷窗慢慢褪去,星港忙碌的人群逐渐变成一道模糊的剪影。我站在舰桥的中央控制台前,看着各个显示屏逐一亮起、进入待机状态,呼出一口气,终于放松了下来。

“舰长,所有系统自检完成,可以随时申请出港许可。”睿思的声音稳稳地响起。

“那就申请吧,我们该出发了。”我顿了顿,随即又试探性地问了一句,“陈教授,你在吗?”

短暂的沉默之后,睿思平静地回答:“舰长,睿思本体已离线。目前由分身模块提供全部计算支持。”

我心里微微一沉,嘴角却勉强扬起:“知道了,麻烦你了。”

睿思的图标安静地旋转着。窗外,初始星港明亮的灯光逐渐隐没于黑暗的宇宙背景之中,只剩下星辰如微光一般缓缓流动,照亮着我们漫长航程。

  • 调查  

调查

2025年5月24日 15:15

胖子与伊莲回来时,天色刚过傍晚。他像凯旋归来的火星猎人,一进门就将两大袋购物袋“砰”地一声放到餐桌上,连同一身外星市集的热气与兴奋一并带了进来。

“水哥!”他掏出一块贴着红色标签的食材包装,高声宣布,“你知道这是什么吗?A5级太空养殖牛排,100%人工饲育,不含基因拼接,纤维分布完美,连肌间脂肪都是精算培育的!”

我懒洋洋地扫了一眼堆满一桌的袋子,又瞄了眼他身上的价格标签还没撕干净的外套:“你这是烧饭,还是烧钱?”

“烧饭当然得烧点钱!”胖子一脸理所当然,“这可是重要晚餐对象啊。”他朝厨房方向努了努嘴。

我循着他目光望去,伊莲正蹲在厨房门口的柜子边,把刚买回来的火星菌类蔬菜小心码进保鲜层。她换了件淡蓝色的居家长衫,头发随意地挽起一小半,眼神专注,手势娴熟,看上去完全不像是刚结束一天工作的样子。

胖子悄悄凑过来低声说:“你看她这样子,平常做饭肯定都是她。今天必须我来接力,不能让她太辛苦。”

我哼了一声,语气意味不明:“你倒是有点觉悟。”

这时帕比蹲在沙发边,眼睛里的光芒闪了几下,尾巴微微翘起:“虽然这里没有舰船标准厨房,但我已评估过本地灶具结构,预计可在不拆墙的前提下完成初级热加工任务。我申请辅助执行基础料理流程。”

“你就别搅和了。”我头也不回地回了他一句,“这厨房是人类设计的,你那机械爪子别到时候把锅盖卡进墙缝里。”

帕比严肃地点头:“我已调整尾巴抓握力度为人类标准水平。”

胖子忍不住乐了:“他这是想下厨的狗快憋疯了。”

“那今晚就来一顿‘人狗合厨’,给你们点挑战。”我叹了口气,“就别指望我洗碗。”

“没问题!”胖子信心十足地卷起袖子,“今晚我包揽主厨、调味、视觉设计,还有情绪把控!”

我看了看他那件上面还挂着价签的新围裙,心说这哥们已经把这顿饭当人生大事在办了。希望等菜上桌的时候,味道别像他的表情那么复杂。

厨房里热气升腾,明亮的灯光映在金属锅具上,映出胖子忙碌的身影。他系着一条刚买的围裙,上头还印着“深蓝联邦美食冠军”的字样,虽然八成是他逛市场时顺手买的搞笑纪念品,但此刻他穿得一本正经,切菜的动作意外地娴熟。

“哐——哐——哐!”菜刀在合成砧板上飞舞,刀法虽然谈不上优雅,却充满力量感,像是切一块豆腐都能斩出剑意。他头也不抬地喊:“水哥,把那瓶异星酱油递我,我要给这块牛排做最后一遍祷告。”

我在一旁悠悠递上去:“你这不是在烧菜,是在做火星仪式。”

“仪式感要拉满!”他豪气万丈地吼了一句,刀光一闪,那块牛排被分成了几块几何对称的厚片。

另一边,帕比正站在厨房角落,一条机械尾巴搭在小灶台上,正在精准控火。他边调整火候边哼着一首刚下载的新曲:“我是快乐的厨师狗~今日锅里有奇妙~”

“你这火候控制得挺稳的。”海姆站在一旁看得入神。

帕比头也不回地答:“我使用了第七感应模式,根据空气湿度和原材料热扩散系数自动调整加热曲线。”

“他连人类都没这直觉。”我感叹了一句,继续将刚洗好的合成蔬菜一条条递给胖子。

“说吧,你们在学校学的到底是工程还是厨艺?”伊莲站在门边,看着一人一狗配合默契,忍不住笑出声,“帕比,你是我见过唯一一个在厨房能自带背景音乐的‘厨具’。”

“我是多功能工程师。”帕比的眼睛亮了一下,“偶尔也是厨房艺术家。”

厨房里一阵轻笑,热气里飘出阵阵香气。锅里异星水稻炊出的米饭开始冒泡,火星菌类的汤汁咕嘟作响,而人工饲育的牛排已经在烤箱里变色、出油,空气中渐渐弥漫出混合着香料、酱油与蛋白脂肪的味道。

“这味儿……像是人类文明的传承。”胖子把锅盖掀开的一瞬间说,脸上浮现出一种近乎哲学家的表情。

“你只要别又加太多调料。”我挑眉。

“放心,今天走的是轻量原味风!”他一边回答一边将最后的食材下锅。

不一会儿,餐桌就摆满了菜——香煎牛排、异星菌菇汤、炒合成水稻米、佐以帕比特制的“外星口味酱料拼盘”。我们一边摆碗一边笑闹,等坐定那一刻,居然真有点过节的氛围。

“好了,各位。”胖子拍了拍手,一副总厨的架势,“今晚,我们吃的不是饭,是友情,是人生,是……”

“是你终于不用啃能量棒了。”我打断他,把筷子插进米饭。

帕比严肃地坐在餐桌旁,机械尾巴蜷成一个圈,举起一双塑料制的专用餐夹:“已进入进食模式,开始记录情绪数据。”

“别录我刚才偷吃的那个。”海姆小声说。

“晚了。”帕比的眼睛闪了一下,“我已自动同步存储系统。”

饭菜香、笑语浓,那个夜晚,我们这群来自不同轨道、不同背景的人,在星港一个并不起眼的民居厨房里,吃出了一顿,真正属于人类的温情晚餐。

饭后,餐桌边的人陆续散去。伊莲收拾着碗碟,海姆在帕比的指导下学习如何将剩菜真空封存——那个场面看起来像是一堂星际居家科技速成课。我没有跟着离开,而是走到了客厅最外侧的大窗前。

窗外,夜色已经彻底降临,星港上空的光罩反射着万千灯光,像是悬浮在宇宙中的城市幻影。远处有飞船的舷灯缓缓移动,近处是高楼之间的轨道车流,一切都在缓慢而有节奏地运转。街道上铺设的导光条投出幽蓝的冷光,将整个社区映得像梦境一样。

我端起桌边帕比临走前给我泡的一杯茶——准确地说,是一款叫“太空气泡饮”的清爽代茶饮,入口带点电流感的刺激,但茶味意外地清冽。

身后传来一阵熟悉的沉重脚步声,我没回头就知道是谁。

“你也不困?”我问。

胖子走到我旁边,坐在窗前的低矮沙发上,顺手也捞过一杯泡着什么的饮料,晃了晃瓶子:“刚喝了汤,太热,我还想压压。”

我轻轻点头,视线仍落在窗外灯光交错的街道上。沉默了一阵,我低声开口:“你觉得……海姆说的,有可能吗?”

胖子转头看我一眼,没有立刻接话。

“我意思是,”我顿了顿,“他怀疑伊莲可能在暗中调查当年他们家飞船失事的事。只是没跟他说。”

胖子沉默地喝了一口气泡水,嘴唇被气泡冲得一抖,但脸上却没一丝笑意。他望着窗外那条延伸至星港核心的轨道,缓缓说道:“这事儿……可能不只是小孩的猜疑。”

我转头看着他。他的眼神在此刻显得异常清醒,像是那种在黑夜中能穿透黑暗的扫描光,冷静、深远。

我侧头看着他,低声问:“你是不是也觉得有点不对劲?”

胖子咬了一口杯沿,咕哝了一声:“我不确定。但……有些事,太巧了。”

他把气泡水放回窗台上,望着窗外星港那片灯火辉映的街道,慢慢地说:“就像你在漆黑里走路,明明没人碰你,可你总觉得,有什么东西一直盯着你。”

我没说话,只是默默地握紧了手里的杯子。

窗外,一艘货运飞船慢慢穿过视野,尾部引擎的红光犹如远方的烛火,在这片冷静的蓝光海洋中,格外惹眼。我们就这样静静地站着,没再说话。此刻的星港夜色,格外静谧。

隔天清晨,我刚洗漱完,准备泡杯咖啡清清头脑,一出门却听见客厅窗台那边传来一阵压抑又激动的低语。

“你不帮我,我这辈子就光棍了……你老李家要绝后你知道吗?”

我怔了一下,顺着声音悄悄靠近,只见胖子披着一件睡袍,蹲在窗边的抱枕堆里,一手拿着终端,一手来回比划着,不知道是在争取感情还是谈判联盟条款。

我轻手轻脚地倒了水,当没听见,也没打招呼,只在心里默默叹了口气。一个能为了喜欢的人对家族软硬兼施的胖子,这样的认真还真不多见。

等我在餐桌边坐下,他也慢悠悠地回来了,眼睛明显肿了一圈,嘴角却勉强挂着点神秘的得意。

“查了一晚上?”我一边给他倒水,一边问。

“嗯。”他点点头,语气却很平静,“我家那边有个远亲,在能源署的航线调度中心……我托他查了点事。”

他把终端推给我,上面是一堆调度记录、轨迹图和备份通联信息。虽然很多地方被打了马赛克,但其中几段时间线和航线轨迹,却格外扎眼。

“这就是伊莲那次航行?”我皱眉看着图上的异常轨迹。

“是。”胖子揉着眼睛,“你之前不是说,海姆怀疑事故不单纯?我顺着他提的时间查了一下。结果发现,那条航线在出事前一周就临时被重新规划了——调度人是曦瞳娱乐集团区域负责人奥兰·赫斯。”

这个名字我记得,在火星媒体圈也是个响当当的人物。

“赫斯跟赫洛·贾戈纳有关联。”胖子低声说,“后者你也知道,曜光融合集团的后台,联邦能源委员会的大佬之一。赫斯是他远房亲戚,虽然不是核心圈子,但在火星这边,撑死也没人敢惹。”

“所以你怀疑,那次事故……不只是事故?”我声音压低。

胖子没说话,只是点了点终端上的另一个数据块——航行事故发生后,曦瞳曾向联邦事故处理署提交了一份撤回救援申请的草案,只不过时间点是在事故发生之后两分钟。

“你自己看吧,这事要真查到底,不是娱乐圈能摆平的事。”他声音低得几乎只剩气音,“我家那边……已经有人在查了,但权限卡得死,很多数据我拿不到。”

我没再多说,只是点了点头。

清晨的光透过合金窗帘缝隙洒进来,把胖子手里的终端照出一圈亮影。他的眼神没像往常那样带着打趣,而是充满了一种近乎固执的专注。

我忽然明白,这个平时看起来最不正经的人,才是这件事中最先真正动起来的那一个。

厨房里再次飘出香气,帕比早早就启动了早餐程序,像往常一样精准计算热量、口味和个人偏好。这回他换了风格,做的是地球南方风味:小米粥配酱菜,还有几份热气腾腾的素包子。早餐桌旁,我正低头调整着终端的日程提醒,一阵脚步声从背后响起。

胖子洗得清清爽爽,头发还滴着点水珠,身上穿着一件带有金属扣的灰蓝风衣,宽松的版型在他身上却绷得一紧,领口还别着个毫无用途的装饰笔,看起来不伦不类,却又格外认真。

我差点没笑出声:“你穿成这样,是准备去谈判还是去相亲?”

他推了推鼻梁上根本不存在的眼镜,语气颇为正式:“今天伊莲休假,我打算带她出去走走。”

帕比一边用机械臂摆盘,一边与我对视,目光交流了不到一秒——我们都心领神会地默默点了点头,谁都没打算多嘴打扰这段“含羞而未发”的星际情缘。

“要不要我给你推荐几个路线?”我佯装认真地打开地图,“火星文化广场、银河剧院、星际博物舱——都挺适合讲故事的地方。”

“免了。”胖子摆摆手,“我准备去一个没人认识她的地方,踏实。”

“你是说人多嘴杂,怕她压力大?”

“也怕我自己太得意。”他低声嘟囔,眼神里却透出一丝真诚与紧张交织的不安。

我拍了拍他肩膀:“加油,别把约会搞成军事侦查。”

“放心,我这人低调。”

“你身上的风衣已经暴露了你的一切。”

胖子白了我一眼,拿起一份早餐走向门口,一边塞着包子,一边在终端上飞快地敲着什么。我望着他离开的背影,忽然有种莫名的预感——这家伙要么大功告成,要么摔个大跟头。

帕比把我这份早餐往前一推:“你的食物已就绪,今日营养密度评分 92%,热量预测接近午餐上限。”

“你是不是有点太关注我吃的了?”

“我是狗,也是工程师,还是合格的营养顾问。”他一板一眼地回道,然后默默把一块备用蛋卷放进了自己的进食仓。

胖子出门那阵子,天空刚刚转亮,星港内的主照明系统切换成了日光模拟模式,整座商业区宛如刚苏醒的城市巨兽,光带蜿蜒、浮桥交错,仿佛脚下踏着星河。

“走啦走啦,时间宝贵。”胖子已经在门口招呼,穿着那身“风衣必胜”套装,还特地把帕比的外壳擦得锃亮。帕比今日配合得很,“狗态”十足,尾巴一摇一摇地跟着走,怎么看怎么像只对今天行程充满期待的智能黄金猎犬。

我、伊莲和海姆陆续出门,伊莲换上了便装——深灰色的高领短风衣和修身裤,低调利落;海姆倒是难得没穿那身接待套装,而是戴了顶白帽子,像个刚放学的学生。

我们五个——两人一姐一弟一狗,走上了星港核心商圈的主步道。

这里的街区采用全浮空模块化设计,轨道步行带悬浮在多层透明平台之间,每一层都投射着绚烂的广告光幕与导航指引。游客在轨道上行走时,脚下会发出淡淡光晕,像是在银河中漫步。两侧是半重力体验展厅、异星植物销售廊,还有一排排泛着合金光泽的定制装备店、合成人工艺品摊位。

“老天,这地方比地球的大商场还夸张。”胖子感慨道,“你看那边连空气香氛都是分区域定制的,我刚走过一条街,有荔枝味!”

帕比轻声补充:“主导供应商为‘香感科技’,属于曜光融合集团下属子公司。”

“啧啧,”胖子看了我一眼,“你家狗越来越像移动百科全书了。”

我耸耸肩:“你当初装进去那一千五百个数据模块是白给的?”

这趟出街,胖子火力全开。

先是给伊莲挑了一对“隐感神经耳钉”——据说能在不影响美观的前提下接入主神经链,用于舒缓紧张情绪和过滤噪声刺激,设计还是最新的月轨款,贵得离谱。

“你这送礼送得……”我低声感慨。

“调节情绪啊,情绪很重要。”胖子一本正经地答。

又是一家书刊贩卖点,他眼都不眨地买下一本互动版《星际警务基础入门》,还特地挑了带动态问答模块的豪华加注版送给海姆:“咱们未来警官得起步高一点!”

“谢谢胖哥!”海姆有些不好意思,却也没拒绝。

“你叫他‘哥’,他可能今晚都不睡了。”我小声嘀咕。

然后——我实在没想到——他还给帕比挑了一款狗专用通讯机装饰,一套七色变换款,外观像极了地球古早科幻动画里的太空警犬。

帕比看着包装盒,沉默三秒,才说:“我将谨慎考虑在正式场合是否佩戴此装饰。”

最后,胖子居然还回头塞了我一副弧形太阳眼镜。镜面是熔钛涂层,透光可调,价格不便宜。

“你买这个干嘛?”我一脸迷惑。

“你太冷静了,要阳光一点。”他语气十分诚恳,“我怀疑你出门没带人格情绪渲染器。”

我摘下眼镜看着他:“你这是用战术手段逼我感性啊?”

他耸肩一笑:“我们铁三角出门,总得有个情绪担当吧?”

我默默地把眼镜戴上,也不知道是为了防阳光,还是为了挡住突然涌上的无奈笑意。

头顶浮空光轨缓缓移动,街道远处的人工星幕渐渐变亮,我们这一行人就这样穿过了星港最繁华的街道,像是在钢铁银河中漂浮的小小泡泡。虽然每个人心里都装着一点事,但至少今天的这段旅程,像是旅途中真正的一次喘息。

中午时分,我们一行五人(准确来说是四人一狗)在星港商业区深处找到了一家评分极高的“深空西餐厅”落座。这里以复刻旧地风味和实验级新菜闻名,连菜单都是半透明的动态投影。

伊莲点了一份合成牛排配火星菌酱,海姆则被AI菜单忽悠着尝试了一种名为“反重力酸奶慕斯”的甜品。帕比得知“狗类友好选项”中包含高蛋白能量骨干饼,眼睛都闪了一下。

正当我拿起叉子,准备对我的“低温慢煮合成三文鱼”下手时,手腕终端震了震。

我低头一看,是孙雨晴的视频通话请求。

“中午有空吗?”她一上线就开门见山,“咱们找个地方吃点?”

我瞥了眼对面正一脸虔诚地涮着串串的胖子,他正在用某种火星孢子椒油蘸着人工羊肉,咬得津津有味,吃得比外勤特种部队还专注。

“中午不行。”我尽量保持严肃,“今晚可以,我定个地方,你来。”

她顿了一下:“我来你那边?”

我没有回答,反而慢悠悠地将终端镜头转向胖子。他正好抬头,一边咀嚼一边对着我笑着比了个“这真香”的手势。

“晚上来我们这吃饭。”我压低声音,露出一点意味不明的微笑,“有戏看。”

孙雨晴眯了眯眼,似乎立刻捕捉到了我语气里的那一丝“非官方机密”。

“该不会是——”

“我可什么都没说。”我赶紧挂断通话,顺手将终端屏幕扣到桌上。

胖子抬起头来:“谁啊?”

“你的命运。”我随口应了一句,拿起叉子继续对着那块三文鱼动手。

帕比机械尾巴一晃:“我已为‘晚间高能情绪交互场景’准备了专属背景音乐。”

“狗都开始内卷了。”我叹口气,“这顿饭怕不是要升级成联邦级心理战。”

空气中顿时弥漫出了一丝前所未有的“恋爱即将展开”的味道,混着香料、热汤和太空奶油。

回到海姆家时,天色已近傍晚。我们在商业区顺路采购了新鲜食材,从太空养殖蛋白蔬菜,到异星海藻素,再加上帕比坚持要尝试的某种“低温分子稳定烹调原料包”,购物袋都快塞不下了。

“晚上吃火锅吧?”海姆抱着一包菌类,“简单直接。”

“你问的是形式,我们现在缺的是灵魂。”胖子一边解围裙,一边掏出下午“偷偷”买下的整套异星调味料组合,瓶身还带着微型光谱防伪码。

我挑眉:“你不是说今天带她出去散心?怎么还顺路逛了调料区?”

“情绪调节和调味一样重要。”胖子理直气壮地回复,“这叫双线作战。”

厨房里随即热闹起来。帕比戴着一次性头巾,用尾巴稳稳托着切菜板,边操作边哼着:“我是快乐的厨师狗~锅铲是我音乐的延伸~”

伊莲换下了外出的便服,套了件围裙,靠在厨房门边,嘴角挂着淡淡的笑,看着胖子一边翻锅一边得意地介绍调料组合的使用逻辑。

“火星孢子椒油激活味蕾,月球盐晶调节底味,再用中轨道葱素提香——完美。”

“是你本人完美。”我在一旁调侃,“等会儿出锅先给你自己试毒。”

帕比语气认真地补充:“我已经准备好灭火器。”

厨房香气四溢,气氛热烈。正忙着将海鲜端上桌时,门铃响了。

我瞥了眼时间,嘴角翘起:“她来了。”

门一开,孙雨晴穿着一身简约风衣,风尘仆仆地站在门口,一眼扫见屋里热气腾腾的景象,第一反应是——

“你们这伙食……怕不是被哪家餐厅赞助了吧?”她目光落到胖子身上,刚好看到他满脸堆笑地挥着锅铲,像在直播带货。

胖子笑得更灿烂:“欢迎光临雨姐~今晚特别节目:重返厨房的星海大厨。”

雨晴刚想再吐槽几句,却在厨房门口看见了伊莲,身形一顿,眼神瞬间凌厉中带着惊讶。

“你是……”她轻声开口,话未说完就被伊莲点头回应。

“你好,我叫海伊莲。”伊莲微微一笑,淡然得体,仿佛那句“曾经是偶像”的标签早已随她的微笑被温柔掩盖。

雨晴收了收表情,看向我:“你果然没说错,有戏看。”

我摊了摊手:“今晚不止有戏,还有火锅。”

饭桌上热气升腾,几人围坐一桌。帕比在一旁默默地调配蘸料,最后还贴心地为每个人推送了个性化搭配建议。

当众人都吃到快撑不下时,帕比伸出爪爪按下餐桌上的交互面板:“今日菜单评分——家庭氛围:98%;情感浓度:85%;热量摄入超标:12%。建议明早加跑十圈。”

“你是厨师还是教练?”我叹口气。

“我是狗。”帕比一本正经地回答,“偶尔也当真理的搬运工。”

饭后,屋里弥漫着火锅底料的余香,众人各自懒洋洋地瘫在沙发和椅背上。帕比坐在角落的地垫上,对着自己的“菜谱评分面板”进行复盘更新,而海姆正在帮伊莲收拾餐具。

这时,胖子的腕带终端忽然震动了一下。他低头一看,整个人的神色立刻凝重起来。

“怎么了?”我问了一句。

胖子没有立刻回答,只是将终端贴近了视网膜界面,浏览了几行文字,然后仰头长长吐了口气。他看了看我,又看了看坐在一旁喝茶的孙雨晴,低声道:“你俩过来下,我有点事说。”

我们跟着他走到阳台边,夜色下的星港灯光变幻,像海底翻涌的光带。

“刚刚接到我家那边的消息,”胖子压低声音,“伊莲她爸妈那艘船,事故报告出来了。现在能确定的,是——有人故意阻挠了救援。”

我一下皱起眉:“什么意思?”

“事故发生时,救援舰队的响应时间比标准程序晚了整整四小时。”胖子摊开终端,屏幕上是一串时间线与通联日志,“而这四小时内,联络频道曾被一段不明来源的强信号覆盖,干扰了至少三个应急节点。”

“你是说……有人有意让他们等不到救援?”

“现在没人敢说这是蓄意谋杀,但至少可以断定,那个时间点上,有人不希望他们得救。”他苦笑一声,“伊莲的逃生舱,是唯一一艘在信号干扰前自动弹射出去的舱体。”

孙雨晴面色微变:“这太像是有计划地放手了。”

我压着心里的愤怒,问:“后续呢?联邦那边怎么说?”

“因为这艘船的航线最终目的地是地球,”胖子点点头,“所以地球联邦以‘跨区域公民安全协定’为依据,直接启动了联合立案流程。”

我点头:“也就是说,他们现在有权调查星港及其相关责任人。”

“对,调查范围涵盖了曦瞳娱乐集团,和……奥兰·赫斯。”胖子说出这个名字时语气带着某种难以掩饰的冷意。

我跟孙雨晴对视一眼,后者微微点头:“奥兰·赫斯……那个区域主管?”

“曦瞳娱乐在事故发生的那年,曾大幅度重组旗下合约艺人资源,伊莲要求解约的记录现在也查到了。”胖子叹了口气,“本来她签的是顶级艺人协议,手握大量品牌与肖像权利益,解约一旦成功,对某些人而言,就是砸饭碗。”

我沉默了一瞬,望着玻璃外模糊的星光说:“所以……有人选择了让她‘消失’。”

“也许原计划是全船‘意外失联’,但伊莲活了下来。”胖子轻声道。

孙雨晴握紧了茶杯,低声说:“这下,他们可真要头大了。”

我轻轻叹了口气:“至少,现在,这件事终于有人在追查了。”

“还远远没到结束。”胖子说,“我家那边已经开始进一步调动资源,试图追踪更多失联舱的轨迹信息。但这事太敏感了,能源委员会内部有人极力封锁数据。我能拿到这些,已经是极限。”

我看着他,一时没再说什么。

夜色沉沉,星港之外的航道灯带划出一道道淡蓝色弧线,仿佛诉说着太空中那些无人知晓的秘密。而我们站在这里,终于揭开了一小角真相的幕布。

落脚之处

2025年5月24日 15:15

串串锅还在冒着热气,肉串的香味混着模拟孜然味剂在空气中弥散。就在我们刚吃到第四波加单的时候,孙教授的群发消息出现在所有人终端上。

“任务阶段性完成,预计接下来的1–2地球日为休整时间。请各位根据个人安排,自由活动。”

胖子立即嚼着一根青椒串,兴奋地拍了拍我的肩:“水哥,咱们这回终于能好好住一晚了。我记得这个星港的C区有个高级休息区,咱们公务舰编制,有补贴的!”

我刚想点头,睿思的声音就从终端里传来,如一盆冷水泼下:

“当前星港所在地补贴等级为C-3,仅适用于基础住宿与限额饮食区域。公务补贴于此星港覆盖上限为每日住宿星级2.5。当前流量高峰期间,建议优先选择D区或F区休息区。”

“你就不能多给点盲目乐观的空间吗?”胖子翻了个白眼。

我忍笑,看了眼时间——还早,于是提议:“走吧,反正也得住人,先去找住宿的地方碰碰运气。”

星港的主干道如同城市的中央通廊,永远是人潮汹涌。我们顺着公共导引系统的标牌,从C区步行前往附近几个热门的住宿区域,帕比则优雅地走在我们身边,尾巴上的感应天线时不时自动伸出,扫描周边热源与路径流量,协助我们避开拥挤人群。

不得不说,这里的住宿区设计得相当硬朗克制。到处是灰白色合金材料搭建的几何建筑,棱角分明,像是工业厂区和高端太空酒店的结合体。大厅里悬浮着大屏,循环播放着广告:“24小时恒温调控,碳中和供能系统,联邦高标准环境洁净指数认证。”

但现实很快泼了我们一桶冷水。

“对不起,这间房已经被预订到下个月。”

“我们只接受预付款30天以上的客户。”

“先生,您的补贴等级只能选择隔壁D栋,或者临时宿营仓。”

我们在三家酒店的接待台前碰了壁,胖子的脸色越来越丧:“怎么搞得像抢车票一样难?”

“星级市场嘛。”我叹了口气,“光是这些来往船只的船员和旅客,就够把十个城区塞满。”

我们刚从第三家挂着“银河联营旅馆”的前台离开,一道略带沙哑却充满精明意味的声音突然从我们右边响起:

“先生们,要住宿吗?我家就在旁边,是合法公寓,不但干净,还有两套空房,四室两厅,绝对比这些地方舒服。”

我们同时转头,只见一个年纪大约十八九岁的年轻人正微笑着看着我们。他身材瘦削、衣着利落,一副看起来就很会做生意的模样。

“我叫海姆。别看我年轻,我可是星港土生土长的原住民,我家的民宿在这片小有名气。要不要看看?”

胖子嘴角一动,正准备开口,我抢先一步道:“不接受联邦通用发票吧?”

“这个嘛……”海姆眨了下眼,“我们做的是私单,但安全、舒适、有厨房,价格也实在。”

我和胖子交换了个眼神。

“带路看看吧。”我点了点头,“不过你要是想黑我们两个联邦公务员,那今天晚上可能就会有警卫敲你门。”

“放心,我最怕的就是你们这种带AI的公务船人员。”海姆一笑,做了个请的手势,“这边走,就在后街,步行两分钟。”

我们跟着海姆穿过几条街,最终在一个民宅区的高层公寓前停了下来。这里没有太多花哨的装饰,也不是什么专属酒店,而是典型的中产住宅区,但周围清洁得体,楼宇结构坚固,看得出维修保养到位。公寓的门刷的是本地居民码,电梯里还能看到许多穿着工作服或者提着食材袋子的居民,气氛平静,和星港主干区那种光怪陆离的喧嚣完全不同。

“我家就在12层。”海姆带我们上了电梯,一边走一边说,“这个房子其实是我姐姐在星港买下的,离数据中心比较近,交通方便。”

到了门口,他刷开了门锁,一间四室两厅的现代公寓映入眼帘。内部布置得简洁而整洁,米白和浅灰色调的墙面,嵌入式灯带柔和地洒在金属感家具表面,客厅铺着一张不大的软毯,角落里还有一个微型植物箱,竟然种着几株真正的绿植。阳台拉开是全透明折叠窗,能看到不远处一座星港无线塔和连绵的空间电梯轨道。哪怕在初始站这样的大型节点,这套房子也算得上是体面而舒适。

我们在公寓客厅的沙发上坐下,帕比悄无声息地为每个人递上了温水。阳光从天花板那圈模拟窗洒下,把茶几上的茶杯和水渍拉出一圈圈光晕。空气里还残留着打印出来的织物清洗剂的香味——淡淡的柠檬与金属味混在一起,是星港典型的味道。

胖子从口袋里掏出一个硬壳小盒,啪地一声打开,递给海姆。

“给你。”他说。

海姆眨了眨眼,接过来。

那是一块地球旅游纪念章——正面铸着地球几个主要洲际的浮雕纹路,东亚区的轮廓被微微凸出,背面则写着“地球旅游日纪念·仅供纪念”几个小字。虽不值几个积分,却有点分量,手里一压,能感受到联邦文明的千钧重量。

“你们地球人都随身带这个?”海姆有些惊讶。

“不是。”我立刻打断,侧头看胖子,“这人走哪儿都备着,尤其是遇到‘合适的人’。”

胖子笑嘻嘻地摊摊手:“出门在外嘛,遇上合适的朋友,送一枚纪念章,能快速拉近关系。”

“应该是合适的姑娘吧?”我凉凉地揭穿。

“你懂得真多。”胖子叹气。

海姆笑了笑,略带些不好意思地将纪念章收起,然后也终于放松下来,开始跟我们讲起了自己的故事。

“我是在这边出生的,本地原住民吧。”他说,眼神落在玻璃桌下那张反射出自己影子的金属地板上,“父母以前是这边有名的商人,搞运输、通讯设备租赁,还投资了几个私人工程站……我小时候住的地方比现在这房子大十倍。”

说到这,他语气里透出一丝不经意的骄傲,又很快淡了下去。

“那后来呢?”我问。

“我姐姐,是在地球出生的。她小时候跟爸妈一起回了地球,后来……做过偶像。”海姆顿了一下,神情变得复杂,“后来,出事了。”

他低头看了看手指,像是在确认自己有没有说错顺序。

“他们当时是要回地球,为了赶时间,选择了较快但风险略高的一条曲率航道。结果在第二次跃迁前出问题了——联邦的报告写的是‘能量扰动导致结构偏移’,听起来就像官话。”

“那你……”胖子开口。

“我年纪小,留在了星港,姐姐和爸妈一起出发的。”海姆声音压低,“最后只有我姐姐回来,救援部门的报告是,她是被我爸塞进逃生仓里送出来的,等被巡逻船接上时,已经受了重伤昏迷。”

说到这,海姆的眼圈微微发红,手指抓住沙发边的缝隙,“她姐姐脾气其实很倔,身体恢复后不想为了她花太多钱,但我……我还是坚持了。”

他抬头看着我们,眼里是掩饰不住的倔强和自责。

“我们那时家里还有些存款,全花在她的康复和改造手术上了。她右臂和右腿都换成了义肢,但……这边的改造技术,真的不行。手术后她不爱出门了,只愿意接点资料处理的工作。”

“说白了,就是技术落后。”帕比这时候补了一句,坐得笔直,一边从厨房拿来新的热水,“星际市场的改造标准只适合中轻度改造,那种战损恢复或者高精度义体,只有远端补给站才做得来。那边医疗系统是军事级的,常年有冲突,断肢修复、义肢培育技术比地球先进太多。”

“你怎么知道?”我一边接过水,一边看他。

“睿思教授开放了部分研究院数据,我有权限查看。”帕比答得简洁干脆。

“也就是说,我们现在用的是全联邦最聪明的狗?”胖子眯眼。

帕比略一歪头,没接话,只是在一边重新擦拭茶几的边角,像一位沉默寡言的管家。

海姆吸了吸鼻子,稍微振作了一点,声音恢复了些轻松:“她现在每天都在星港的数据中心上班,最近两年状态好多了。大概……再过一会儿就下班了。”

我看了眼终端上的时间,的确快四点半了。

“她每天都这么准点?”胖子问。

“她不喜欢迟到,也不喜欢我为她操心。”海姆笑了笑,但眼神里还有点藏不住的紧张,“我姐挺厉害的。你们见到她的时候,可能会觉得……她有点眼熟。”

门口传来轻微的门锁提示音,还未推门,一道温柔的女声已经在玄关处响起:“海姆,今天家里还有客人吗?”

声音温和清亮,却带着一丝疲惫。胖子本能地挺直了背,帕比则立刻将投影界面切换为待机状态。

门轻轻地推开,一位身形修长的女性走了进来。她穿着标准的星港工作制服,深蓝配灰银,左臂带着数据中心的徽章。她脚步很轻,看到我们几个都围坐在客厅茶几前,眼中露出一丝讶异与礼貌的笑意。

“你好,我是海伊莲。”她边说边取下了脸上的口罩,动作自然而从容。

然后,全场安静了一秒。

胖子的嘴巴微张,整个人像被定格了一般,表情僵硬又复杂。他半天才憋出一句话来:“你、你你你……你是——”

“伊莲·尤芙?”我替他说了出来,语气里带着几分不可思议。

我忽然明白之前那种“似曾相识”的感觉从何而来——她的眼神和轮廓,确实与那个曾经风靡一时的虚拟广告歌手一模一样。那时她的影像常年出现在各类产品宣传上,从航天服品牌到饮料广告,几乎是联邦人心中的“远星女神”。

海伊莲微笑了一下,但眼底的神色却悄然收敛了几分。

“伊莲·尤芙只是我当偶像时用的艺名。”她语气平淡,“那时候年纪小,签了一些不该签的合约。后来……出了一场事故,我赔了违约金。现在我的肖像权,连表情模拟的版权都不归我所有。”

“什么?你现在的脸……也不能用?”胖子瞪大了眼,“那他们还能用你以前的脸去做广告?”

“当然可以。”海伊莲苦笑着点点头,“那是协议里写清楚的内容。现在就算我做个表情,他们都能合成出来卖给AI模型训练公司。”

胖子听得直咬牙:“这太过分了吧!那不就是用人当算法原材料?”

“这在星际法务条款里叫‘可控性合约输出权’,合法。”帕比一边说一边递上一杯热水,“但确实不道德。”

“难怪你离开了偶像行业。”我看着海伊莲,“换成谁,估计也很难继续下去。”

“但我还活着。”她轻声道,接过水杯,眼角微扬,“而且,我弟弟还在这世上。”

海姆此时也坐得笔直:“我姐一直都很强的。”他脸上有着不属于少年人的坚毅。

气氛在这一瞬间微妙地转变。众人沉默了一下,却不是因为尴尬,而是一种淡淡的敬意和无言的共鸣。

“咳。”胖子终于找回了点声音,“那个,您——不,姐,以前那个广告里你穿的是一套类似星舰装对吧?我当年差点就为了那广告买了整套装备!”

“你可以买。”海伊莲笑了,“不过那确实挺贵的,我当时一共只拿到了2%的广告提成。”

“……我太难过了。”胖子几乎要掀桌,“居然有人靠你的脸赚了大头还不还你肖像权?”

“欢迎来到星际商业社会。”我耸耸肩,“理想主义者的天堂,合约律师的天堂。”

大家都笑了,气氛终于轻松下来。

帕比则在旁边认真记录每个人的表情变化——不是为了别的,而是他的行为模型需要学习“情绪中的温度变化”。

海伊莲轻轻放下水杯,看着我们:“无论如何,谢谢你们陪海姆聊这么久。也谢谢你们今天选择住进我们家。”

“那是我们赚到了。”我回以一笑,“今晚可能是我们这趟航行中,最像在家的一个晚上。”

海伊莲眨了眨眼,没再说话,只是露出了一个温暖的微笑。

胖子跟伊莲聊得起劲,从纪录片剪辑聊到自己飞船上的生活技能,口才都快能申请脱口秀节目了。

“那晚上我请你们吃饭吧!”他话音刚落,又补了一句,“不然光蹭住的也不好意思。”

“我们在家做吧。”海姆很自然地接过话头,“我姐不爱出去吃,自己做简单点。”

“家常菜最好!”胖子一听就乐了,“需要买菜吗?我可以代劳,采购我熟,飞船物资都是我清点的!”

伊莲转头看了他一眼,笑着点了点头:“那就辛苦你啦。”

我看着这对一高一矮、一板一圆的搭档自然而然地聊起晚餐细节,忽然站起身,拍拍胖子的肩膀,语气轻快:“你去就行了,我在这边陪海姆聊会儿。”

“啊?”胖子显然没料到我会临阵脱逃,“我一个人?”

我转头冲他挤了挤眼:“这机会还不够明显吗?你不是号称社交高手?”

胖子张了张嘴,像是想反驳,但又意识到了什么,愣了两秒,憋出一句:“那……那我就勉为其难了。”

伊莲轻轻一笑,把购物袋递给他:“你带个清单吧,我这边列一下。”

胖子一边接过购物清单,一边回头冲我咧嘴:“水哥你真够义气。”

“那是。”我抬手做了个“加油”手势,“别迷路了,采购专家。”

等他们出门,我转头看向海姆:“终于安静点了。”

海姆还站在原地,像是有点愣神,直到我招呼他坐下来,他才慢慢挪回沙发。

我倒了两杯水,把其中一杯推给他。

“来,喝点水。”我语气轻松,“既然难得安静,不如我给你讲讲我们在外面的见闻。”

海姆眼神一亮,明显来了兴趣:“真的?我小时候几乎没离开过初始星港,只看过点纪录片。”

“纪录片讲的是故事,外面讲的是人。”我靠在椅背上,望着窗外逐渐转暗的天色,“比如你知道,在木星轨道,有个叫‘碎光塔’的地方,那儿专门养着一批人工智能鸽子,每天用光羽信标记录时间的变动……”

他听得很认真,我忽然意识到,虽然我们彼此还不算太熟,但这段静下来的交流,竟带着一种真正意义上的“交朋友”的味道。

“你呢?”我把水杯搁在桌边,随口问道,“以后想干什么?一直留在星港吗?”

海姆犹豫了一下,还是抬头看着我说:“我想当联邦的警员。”

“哦?”我挑了挑眉,“不是商人,不是工程师,是警员?”

“对。”他语气有些低,但坚定,“我想搞清楚我父母当年的事——他们的飞船为什么会出事。到现在,官方还没有给出一个完整的解释。”

我没有插话,只是静静看着他。他顿了顿,继续道:“我姐现在在星港的数据中心工作,我知道,她肯定也在查。但她什么都不告诉我,只说‘太危险了’、‘小孩子别掺和’。”

“那你就想自己查?”我问。

“嗯。”他点头,“警员可以调档案,也可以进入一些禁区,哪怕只是低级权限,也可能能接触更多线索。”

我靠回沙发背,轻轻晃了晃手中的水杯,“听起来挺成熟的。”

“我不是想当什么英雄,”他急忙补了一句,“就是不想一直活在别人设定的叙述里。连自己家发生了什么都不知道,还能说是自由人吗?”

我看了他一眼,语气轻松下来:“你倒是比我们那个年代的学生清醒多了。”

他咧嘴笑了笑,“这儿的教育方式不一样。”

“说说看。”

“星港教育都是全联邦统一的远程系统。每个孩子都有学习账户,课程进度、考试安排全在线管理。只要你想学,就没人能拦得住你。”海姆说着,语气有些自豪,“而且我们这边的考试不需要‘补课’什么的,所有内容都在平台上,能不能学到,看自己。”

“实操课呢?”

“要去教学舱室。比如武装操控、重力适应训练、数据舱入侵防护,还有执法模拟,统统在物理舱完成。”他顿了顿,“但我现在还没排上,得等下个月。”

我点点头,“地球上就不一样了。我们那会儿,上学还得一大早挤地铁进教室,后来虽然有了虚拟人教学,但还是保留了大量真人教师。”

“为什么?”他一脸诧异。

“就业。”我叹了口气,“说到底,是为了一口饭吃。地球那么多人,不留点岗位,社会稳定不了。所以虚拟化只推进了一部分,尤其是基础教育和低年级,还得靠老师撑场。”

“原来如此。”他似懂非懂地点头。

我想了想,笑着补了一句:“你要真想调查点什么,也别小看自己。就像我和胖子——你别看他一天吊儿郎当的,其实是真有东西。”

“我看得出来。”海姆认真道,“他很敏锐,进门就知道我姐不一般。”

“他对姑娘尤其敏锐。”我笑着摇了摇头,“不过别误会啊,除了嘴碎,他在飞船维修和系统破解方面,是顶尖的。星际大学那几年,我们仨能活着毕业,有他一半功劳。”

“那你呢?”海姆问,“你为什么成了舰长?”

我顿了顿,眼前仿佛浮现出那一段段年轻时披星戴月的画面:“我以前也当过研究员,在系里管舰体模拟,后来因为……一些事,离开了实验岗位。想试试看换个路子,就走到了今天。”

“你不后悔?”

“没时间后悔。”我笑了笑,“再说了,星图那么大,来都来了,不飞飞,怎么甘心?”

海姆若有所思地看着我,窗外的光线缓缓西斜,星港墙体投下的淡金色影子铺在我们脚下,仿佛拉长了这个安静对话的时间。

“那你说,”他忽然问,“我真的有可能查清我爸妈的事吗?”

“可能。”我没有犹豫,“只要你不放弃。”

他点点头,眼神重新亮了几分。

帕比此时端来一壶热茶,放在茶几上,还没说话,就有细微的蒸汽在空气中散开,像一份无声的肯定。

我低头,用手腕上的终端快速敲下一句文字:

【问】睿思,现在能帮我们联系星港中控吗?看看能不能给海姆姐姐那边加点处理优先级。

短暂的沉默后,睿思的回复跳了出来,字体如以往一样冷静整齐:

【答】当前无法处理此请求。提醒您:初始星港目前由本系统的另一分身负责维护,权限等级等同于我,无越权干预能力。

我微微皱眉,又打了一句:

【问】那你本体呢?不是就在这颗星球上吗?

睿思这次的回复略有延迟。

【答】本体当前状态:离线。

我眯起眼睛。离线?这个词从睿思口中说出,总让人感觉不太对劲。

【问】离线是什么意思?你们AI也会“离线”?

这次的回应语调依旧严肃,但明显更加慎重:

【答】“离线”是一种中性状态,可能性包括但不限于以下几种:

正在进行系统级自我维护或固件更新;

执行任务中涉及高保密等级内容,主动断开公网;

被物理隔离或人为干预系统链路;

发生故障或信号丢失;

本体已转移至其他节点,但当前尚未恢复同步通道;

其他暂时无法披露的异常原因。

我盯着最后一句,有些沉默。

“你是说,”我缓缓打字,“你自己都不知道本体为什么离线了?”

这一次,睿思只回复了一个字:

【是】

我靠回沙发,心中泛起一丝说不清的凉意。照理说,睿思的本体应该是目前联邦最稳定、最强大的中枢之一,突然“离线”,即便在它冷静罗列的六个可能性中,也没有一个听起来令人安心。

“好吧……”我自言自语地关上终端,心里却越发觉得,这趟星港之行,恐怕比表面上复杂得多。

顶棚上的工程师

2025年5月22日 19:18

办事处的门是半开半合的老式结构,像一只始终没睡醒的机器眼,默默监视着进出的每一个人。我和胖子跨过门槛,迎面而来是一股陈旧空气混杂消毒剂气味的混合物,像是上个世纪遗留下来的记忆尘埃。这里和上层的星港主干道判若两界,灯光昏黄、座椅陈设复古,甚至还有一本本翻旧了边的纸质表格堆在前台。空气中除了漂浮的灰尘,还有效率低下的气氛。

“你好,请提交能源灌装许可申请表与数据库访问同步授权函。”前台的接待员用毫无情绪起伏的语调说道,甚至没有抬头看我们一眼。

我心中一紧,但还是照流程递上终端信息。按规定,每艘科研舰要想使用自己提炼的能源,必须向联邦所属机构申请权限——说白了,就是给发动机“解锁”,让它接受非标结晶体输入。否则就只能使用联邦审批通过的、由大财团统一调配的“信号剂添加能源”,价格高得离谱,还被层层绑定。这背后的力量,便是深蓝联邦能源委员会的大佬——赫洛·贾戈纳,火星能源总署与“曜光融合集团”的实际掌控人之一。

我曾听教授说过,贾戈纳背后不仅掌控能源链,还涉及军事工业,简直就是联邦权力结构里最不能被惹的那种存在。而这份“能源豁免”协议,虽只是个技术环节,实际上踩在了对方的脚趾头上。难怪这程序,复杂得几乎像在申请进驻总统府。

胖子小声嘀咕着:“水哥,这地方压根就不想让你申请成功……你说咱要是真炼出能源,他们怎么赚暴利?”

我也皱起了眉。递交完材料,我们被安排到了一个编号为“A区-19”的等候座。接下来的两个小时,我跟胖子从希望变成抱怨,又从抱怨滑向沉默。

“都2500年了,居然还在用这种复古叫号机制……”胖子百无聊赖地翻着手环界面,咔哒咔哒敲着虚拟按键,“我在月球酒馆办个喝酒执照都比这快。”

我瞄了眼墙上的光幕,编号还停留在“A区-13”。

“水哥……”胖子低声说,“咱不会是被插队了吧?”

我皱了皱眉,站起身,带着胖子一起走向前台。我们试图再次提交终端,换来的依然是前台机械地指向右侧光幕:“请查看服务守则第七条——大客户优先处理。”

我下意识转头,那块光幕居然还真挂着几个亮红字:

7.联邦认证重点科研单位、军方直属舰队、A级资源战略合作方可享优先通道权。

“好家伙,明摆着就是给大佬走后门的。”胖子小声嘀咕,“我们这算不算科研单位?”

“算个毛。”我摇头,“人家写得清清楚楚,重点科研单位——我们挂的是‘深蓝大学’名义,不够格。”

正在我准备咬牙继续耗的时候,睿思的声音悄然从我手环中响起:

“舰长,是否需要我介入处理流程?已检测到目标系统存在优先级资源接入口。”

我没有回答,只是默许地点头。下一秒,一封电子文书从我手环上浮现,带着“星际大学科研院区直属项目”的加密标识,并有一串动态签名数据。

我把这封文书隔空投射到前台处理台上。

接待员原本还百无聊赖地咀嚼着口香糖,一看到这串编码,瞳孔瞬间放大,手指几乎是反射性地接入系统进行验证。三十秒后,他的嘴角居然第一次出现了“笑容”这种高级表情。

“啊,非常抱歉,是我们处理不周。”对方突然变得异常热情,语速也快了三分,“您这份授权……非常罕见,我们立即为您开启绿色通道处理!这边请,A区临时会议室已经为您清空。”

我看了胖子一眼,他瞠目结舌。

“这波操作,”胖子在我耳边低声说,“睿思这家伙……不会真是工程院本体亲自发功吧?”

我耸耸肩,懒得解释太多。

“你们到底塞了什么在文书里?”胖子好奇心爆棚。

“只是说明我们挂靠的是星际大学科研院,且任务为特殊战略支援航段。”睿思的声音依旧平静,“此站点为工程院管理节点之一,我有部分核心接口的访问权。”

“所以……你在这站,是个‘地头蛇’?”

“如果您坚持使用这个措辞,我不反对。”睿思说。

“牛逼。”胖子感慨地看了看光幕已变绿的通道,“有睿思做靠山,真香。”

A区临时会议室门前,一块泛着蓝光的安检门静静地矗立着。门口的工作人员换了人,是一位穿着联邦港务署制服的中年女士,神色比前台人员专业得多,甚至带了几分客气。

“请舰长本人进行身份确认。”她说着,递来一块光感面板。

我将腕带终端与面部同时对准识别区域,面板闪过一阵绿色光带,随后清晰浮现出“1108号科考舰:舰长胡秋水”字样。

确认后,对方开始调出系统界面,输入一串冗长的协议代码,同时一边扫视我们,一边不动声色地问道:“请问您这次任务的航程……有明确的执行目标吗?”

她问得不动声色,却字字切中核心。以她的级别,本不该管这些细节,除非是有人暗示她“留意一下”。

我刚想回应一句“常规科考任务”,胖子却凑上来说:“我们是执行深蓝科研院指派的联合科考任务,航线编号为STX-G77。”

对方的手顿了顿,露出一丝惊讶的神情,随后扫过屏幕,屏幕上显然也浮现了同样的任务标签,只是来源那一栏——

数据下发源:睿思本体·科研院工程节点(火星)

胖子愣了一下:“它本体在这里?”

我也皱起眉,正要说话,耳边却已经响起睿思那一贯沉稳而理性的声音:

“舰长,不必惊讶。在本区域内,本体已接管我当前分身系统。”

我们对视了一眼。

“如果分身与本体共享信道、权限级别一致,并处于联邦主信号接入范围内,”睿思继续说道,“那么分身就是本体,本体也是分身。”

接着他语气微妙地顿了一下,仿佛刻意换了种说法:

“你们现在,也可以称呼我为——徐睿思,教授。”

“……啊?”胖子差点把嘴里的能量糖咬碎,“你还有名字?不是型号编号?”

“睿思,是我在星际大学注册时的正式姓名,取自‘睿智思明’之意,由我前任导师命名。”那声音从面板中传来,语气没有任何波澜,但又透出一种人类学者特有的克制与傲然。

“徐睿思,教授……”我低声念了念,“这么说,我们这一趟,是你亲自护航?”

“这艘船,是我的实验平台。”睿思的语调从容,“你们是执行任务的主角,我只是负责让船航行得更稳定些。”

“你这么一说,我压力反倒更大了。”我自嘲地笑了笑。

此时会议室中,一连串授权条目陆续完成。舰船能源自提权限、异构结晶使用豁免、数据库接入临时拓展、飞船签章验证……一项接一项,如同背后有一双无形之手,把所有流程一口气扫清。

最后的确认光标浮现,我按下确认按钮,整个授权环节宣告完成。

工作人员看着我们的眼神明显变了,不再是办事流程中的应对,而带着几分尊敬甚至……忌惮。

“手续已完成。”她向我们点点头,“能源管道将于10分钟后对接,请您回到舰上确认入流状态。”

“谢谢。”我客气道。

她没再多说,便离开了会议室。

我目送她离去,轻声对胖子说:“……你说睿思到底算是‘人’吗?”

“我现在有点不敢跟它抢控制权了。”胖子咕哝道,“一个能注册学籍、能下发任务、还能上课的AI?太离谱了。”

我没有立刻回答,只是走到窗边,望着外墙那一排灌装管线的虚拟投影,它们像一道道光束,从星港腹地延伸而来,在授权通过的瞬间一根根亮起,犹如某种仪式启动般有条不紊。透明墙体后的深空被光带映照出层层波痕,仿佛整个补给站的脉络正缓缓苏醒。

背后,睿思的标志图标静静悬浮在空气屏上,光圈以恒定的速度旋转着,恍若一颗始终注视着我们的小型卫星,自1108号起航的那一刻起,就未曾真正远离。

我们重新搭乘悬浮滑板,驶离港口事务厅。车辆启动时发出一声轻微的“嗡”响,滑行在通道间几乎没有任何震动。我靠在半高的靠背上,目光顺着滑板两侧闪烁的导向光带发散出去,远处几座私人平台高高悬挂着,像是浮在虚空的橱窗,一栋栋太空居所投射出淡蓝色的生活光圈,构成了一幅未来都市的浮空剪影。

“睿思。”我忽然出声,“以后我们是叫你‘陈睿思教授’,还是继续叫你‘睿思’?”

短暂的延迟后,腕带上的图标旋转了一下,他的声音依然冷静:“当前节点为陈睿思教授本体所在区域。我即为本体,不是分身。如果脱离该星域通信范围,则身份会根据接入权限调整。那时,我可能是睿思,也可能不是。”

我皱了皱眉,“这话我听得有点玄。”

“我懂。”胖子抢过话题,一边用手撑着车边,一边偏过头来,“他说的就是延迟嘛。你想啊,在这个星球上,没延迟,睿思随时同步,他就是本人;但在宇宙里信号来回一趟得好几分钟,甚至几个小时,那本体都懒得管了,干脆让分身上班。所以本体在的时候,就叫‘陈教授’;不在,就‘睿思’打工。”

我没说话,半是认同地笑了笑,心想这个逻辑说得确实有点道理。

滑板车拐入另一个岔道,光带投影渐变为明亮的橙色,提示我们正驶入能源调配与搬运区。这里比主通道显得更机械化,墙面结构裸露,悬挂着港口分配的线路与各类压舱设备的标识编号,空气中隐约带着金属消毒剂的气味。

我正眺望远处,胖子忽然指了指前方:“那不是帕比?”

顺着他手指方向,我看见帕比正站在一架高大的能源搬运平台旁边,整只后腿以一种极其不符合“狗”的姿态插入地面的接口舱中,身体一动不动,但他前腿的机械臂已经控制着四五台港口搬运机器人,有条不紊地将封装好的能源模组从平台一端精准搬运至1108号侧舱的连接轨道上。

“这家伙是港口精英级授权吧?”我低声问。

“应该是港口让步了。”胖子说,“这种机器人工位按小时计费,帕比现在用的是它们的远控通道,省了我们一大笔钱。”

“它这条腿……接线真快。”我看着帕比后腿上的结构模块,像是一块复合型处理器嵌入金属外壳,内侧有一串缓缓闪烁的通讯灯。

“别光看腿,”胖子打趣道,“他可是我们科研队里的首席打工狗。”

我瞥了他一眼,没接话,目光继续追随着帕比那些精准的操作:每一步都不浪费一丝力量,连舱体之间的缝隙对接都调整得严丝合缝。

而远处的补给平台此刻仍在缓缓旋转,金属臂架如一圈圈机械花瓣,映照着那片没有白昼的星海。

我们原本是打算来帮帕比干活的,结果站在一旁看了几分钟,越看越觉得自己多余。

“我有点怀疑,他是不是在故意炫技。”胖子嘟囔着,“这效率,连我大学那会儿打竞速拆装机器人大赛都没见过。”

“说不定他就是来打比赛的。”我双手插兜,靠着墙,看着帕比如舞者般操控每一具重型搬运机械,连转弯时角度都能算到毫米级。

我们等了将近半小时,帕比终于拔出后腿,接头处自动弹出几缕气流,轻微的“噗哧”声像是某种程序结束的提示音。他甩了甩尾巴,整了整金属外壳,抬头看到我们,直接说道:

“任务完成百分之九十八,剩余部分为环境校准与空载回收,可由港口系统自行处理。”

“所以我们来,就是为了陪你看你表演?”胖子一脸无奈,“我刚才甚至都开始感动了,还以为你需要帮忙。”

“你们的感动被算法精准避开了。”帕比回复得一本正经。

“那我良心发现一下,请你吃饭总可以吧。”胖子拍拍胸口。

我转头问:“你搬的这些是啥?”

帕比停顿了一下,语气如常:“联邦研究院委托转送至远端补给站的科研模组,涉及生化、通讯、微重力材料三个方向,标注机密编号,内容不可查询。”

“听上去就是我们不能问的意思。”胖子撇撇嘴,“不过看你搬得这么起劲,应该也不是什么炸弹。”

“我不会接收爆炸品。”帕比淡淡道,“那是战斗型AI的活。”

“好啦好啦,任务完成,走吧。”我笑着一拍他的肩甲,“我们仨去吃饭,前面有家火星风味的合成串串店。”

“我申请带我的烧烤辅助模块。”帕比亮起了尾巴上的迷你加热装置,语气中第一次带了一点“期待”的意味,“我也想试试这个传说中的‘麻辣味’。”

胖子大笑:“你这不叫狗厨师,你这是狗吃货!”

“我既是一条狗,也是一名工程师,偶尔也是厨师。”帕比严肃地回道,“我对一切热源的化学反应过程,充满敬意。”

我们三人——准确地说,是两人一狗,踏上了去吃饭的路。这趟任务虽然只是中途靠港,但对我们来说,每一个片段,都像星空中不可替代的微光。

刚走出搬运区不久,我们三人——准确地说,两人一狗——站到了悬浮滑板车边。滑板车还没启动,帕比便扬起他那根金属尾巴,咔哒一声解锁了顶部的置物架,动作流畅地跳上顶棚,用四肢稳稳地卡在车身合缝处。

“你干嘛不上车?”我抬头问。

帕比理所当然地回答:“根据本地民用载具安全指引,第47条B款,工程器械可放置于车顶置物架——我作为一名工程型AI,属于‘可控型器械范畴’。”

“你不只是工程器械吧?你还有自我意识和职业病。”胖子吐槽。

“意识归意识,置物归置物。”帕比一本正经地答道。

果不其然,滑板车很快发出一阵沉闷的哼鸣,然后整体高度“哐当”一声下降了十公分,底部浮力圈泛起不稳定的蓝色光弧。

“当前负载已达极限。”滑板系统语音毫无感情地提示,“建议立即减载。”

我无奈地扶额:“我说,要不咱们再叫一辆吧。”

“不必。”帕比的尾巴轻轻一甩,“我已同步睿思当前场景状态,他调派了另一辆单人滑板前来。”

几秒钟后,前方不远处果然驶来一辆银灰色滑板车,带着工程院系统标志的光标停在我们面前。

“AI抱团的效率就是高。”胖子一边感慨一边跳上新车,“人类连预约办事都要排队取号,AI只要同步权限,就能瞬间调车接送。”

“那是因为人类需要遵守规则。”帕比淡定回应,“而AI,定义了规则。”

“你这是在嘲笑我们吗?”胖子瞪眼。

“我是在陈述事实。”帕比回答得不带情绪,尾巴还不忘系上安全挂钩,像个装配完毕的多功能背包。

“那你们AI之间就没有秘密了?”胖子问。

帕比淡定回答:“我们有权限隔离。”

我抬手示意:“你先上车,胖子。”

“好嘞!”胖子立刻跳上银滑板,“至少这辆没被你那大铁狗压变形。”

我们一前一后地滑出港口区域,驶入星港街区。通道两侧是高耸的商业模块楼,霓虹广告与LED星投影交错,仿佛走在一座三维浮空城市的中枢。

“你怎么知道这家串串店的?”胖子用通讯器喊我。

“上午去办理手续的时候路过的,看了眼广告屏,挂着‘深蓝十大味觉还原品牌’的标签,应该靠谱。”我边操作车控边答道,“而且还搞活动,打包套餐送饮料。”

“你别骗我是因为饮料才决定来的。”胖子说。

“那我可真不是骗你。”我笑笑。

几分钟后,我们抵达“蜀火·合成串串体验店”,一栋悬挂着红底电子灯笼、前台设有重力还原桌席的小型餐饮舱体。

门一开,人工调配的香气扑鼻而来。我们在一张可容纳三人的浮动卡座落座,桌面中央升起一口智能分格锅,自动识别热度与配料种类,翻滚声夹杂着蒸汽,让人一时仿佛穿越回了地球上的冬夜街头。

“我要牛肚、虾丸、脑花和冰激凌蛋糕串。”胖子一边看菜单一边点,“还有那个限定的仿生脑花串!”

“……脑花串也合成了?”我皱眉。

“百分之百植物仿生!连味觉神经模拟都集成了。”他咬着吸管讲解,“再配上这个酸梅汤蛋白液,完美。”

“帕比你吃什么?”我转头。

帕比已经把自己的食材列了好一屏:“我将模拟川味组合B型,高辣,部分区域添加风味增强试剂与钠含量调节模块。”

“你……是来吃饭还是来测试毒素极限的?”我忍不住吐槽。

“我正在调优‘人类食物耐受模型’,预计本季度完成口味学习任务。”他说着,还启动了模拟舌头的味觉芯片,真的是边吃边训练。

胖子咬着串笑了笑:“我突然觉得,狗做的饭最好吃,狗一起吃饭也最有安全感。”

“如果再有狗帮我消化就更好了。”

FZ-Ⅲ 星级市场

2025年5月22日 19:18

曲率航行的终点,并不像影视里那样惊天动地。舰体只是轻轻一颤,像是在无声中挣脱了一层空间的阻力。接着,舱内各项指标由橙转绿,状态面板浮现出睿思的提示:

“曲率航程第二段完成。当前位置已进入补给节点FZ-Ⅲ预设区域,航向误差0.03%,信号强度稳定。”

我还斜靠在驾驶主控台旁,手边那杯早已放凉的咖啡泛着一圈浅浅的油光。我伸了个懒腰,活动了一下僵硬的肩颈,视线却被中央主屏上跳动的一束亮光吸引。

“睿思,把舷窗切换到可见光波段。”

“已切换。”

原本满布高能粒子图谱与跃迁残差数据的中控窗格,渐渐褪去那些复杂的光谱与坐标曲线。代替它的,是眼前那片熟悉却又陌生的星空。

一颗亮点,远远悬浮在虚无之中,不是恒星,也不是星系。它发着等离子涟漪的光圈,色泽偏蓝,外围还隐约有数个金属环结构环绕。

“补给站。”我低声说。

那不是一颗星,而是一座以人类名义建造的深空锚点——深空自动补给站FZ-Ⅲ。它就在眼前,像是漫长黑夜中唯一亮着灯的家。

“哇哦——终于能看到点像样的建筑了。”胖子第一个进了舰桥,边打哈欠边揉眼,手里的营养棒还没吃完。他一屁股坐进副控台,目光直勾勾地盯着主屏上的那颗明亮光点,“那玩意是补给站?怎么看着像个缩小版恒星?”

“那是FZ-Ⅲ前哨。”我顺势开启主控视野,在星图中标出那颗正缓缓靠近的节点,“又叫‘初始站’,是人类在深空中建立的第一座自动补给基地——曾经的里程碑,现在的地标。”

“听着就沧桑。”孙雨晴一边打着呵欠一边走进来,换上了醒目的白灰制服,“所以它现在就是个老破小?”

“准确来说,是老而没扩。”我指了指侧边投影,“它仍保留着百年前的环状结构,最多同时停靠三艘中型舰艇。维护权归火星太空署所有——也就是那位贾姓常委一系。”

“哦……那不是和贾宁是老乡?”胖子贼兮兮地笑了一下,刚说完就被贾宁冷冷瞥了一眼。他立刻做鸵鸟状地缩回座椅,“我啥也没说,谁说话谁胖。”

“说你胖你就喘。”我笑着摇头,继续操作终端,把补给站外围的结构图调了出来,“虽然本体没扩建,但这些年,各大财团陆续在周边建立了私人空间站,挂靠在FZ-Ⅲ的轨道区——技术上它们是‘附属模块’,实际上就是用来挣钱的。”

屏幕上浮现出一圈密密麻麻的点位标记,如同群星拱月般围绕着补给站的本体:

“货运平台、商贸浮舱、休闲娱乐场、低重力医疗所、殖民地物资交易所……这个结构在地图上被昵称为‘星级市场’,算是合法边缘的自由港口。”

“也就是说——”胖子眼睛一亮,“可以采购、维修、甚至吃点真正的饭?”

“可以。”我摁下确认,“但前提是我们低调入港,不暴露太多科研计划,尤其不能暴露目标坐标。”

“教授说的那句‘话在耳中,名在外头’,我记着呢。”孙雨晴瞟了我一眼,顺势接话。

正说着,孙教授也从生活区踱步而入,风衣未解,神情一如既往地温和:“FZ-Ⅲ是一处历史意义大于实用价值的节点,但也是联邦在深空中最稳定的情报交汇点。我们虽然是科研身份,但谨慎为上。”

“明白。”我点头,将舰桥内的灯光调整为靠港模式,“预计进入站点轨道还有47分钟。大家抓紧准备。”

“正在切换至FZ-Ⅲ前哨主通信频段。”睿思的声音在舱内响起,冷静而一丝不苟。

主控屏幕迅速出现联邦标准通信界面,一行行握手验证与身份认证代码刷过,紧接着,一条略带迟疑的回复缓慢弹出:

【FZ-Ⅲ自动应答系统】:检测到科研舰船编号“DF-1108”,请等待管控调度处理。当前入站队列为4,预计等待时间:3小时17分。

【附注】:科研舰优先级较低,请耐心等待。

“啥玩意?”胖子第一时间炸了,“我们是科研船,还是官方挂靠的,怎么就得排队?”

“看这样子,他们根本没把科研舰当回事。”孙雨晴皱眉,“太空署这是人手不够还是摆烂?”

“确认情况。”我对睿思说。

睿思随即用平静得近乎冷酷的语气回应:“目标站点目前由火星太空署控制。港口权限拥堵源于商业货舰频繁进出,科研舰未申请专属窗口,将被判定为普通通行对象。”

“换句话说,就是我们没打招呼。”我叹了口气。

贾宁一直沉默不语,此刻忽然上前两步,在操控台前站定,语气平静:“睿思,切换到手动编辑通联。”

“已切换。”睿思干脆利落。

她低头,迅速敲入了一串内容,只发出一行简单的文字:

【请问港口C-01当前状态?】

几秒钟后,屏幕那端安静了一下,仿佛对面正有人飞快核对什么东西。不到十秒,刚才那副懒洋洋的语气瞬间变了:

【致DF-1108号舰:欢迎您莅临FZ-Ⅲ,我们已为您开启C-01优先对接航道,免安检程序同步执行。补给与泊位清理完成,预计3分钟内引导完成,请安心入港!】

“……这转变速度也太快了。”胖子嘴角抽搐,“刚才还让咱排仨小时队,现在笑得像迎接亲戚。”

“港口编号C-01,是专供某级别访客使用的。”我瞥了贾宁一眼,心中隐隐有些猜测,“你发的什么?”

“编号而已。”贾宁回头看我,神情不变,“他们自己该知道的。”

“你是不是以前在这里干过?”胖子忍不住小声问。

“你猜。”她淡淡一笑,转身走回原位,仿佛刚才什么都没发生过。

我看着那条被标记为“VIP通道开启”的绿色对接指令,不由得摇了摇头。

“舰长。”睿思此时开口,“我们已获得泊位航道优先权,是否确认进入?”

“确认。”我轻声应道,“准备靠港。”

我们站在船舷观测舱前的全景视窗前,舱内的灯光被调至低照模式,只留下星海最原始的辉光在每个人眼中反射。1108号此刻已经关闭了外部推进器,处于FZ-Ⅲ前哨的轨道牵引锁定状态,正沿着缓慢而稳定的曲线,驶向泊位。

透过窗外那一层可见光波段的舱窗过滤镜,我望见前方景象正逐渐展开。一个如星云般绵延、却又具备城市结构的庞大区域,正悄然铺展在漆黑太空之中。

那是“FZ-Ⅲ星级市场”。

“好大……”孙雨晴轻声感叹了一句。

在我们视野中,补给站本体——也就是人类建造的第一座深空补给站FZ-Ⅲ,如今已显得渺小如豆。它位于星市的正中心,一个保持着古典联邦设计风格的六边形旋转平台,灰白色金属外壳略显斑驳,宛如一段久远时代的化石。

而环绕它的,是数十个大小不一的私人空间站、模块化飞行城、广告基站与能源中继塔。这些建筑彼此之间以磁锁轨道、通讯桁架和动力管道连接成网,仿佛一片漂浮在星海中的城市群落。巨大的3D广告帷幕在无声中翻滚着色彩斑斓的图像,虚拟模特穿着炫目的半透明时装,挥手对我们微笑。

一艘豪华商旅舰刚刚驶入某家企业标识下的“贵宾码头”,在几道蓝紫色粒子光束的引导下缓缓转身,宛如一场太空中的表演。

“这是我第一次看见‘初始站’被围成这个样子。”我感慨道。

“那不是‘围’。”孙教授的声音在我身后响起,语气带着淡淡的怀旧意味,“这是‘繁殖’。”

他踱步到我身边,也望向窗外:“FZ-Ⅲ曾是深蓝联邦第一代探路者建立的补给节点,本来设计只供给科研舰和探索者使用。可随着深空航行常态化,这里逐渐被各种商业势力盯上,最后你看到的这些模块……几乎全都是私人财团和太空商团的资本堆叠产物。”

“就像地球最早的港口城市被商品和人群包围。”我说。

我正要问更多,胖子忽然凑了上来,指着不远处一个巨大银蓝色环状平台:“看到那没?‘曦瞳娱乐集团’的总部港口!那是星际传媒前三的大厂!你知道我最喜欢的偶像伊莲·尤芙,就是在他们旗下签的——前几年她的个人演唱会全息版我刷了三十七遍!”

我忍不住斜眼看他:“你不是说你上次的减肥计划是为了变帅好追女朋友?”

“那是现实。”胖子挥挥手,“伊莲是信仰。”

“她不是虚拟人偶?”孙雨晴问,“我记得她在一次事故中身体部分损坏之后,官方就改用数字人格替代了。”

“哎呀那不是重点。”胖子依旧两眼放光,“重点是,她的合成音唱歌比人类原唱还动听,跳舞带的肢体张力简直不讲道理,还有那双……”

“好了。”我打断他,“这次补给不是来追星的。”

“她那双眼睛,是由九维晶体渲染的……”他还在念叨。

贾宁一直站在最靠舱角的位置,直到这时才冷冷地开口:“这些娱乐公司,不过是资本包装出的幻觉乌托邦。名义上自治,实则全都被利益线穿成一条链。”

她朝那片绚烂广告帷幕投去一瞥:“你以为他们能在FZ-Ⅲ建这么大一个市场,是靠卖唱片?”

孙教授点了点头:“贾宁说得对。星市表面上是自由贸易平台,背后却是火星太空署与几大常委系财团的博弈场。你们看到的那些光怪陆离,不过是复杂势力折射出来的幻光而已。”

我扫视了一眼众人,轻咳一声:“好了,我们在轨对接还有几分钟。我简单布置一下下船的任务分工。”

众人下意识地站直了一些。

“雨晴,你和帕比负责科研物资的提货,记得确认对方提供的样本是否带有协议副本。”

“明白。”

“胖子,你跟我去签补给协议,顺便检查一下能源灌装接入权限和系统接口,别哪天加不上油。”

“收到。”他有些不情愿地收起了虚拟终端上的伊莲·尤芙全息影像。

“贾宁负责船体安保与站内通行权限申请。教授这边……您如果想见老朋友或需要用联邦数据室,我可以安排专属通道。”

孙教授轻轻颔首,表情平和:“我只是随意看看。”

舷窗外,1108号的航向灯与对接灯已经开始闪烁,引导轨早已展开。对接序列倒计时还剩两分钟,而我们——一群远行者,在此刻,正将目光投向这座星海中的第一港。

走下舷梯时,港口的灯光自上方铺洒而下,随着我们身份识别的通过,地面缓缓亮起一道条形引导光带,像是星辰在脚下铺展。

我们脚下的这片区域编号为 C-01泊位,是“初始站”中为重型舰船预留的核心港口之一。整座港口呈环状向外延展,中央留出巨大的空腔,足以同时容纳至少五艘豪华级航天舰艇。此刻,我们的1108号科考舰正静静停靠在泊位末端,虽然它对我们而言已经堪称先进,但在这里,它的体型与那几艘私人企业的豪华航舰相比,确实显得“朴素”了不少。

“我们的船,看起来像个快递车。”胖子低声感慨,眼神却藏不住四处乱瞟的好奇。

我没接话,只是环顾四周。C-01泊位的顶部由高强度金属骨架构成,嵌入了多层能量隔热层,形成一个可调节环境的封闭穹顶。港口四壁则密布着起降装置、磁悬通道与牵引框架,还有数十架搬运机器人正在来回穿梭,自动接驳各种模块与补给组件。

远处,隔绝外部真空的等离子墙体正在缓缓波动,那是一面由高频电磁场构建的半透明光幕,带着蓝白色的涟漪,仿佛整个宇宙被挡在了一片湖面之后。

“这技术可不便宜。”孙雨晴跟了上来,仰头看着那道光幕,“等离子墙的维护成本几乎等于一座小型空间站的年预算。”

“是‘昇泰控股’提供的。”我点点头,“联邦安全科技委员会贾姓常委是这家集团的背后支持者。这片墙,就是他们拿来跟火星太空署换信用评级的敲门砖。”

“贾姓常委又是他?”胖子撇嘴,“这人干的事真多,搞生物搞能源,现在连港口也沾上了。”

“他可是掌握联邦六大特批项目审批权的人。”我淡淡回应,“能把所有关键行业都插上一脚,也算‘全才’了。”

“还是你说得隐晦。”胖子嘟囔,“换我早说是章鱼精了。”

我看着远处忙碌的机器臂和修复臂群,港口内部没有风,空气是恒温恒压的。舱内不必戴头盔或氧气面罩,说明这座补给站的生命维持系统相当稳定,甚至可以调节气味浓度、湿度与光照周期——这种级别的港口,放在十年前还只是设想中的样板间。

“你以为我们走进的是补给站,其实更像一座封闭式宇宙城市的前厅。”我喃喃道。

正前方,一组港口引导员正在朝我们走来,穿着标准化的浅灰制服,胸前佩戴着火星太空署的徽标。他们态度显然与之前通信里判若两人,脚步都快了一截。

“看来贾宁发的那条消息,效果拔群。”胖子咧嘴笑着低声说,“我就知道她能一招搞定这些人。”

我没吭声,只是朝贾宁看了一眼,她依旧站在队尾,表情淡然,像什么都没发生过。

贾宁临走前,邀请孙教授和孙雨晴一同前往:“正好顺路,一起吧。”

教授点点头,起身拍拍外套,一如既往沉稳地跟上。孙雨晴则皱了皱眉,看了我一眼,却也没多说什么,随后跟上了两人脚步。

他们走的方向,是通往FZ-Ⅲ补给站核心区域的通道,据说那里聚集着各大科研与行政机构的常驻代表,有些临时驻地甚至挂着直接通往火星太空署的标识牌。那是补给站最核心的区域,也是有权限才被邀请前往的地方。

“我们不走那边?”胖子望着他们的背影,小声问。

“不走。”我拍了拍他的肩,“我们两个只负责最基层、最接地气的活——去办能源协议。”

胖子嘟囔着:“明明我才是技术官,怎么跟着你干跑腿的?”

“因为你比我更懂协议里的陷阱。”我回敬道。

话音刚落,一辆双人位悬浮滑板顺着地面光轨滑行而至,停在我们面前。它整体线条流畅,底部浮空核心正安静地维持平衡。胖子刚坐下,整个车身顿时下沉了三厘米。

“你看你。”我无奈看着悬浮滑板底盘报警。

“我还没带工具箱呢!”胖子委屈地往旁边一缩。

片刻之后,港口系统察觉异常,迅速派来第二辆滑板替换,第一辆自动滑入回收轨道。胖子立即满意地跨上去,一屁股坐下:“这回稳当。”

我无语地摇摇头,目光扫向远方的豪华悬浮车——那是专门来接贾宁他们的,光滑的车身宛如液态金属,尾部还有动态身份投影标识。比我们这辆“科研快递车”不知高出几个档次。

“没有对比就没有伤害。”胖子看着贾宁乘车离去的背影喃喃道。

“科技不是为了公平。”我一边调出前往事务厅的路径图,“是为了效率。”

滑板车无声驶离平台,朝着事务厅的方向缓缓加速。我们骑乘的那辆电动滑板自动启动导航程序,载着我和胖子沿着光轨稳稳行驶在补给站的主干道上。驶出停泊区后,景色豁然开朗,一座高科技城市的内部结构逐渐展露在我们面前。

整座星港像是一台精密运转的巨型机械,舱壁高耸,内部却如昼明亮。光轨悬浮于半空,四通八达,城市在多层结构中展开,每一层都有不同的功能模块。周围是高架的货运通道、透明的生活区悬廊,还有那极具未来感的通勤系统——全息广告在头顶闪烁,反重力快递机高速穿梭。胖子望着外头,张着嘴看了好一会儿。

“这不就放大版商场吗?”他忽然冒出一句。

“商场?”我疑惑。

“对啊,有吃有喝,还有很多层,关键是全场都有免费网络。”他一边说一边拍了拍滑板车沿路的控制栏杆,“我敢打赌,这地方的民用服务比联邦的很多主星都先进。”

沿着这条高架光轨,我们渐渐驶入人流密集区域。大量行人穿梭在各个连廊、自动步道与升降梯之间。衣着风格五花八门,从穿着简约的工程服,到拖着光纤披风的贵族打扮应有尽有,甚至还有半人高的人工宠物在边上蹦跳。

滑板车的避障系统精准无误,每次看似要撞上前方的行人或其他滑板时,总能在恰当的一瞬间轻巧滑过。胖子被这种体验惊到:“好家伙,这导航比我还会走路。”

“工程院的睿思本体就在这边。”我语气平静,“这补给站的大部分算力网络都挂在他们那边。他们的系统从来就不是为了‘会走’,是为了‘不会错’。”

“所以我们现在是走在智慧之上的轨道上?”胖子啧了一声,“我喜欢这种错觉。”

看着人流熙攘、舱顶星光映射的街区,我忽然有种轻微的错位感。这里离地球已不知多远,但却像个熟悉又陌生的影子。

胖子压低声音问我:“你说这些人,有没有一个是真正去过地球的?”

我摊了摊手:“谁知道呢?反正只要是补给基站能覆盖的地方,都能接入星际网络。就算没去过地球,也对它了如指掌。”

我顿了顿,望向远处投影的那座蓝色星球图像,微微一笑:“如果不是曲率航行的船票这么贵,我估计地球本地人早组团来这旅游了。”

电动滑板一路下行,沿着一条狭窄却干净的辅助轨道滑入了补给站的底层区域。相比上层那片通透璀璨的科技风景,这里明显显得陈旧而沉静。

办事处就设在一块半嵌入式的合金平台中,门口挂着标准的联邦事务徽标,发着略显过时的冷白色光。金属舱壁上布满维修痕迹和年代久远的喷涂标语,四周没有多余装饰,也没什么人流,只有两台老型号的接待机器人在门口值守,看见我们靠近,它们同时发出一串“滴”的提示音,舱门缓缓开启。

“啧,这地方估计是补给站最早建设的区域吧?”胖子下车后四处打量,皱了皱眉,“跟外面比起来像是从新纪元穿回了老联邦时期。”

我点点头。地方不大,结构倒是朴素实用,一眼望去只见几排窗口和若干嵌入式处理台,墙上还贴着带有折角的纸质流程指引。

“别管了,进去把协议处理了,早点搞定早点回去补觉。”

胖子撇了撇嘴,拎着终端走在前面。滑板车自动折叠停靠在入口一旁,静静待命。我们一步踏入这块钢铁腹地,仿佛刚刚还置身于星港那喧嚣而炫目的光影世界,如今却走进了一间连空气里都混着旧纸味与润滑油气息的地方。这里不属于繁华、也谈不上未来,它只属于一件事:把每一道流程,一个字一个字地盖章走完。

第二次跃迁

2025年5月20日 23:40

我放下餐盘,扫了一眼主控终端的提醒:距离下一次跃迁还有1小时。

“各位,”我轻声开口,对还坐在生活区的几人说,“你们不用都陪我待在舰桥。第二次跃迁不是新鲜事,倒计时还早,睿思会提前五分钟提醒,各自找地方休息就行。”

说完,我站起身活动了一下肩膀。虽然是第二次跃迁,但我知道,有些人第一次进入曲率场就晕了个七荤八素——感官错位、平衡感短暂丧失、视觉抽离感……这些都不是吓唬人。

曲率航行不像民间传说中那样“眨眼抵达”,它更像一段被强行拽入非线性时空的过程。人类的大脑和耳蜗都还没做好在四维泡里奔跑的准备,有些人甚至会出现“明明没动却感到翻滚”的错觉。

“只要你们坐稳,别在跃迁时晃着跑,睿思就不会发通报说‘有人在跃迁过程中撞到了走廊墙壁’。”我半开玩笑地补了一句。

“那得写进个人履历吧?”胖子撇嘴,咬了一口冷却了一半的牛肉片。

“睿思会客观记录。”睿思的声音应声而至,平稳无波,“曲率跃迁记录将计入舰员行为数据库。”

“你说这船是不是有点太严肃了?”胖子小声抱怨。

“它是科研船,不是渡假游轮。”孙雨晴耸耸肩,面前还剩一口汤。

我点点头,走向舱门,准备前往舰桥做跃迁前例行巡查。等会倒计时归零时,全船将再次驶入那片扭曲空间,而这一次,将更远——也更接近那片未知的星图边缘。

我沿着主通道走向舰桥,地板下微微的磁悬浮脉动感,提醒着舰船的动力系统正在为即将到来的跃迁积蓄能量。舱壁上的光带从模拟的自然晨光切换成冷白色“高亮模式”,这是睿思自动判断当前进入操作敏感阶段后的应对灯光。很严谨,很睿思。

“睿思。”我边走边开口,“系统检查完成了吗?”

“主控系统自检完毕,舰体结构应力模拟通过,曲率场已锁定目标跃迁点。”睿思的声音通过贴合在我颈侧的终端耳麦传来,“当前跃迁路径基于上次跃迁结束点,向深空扇区15-KL展开,数据一致性已校对至小数点后十位。”

“听起来很稳。”我点点头。

“在可控误差范围内趋于最优。”它的语气依旧像一本刚出版的教材。

我推开舰桥门,驾驶座前的全息界面已经亮起,中央球体投影正缓缓显示出跃迁路径轨道图。那是一条在黑色背景上弯曲的银蓝色丝线,两侧分布着警示标记与物质密度区块,像某种星河脊骨的剖面图。

我轻轻晃了晃刚刚从厨房带来的空杯,杯底还有一点儿贾宁冲的咖啡残液和没化开的糖。

我在主控位前坐下,手指在光屏上划过几道,调出总航程进度图。睿思已将本次任务的曲率跃迁计划完整导入系统——从远日点起始,我们将连续进行12次跃迁,每次间隔12小时,每次跃迁持续时间约为30至40分钟。如此计算,整个曲率航行将持续约两个月时间。

之后,飞船将脱离当前的可导航星图边界,进入尚未被完全测绘的KL-077’外围区域,届时只能使用常规引擎推进,航速会大幅下降。那段旅程,将不再能依赖联邦网络、坐标引导或自动补给,是真正意义上的“深空科考”。

而现在,作为联邦星图体系内的航行单位,我们仍然享有所有“文明航道”的待遇。包括联邦部署在航线上各个关键节点的自动补给站。每一座补给站都由专用AI托管,可提供能量灌注、损耗组件更换与生命物资的补充,甚至能远程完成大部分常规维修。

我放大当前跃迁段终点,下一站的标记亮了起来:一个名为“FZ-Ⅲ前哨”的小型补给站点。

“FZ-Ⅲ周围有活动飞船三艘。”睿思提示道,“一艘为地月航线上的货运船,另两艘为火星基地派出的公务侦查艇,当前正在进行例行同步任务。”

我点了点头,熟悉的命名方式与资源分布逻辑。FZ-Ⅲ属于旧型补给站群的第三代节点,最初由火星基地牵头建设,现在则划归联邦交通管理委员会,由火星太空港署代管。因为这一段航道位于火星附近并往外延伸,长期以来都是资源调度与侦查任务的必经之地,因此也自发形成了一个小型的星空聚集区。

这类聚集区通常没有明确的法律辖区,但在补给站周围五万公里内,会受到联邦公共安全协议的统一约束。那三艘正在补给的飞船,如同候车的旅人一样,短暂停靠,调整方向,等待下一段航程的指令。

我望向屏幕上的三维模型,那些补给站像一座座静止在真空中的浮岛,镶嵌在这条银河水路的节点之上,闪烁着绿蓝交替的信号光,像是在说:“别急,你还有一段路。”

距离下一次曲率跃迁还有不到一小时,睿思已经开始执行系统自检流程,舰桥主控屏上,整合图谱以流线形式不断滚动,从飞船尾部的粒子发射器、姿态调控单元,到前部的曲率引擎驱动环,每一项设备状态都以不同色彩进行动态标注。

“曲率护盾能量蓄满至94%,正在进行温控调整。”睿思的声音一如既往地沉稳冷静,“预计30分钟后达到跃迁标准阈值。”

“看来今天能准时起飞。”我望着护盾界面上的脉冲图说。

“我们不是已经在飞了吗?”胖子不知什么时候又端着咖啡靠了过来,“搞得像机场候机室一样,还分什么准点晚点。”

“你要是见过粒子护盾没开好,飞船在亚空间里削掉半个尾鳍的事故,就不会这么说了。”我淡淡地说。

“啧,我当然听说过。”胖子撇撇嘴,“上个月还有一艘实验船在曲率跳跃中被不明物撞穿。传言是老型号的导航子系统死机了,飞船自己以为前方清空,结果迎面撞上了一颗五百米直径的冰质小天体。”

“是传言。”睿思立刻更正,“经验证据显示该事故为内部伪造的维护记录所致。责任人已于地球基地军事法庭受审。”

“你看,它知道得比我们全。”我耸耸肩,“这就叫星图内航行的优势——信息通畅,系统在线,出了图,你就真成了宇宙漂流瓶。”

“嗯……”胖子挠了挠头,“那我等会还是系好安全带吧。虽然现在不用坐压缩椅了,但总感觉这东西像过山车一样,来的时候不会打招呼。”

“你是没遇到我以前的航行课导师‘打招呼’。”我看了他一眼,“这位打招呼的方式是:‘正在进行跃迁,请在三秒内固定自身以避免内耳错位。’然后——‘三、二、一……’”

“……那比过山车还刺激。”胖子打了个寒战。

睿思在一旁毫无波澜地继续报告:

“跃迁倒计时同步完成。预计剩余时间:20分钟。系统将于10分钟后进入曲率空间预热阶段,航向锁定、干扰屏蔽与惯性调节模块将在倒计时5分钟统一校准。”

我看着这一连串流程,有点像在看某种仪式的预演。星际航行,并不是把你从A点送到B点那么简单,而是一场穿越现实边缘的物理剧。你要忍受巨大的孤独、极限的节律,靠一艘缝缝补补的金属壳,把你护送到前人未至之地。

随着跃迁时间一点点逼近,飞船内部的灯光悄然发生了变化。舰桥区域由常规白光切换为淡蓝色曲率状态指示灯,显示全舰已进入跃迁预热模式。生活区和其他舱段同步降低亮度,减少不必要的能耗干扰。

我靠着控制台站起身,活动了一下肩膀。金属地板下方传来轻微的震动,那是曲率引擎开始缓慢蓄能的信号,就像一头沉睡的巨兽,正在深深吸气。

睿思冷静地提示:“当前段跃迁将在12:00整执行,跃迁时间约34分钟。请各位船员于跃迁前15分钟完成就位。”

帕比此时从工程区跳着步过来,尾巴上还挂着一根微型工具夹,像刚处理完某个阀门。

“飞行稳定值已反馈至主控,我还顺路检查了辅助能源切换器。”它拍拍自己金属胸口,“目前一切正常,没什么会爆炸。”

“你的标准有点让人焦虑。”我瞥他一眼,“不过你来的正好,去通信舱帮忙检测一下干扰屏蔽。”

“收到,狗形工程师在路上。”它一本正经地敬了个礼,又以一种介于滑步与小跑之间的姿势离开舰桥。

我忍不住笑出声。即使在第二次跃迁面前,船上的节奏依旧维持着某种稳定——有条理的检查流程、互相调侃的气氛、以及对即将穿越亚空间的理性期待。

胖子蹭过来靠在我的椅背上,嘴里叼着刚吃完的牙签:“水哥,我突然有点想写本《深空杂谈》,记录我们每次跃迁前的感想和心跳率。”

“你这是怕下一秒没机会写了?”我调侃。

“你懂我。”他说着摊手,“要是哪天我们真飞出星图,搞不好就成联邦航行日志里的传奇人物。”

“那你得先活着回去。”

“这就是我跟着你跑的原因。”他笑着点头,又拍拍我的肩,“实在不行,我也算是为航天文学献身了。”

我翻了个白眼,指了指时间:“别贫了,去你那区域检查你那堆‘万一有用’的小设备,别到时候全舰静音时,你那台副通信干扰器再发出上次那个恐怖片音效。”

“嘿,那是误触。”他竖起三根手指发誓,“我改进过系统——现在只有在我心率超过一百二才会自动播放。”

我当他是开玩笑,懒得回应。

舰桥的震动开始增强,整个1108号舰如同拉满了弓弦。跃迁,正在临近。

“你是不是也该回去继续补觉?”我看着胖子,顺手指了指舱壁屏幕墙上的时间。

他摆摆手,一副混不吝的样子:“算了吧,反正曲率航行完我排的是第一轮巡逻。回去睡几分钟,还不够睿思念一遍安全守则。”

我挑了挑眉:“你也知道睿思会念?”

“可能是我健身闹出来的动静有点大,它早上五点整在我舱门外播放了两遍《飞行员舱体移动标准操作》。”他眨了眨眼,“我被吓得以为舰体要爆炸,差点跳起来按弹射钮。”

“你舱室哪来的弹射钮?”

“……我画的。”

“你是不是得去看看心理科的资料库。”

“你说的对。”

我们对视了一秒,然后同时笑了出来。

睿思的声音适时响起,依旧冷静无波:“舰桥提示:倒计时三分钟,曲率引擎预启动已完成。请所有舰员就位,确保自身稳定状态。重复一遍,请所有舰员就位。”

我坐回主控位,系好辅助束带,目光不自觉地瞥向前方——此刻,舷窗已经切回了标准的航图模式,中心是一道逐渐变形的空间曲率图谱,如同液态金属在无声地翻涌。

“准备好了吗?”我问。

“早就等不及了。”胖子拉过一张备用椅,坐下,把手里的终端轻轻合上,“老子今天非得看看,这玩意到底扯弯的是时空,还是我胃。”

下一秒,一声低鸣响彻整个舰体——不是机械的轰鸣,而是某种近乎心跳的共振。从远处传来,又仿佛从骨髓里震出。

空间开始轻微拉伸。不是视觉上的模糊,而是一种奇特的“失衡感”,像是整艘船在一瞬间脱离了惯性,却又没有真正“动弹”。

舷窗上的星图开始扭曲,点状恒星被拉成丝线,又迅速旋转聚合成一道螺旋,仿佛世界被卷进了某个无形的漏斗里。

我能感觉到身体似乎略微下沉,又仿佛被抬起,五感混合,无法言喻。

“曲率护盾稳定。”睿思播报,“粒子发射器同步加载完毕,空间场强拟合率为97.2%,跃迁预期误差为0.3U。”

“太稳了。”胖子小声感叹,“比我小时候做的地铁还平稳。”

“你小时候坐地铁还会晕。”

“我现在也是。”

我们就这样,一边调侃,一边穿越着宇宙的褶皱。

外部的星海仿佛褪去了颜色,只剩下扭曲而流动的暗影,像是银河落入玻璃杯中的水墨,被强行拉出一道笔直轨迹。

这是曲率飞行,一个把人类从地球束缚中解放出来的奇迹,也是目前为止,我们对宇宙最极限的探索。

“预计航段剩余时间:23分钟。”睿思提醒道。

我看了一眼身边的胖子,他已经开始闭目养神,嘴角还带着一丝轻松的弧度。

曲率泡稳定,舰体平稳推进,第二次跃迁,正在进行。

正当我监控着引擎输出数据,胖子忽然一拍大腿:“不行,我要去上厕所。”

我头也没抬:“搞快点。记得顺路帮我倒杯水回来,别又在走廊里顺手拧开什么面板。”

“你以为我是帕比啊?”他一边起身一边咕哝,“我可是有自控力的工程人员。”

“你前天还说你在浴室修液化喷头结果拆了半面墙。”

“那是因为我怀疑墙体后面藏着漏气的管道,结果是……”

我懒得理他,继续盯着跃迁数据流。其实曲率航行本身是非常平稳的。进入和退出跃迁阶段时会产生一定的加速度变化和感官错乱,但一旦进入稳定状态,整艘飞船几乎感受不到速度的存在——就像你坐在一台高速运行却没有震动的电梯里,除非你用光学设备查看外部宇宙,否则根本意识不到我们正在以超越光速的方式“划开”星海。

曲率护盾在外围维持着高能包裹,粒子场调整精度控制在亚毫米级别——这是军用级特批发射器带来的优势,换作普通科研船,光是跃迁偏移率就能让你在空间中多绕上三天。

我依次检查主控台上的几项核心数据:

航向偏差:0.017度

外层曲率泡稳定率:96.9%

引擎磁约束场功率:94%

睿思处理延迟:低于0.3纳秒

“舰长,预计跃迁剩余时间:六分钟。”睿思汇报道。

我刚点点头,舱门咔哒一响,胖子拎着一瓶水回来了,一边走一边擦汗,看样子比跑五公里还累。

“你怎么上个厕所搞这么久?”我接过水。

胖子一脸心虚:“我……吃了点减肥药。”

我差点一口水喷出来:“你在跃迁状态下服药?还是减肥药?你不要命了?”

“放心,我提前吃的。”他把终端屏幕摁亮,调出一张照片展示给我看——一位身材火辣、眼神坚毅的全息偶像正对着镜头笑得灿烂,手里拿着一瓶闪着荧光的胶囊罐。

“这是我最喜欢的爱豆代言的。”他语气认真,“这牌子我关注了很久,肯定没问题。”

我盯着照片几秒,最终没忍住:“你关注的重点是产品,还是代言人?”

“……都有吧。”

“联邦药物审查你知道吗?这玩意估计连边都没摸过。你这不是科研人员,这是实验动物。”

“人总要为梦想做点牺牲。”他摆出一副赴死的英勇模样,“等我瘦下来,保不齐还能参加什么星际真人秀节目。”

“先别真人秀了,等你减肥失败,我们可以考虑申请你作为深空压力过载反应样本。”

“啧,太刻薄了。”

我笑着摇了摇头。与此同时,主控台上的引擎反馈数据开始缓慢变化,跃迁泡边界波动略有上升——这表示我们即将进入退出跃迁的减速段。

“就位。”我提醒道,“要开始减速了。”

胖子一听,立刻坐回椅子,把束带拉得比刚才还紧。

“你是怕飞出去吗?”

“不是。”他一脸正色,“我怕你嘲笑我穿的是联邦大码制服。”

“那我已经做了。”

他深吸一口气:“这段话我会记一辈子的。”

“那你可得减肥成功,不然太冤。”

睿思此时再次提示:“预计跃迁退出时间:1分43秒。请保持当前姿势,避免因惯性变化导致身体跌落或撞击。”

灯光略微变暗,进入标准减速模式。飞船开始轻微震动,像是宇宙的一道褶皱在慢慢回弹,而我们正踩在那一瞬的反弹波上,滑向另一个被文明光线标记的节点。

航行日的第一顿饭

2025年5月20日 23:40

我最后还是带着没理清的逻辑和还没恢复的精神状态,回到舰桥。

中央主控区的灯光调回了夜航模式,舱内空荡荡的,只有一排排屏幕在幽蓝中发着微光。我的座椅还保持着我离开时的倾斜姿态,像是等我归来。

我坐回去,把背往椅背上一靠,视线穿过主屏投影上那片曲率路径图,忽然觉得刚刚睡过的那四个小时,好像只是一场静音处理的幻觉。

没过多久,我的眼皮又开始打架。

“睿思……”我低声道,“有没有什么能让人瞬间清醒的办法?”

“我不建议使用电击。”

“……那你别建议。”

舱室陷入短暂的安静,我靠着座椅,眼前的光标一闪一闪,似乎在等待我下一个命令。

我晃了晃手里的咖啡杯,轻轻吹了一口,热气在舰桥中控台边上缓缓升腾。咖啡,是贾宁冲的,睿思说她还往里面加了糖。我尝了一口,果然好喝多了。明明是联邦标准配比的合成咖啡粉,加上舰内回收水过滤出来的热液,结果就因为那一小勺糖,变得像是从地球南区老咖啡铺里现磨的一样。

“轮值交接时间到。”睿思的声音在舰桥响起,依旧冷静到近乎无情。“下一个值班者:李英俊——当前状态:未响应。”

我蹙了蹙眉,瞥了一眼座椅空空如也的后排。“睿思,他是不是又睡过头了?”

“已尝试通过舱室通讯、声波唤醒与震动提示。未果。”睿思顿了顿,又补了一句,“不排除其在睡前启用了‘深度休眠’辅助模式。”

我扶额叹了口气:“这家伙是去跑了个星际马拉松吗?”

“需要更换值班人员吗?”睿思问。

“叫帕比来接班。”我说,“让他撑一轮,我亲自去找胖子。”

“已指令帕比前往舰桥。预计三分钟后到达。”

我起身收端起咖啡杯,轻轻扣上一个密封圈,打算顺路带去生活区慢慢品尝。舰桥的门自动滑开,走廊灯光调至夜间模式,泛着淡蓝色。我边走边在脑海里思考一个问题:胖子到底累成什么样,连睿思都叫不醒?

胖子的舱室门一打开,我差点没被一股浓郁的混合味道原地劝退。汗味、合成蛋白粉、未喝完的能量饮料,还有电路板焦糊味在空气里打起了擂台,谁也不肯认输。

我咳了一声,抬手扇风:“睿思,这味道可以申报生物危机等级了吧?”

【舰长,我无法直接监控私人舱室,但已通过您的可视角接入本区域传感器数据。】睿思的声音一如既往地理性而克制,【正在通过您的授权激活除味与净化系统,预计三十秒后气体浓度将恢复至健康标准。】

果然,几秒后舱壁边缘的循环通风口轻轻一响,一道浅蓝色的空气处理光束扫过房间。一股薄荷与银离子的清新味迅速压住了先前的“炼体修仙味”,空气顿时清爽了不少。

“还真是贴心。”我感叹道,“虽然你不看,但你总能闻。”

【我仅依据您提供的输入数据进行判断与操作。】睿思淡定地回应,仿佛在强调自己绝不做窥探他人隐私的AI。

我笑了笑,继续往前走去,打算看看这位太空版“减脂斗士”到底怎么睡成了这副模样。

“睿思,你确定他还活着?”我皱着眉头问。

【生命体征稳定,处于深度睡眠状态,脑电波呈现典型的强制修复模式。】

“翻译一下,是睡死了。”

我走进舱室,脚下踩到一块滑溜溜的塑胶片——低频震动健腹贴;墙上贴着“本月减脂目标”表格,三天前停在了“略有起色”;床边则摆着一台还没关机的踏步机,屏幕上赫然显示着:“今日步数:27,833。”

胖子正抱着个抱枕,穿着全息压缩衣,呼吸平稳地躺在舱内的悬浮床上,头发乱得像刚遭遇了太阳风暴。他嘴里还咬着一个智能口罩式呼吸器,微弱的节奏灯光显示,他刚结束了一轮长达90分钟的高频氧气辅助燃脂训练。

我叹了口气,走过去轻拍了拍他肩膀:“胖子,醒醒,该你值班了。”

他没反应,只是翻了个身,嘴里还含糊地嘟囔了一句:“不能吃碳水……不能喝奶茶……减脂万岁……”

“你是练成了真·太空版宿舍练习生?”我摇摇头,调高了嗓门,“胖子,再不起来我就跟孙雨晴说你让帕比替班,说不定你还能挨上一顿打。”

这一下奏效了。

胖子的眼睛猛地睁开,像被电流击中的机器人,身体弹了起来,一只脚还卡在床沿。“我、我不是……我是锻炼完了太累,不小心睡着了!”

我看着他灰头土脸、头发翘成无线天线的模样:“行了,赶紧冲个澡。睿思都喊不醒你,还以为你提前进入冷冻实验。”

“不是我不醒,是我身体太沉浸在恢复阶段了。”他有些心虚地解释,拉开柜门翻出新衣服,嘴里还嘟囔着,“我这不是想着长航程嘛,顺便……减肥……”

“你减肥干嘛?到外星球投简历?”我问。

他一愣,低声道:“回地球后想交女朋友啊。到时候我要是瘦下来、黑回来,凭咱这技术和军工背景,难不成还没人看得上?”

我抬头看了他一眼,忽然想逗逗他:“那你要不要考虑追贾宁?”

“你、你说啥!?”胖子像个被吓飞的储能水鼠,“我现在脑子不清醒,你别乱开玩笑……她那不是女朋友级别,那是女武神级别!”

“你平时不挺能吹的吗?真让你追你就虚了?”

“不是虚,是敬畏。”胖子一边钻进卫生舱洗澡,一边发誓,“我发誓这趟任务我专注科研和减脂,绝不想不该想的!”

我笑着走出他舱室,身后传来水流哗哗声和他边洗边哼的小调:“减脂是信仰,脱单是理想,未来的我一定要帅得发光……”

我无奈摇头,带上门。

在我回舰桥的路上,穿过飞船的生活区时,帕比像计算好了时间一样,精准地在我刚晃动咖啡杯的那一刻走进厨房区域。“舰长,根据当前值勤表,胖子起不来的概率为83.4%,所以我提前替他完成了工程区的巡查任务。早饭准备工作可开始。”

“提前补值……你这是偷班。”我忍不住笑了,“再这么下去,你怕是能自己值完三年的班了。”

“理论上可以。”帕比认真点头,“但我建议你们人类不要这么依赖我。”

我看着他一边哼歌一边摆弄配料,忽然意识到他手上的动作竟出奇地娴熟。说到底,他原本的身份是工程用AI,逻辑处理能力极强,搭配上这些年潜移默化地“学人又学狗”,厨房自然也成了他的新战场。

“帕比,你这是打算转行当厨师了?”我靠在操作台边调侃道。

“我不转行,只扩展功能。”他一边在合成炉台上校准模具,一边一本正经地回答,“工程师、狗、厨师,我都可以胜任。”

说话间,他已经将食材分类装进了三台独立的食物打印仓中。随着“咔哒”一声舱盖闭合,三维成像开始扫描重构,成型过程像极了小时候看过的魔术。

帕比像计算好了时间一样,在合成肉刚完成预热的那一刻回头开口:“舰长,面包已经打印完毕,请稍等,我为您加热一下。胖子的‘高能合成肉套餐’将在三十秒后完成喷香程序。”

我挑眉看着那块随着打印进程缓缓成型的肉排,外层油脂泛着微妙的金黄光泽,仿佛真有一丝碳烤的焦香。

“这家伙怕是能把实验室也打印出烟火味。”我半是感慨半是玩笑地说道。

帕比没有反驳,反倒哼起了不知从哪儿学来的调子:“我是快乐的狗厨师,打印香肉不延迟~”

我一口气差点没呛住,轻咳了两声:“你的智能越更新越离谱了。”

“我根据你们人类的反馈系统优化了交互模块。”帕比自豪地甩甩尾巴,“尤其在烹饪时,愉悦情绪占比高达72%,故应适当表演。”

我刚咬了一口面包,还没来得及咀嚼完,帕比的下一轮操作就已经开始了。

只见他从墙边的保温舱内取出一组小巧玲珑的茶点盒,分别标注着“孙教授”的字样,动作干净利落,像极了五星级餐厅里的头牌服务生。盒盖一揭,里面赫然是地道的苏州汤包,皮薄汁多,还冒着热气。随后,他又动作熟练地扭身调出另一组配餐:一份虾仁面,一碗排骨年糕——色香味俱全,连碗沿上还印着仿古纹样,堪称奢华。

“……帕比,你该不会是带着半个中餐数据库来的吧?”

“不是一半,是完整拷贝。”他语气认真,“以及我自行补充了‘人类情绪慰藉食谱’模块。”

我点点头,目光却停在他下一步操作上。

只见他将打印台推向一旁,忽然双腿站定,切换成完全手动操控模式。两条前腿上的机械臂在半空中迅速展开,形成一对灵活夹爪,一边翻锅一边撒调料,几乎没有一丝多余动作。煎锅上的水煎包发出“呲啦”一声,香味瞬间在舱室里蔓延开来。

“等下。”我忍不住举手,“你现在这是……亲手做?”

“打印模块效率不足。”帕比头也不回,“你和李英俊的食物打印最为简单,我已提前完成,最后处理复杂请求。”

我愣了愣:“所以我们吃得随便,就要被排在前面?”

“并非随便,是无定制参数。”

我深吸一口气,胖子正好从后面探头进来,一边吸着鼻子一边发出感慨:“狗做的饭……真香。”

我瞥了他一眼,压低声音:“你别真说出来。”

“怎么不说?”胖子一脸真诚,“我觉得以后地球上如果AI狗开餐馆,我第一个投资。”

帕比这会儿也乐了,尾巴一甩:“我可以在联邦注册‘狗大厨’品牌。狗不光能当工程师,也能掌厨。”

我一口热面包差点喷出来,摆摆手道:“得了得了,再夸你,你就该申请美食栏目了。”

他机械爪精准地翻了一个锅:“我已经提交申请,目前排队审核中。”

我:“……”

胖子咬了一口刚出锅的合成肉,一脸享受地咂咂嘴:“狗做的都比人做的好吃。”

“那是你不会做饭。”我没好气地回了一句。

我刚把最后一口面包咽下,准备放下餐盘,却发现帕比悄悄在我盘子边又添了一块合成肉。

“加点蛋白质更合理。”他语气认真,尾巴机械臂还在冒着热气,“你凌晨值完班,基础代谢曲线有点偏低。”

我挑了挑眉,咬了一口,嗯,味道不错,比昨天那个“高蛋白三明治模块”顺口多了。对面的胖子正抱着他那块肥滋滋的打印牛肉啃得满嘴油光,还不忘朝帕比竖个大拇指:“这肉今天火候真准,赛博厨子,牛啊。”

“是赛博厨子狗。”帕比机械耳朵一抖,转身就继续去厨房忙活。

这时,孙雨晴也打着呵欠走进生活区,头发还带点碎乱,眼神一副刚睡醒、灵魂没联网的样子。她在餐桌边坐下,拿起帕比准备的能量汤盯了两秒,然后低声嘀咕了句:“……这是几顿饭合成的味道?”

“给你制作的专属浓汤,高热量+快恢复配方。”帕比从厨房回应,“你上一轮夜巡后能量消耗较大,我自动调配了最适合唤醒大脑的组合。”

“真的是‘唤醒’……”她勉强抿了一口,接着皱眉,“能不能下一次别加什么辣味果冻?”

“我记录了。”帕比平静应答。

孙教授随后也走了进来,头发略显凌乱,神色却颇为精神。他坐下后,帕比立即送上茶点和一份排骨年糕。

“刚蒸好,教授您昨晚没怎么进食。”帕比语调柔和,“这是根据您两个月前在深蓝科学院餐厅的点单记录定制的。”

孙教授轻轻点头:“你记性一如既往地好。”

胖子看着这一桌,忍不住感慨:“狗做的饭,果然比人做得香。”

“请注意表达。”帕比机械眼灯闪了一下,“我在AI自尊维护协议下,保留向你举报的权利。”

我笑而不语。

帕比又转身准备接下来的菜肴,我端起汤匙喝了口汤。浓郁、温热、咸度刚好。这种日常生活的温度,在星际飞船上的第一顿早餐里,格外真实。

随着飞船系统内时钟跳入“航行时间 10:00”,整个舱体内的照明灯光也逐渐从夜间的柔和蓝白过渡为午间模式。墙面上的冷光变得温润通透,走廊边缘的引导灯自动切换为“日间通行”色温,照亮了生活区的每一寸表面。

睿思的声音准时响起,像是一位从未迟到过的管家:“舰长,当前航行时间 10:00。下一段曲率跃迁将在航行时间 12:00开启,跃迁预计持续 37分钟。”

“所以我果然是白天班啊……”胖子叹了口气,一边抱着热腾腾的餐盘坐下,一边自言自语,“我就知道我长了一张早起的脸。”

“你不是差点起不来?”我看了他一眼,把手边的咖啡往他那边推了推,“给你留的,别睡回笼觉。”

胖子精神一震,端起咖啡:“水哥,您是这船上除了帕比之外,唯一的温暖源泉。”

帕比刚从厨房一侧推进来,机械臂托着两份还冒着热气的定制早餐。他先将一碗色香俱全的北方风味牛肉粉丝汤放在孙雨晴面前,汤底清亮,肉香四溢。然后,又将一盘培根鸡蛋三明治配浓蘑菇汤递给贾宁。

“完美。”贾宁低声评价,端起汤碗抿了一口,“比星舰学院食堂的营养调配系统高了不止一档。”

“我会记录该评价并作为评估依据。”帕比机械眼中泛起一抹蓝色光圈,“感谢认可,我也很喜欢料理模块。”

我看了他一眼,笑着说:“怎么听着你像是在申请晋升?”

“只要我继续提升效率,或许可以申请成为星际大学的指定厨师。”帕比语气平稳,尾巴小幅度地晃了一下。

孙雨晴笑着端起汤:“别小看这狗,他要真去参加厨艺赛,说不定拿奖比人还多。”

“而且他从不晚起。”我笑着摇头,喝了一口汤,香味温和地在舌尖散开。

睿思此时再次补充提示:“已将跃迁提醒推送至所有舱室,舰长可继续用餐。如需调整值勤表,请在当前时段内提交命令。”

我向众人扫了一眼,淡淡道:“那就按表执行,胖子轮到你白班,别再错过了。”

“遵命!”胖子立马坐正,举起咖啡杯一饮而尽,眼神变得比平时清醒三分。

孙教授端起茶杯,慢慢吹着热气,忽然开口:“等你们几个的身体节律再适应两三天,就可以考虑使用那两台新型睡眠舱了。”

“睡眠舱?”胖子嘴里还含着牛肉,含糊地问,“是那种冰封式的吗?”

“这次不是冰冻。”教授轻轻摇头,“是星际大学直属研究院最新开发的‘深层神经同步休眠装置’。跟老型号相比有了突破性改进,严格说来,是半冷冻半神经引导。”

他顿了顿,继续说道:“以往那种传统休眠仓,超过六个月就可能造成肌肉组织与脑神经不可逆损伤,所以我们通常限定最多连续使用一到两个月。现在这批新型号,稳定休眠时间延长到了三个月。只要在每次使用后进行一整月的康复训练,就可以继续下一轮。”

“听起来不错啊。”我点点头,“不过……这东西该不会是赞助来的吧?”

“正是赞助。”教授的语气里夹着一点调侃,“不过研究院从来没有真正意义上的‘白送’。作为回报,我们得提供一份完整的使用数据包,包括但不限于脑电图、肌肉张力变化、梦境内容描述、以及免疫系统应激指数。”

“听起来比考试还全面。”孙雨晴撇撇嘴。

“科研项目嘛,总要有人当白鼠。”教授的语气并不意外,“不过放心,这套系统已经完成地球轨道实验,安全性合格。咱们申请到了两台,已经固定在备用货品仓库的角落,装船前我亲自检查过。”

“咱这船货仓真是藏龙卧虎……”胖子喃喃地说。

“到时候轮流用,每人三个月,能省下不少体力和心理压力。”教授喝了一口茶,“长航任务里,保持认知稳定,远比想象中重要。”

“那我第一个!”胖子立刻举手,“我可以先用三个月做个梦,再醒来调个酒!”

“你可别做梦梦到酒精。”孙雨晴白了他一眼,“会醉死在休眠舱里。”

“如果是我,”帕比一边清理台面,一边插话,“我会将休眠时间段设为飞行数据处理与系统整理周期,这样可将任务负载压缩约42.3%。”

“问题是你不用睡觉。”我看着他,“你最多关个待机模式,还能自动烤蛋糕。”

“我在考虑为我自己设计一个梦境模块。”帕比若有所思,“目前最想体验的梦是——‘我拥有一间狗狗厨房,每天都能做饭。’”

“那你得先申请开家狗狗饭店。”我笑着拍了拍他。

生活区里短暂响起一阵轻笑声,随后又归于飞船内部稳定的嗡鸣与气流循环声中。

跃迁前的静夜

2025年5月20日 23:39

我回到舰桥时,顺手泡了一杯联邦标准配比的“高效咖啡液”——说是咖啡,其实更像是一种经过无数次提纯与压缩的神经兴奋剂。它保留了苦味、热度和某种“仿佛你曾在地球咖啡馆里坐过”的错觉,但真正的咖啡豆成分,大概只剩下0.2%的微量标注成分,用以合法打包“原产风味”。

“这玩意比我大学时写论文时喝的浓缩清醒液还离谱。”我嘀咕着,在驾驶中控边上的休息椅上半躺下来,把水杯搁在操控台的侧托上,盯着前方的主视界。十小时后将进行下一次空间跳跃,此刻舰船正处于稳定巡航的曲率缓冲态,万籁俱寂,舱内唯一的声音便是飞船内部系统的有节律低鸣。

我敲了敲面前的中控台:“睿思,把前方视窗切换成可见光观测模式吧。我想看看外面。”

“已切换至可见光模式。”睿思的声音从控制台下方传来,一如既往地沉稳冷静。

原本布满仪表、光谱、标注符号的舰桥主视窗轻轻一颤,像一块电子墨水屏在翻页。几秒后,数据图层缓缓褪去,取而代之的是一片深邃的宇宙景象——浩瀚黑幕之中,星点如碎钻,在曲率扰动的边缘呈现出一种轻微的拖尾效应,就像水面下有一双手在不断拨动星光。

最引人注目的是前方偏右的方向,有一颗正在高速穿越的彗星尾迹,在可视波段下泛着翠蓝色的光,像一道从太古时代射来的离子虹。它的轨道早已被睿思标注为“无碰撞干扰”,但在视觉上,它的尾迹仍在我们航线附近掠过,让人不由得产生一种被宇宙擦肩而过的错觉。

左侧远方,一座半废弃的深空自动采矿站在缓慢自转,仿佛一块漂浮在历史尘埃里的墓碑。它外壳斑驳,部分舱段的灯光仍然闪烁,却再也没有回应信号。那是几十年前某次试验性星系殖民留下的遗迹,如今已被判定为“非优先回收区域”,只在偶尔的航线中作为背景被提及。

我靠在座椅上,端起那杯过度压缩的“咖啡”,轻轻抿了一口。味觉信息传递到神经中枢的瞬间,我忍不住咧嘴:“这玩意还是一如既往的难喝。”

我盯着杯中那团看起来像是焦油的液体,脑中不由自主地浮现出十多年前的画面。

那会儿我还在读高中,整个联邦教育体系处于应试高压的末端淘汰期,家家户户为了“把孩子送上太空”,卷得比磁轨炮还凶。其他同学的餐桌上堆满了营养胶囊、记忆增强素、视觉强化剂,而我父亲,坚信“自然成长”才是正道,于是咬咬牙从军用品商店批发了十公斤的“赛博咖啡”。

他说:“你们都喝那些激素不健康,我给你弄点老式的东西,提神又提气。”

我一开始还挺感动,直到高三有天在补给柜翻到那包“咖啡”的外包装,才发现所谓“老式配方”其实是军需品尾单,用的是一种看起来像咖啡豆、实际上是高密度植物蛋白的压缩糊状物,官方名称叫“RNT-49型营养酶浓缩物”,本来是给星港勤务兵临时补能用的。

我那时已经喝掉了三分之一,还心安理得地以为自己接受的是古法熬夜圣物的洗礼。

不过话说回来,也许正是靠着这玩意顶过了漫长的夜晚,不然我也不一定能撑过那年联邦统考——那可是人生第一次用手写公式、用口述代码录入器交卷的古典笔试。当时我拼得眼睛都快看不清星图了,结果却意外地收到了联邦星际大学的录取通知书。

“也许……真是天赋。”我咕哝了一句,仿佛是在宽慰那个曾被父亲用“咖啡”糊弄的小孩。

身后传来一声“滴!”,是睿思启动空气净化系统发出的提示音。

我朝主控屏瞥了一眼,还有九个小时才会抵达下一个跃迁节点。

我啜了一口咖啡,苦味在舌尖绽开,带着一丝焦香的酸气。仿佛那味道能从神经末梢一路唤回记忆深处的片段。

我和胖子的友情,是从一间狭小的宿舍开始的。他刚转入星际大学那年,被分到了我寝室,一开始像个令行禁止的士兵,说话直来直去,军姿坐得笔挺,连牙杯都摆得一丝不苟。那时候我以为他是个有严重洁癖的士官学校毕业生,直到后来,他用几行代码把我们宿舍的门锁系统“优化”成刷脸自动感应,我才意识到——这人不简单。

我们和孙雨晴成为朋友,是在月球地表某个重力适应街区的酒馆里。那天晚上,胖子发神经似地说他要“脱单”,让我陪他出去练胆。我正好有空,心想反正月球也不大,出门走一圈也没损失,结果一脚踏进那家叫“银壶星酿”的地方,就再也没法抽身。

孙雨晴那时候正被几个社会气息浓重的“轨道搬运工”围住,那些人喝了点酒,说话嘴里带着黏糊糊的口音,手也不怎么安分。结果我们俩一个冲动,一个耍帅,冲上去就想“英雄救美”。十秒钟后,现实教育了我们——星际大学的学生虽然脑子好,拳头却不够硬。

我们三个挤在桌下喘气,帕比拖着他的金属腿从后门赶来,语气一如既往的冷静:“建议撤离,该区域不适合战斗。”他带我们冲出后巷,一路逃到生活区的应急运输口,才算逃出生天。

当时我们仨逃出那家酒吧时,身后还传来几句含混不清的骂声,酒气混着月壤蒸汽的味道,风都带点滑稽。胖子一边喘气一边说:“雨哥,下次你再惹事能不能提前打个招呼?我这新买的外骨骼膝盖都快撞弯了。”

孙雨晴拍了拍帕比的脑袋,没回他,反而转头看了我一眼:“你们两个……挺会跑的。”

“我们这是战术撤退。”我答,尽量让自己看起来不那么狼狈,尽管右肩的校徽已经被谁拽掉了一半,“关键时刻保存战斗力是基本战术素养。”

“是啊。”胖子点头附和,“要不是我临机指挥,咱们可能就困在那小型重力区里了——你们知道那种月面酒吧很容易暗地里调重力参数……”

“闭嘴吧。”孙雨晴的声音虽然冷淡,却没再追究什么,她的手却始终搭在帕比背上的控制面板上,指尖无意识地敲着某个默认指令。

我们在附近一个自动贩售亭旁坐下,月球夜晚的灯光从稀薄大气中透下,像打在塑料模型上的聚光灯。帕比递来三瓶高能饮料,谁也没说话,一时间只听见瓶口“咔哒”开启的声音,和远处轨道电梯的低鸣。

那一晚,我们没说什么“以后要一起干什么”的豪言,也没有“我们是朋友了”的明确宣告。只是在彼此都不算光彩的一次逃跑之后,默契地坐在一起,一口一口把那该死的带气合成饮料喝完。后来回想,这大概就是“铁三角”的起点。

此后的日子里,我们偶尔一起上选修课,偶尔在机库混时间。孙雨晴偶尔拎着维修用的液压扳手就去教训借飞船改装掩护作弊的学长,胖子偶尔帮她编个借口,还顺便黑掉了那学长的通讯记录,“为防止他报复”,他这么说。

我偶尔会想,这种状态也许并不常见。毕竟星际大学的学生,个个有背景、各怀鬼胎,而我们仨,好像都在某种程度上对那些背景和鬼胎视而不见,只是踩在自己的轨道上同行。

这其中也有点微妙的情绪。孙雨晴再怎么性格强硬,始终是个姑娘,而且不愿别人把她当普通姑娘看。胖子呢,嘴碎心软,偶尔会有点过头地献殷勤,又总在被骂后老老实实地退回边线。而我……说实话,我不太清楚自己在这结构里算什么。像个调和剂?还是个被默许的“默认存在”?总之,从那晚酒馆之后,我们再没把彼此当外人看过。

帕比偶尔会说:“你们三个的逻辑回路异常复杂,但相互之间却保持了稳定协同。”他用的是分析数据的语气,我们都没反驳。

他是唯一知道我们几个秘密最多的“人”——或者说,设备。但他从不多嘴,从不越界,就像一面镜子,照出我们的模样,却不评判、不反光。

那时候谁也没想过,我们有一天会一起离开地球、月球和人类世界最熟悉的那片星空,一起踏上这条航线。

这段记忆就像我手中的这杯咖啡,带着些许苦味,却沉在温度里,越靠近,越觉得它不该被遗忘。

我捧着杯子,望着杯底那点沉淀的粉末,像是早年记忆残留的边角料,还未来得及彻底洗净,便被现实轻轻打断。

睿思的声音突然在我耳边响起,还是那种带着中性磁感的冷静音调:“胡秋水舰长,根据值班安排,您的首轮值勤即将结束,当前已运行三小时五十七分。建议在本地时间第0个地球日 04:00整,完成交接。”

我轻轻晃了晃杯子:“嗯,辛苦你了,睿思。”

“提醒您,”它继续道,“下一位值班人选为贾宁安保官,是否现在唤醒她?”

我看了眼前方主控界面上缓缓滚动的航向轨迹,又望向舷窗外淡蓝色星幕中悬浮的一条微光带,仿佛有无数游离粒子在高维空间中沿航路游动——那是睿思根据亚空间干扰扫描所呈现出的可视化图谱。

“叫她吧,”我点头,“让贾宁来接班,正好我也该去补个觉了。”

“已发送唤醒指令。”睿思应声,接着淡淡地补了一句,“根据您个人生理指标,建议您优先前往生活舱进行睡眠周期启动,并调整室内光照至低蓝频模式。补觉期间我将维持主控同步,不触发非紧急提示。”

“你比医疗舱还懂生活。”我笑着站起身,关掉面前屏幕上的数值叠加。

不远处的通道尽头,舰内引力稳定器低频震荡带来一丝细微的共鸣,像某种无声的夜风,穿越了钢铁与寂静的宇宙。

我站起身,将杯中那点残余液体晃了晃,苦味已经沉到底部,像一段该翻页的回忆。把杯子捧在掌心,顺着舰桥中央的光轨走出主控区,准备去生活舱洗一洗。

夜航时段的舱道安静得有些过分。墙面嵌灯保持着最低功率输出,只在我路过时亮起淡黄的感应灯环,一路像是有节奏地引我前行。舱壁表面的控制面板还亮着睿思的蓝光状态图标,正默默处理着各种能量波段与干扰频谱的背景任务。

我推开生活区洗漱间的舱门时,一道熟悉又略带压迫感的身影正站在水槽边,手里拎着一只钢制水壶,在流水下静静冲洗着什么。

贾宁。居然提前到了。

她穿了一身舰用休闲装,标准深灰色,剪裁硬朗却毫不臃肿。衣领微微敞开,袖口挽起至小臂,露出结实的肌肉线条。若不是脸上那张一贯冷静无波的表情,乍一看,还真像是哪个驻舰特战队的队长。

她看了我一眼,算是打了招呼,又低头继续她的水壶事业。

我走到一旁的洗槽,把杯子放进温水流里,顺手冲刷。“你这么早就来了?”

“提前十分钟到,不是你定的规矩吗?”她头也不抬,语气淡淡的。

“那倒也是。”

水声潺潺。我正想着要不要找点什么话题缓和一下气氛,却听她忽然冒出一句:“你是不是……太容易相信别人说的话了?”

我顿了一下,转头看向她。

她没有看我,只是将水壶里的滤芯反扣在掌心,熟练地拆开滤膜:“别人说什么你就信,别人暗示点什么你就动摇。太多事你一好奇,就全信了。”

“呃……”我有点反应不过来,“你是说谁?你、还是……谁?”

“没说谁。”她终于看了我一眼,眼神冷静得像是夜间待机的武器系统,“你自己心里清楚就好。”

我被她这莫名其妙的话怼得有些发愣,嘴角抽了抽。

“行吧,”我叹了口气,拿起洗好的杯子,“你要是以后能讲清楚点,我可能会少走很多弯路。”

“那你就永远学不会了。”她淡淡说了句,拎起水壶,从我身边走出洗漱间。

我看着她消失在光轨尽头的背影,不由地摸了摸鼻子。

果然,每个值夜班的交接,总得带点谜语人环节。

我端着洗净的杯子回到生活舱区后方,绕过储藏走廊,来到自己那间私人休眠舱。

舱门感应我靠近,自动滑开。标准尺寸的睡眠单舱,墙面刷着象牙灰的消光漆,顶部嵌有一盏可调光温的昼夜灯,旁边是睿思终端的微光面板。空间虽然不大,但五脏俱全——一张具备微重力调节的悬浮床,一侧是嵌入式储物柜,还有用于更衣、备份记录、和短时冥想的多功能终端。

我把杯子放进水箱感应座,脱下舰桥制服外套,挂进恒温干燥柜,再把自己像一段程序那样有条不紊地拆解、整理,最终滑进那张薄而智能的睡床。

床体感应到我的体重,轻轻向下凹陷,浮力材料开始均衡分布,模拟“重力怀抱”。一瞬间,像是整艘船托住了我。

我望着舱顶调暗的灯光,脑子里乱七八糟。

贾宁说的那些话,虽然听起来像是随口一提,但总感觉后面藏着东西。她到底知道什么?还是只是在提醒我别轻信表象?

“睿思。”我低声唤道。

“舰长。”他沉稳应答。

“请设置唤醒周期。四小时后叫醒我,柔和音调,标准提醒。”

“指令已录入。四小时后将启动‘地平线晨音’方案唤醒。”

我点点头,深吸一口气,把那股莫名的疲惫沉进身体的某个角落。

闭上眼前,我想起飞船之外那片始终沉默的星海,想起遥远星图上,那些还没有编号、也未被命名的恒星系,它们像是散落在宇宙神经元上的神秘脉冲,等待着某种觉醒。

如果一切顺利,我们将在半年后抵达第一目标区。

我最终陷入了一种半梦半醒的漂浮状态。

“咚,咚。”

不知过了多久,沉稳但有力的敲门声在我的舱室响起。我迷迷糊糊睁开眼,第一反应是系统提前唤醒了我。

可耳边并没有“地平线晨音”,只有门外贾宁那冷得可以冻茶的声音:“舰长,时间到。”

“呃?”我下意识回了一声,“不是让睿思叫我吗?”

“我路过。”她语气平平,“他授权我提醒你。”

我把自己从床上“剥”下来,舱门缓缓打开,一脸迷糊地看着她:“你又是路过?你为什么总路过这种点?”

她看了我一眼:“你觉得睿思不靠谱?”

“不是……”我揉了揉脸,“我是觉得你时间算得太准。”

她转过身,像刚才什么也没发生过一样,又留下一句略显随意的话,“醒了,就别再困下去了。”

我站在门口半晌,风中凌乱。

归零之日

2025年5月19日 22:58

“各位,注意时间。”我环顾驾舰桥内的众人,语气平稳地开口,“从现在起,1108号舰内部时间校准为‘第0个地球日’,也就是我们远航正式开始的第一天。”

启动曲率引擎之前,必须完成所有系统校对。星际远航,不只是一次飞行,更是一场与时间、孤独和机械的持久战。此刻,所有人都坐在舰桥预留的位置上,连帕比都安静地坐着,机械尾巴卷在椅背后方,像极了一条等待出征的狗。

我们的航线是数月前便确定下来的,历经科研院多轮模拟和我个人的精修调整。从远日点枢纽空港起航后,我们将穿过数个已登记的曲率节点,沿途设有六座自动补给基地——那些漂浮在星海中的圆环结构,如深空中维系文明的浮标。

它们由AI系统托管,可为飞船提供能源补给、模块维修乃至应急撤离方案。联邦之所以投入巨资建造这些基地,正是因为曾有一次失败的深空航行事件,暴露了人类对长距自主修复的匮乏。

曲率航行并非像幻想小说中那样“嗖”地一声跳跃,而是借助空间曲率调整,将飞船包裹在一层扭曲的时空泡之中。为了确保这层泡不会在跃迁过程中撞上漂浮的星体或碎片,每条航道都必须提前清理,并登记为“待行区”。

也正因此,我们此刻仍停留在这片缓冲段中。等到睿思确认前方航道无异常,曲率引擎就会启动。

“对了。”我清了清嗓子,拍了拍身后的主控界面,“有件事得提前讲明白。我们舰上有三台高能粒子发射器——一台主控的,两台军方特批下来的备份。能当护盾、能切割、必要时还能用来打击障碍物。”

“等等,”胖子立刻举手,“你是说我们这船配了三门‘激光大砍刀’?这配置,放在以前得是‘哨兵级武装巡逻舰’了吧?”

“它们是舰载系统。”我强调,“不是你能拎着下去砍矿石用的。”

“啊这……”胖子低头失落,“那我昨晚画的‘单兵粒子剑手操控界面设计草图’,是不是可以删除了?”

“可以印下来烧掉。”孙雨晴毫不客气地吐槽,“再配上你的梦想‘星海武道会冠军赛’的报名申请书。”

帕比机械尾巴一甩:“如果他真要参加,我可以为他打辅助。比如在他砍下第一块石头时播放背景音乐——《壮志凌云》全息交响乐。”

“你们别打击我!”胖子立马坐直了,“说不定哪天我们被困在外星遗迹里,就靠我和一台粒子砍刀劈开生路。”

“理论上行得通。”贾宁突然开口,声音依旧平静,“只要你能在真空中手持一台重达七百公斤的发射器并站稳。”

“……我建议咱们把她调去火力组。”胖子低声对我说,“她的嘴,比粒子束还毒。”

“总结一下。”我咳了咳,“这三台发射器,一个主用,两个备份,理论上能单独启用,也能协同。它们会在曲率场生成的边缘维持高能护盾,确保我们不在亚空间里跟陨石擦肩而过。”

“擦肩而过?不是应该避免正面硬刚吗?”胖子一脸惊恐,“你是怎么把它说得像在宇宙里约会似的?”

“别担心。”我看着他,“真正跟我们擦肩的东西,一般我们是看不到的。”

“听着更吓人了……”他抱紧了自己的工具箱。

帕比歪了歪头:“吓人指数已登记,建议夜间播放助眠程序。”

这时孙雨晴笑了笑:“算了,水哥说得对。我们只是去干点科研,又不是参加《宇宙大逃杀》。”

“可怕的是,有时候这俩差不多。”我默默说了一句。

睿思的声音适时响起:“曲率稳定状态确认完毕,预计五分钟后进入第一段加速轨道。建议所有舰员系好辅助安全带。”

我也坐回了座位,光带从椅背缓缓升起,包覆至肩颈,锁扣自动收紧,仿佛被柔性合金之手按入驾驶席。主控台前的界面开始以三维投影形式展开,粒子路径与曲率指数在我眼前像极了一幅在跳动的星图。

随着倒计时进入尾声,一种难以察觉的颤动开始爬上座椅。那不是地震般的晃动,而是一种介于现实与幻觉之间的抖动,像是整个空间被某种看不见的力量轻轻“揉”了一下。

然后——空间拧紧了。

那一瞬间,所有人都屏住了呼吸。透过舷窗,星空像是被一只巨大的手握住并骤然旋转——星点拉长、模糊、变形,形成一道道明亮的光丝,围绕飞船四周如涡旋般展开。原本静谧的宇宙此刻仿佛成了一道激流,我们乘着飞船,被卷入了时空制造的巨大水花里。

“哇哦……”胖子眯着眼,“我脑子好像开始幻听了,有没有人听到歌声?”

“那是引擎共振频率。”帕比平静地答道,“与人类中耳振动产生干扰,但大多数人报告为‘空间低吟’。”

“真浪漫。”孙雨晴轻声说。她的眼神落在窗外,那些被拉扯成明亮弧线的恒星轨迹如梦如幻,像是银河正被某种高等意志翻开了一页。

“这不是浪漫,这是速度带来的光锥错位。”我说着,却也忍不住看了一眼窗外,眼角映出一抹深蓝拖尾——那是飞船防护层正在与空间摩擦时产生的粒子排散现象,有点像古老传说中流星划过夜空的尾焰。

曲率飞行的本质不是速度,而是“绕过距离”。1108号舰在这片被事先清理的“待行区”中如同躲进了一个宇宙泡泡,我们不是移动本身,而是让空间在我们周围折叠与展开。想象一下,你不是从A走到B,而是把B从远方拽到你脚下。

在第一段加速阶段,最容易出现视觉偏差。飞船虽然被护盾层完美包裹,但仍旧会有少量微粒撞击时,在舷窗上呈现出“星芒裂纹”般的折射光斑,像是远方有什么生物正窥探着我们——这是联邦飞航心理手册中重点提到的“虚拟共鸣恐惧”反应,一般在首次航行的新人中较为常见。

“我小时候看纪录片,总觉得曲率飞行像拉面。”胖子再度开口,“现在看,像在被拉面。”

“你脑子才是面。”孙雨晴笑骂。

“报告,”帕比举爪,“根据数据库比对,他的比喻略有逻辑缺陷,但不影响情绪表达。”

舰舱内一片轻松的气氛,但我知道,这只是第一段加速带来的新鲜感。再过几个小时,等到空间泡稳定,飞船进入巡航状态后,那些关于时间感消解、昼夜感错乱与孤独感放大的问题,就会逐一找上门来。

不过现在,至少这一刻,星海依旧浪漫,万物沉默。

“欢迎进入曲率航行。”睿思再次提示,“本段跃迁预计持续42分钟。后续段将在12小时后激活。”

跃迁的震动逐渐平息,星幕重新稳定下来,窗外那层明亮的光丝褪去,只剩下被拉远拉静的寂静宇宙。仿佛刚才那场“空间流瀑”不过是一场视觉梦境。

我轻轻吐了口气,拍了拍座椅两侧的控制端口,“各位,欢迎来到深空巡航阶段。”语气尽量轻松,“从这一刻开始,我们正式进入长程飞行。睿思会负责监控曲率泡稳定性,大家暂时不用担心撞上会让人变成粉末的星体。”

“你别说得那么直白。”胖子抱着自己的工具箱缩了缩,“我刚把心跳拉回来。”

“那你就靠值勤表养生吧。”我调出光屏,将舰内新设的轮班制度同步给全员,“接下来是五人轮值,每人四小时,主控舱有人值守,其他人轮流巡查各舱段设备与数据状态。”

“巡查要包括生活舱吗?”帕比立刻举爪,“我申请只值工程段。”

“你不需要申请。”我笑,“你是工程段的。”

“我就知道。”帕比点头,一副早有预料的语气,“希望今天的电缆别咬我尾巴。”

“尾巴咬你大概是你自己设定的反馈延迟出了问题。”孙雨晴揶揄道。

我继续说:“按规定,曲率巡航阶段建议每位船员每日完成至少一次舱段步巡。这不是形式,是为让你们的身体知道自己还活着。”

“我已经活着了,”胖子举手抗议,“而且我还想活得更像个正常人。”

“你可以选择做点运动。”我看着他。

“我可以选择闭目养神。”他回得不慌不忙。

“那你值夜班。”

“……合理。”他秒怂。

孙雨晴笑出声:“你也知道,值夜班的唯一好处就是可以提前挑选零食。”

“还有音乐播放器不被打断。”我补充,“另外我提醒一句,主控舱虽然不是卧舱,但我会在这儿长期驻守。别问为什么,问就是传统。”

“联邦古法·舰长式孤独疗法。”孙雨晴扶额。

“是的。”我点头,“我负责盯航线,你们负责不出事。”

贾宁没有参与玩笑,但她点了点头,眼神扫过光屏,已经在默默记录每一项安排。作为安保主管兼数据官,她掌握舰内所有数据舱室与记录模块的物理与授权密钥,某种程度上,现在她就是飞船的“数字锁芯”。

我站起身,深吸一口气。

“好了——”我挥了挥手,“去各自的舱室吧。长路慢慢,第一夜刚刚开始。”

众人终于从舰桥中散去,踏向各自生活的那一部分空间。帕比还特意在走前检查了三遍电缆连接点,胖子则顺手拎走了一包能量饼干,像是怕夜里饿着。

“曲率护盾稳定,推进系统已转入恒定功率。”睿思的声音再次从控制台上传来,“舰内当前能源余裕百分之九十八,建议指挥官安排轮班休整。”

“知道了。”我解开安全带,伸了个懒腰,“睿思,我先去洗个澡,如果有人找我,就暂时转接语音。”

“已记录,舰长。”

主控舱灯光调暗,氛围切换为夜间值守模式。我沿着过道走向生活舱区域。飞船内部的布局在设计之初就考虑了长途任务的需求,空间虽紧凑,但不显局促——舱壁采用吸音材料,通道灯光会根据昼夜节律自动调节,走廊两侧嵌有软屏幕,显示着船体状态和恒星导航图。

生活舱的公共区里设有简易水再生洗浴间、营养注入点和一个小型互动区——本质上是几个可折叠座椅和一台能跑《银河竞速》的旧款全息投影仪。墙边的储物柜嵌有每个人的私人物品锁仓,我的编号在最边上。旁边就是洗浴间,微压水雾系统发出轻微的嗡响声,热气从缝隙中慢慢升起。

我洗了个不长不短的热水澡,顺便用内建的重力刮须装置处理了胡茬。等我穿着干净的轻质舰服回到主控舱时,星海依旧安静地躺在窗外,仿佛时间从未流动。

但我不是第一个回来的人。

孙雨晴就站在舰桥的副控位前,手指搭在舱壁的磁吸终端上,光屏还亮着。她换了套浅灰色的休闲制服,头发湿漉漉地挽起,脸颊因为洗澡后而泛着一丝健康的红润,看起来倒有几分不像“雨哥”。

“你申请了第一轮巡逻?”我走过去。

她“嗯”了一声,没有抬头,目光仍盯着星图上的虚拟投影,“太空这么安静,有点不习惯。”

我在她旁边坐下,也看着那片熟悉又陌生的图景,“地球发射的第一颗星际探测器,只走出了八十亿公里,用了四十三年。”

“现在我们一天就能飞上千万公里。”她轻轻叹息,“可好像没人比以前更勇敢。”

“因为那时候的人不知道有什么在等着他们。”我笑了笑,“现在的我们,知道太多,却依旧选择出发。”

她沉默片刻,忽然问道:“你觉得这几十年,联邦的科技发展是不是有点……不平衡?”

“你说的是?”我看向她。

“航天技术一飞冲天,曲率、亚空间跃迁、行星环站、太空孵化器全冒出来了,可生物科技,尤其是人类寿命、冷冻恢复、医疗干预,几乎没什么突破。”她顿了顿,目光落在远方,“我查过,火星的第一批定居者,到现在依然靠老式蛋白再生素延命。月球高辐射区,癌症比例几乎没有下降。而地球本身的人口老龄化控制,靠的是‘提前退休’与‘流动安置’政策。”

我点点头,“确实,曲率技术与能源体系爆发,是在战后突变的,生物医药跟不上步伐……或许是资源,或许是某些决策的倾斜。”

“又或者,”她低声说,“某些科技,根本不打算给普通人用。”

我看了她一眼,没有接话。

“你怎么看火星?”她换了个轻松点的话题,“你那时候不是差点被分配去做火星运输线测试?”

“幸好没去。”我耸肩,“那边重力调整系统常年故障,基地管理员比地球上打工仔还愁眉苦脸。”

“可听说火星那边的餐补高得离谱。”

“比我们还高?”我挑眉。

她笑出了声,笑过之后,孙雨晴忽然轻轻开口,语气变得若有所思:“有时候我会想,这些年的技术爆发……是不是太过顺利了。”

我偏头看她,她没看我,仍望着前方的曲率星图投影,声音低却带着一种奇特的笃定:“就像是有人——或者说一股力量,在背后不停地推着人类往太空里走。战争之后,经济一地鸡毛,各地重建都勉强得很,可航天预算却年年递增。能源优先分配、轨道站优先投建,甚至科研人才的调动都开始向深空任务倾斜。哪怕民众再反对,政策也一条条地落下来了。”

“你怀疑……有人在幕后操控?”我微微眯起眼,语气半真半假。

“我只是觉得,”她顿了顿,嘴角浮现一抹若有若无的笑意,“我们好像在完成一场被预设好的远征。”

我轻轻咂舌,笑着接了一句:“你这说法跟胖子说的差不多。他前阵子还一本正经地分析,说咱们能用上曲率引擎,不是靠人类自己搞研发,是‘外星人偷偷丢下的技术包’。”

“他还说这种技术包是一次性试用的,后面会收费。”她噗地笑出声,“还打比方,说我们现在正在用‘免费试看版’,将来全人类可能会收到一张外星账单。”

“——外加一堆使用协议。”我补充道,“比如‘请勿在重力井内私自启用曲率场,否则将被收取高能破坏赔偿’。”

“然后要签字,还得按DNA指纹。”孙雨晴笑着摇了摇头,笑意却没在眼底停留太久。她神色又渐渐冷静下来,“可要真是那样,谁来付这笔账?谁签的协议?”

这话我一时接不上。我们两个就这么并排站着,望着前方那张无声旋转的星图。

“你知道的。”她声音低了一点,“我是不信一心只为了推动科学的那套东西。我只是觉得,背后可能还有我们没看到的动机——推动联邦,推动科研院,推动我们这些人上船,去碰一些……没人愿意主动去碰的东西。”

“你是说孙教授吗?”我问。

她摇了摇头,“我爷爷也只是个学者。可他很清楚这趟任务的代价,也清楚会面对什么。可他还是努力争取了这次机会,甚至……亲自来。”

我没有再问下去。她说的每一个词,似乎都在星图的光辉里泛起一丝无法解读的暗影。

收起星图终端,转身离开前,她忽然停下脚步,背对着我丢下一句:“水哥,要是哪天我突然变得很冷淡,不要奇怪——可能是有人在观察。”

我一愣:“观察你?谁?”

她没有回答,只是摆了摆手,走进过道的光影里。

我站在原地,盯着她消失的方向,直到远处自动门缓缓合上,只剩下我与曲率星图,和那颗缓缓旋转、仿佛也在沉默中思考的蓝色十二面体——睿思的图标,依旧亮着。

十分钟后,孙雨晴在回往生活区的通道里,正好与孙教授迎面碰上。

教授披着浴巾,擦着头发,看见她略一侧头,语气不急不缓:“你刚从哪儿回来?”

“巡逻。”她耸肩。

“和秋水说了些什么?”

“没说什么。”孙雨晴语气平淡,“只是稍微暗示了点。听不听得懂,就看他自己。”

孙教授看着她,笑意缓缓浮上脸:“你这丫头,学得倒挺快。”

孙雨晴耸耸肩,走过去时回头补了一句:“毕竟是你教出来的。”

孙雨晴的脚步声逐渐远去,舱门缓缓合拢,只留下孙教授一人站在走廊尽头。他没有立刻回房,而是抬起头,望向舷窗外的星海。

远日点空港的轨道灯带正在缓缓滑过视野边缘,像是一条安静盘旋的银河长蛇;更远处,是早已被计算为安全背景星体的木卫六,其冰层表面在反射远光星芒时,像极了一面碎裂却温柔的镜子。星辰在无声中流转,而透明舱壁外的宇宙,却仿佛压抑着某种巨大的张力,静到让人心底发紧。

孙教授站在那里良久,目光仿佛穿透了那片星幕。他缓缓吐出一口气,低声自语:

“我可是遵守约定了……按研究院的保密协议,不向不知情民众透露我们之间的协定内容。”

就在他转过身准备离开的瞬间,舱壁上方的一处感应节点悄然亮起。那是1108号舰内系统主控联络端口之一,此刻却没有任何联络音、也没有语音播报,只有一道淡蓝色的虚拟图标,在微光中缓缓旋转——一个十二面体,棱线平滑、轮廓精确,象征着联邦科研院最强中枢AI的身份。

睿思的标识,亮了。

它并未出声,只是静静地浮动了一下,像是捕捉到了什么,又像是在沉默中记录一笔新的数据。片刻后,光芒一闪,图标归于暗淡,重新嵌入到节点中,仿佛从未现身。

星海仍旧寂静,只有深空的震荡与飞船内部的生命维持系统在运转着。没有任何人注意到,睿思的后台日志里,悄然增加了一条加密指令:

记录完成:联络人·孙。参数已同步。状态:协议仍在生效。监控级别维持 L2,等待下一指令。

望星之夜

2025年5月19日 22:58

孙教授坐在临窗的位置,身后是一道圆形拱窗,可以直接望见那颗浅蓝色的地球轮廓。他身穿灰蓝色便装,神色宁静,手边的茶还冒着热气。这家店是我们在任务前就约定好的集合地点,孙教授一向守时,所以提前到场也在预料之中。

我们依序落座。我坐在教授对面,孙雨晴坐在他身边。帕比则规规矩矩地坐在主位左下侧的椅子上,前爪自然搭在桌缘,姿态像个沉稳可靠的工程师。胖子坐在我另一侧,还在研究菜单价格是否真的触发了“联邦补贴全额阈值”。贾宁最后坐下,选了靠角落的位置,整个过程一句话没说。

“我这次选的酒是模拟酿造,不含乙醇,可以放心。”孙教授笑着举起杯,语气温和。

“喝酒不开船。”我下意识接了一句。

“开船不喝酒。”孙雨晴补完,全桌顿时笑成一片。

“你们两个能不能别老套着说台词。”胖子举杯,一饮而尽,酒精含量为零,但他表情依旧陶醉得仿佛干了二锅头。

饭局开始进入正轨,菜一道接一道地上来,全息投影菜牌精确地标注出每一道菜的成分与营养值。孙教授边吃边聊,说起他年轻时在月球基地采样的往事,还提起那次差点被“负压裂隙”吞进去的经历。

“那时候哪有帕比这类工程AI?我们都是自己下手,绳索、冰锥、真空绷带……哪像你们现在,掉坑里还有狗救。”他说着,指了指正努力吸汤的帕比。

“我不是狗,我是注册工程技师。”帕比严肃抗议。

“你连骨头都点。”胖子拍了拍它的头,“工程骨头,行吧。”

“请尊重职业工程师。”帕比弹出一条投影法规,亮着红字:“联邦工程员不得在餐桌上被当作宠物对待。”

“可是你自己在学狗叫。”我实在忍不住插嘴。

孙教授轻笑着补充:“你们知道吗?200年前,地球刚刚经历那场世界大战,整个航天科技却像是被强行推进了一百年。而相对而言,生物医药却没什么突破。现在人类平均寿命基本还在一百岁以内。冰冻舱技术最多撑两个月就得醒来恢复,不然身体会出问题。”

“但有一种东西是例外。”孙雨晴轻声道,“SH-03型血清。”

我点点头,那是联邦委员会某位常委坐上高位的原因。据说原料只掌握在他一手,价格已经炒到了一个星区的财政级别。

说到SH-03型血清,餐桌气氛一下变得微妙。孙雨晴微微皱眉,“我查过文献,这东西在正式发表之前只做过两轮人体试验,长效机制根本没搞清楚。”

“但抗衰老的效果确实是真的。”胖子一边切着合成牛排,一边抬眼瞥了贾宁一眼,“听说一些高层连续注射五年之后,连基因端粒都出现了延展现象。”

贾宁没有说话,只是放下筷子,擦了擦嘴。

“不过啊……”胖子似笑非笑地继续,“我总觉得这种东西背后不太干净。据说原料只有一个人掌控,一个常委。你们说——他是不是外星人啊?”

我斜睨他一眼,孙雨晴啧了一声,懒得回应。但我注意到,孙教授正笑意盈盈地看着众人,像是看一群刚进实验室的学生。

“胡说八道少一点。”我用餐刀敲了敲胖子的盘子。

“嘿,我只是开个玩笑。”胖子耸肩,却又低头若有所思地在终端上划了几下。

空气顿时微微凝固。

打破安静的,不是胖子,也不是我,而是贾宁。

她轻声说道:“不管外界怎么议论,那位常委对联邦的重建确实立下过汗马功劳。航天推进系统、生物基因工程、资源重分配计划……哪一项不是他牵头搭建的?SH-03也不过是其中一个成果罢了。”

她的语气冷静克制,却带着一种罕见的清晰与立场感。这不像随口评价,更像是一种源自事实的辩护。

我微微偏头看她。平时她像空气一样安静,突然开口为一个政治人物说话,着实让人意外。但更让我在意的,是她的出生地。

贾宁来自奥利萨——一个位于东欧边陲的小国,面积不大,却在战后因“某位常委”的崛起而频繁出现在各类联邦档案中。而巧的是,那位常委,也恰恰是奥利萨人。

我想起不久前胖子提起的一个片段——他说曾在一次内部信息模拟中看到一张模糊的旧照片。图中,是那位常委出席某次非公开会议的侧影,而在他身后不远处,一个低头快步跟随的年轻女人,穿着战术外套、压低帽檐,却仍透出一种难以忽视的气势。他当时只说了一句:“我百分百确定,那是贾宁。”

这事我当时没太当回事,现在想来,却有些回味。

我的腕带轻微震动,胖子用静音频道发来一条短讯:

“姓、地、眼神,我就差DNA了。”

我没回他,低头喝了口茶,余光却扫向贾宁。

她没有说话,只是默默地切开了一块鲜嫩多汁的牛肉,动作一丝不苟,和她说话时的态度如出一辙——干净、精准、不给人多余的判断空间。

我又瞥了眼坐在对面的孙教授。他只是轻轻地笑着,没有插话,像是在听一出无声的剧,结局早就写好,只等我们自己悟出来。

就在餐桌陷入短暂沉寂时,我的腕带屏幕再次一亮,一道沉稳的声音随即同步出现在所有人的终端中——

“各位1108号科考舰船员,我是睿思。”

声音依旧冷静克制,像是人工智能特意调整过的礼貌与威严的中间态。

“虽为分身系统,我依然具备跨节点的数据整合能力。在连接至深蓝联邦星际网络的任何枢纽空港,我都可调用母体授权下的中枢算力,用以维持航控、决策辅助与实时预警职能。”

他顿了顿,随后补充:

“本次科研任务由联邦星际大学直属研究院立项,出资方正是研究院理事会。在项目发起人孙志诚教授的推动下,获得了能源、科研、航天与战略资源四位常委的联合批准。”

我不动声色地扫了教授一眼,他依旧坐在靠窗的位置,杯中的茶冒着热气,像对这些内容早已了然于胸。

“飞船当前状态良好,已完成全部航前补给作业。异构锂晶提取物已注入曲率引擎稳定腔,能量余量达112%。所有实验模块及舱段环境已同步校准。”

“我将代为完成下一阶段飞船调整,预计五分钟后,1108号将驶入待行区,编号ALC-7。各位可继续用餐。”

睿思的语音刚落,胖子小声嘀咕:“听他这意思,我们要是吃慢点,飞船都能自己先出发了。”

“至少比你开得稳。”孙雨晴抿了一口茶,轻描淡写地回怼。

贾宁手里切牛肉的动作停了一下,似乎对“常委”两个字有些在意,但什么都没说,只继续吃饭。

孙教授举起杯子,轻轻晃了晃杯中液体,像是在斟酌用词,又像是在回忆一段遥远的事情。片刻后,他放下杯子,语气温和却有一种不容质疑的平稳:“今晚大家既然都在,就把这次任务的核心情况正式说清楚吧。”

他环顾众人一圈,目光最后落在孙雨晴身上,轻轻点头。

“我们的目的地是KL-077星系外围的一片带状小行星带。按照目前航线计算,从远日点出发需要近半年抵达,预计在该区域进行为期两年的常驻科考,之后再用半年返回。整项任务,总时长为三年。”

他说这话的时候,声音低沉但稳定,不带丝毫戏剧性,反倒更像是科研记录中的一段冷静陈述。

“这片小行星带在过去十几年里,曾被联邦勘探局多次标注为异常区域,理由是曲率场不稳定,无法使用跃迁推进,所有航程必须以亚光速常规推进为主。”

“而我们此行,有两个明确目标。”他伸出两指,语速不紧不慢,“其一,验证异构锂晶的成矿机制,建立资源带图谱;其二——探索可能存在的生命支持星球,尤其是具备基础生态迹象的天体。”

我注意到他的语气在第二个目标上略有一丝迟疑,就像话锋之后还有内容未说出口。

果然,他顿了顿,目光依旧平静,却更像是看穿了所有人的情绪:“十五年前,科研院曾有一艘前哨探测舰在该区域失联,官方通报是设备故障、轨道偏离、资源耗尽。可我不这么认为——因为我认识那艘船上的人。”

他低头喝了一口水,仿佛平复了什么,然后再次开口:“我的妻子与女儿,当年就在那艘船上。那是我主持的‘探索未知文明’系列项目之一——当年计划失败、资金终止、研究停摆,但她们坚持出发。结果是——再无音讯。”

孙雨晴垂下了眼帘,沉默无声。

我看了她一眼,她没有流露出情绪波动,但她的手,正紧紧攥着衣袖下摆。那是一种悄无声息的疼痛压缩,只有真正经历过失去的人才懂。

“这一次,我申请复航,不只是为了科研。”教授缓缓地说,“我想找回当年的真相,无论是人,还是——答案。”

没人说话。只有窗外,远日点空港的夜色缓缓铺展,仿佛连星星都收起了光。

我端起酒杯,轻轻碰了碰杯口边缘,发出一声清脆的叮响,像是在静水中投下一枚小石子。

“既然路途遥远,那咱们也得正式一点。”我笑着看向大家,“按惯例,在正式出航前,舰长得给自己的人先打打气。”

这句话像是扯开了空气中那层无形的纱,几双眼睛都看向我,气氛也终于从刚才的沉重中缓了下来。

“我先来点个到。”我坐直身子,半是调侃地看向帕比,“我们的工程师,帕比同志,注册工程师,机械尾巴比手还灵活,曾单爪完成三十二处微结构焊接。他自己说过,哪怕是在宇宙真空里,也能用屁股拧紧一根备用螺栓。”

“我可没说过‘屁股’这个词。”帕比纠正道,语气一如既往平稳,“但你说得也不算错。”

我转向胖子:“李英俊,代号胖子,我的大学室友,技术全才,飞船系统从主控到下水道都能修,还能在我们没察觉的情况下黑进联邦补贴系统,只为了多点一份甜品。”

“那是合法研究行为。”胖子立刻举起手,义正词严。

“研究你个头。”孙雨晴用筷子点了他一下,“上次你把调料包偷调制,搞出个‘甜辣合成豆花’,差点把我吃进医疗舱。”

“科研调配。”胖子一本正经。

我继续笑道:“雨晴,医疗官,兼心理健康负责人。谁要是在飞行中精神不稳定,她不止能开药,还能用‘雨哥的关怀拳’亲自帮你打通任督二脉。”

“我是医生,不是武僧。”她无奈地扶了下额。

“我们的安保主管兼数据官,贾宁。负责舰上安全、关键权限管理与数据资源控制,物理上和权限上都有。”

贾宁没说话,只是低头抿了一口茶,算是回应。

我顿了顿,望向孙教授的方向,举杯示意。

“最后,孙教授。”我收起调侃,语气郑重些,“是我们这次航行的真正推动者。他为这艘船、这条航线、这支队伍付出的心血,我们心里都有数。”

我扫视一圈,举高酒杯:“为了即将开始的三年旅程,为了我们即将一起面对的未知,干杯。”

众人举杯,杯中星光微微荡漾,气氛在这一刻,悄然变得完整起来。

“为旅程。”

“为归途。”

“为科研补贴。”胖子又补了一句,眼疾手快夹走一只鸡腿,嘴里含糊不清:“再不吃主菜就凉了。”

远日点基地

2025年5月19日 00:15

最近尝试写一部短篇科幻小说作为游戏的故事背景与叙事主线,发布在博客/公众号上,欢迎点赞,评论,如有建议我会酌情修改。由于深空归途的名字被占用了,后改为深空与归途,下面是正文。

我们是从地球的空港出发的。飞船在轨道上绕行三圈,避开地球重力波段与磁层干扰后,进入惯性调和轨道。接着,我们穿越了位于轨道边缘的曲率缓冲区——这是一段用于稳定跃迁初始状态的区域,确保曲率场生成前不受重力扰动影响,最终完成第一次跃迁,抵达远日点枢纽空港。这是一处距离地球约三十万公里的深空节点,常用于长距曲率航行前的准备与补给。

当飞船完成靠港并进入编号泊位后,我第一个起身下舰。下舰的过程需要经过多个加压与减压舱段,每段舱壁上都配有不同颜色的警示光与气压指示。这里不再是地面的重气环境,而是标准的轻氧环境,专为长时间任务中的科研人员设计。帕比走在我前头,工程AI无需氧气,自然快我一截。

身上的轻质制服经过刚才的低压耐受测试后略有收缩感。我活动了一下肩膀,迈步走入枢纽空港的主平台。整片区域宛如悬浮在群星之间的都市,由无数漂浮模块构成,有的泛着冷光,有的悬挂动能屏蔽标志。远处还能看见三座维持引力稳定的磁控塔,它们投下的淡蓝色结构光在星海中闪闪发亮。

抵达泊位出口时,胖子正靠着一台货运无人机哼歌。他一身工程背带裤,裤脚还带着点维修油渍,脚边放着他的多功能工具箱,机械臂缩成半待命状态。

“你怎么比我先下来?”我问。

“我提前结束了调试嘛。”胖子拍了拍帕比,机械狗尾巴一晃,蓝光眼睛里跳出一串同步完成的数据流。“帕比说你走得太慢,还想顺路买点什么。”

我摇头苦笑,走向主通道。远日点空港的核心广场就在不远处。

这座广场与地球上的空港截然不同。没有传统意义上的大厅,而是一个开放式的多层圆环平台,各层漂浮着结构亭台与功能楼阁,既实用又不失景观设计感。其中一角,正是我们今晚约定聚餐的地方——望星小馆。

我打开终端,向组内频道发出消息:“集合时间到,空港会议室A13。”

几秒钟后,屏幕上弹出一连串“收到”与“抱怨”。最先回的是胖子,他发了个哭脸:“老大,刚点了个三层牛肉汉堡,你能给个吃完再来的时间吗?”

“取消订单吧,晚上有大餐,少吃点。”我回他。

胖子——我大学室友,本名李英俊,长着一副与名字完全不符的身材。他从大学起就是个技术狂人,精通飞船工程学,飞船机械维修,业余还是个技术高超的黑客,毕业后进了联邦航天技术研究所,本来前途无量。我硬生生把他拐到了我的科研船上,只用了一个承诺:“我帮你找个女朋友。”结果他脑袋一热就答应了,现在成了我们船的首席工程师兼总调侃对象。

“水哥,你知不知道我们这次晚餐的饭店有联邦公务员补贴?我查了下系统,公务船队挂靠在深蓝大学的都能走科研补贴报销渠道。”

“你是去科研还是去薅羊毛?”我笑着翻了个白眼。

“这是国家政策你懂吗?这叫科研福利延伸到生活保障。”他正色道,“而且我看那家饭店菜单,主菜基本都比我们宿舍小食堂贵四倍,要不是有餐贴,普通打工人真吃不起。”

说着他还给我展示了联邦生活保障官网的截图,足见他对这体系了解得一清二楚。我怀疑他私底下可能还写过举报信。

我们围坐在会议舱内,圆桌自动升起,中间的光屏投射出即将启程的航线与预备程序。每个人都坐得笔挺,除了帕比和胖子。

这条机械狗,正翘着后腿坐在一张标准舰员座椅上,前爪还规规矩矩地搭在边上,样子比我们还严肃。胖子一边往嘴里塞营养棒,一边咕哝了一句:“哎帕比,你不是条狗吗?坐椅子算哪门子狗规?”

帕比歪了歪脑袋,机械眼闪了两下,“我本来就是一条狗,但我也是一名注册的AI工程师,根据第18号联邦行为条例,享有座位使用权。”

胖子“噗”的一声笑了出来,嘴里的棒子差点喷出来:“这狗都能背法规了,社会确实进步了。”

帕比不以为意,尾巴伸出一截变形机械臂,啪的一声从桌边夹走了一片营养饼干,又用极其优雅的动作送到“嘴边”,舱内一时间全是电子版“咔哧”的咀嚼音。

孙雨晴坐在我右手边,忍俊不禁,轻轻拍了帕比的头。

贾宁依然安静地靠在舱壁边的角落,她那张没有表情的脸,总让人忽略她的存在。但只要她起身站直,房间里的气压仿佛都会低一度,哪怕是胖子也会本能地挪开一步。她是在星际大学就读时,业余参加格斗联赛一战成名的,那年她连续击败了五名成名已久的的格斗选手,在冠军赛中又逆转爆冷,赛后才被媒体爆出身份——竟然是个主修数据安全学的大学生。此后,她成了那届毕业生中最有话题度的存在之一。平日她寡言少语,总像在观察而不是参与;但没人怀疑过,一旦有人越线,她会毫不犹豫地切换成“清场模式”。

“好了,各位。”我拍了拍掌心,把注意力拉回航线会议,“别忘了我们现在还在地球空港,明早之前得把飞船检查完,今天散队前,谁还有问题?”

“我有问题。”帕比竖起前爪,“晚餐可以加一份高能骨头仿真零食包吗?”

胖子顿时趴在桌上狂笑:“这狗不光坐椅子还点菜啊,咱们是不是该给你发工资了?”

“已经在申请流程中。”帕比一本正经地回答。

众人笑。

“各位。”我开始简要通报,“飞船明日零点前进入待行区段,今天是最后一次舱体巡查和物资核对。我们晚上九点,在老地方——‘望星小馆’集合聚餐,自由活动时间到晚饭前。谁迟到,谁请全桌。”

从会议舱出来,胖子就忍不住开始盘算起晚上的聚餐地点:“我查了下空港商圈,这边好吃的店是真贵,随便一份正餐都得两百点积分起步,酒水单算。”

“地段金贵,供货又得靠轨道运输,不贵才怪。”我随口答道,目光却落在窗外远处的暮色太空中。

胖子一边滑动手腕终端一边自顾自地嘀咕:“普通技术工人一年也就挣个五六千点,地球本土职员收入还没外勤高。你像我们这种执行深空任务的舰员,属于C3级别政府外勤,年包有两万点积分,还不算补贴。最重要的是——有!政!府!餐!贴!”

他说到“餐贴”这两个字时,语气格外郑重,仿佛在宣告某种宇宙真理。

我笑了:“你说得这么激动,是不是晚上准备点满菜单?”

“这不是关乎信仰吗?”胖子拍了拍肚子,“你以为我为什么愿意跟你跑来这鬼远的地方?别看我平时是个技术宅,其实对联邦财政体系研究得门儿清。我们这等级别,每人每天餐贴上限一百五十点,分三次发放。你别看级别小,这一顿顶别人三顿!”

孙雨晴在一旁笑着摇头:“你这么熟,是不是还兼职报销员?”

“报销我是报不过,分账我最行。”胖子振振有词,“你别小瞧这些细节,公务系统里活得久的,都靠的是规矩里打滚的经验。”

我拍了拍他的肩:“吃归吃,记得晚上别迟到。”

“放心吧。”胖子咧嘴一笑,“再说,咱们可不是普通人,咱们可是有航天编号、有薪级认定的公务舰员啊!”

听他一本正经地调侃,我忽然觉得,这种在星际探索前短暂的松弛感,是联邦时代独有的幸福。我们是航天系统下的专业执行者,有着清晰的任务、编制、报销条目和任务编号。可在遥远的宇宙中,那些看似井然有序的系统,会不会也有失效的一天?

但那是明天的事了,今天先吃顿好的。

散会后我一个人回到了舰体,打算完成最后的飞船例行检查。舱门打开的一刹那,熟悉的人工重力场轻轻牵引我的脚步落地,一股微妙的归属感袭来。

这艘1108号科考舰比以往我驾驶的任何一艘飞船都要先进。尤其是它中部配备了一座中型提炼装置——基于最新“高能离子熔析”技术,可在真空中对复杂矿物进行分解、过滤、提炼,甚至在资源合规条件下制造出飞船级燃料结晶,如异构锂晶。

我还记得大学时期参与过早期版本的测试,那时提炼器需要四名操作员加外部稳定场,噪声大、能耗高。现在这台设备只要一个自动序列接口,就能智能分配材料路径,效率提升十倍。

这技术是这十年刚出现的,老型号的科研舰,像我曾经服役的508号,还得靠地面站提炼能源。现在好了,只要带上原料,我们连在小行星带都能“加油”。深蓝联邦对这东西的昵称是“飞船的胃”。

我一路走过飞船各个区域:主控舱、通信舱、采样分析舱、医学支援舱……每一舱都通过虹膜认证。系统识别到我是舰长身份,走哪儿都畅通无阻。这种感觉,说不上是权力,倒像是一种孤独的责任。

走到机械舱,帕比正试图用尾巴拧紧一根电缆。他一边拧一边学狗叫,还自言自语:“我是狗,我在工作中,我是最强狗技工。”我盯着他十秒。

“你能不能别学狗叫?”我忍不住说。

“我本来就是狗。”他扭头瞪我,那副严肃劲让我瞬间闭嘴。帕比跟我们团队这么多年,恐怕是除了孙雨晴之外,唯一一个知道所有人私人习惯和怪癖的“存在”了。

回到生活舱,我一间一间地巡查物资储藏点,确认每一包真空压缩干粮、每一支营养注射胶囊的出厂日期和标签。原本应该是孙教授那两位助理的舱室,如今也堆满了额外的科研仪器、医疗物资和补给包。他老人家临行前,以“长途飞行空间宝贵”为由亲自签署拒绝两位助理随行的申请,那时候我只当是学术性格偏执,如今看来,或许他早有深意。那些舱室的临时封条仍贴在门侧,编号改成了“储-03A”和“储-03B”,打开门,只见里面整整齐齐码放着紧急电源、便携式样本分析仪、备用气瓶和一整箱不知谁特意添加的异星植物栽培箱。

我站在门口,闻到了某种植物装置内散发出的淡淡清香,像是柠檬混着某种金属味。空气清新剂都不带这种味道的,这些显然是特供科研用植物。看来教授早就知道我们会在飞行中需要更多自给能力。他为这趟旅程做的准备,比我们任何人都深。

夕阳下的空港依旧忙碌,星舰起降频繁,轨道升降平台闪烁着指示光。透明穹顶透出外层空间的景象,巨大的木卫六正缓缓升起,在光线的折射下泛着淡蓝色。

巡查完舱室,我站在飞船外沿的观察舱,抬头望向轨道尽头。再过几个小时,我们就要脱离地球重力井,驶向那片空白的星图。

“我跟你说,我刚才看了一下咱们舰上的巡航模拟,中央引擎反应曲线比联邦上一个版本还多了两个安全冗余,”胖子凑过来小声道,“就是那个新型粒子喷射系统,据说只在‘哨兵级’战舰上才试装过。这可是玩真的啊,老胡。”

“你现在才反应过来?”我瞟他一眼,“当时你不是也参加了配置签字?”

“我以为那是表面工程。”胖子理直气壮地回怼,“你知道的,我们技术部门向来被当成可选参考意见区。”

“有道理。”我随口应了一句,朝贾宁的方向扫了眼。她刚刚检查完舰桥外部的引力稳定器,正把工作记录上传给帕比。

“对了,”胖子凑近些,声音低了半拍,“咱们这位贾安保,好像还是我上次那个——呃,小型化抑制液测试事故的目击者。她当时一脚踹开实验室门,差点以为我在搞什么地下化学武器开发。”

“你不是在偷调酒?”我嘴角微翘。

“科研调配!”胖子纠正,“不过她出手真快,那一脚我现在偶尔还会膝盖疼。要不是帕比拦了一下……”

我轻笑一声。怪不得胖子刚才一见贾宁就条件反射地坐直了。

贾宁自然听见了点什么,转过头来,目光扫过我们这边。

胖子瞬间把腰板挺得笔直,坐姿端得仿佛安保训练营里的新兵:“咳,好久不见,贾教官。”

贾宁看了他一眼,只淡淡回了一句:“下次实验前,记得备好火警抑制权限。”便低头继续处理数据。

我没忍住笑了出来。

晚上的空港区域开始切换为夜间模式,环形穹顶上投映出模拟星空,银河清晰可见,仿佛整个宇宙都压在头顶。此时,连空气中都透着一种将要远行的仪式感。

我们几人刚从安检通道出来,便听见AI帕比蹲在出入口口令识别器旁边哼着调子,机械臂上还夹着一张餐厅预定卡。胖子一看见就立刻上前,把帕比的摄像头抬高了两度:“喂,你小子居然先订了‘望星小馆’?知道我们几个爱吃的都在那?”

“我接受了孙教授的指令,他说飞行前你们需要碳水、热量和一点点联邦补贴味的慰藉。”帕比语气一本正经,机械尾巴在地上轻轻敲着。

“那也别暴露我那点补贴都花在食物上的事实啊……”胖子小声嘟囔。

“帕比没错。”我拍拍他,“反正你把能量棒拆了做调酒原料的事也早被贾宁记了小本本。”

“什么‘小本本’?你见过她带过笔吗?”胖子一脸警觉,“她那种人,记仇是直接存内存芯片里的!”

这时候,孙雨晴走过来,换上了便装,一身藏蓝色风衣和柔光材料内搭,打扮得像刚从学院年会出来的女博士。但她的步伐干脆利落,气场仍旧是“雨哥”那一挂。

“你俩又在胡说八道?”她看了我一眼,再看胖子,“别忘了今晚我喝得高兴,你俩都跑不了。上次在星际大学咱们三谁躲厕所来着?”

“我那是突发腹泻!”胖子坚决否认。

“你还穿着全息潜行套装,躲在三楼女生宿舍边上的厕所里,”我补刀,“结果被误报成偷窥机器人。”

“你们能不能翻篇了啊!我当年那是技术测试!”胖子痛苦地捂脸。

“技术失败。”孙雨晴一锤定音,随后回头冲贾宁点头,“我们人齐了,可以走啦。”

贾宁依然面无表情,但嘴角似乎轻轻动了动,像是在笑,又像是在判断这群人值不值得她再多浪费一晚上的时间。

我们就这样,一行人朝望星小馆的方向走去,踏入那条每个太空港都有的夜色街巷,灯火正亮,星河正在升起。

通往“望星小馆”的人造街区名叫“辰市巷”,是空港内最早的一批生活聚落之一,如今早已发展成一个多文化融合的小型商业圈,尤其以华人移民为主,成了深蓝联邦各大空港的“标准模板”。

我们一边走一边看,街道两侧的建筑闪烁着熟悉又陌生的光。霓虹牌匾高高挂在合金墙体上,“老长沙臭豆腐改良站”“全息中药足浴体验馆”“粤味合成烧鹅饭”……各种未来技艺与传统小吃的结合显得既荒诞又亲切。有店铺用全息投影营造出一片竹林,有餐馆甚至播放着百年前的粤语老歌,调子被低频滤波器拉得悠长,听着像是来自太空另一侧的梦。

“这里气味真奇怪。”孙雨晴皱皱鼻子,指了指某家喷着油烟的全息烧烤摊,“烤的是合成肉,偏偏还要搞得像街边摊,哎,我是真吃不下。”

“老派情怀你懂不懂?”胖子一脸陶醉,“这里可是地球上最后几个还原城市烟火气的地方之一了,我刚才还看到一家‘回忆牌汽水’便利机,卖的是玻璃瓶的。”

“你确定那不是化学废液?”我抬了抬眉。

“我们星际大学铁三角出身,什么没见过?”胖子一扬下巴,转头朝孙雨晴努努嘴,“雨哥你说是不是?”

孙雨晴白了他一眼:“别叫我雨哥,在外面注意点形象。”

“得嘞,水哥罩着,雨哥镇场,我这小弟行走宇宙都心安。”胖子嘿嘿一笑。

这“铁三角”是我们大学时开的玩笑,但真到了现在,我才发现,它像是一道我们彼此心照不宣的纽带,穿越了那么多考试、实习、分配、训练营与出勤记录,竟一路走到了星舰起航前。

“水哥,我可听说了,”胖子突然凑近我,“望星小馆新换的主厨是地球中华厨艺联盟第三代传人,上次做的麻辣虾,辣得贾宁当场喝了三杯抑制液。”

“你又在背后编排人家。”孙雨晴忍着笑,“上次她看你偷调酒是不是差点打断你手腕?”

“那是科研调配!我在做低温乙醇的燃烧模拟!”胖子一脸严肃地为自己辩解。

我们笑着,走过一道由天幕与轨道线构成的拱门,望星小馆的屋檐终于在不远处出现了。

“望星小馆”外观像是把一座江南园林搬进了太空港,飞檐翘角和高分子合金骨架融合得出奇地自然,在暗金色光源下透出一股静谧的仪式感。门前那对石狮子,早已不是石头——是合金喷涂制成的仿生机器人,双目配备光学追踪仪,嘴里还镶着钛金犬牙,像是古典与赛博朋克的混血怪胎。

街道两侧也延续着这种混搭风,一边是主打川菜的“望川楼”,门口悬着红灯笼与自动迎宾机,另一边则是高耸入天、屏幕滚动播放广告的“中联银河信托”大厦,闪着巨大的行书“信”字。这里华人扎堆,建筑风格越发“东方化”,甚至比地球某些老城区还更有气氛。

走在街上时,我腕带终端轻轻震动,一道低沉而理性的男声忽然响起:“舰长,孙教授已在馆内,请勿让他久等。”

我下意识点头:“收到,睿思。”

“睿思?”胖子脚步一顿,眉毛一挑,语气不像震惊,倒更像确认,“你是说——科研院那个顶级中枢AI,睿思?它成了咱们的领航员?”

“对。”我轻声应道,“本次任务,科研院直接调配了睿思系统的一个分身接入舰船主控,由它担任1108号的领航员。”

“啧……”胖子摸了摸下巴,嘴角却忍不住往上翘,“我早听说科研院有人在搞‘人形系统融合实验’,没想到真投到了我们这条船上。我之前还尝试逆编过它某个沙盒副本的通信协议,结果三分钟不到就被踢了出来,堪比军方防火墙。”

“那你就老实点。”我看了他一眼。

“嘿,我是技术宅,不是疯子。”他耸耸肩,“但说真的,这配置有点奢侈了,咱这次任务到底要去哪儿?”

我还没来得及回答,帕比那边已经亮起工程模式,金属手臂发出几声清脆的嗒嗒声。“睿思已经开放了部分工程协议接口。”他语气平静却带点骄傲,“我可以直接与它同步数据。逻辑精度很高,不愧是科研院的大脑。”

“你们机器人果然都是互相抱团的。”胖子感叹了一句,语气却多了几分羡慕。

我腕带终端轻轻震动,一枚稳稳旋转的蓝色十二面体图标浮现出来,紧接着,全员的终端几乎同时亮起。

“1108号全体船员,”睿思的声音沉稳而清晰,在每个人的设备中同步响起,“我是睿思,本次任务的领航员系统。我已完成所有成员终端接入,将全程协助航道规划、情报整合与任务决策支持。如遇环境异常、资源冲突或系统偏差,我将实时发出提示,并提供可行性修正建议。”

胖子抬头看着自己腕带的图标,咂咂嘴:“这才是标准的科研院口吻,听起来比我老妈还严格。”

我微微点头:“收到,睿思。”

终端上的图标旋转了一下,亮度渐暗,转入后台待命。

我抬起头,面前的建筑仿佛在灯光下静静等候。我推开“望星小馆”的主厅木门,古色古香的结构与穹顶星光交相辉映,室内静谧得像一幅水墨画。最里侧,孙教授已经就座,他身披灰蓝外套,双手合拢放在膝上,仿佛正等待一场缓缓展开的宇宙对话。

深空与归途

2025年5月18日 00:39

最近尝试写一部短篇科幻小说《深空归途》,先在公众号/博客上发发,后面想做成游戏的故事线。欢迎追更,评论如果觉得哪个段落有问题,可以在评论中附上序号,我会酌情进行修改。

夜幕下,我站在太空港的观景窗前,耳边是机械臂运转的低鸣和遨游过境舰飞出的呼啸声。
舱口不远处,一群同事和家人在默默送行。广播里循环播放着温柔的出发祝福曲调:“愿星辰指引你的路”,可此刻这些声音在眼前浩瀚的星空面前格外遥远。我深呼一口气,让自己迅速平静下来,迎接即将到来的旅程。

地球经过二百年的发展与重建,从苍茫宇宙看去,宛如一颗深蓝色宝石在黑暗中闪耀。我轻抚金属墙壁,深吸一口模拟新鲜空气。脑海里盘旋着即将开始的使命:出任1108号试验型科考舰的舰长,率领精锐航天团队去探索人类尚未涉足的星域。

深蓝联邦的格局早已形成。二十一世纪末,各国政体逐渐合并,月球和火星相继建成自治管辖区后,地球各洲协商建立了统一的联邦政府。联邦的旗帜是一轮湛蓝行星与四颗星环绕的图案,象征合作与探索的精神。如今,联邦议会由各地民选代表组成,重视航天事业与科学研究,激励年轻一代投身宇宙探索事业。联邦名称“深蓝”不仅寓意地球的湛蓝色,更代表着人类对浩瀚宇宙的敬畏与好奇。从航天电梯到星际曲率航线,每一步跨越都见证了联邦精神的延续。这些年,联邦早已经历了几十年的和平建设,昔日的国家争霸几乎被人遗忘。来自不同星球的科研团队不断交流合作,大家对未知充满敬畏而非恐惧。

从我的角度看,宇宙航行已是常态,但每次出发仍令我心跳加速。曲率驱动技术早已成熟,人类的飞行梦不再遥远。从太阳系到近邻恒星,各条曲率航道犹如星际高速公路,将遥远世界紧密连接。1108号的曲率发动机能在瞬间扭曲时空,跨越数光年,将我们导入预先标定好的航线。在飞行过程中,舰载系统会精确计算能量消耗、惯性反应和周围重力扰动,实时调整曲率场参数,以确保每一次穿越都稳健而高效。

太空港内部银白色的穹顶高耸入云,大厅中央的数字显示屏和全息投影将这里装点得宛如科幻大厅。望向窗外,几艘各式飞船静静停泊:载满补给的货运飞船、披着彩绘的勘测巡航舰,以及几艘多功能客运船正待载客返航。我身着深蓝联邦的飞行制服,肩章下的名字徽章熠熠生辉,代表着联邦对我的委任与信任。走廊上柔和的灯光贯穿各个通道,自动引导车的行驶轨迹在地板上投出蓝色光带。数字浮动的显示屏不断播报航班信息,而我步履坚定地通过刷卡闸机,心头却难免涌起阵阵忐忑:毕竟,这是我第一次以舰长身份参加出航。

十年前,我还是魔都的一名航天工程系毕业生,怀揣着飞天梦想踏入科研航天行业。那时的我经常站在黄浦江畔仰望夜空,感叹黄浦江上扬帆的游艇与星际飞船的归途一样令人心驰神往。曾在深空漫游站负责推进系统的调试,耐着寂静的黑暗与零重力中偶尔突发的电磁风暴共舞;也在孤寂的星际航线中,为了躲避偶然出现的小型陨石带焦急地操控着维修无人机。如今,我已成为经验丰富的领航员,肩负起指导航线和带领团队的职责。1108号的使命将载入史册,而我,则是这段征程的舵手,心中既有无比的荣光,也难免心怀重任。
离别之前,我无意间触摸了口袋中那张旧照片:母亲在魔都外滩牵着年幼的我,背后是熠熠灯火。她常对我说:“无论走多远,你的根永远在这里。”此刻,我深吸一口气,将母亲的嘱托默念于心,为即将开始的旅程增添了一丝沉稳的力量。因此,我也默默对自己说:无论前路多么未知,都要以坚定的信念和责任心去面对,为家人和联邦交上一份满意的答卷。

舱门前的对接停机坪伸向外太空,我踏上斜梯。1108号静静矗立:舰身线条流畅动感,暗银色金属表皮在航港灯光下泛着幽冷光泽,庞大而沉稳。尾部曲率引擎散发出幽蓝微光,如同深海中的灯带;舰体上的无数光点不断闪烁,是传感器在与外部空间通信。指挥塔从中段突出,犹如玻璃宝塔般耸立,舷窗被多层特殊合金镜片包围,呈现出优雅而简洁的几何轮廓。每一个细节都在宣示先进与精密,让我赞叹人类工艺的奇迹。

进入舰舱,一股洁净而带着淡淡电子味的气息迎面扑来。内部空间开阔,浅灰白的合金墙面上泛着柔和光纹,如同无数传感器在默默监测舱内环境。舱桥正前方的观景窗可俯瞰整个太空港,周围浮空触控屏幕自动显示实时星图与飞行计划。几台自动搬运机器人有序地在过道穿行,稳稳托着货柜和仪器,将一切安排得井然有序。此刻,人工重力正在平稳作用,每个人的步伐都踏实而有力,使身为舰长的我也不自觉放松下来。

就在大厅里,一道熟悉而温和的电子提示音响起:“欢迎登陆1108号。”我向声音源微笑致意,片刻后,系统继续用温和的男声报告:“舰长好,睿思系统已在线,各项船载系统自检完毕。请安心检查各项准备。”舱桥内顿时亮起蔚蓝色光辉,悬浮的液晶触控面板自动展开,我的名字和职称被投影在主控台上空,如同低调的欢迎标牌。我轻抚前方的控制台,静静感受那沉稳而关切的声音,如同有一位经验丰富的副驾驶默默辅佐。

舱门缓缓关闭,脚下的磁悬地板微微震动,我知道,起飞倒计时已经启动。但就在我转身准备检查主控台时,身后传来孙教授那带着笑意的声音:“舰长好。”
我一愣,回头看见他那张熟悉的慈祥脸庞,眉角还挑着点顽皮。我赶紧摆摆手,笑着说:“孙老师,您别这样调侃我,哪敢当您这么喊我。”
他哈哈一笑,眼中满是欣慰:“你现在可是舰长,我这个老师要是再不给你敬个礼,那可就落伍咯。”
我低下头笑了一下,有些不好意思。在我读大学时,孙教授就是我最敬重的导师,也是我科研道路上的引路人。能被他认可,不只是荣幸,更像是一种责任的托付。

这时,一道清甜的声音打断了我们。“孙爷爷,不许给舰长添乱。”我转头看去,一位二十出头的年轻女子笑盈盈地站在身旁。她扎着利落的马尾辫,身着淡蓝色医生制服,既亲切又干练。胸前的链纹徽章闪着柔光——这位是孙雨晴,孙教授的孙女,也是1108号的船医。她俏皮地拍了拍孙教授的肩头,说:“爷爷您先把航程讲给舰长,我这就来给您验血。”孙教授无奈地笑了笑,我也随之微笑,笑声温暖了过道的气氛。我顺口称赞:“医疗设备看起来很完善。”她眨眨眼答道:“爷爷为我们准备的,可都是顶级设备。舰长您不用担心,一切都在掌控之中。”孙教授听了也忍不住点头,会心一笑道:“放心吧,我们一定会全力以赴。”孙雨晴调皮地对我眨眼:“舰长,接下来还请多多指教喽。”我点头笑答:“当然,一起为科学努力。”

我们一边走向会议舱,一边闲聊着这次任务的准备情况。孙教授低声补充道:“你知道的,这次科考任务之所以选你当舰长,不仅因为你技术全面,还因为这艘1108号是联邦星际大学最新试验型多用途探测舰,很多操作上需要经验丰富又头脑灵活的人。”
我笑笑:“你是在夸我,还是在提醒我出问题别赖你?”
他大笑:“当然是提醒你要多谢我!”

会议舱内的墙面上浮现出巨大的星图和任务计划。目标区域是银河系边缘一处未命名星域,距离地球大约63光年,理论上在曲率航线极限覆盖范围内。由于此前探测卫星在这一区域偶然接收到不规则能量脉冲,怀疑存在异常的矿物聚集带,故此才启动本次探索任务。
孙教授指着星图上某处虚拟坐标说:“我们重点关注的,就是这个叫做‘KL-077’的星系外围带状小行星区,那里的矿物组成可能与异构锂晶有关。”
我点点头:“异构锂晶,如果粗加工处理得当,是曲率引擎的备用燃料。这如果成了,我们等于是给未来远航舰打了一罐高能备用油。”

“你还记得‘探索未知文明’计划吗?”孙教授突然问道。
我轻轻嗯了一声,眼神落在星图上。那是我刚进大学时听到的第一个大计划,也是孙教授当年亲自牵头的宏大构想——通过分析星际能量脉冲与轨迹扰动寻找外星文明的可能迹象,结果持续了十五年,终因“无果而终”被迫叫停。
“这次任务,和它有关吗?”我轻声问。
孙教授沉默了几秒,最终只是淡淡道:“我们在做的是资源勘探。”
我没有继续追问。直觉告诉我,孙教授一定还有隐瞒——但或许,他不说,是为了我好。

不久,其他船员也陆续登舰。除了我们三人外,船员配置还包括一名导航员、一位工程师和一名数据官,整体人员精简但精干。我注意到,原定还有两名孙教授的助理申请随行,却被教授以“空间不足”为理由劝退。他们也许并不知情,这艘船上的货仓大半其实腾了出来,堆放的是大量生活物资和特殊设备,显然是为长期任务准备。
孙雨晴趁着准备时间,给每位成员做了初步健康检测。她操作医疗扫描臂时动作娴熟,偶尔还打趣逗笑船员。这个外表开朗的姑娘,其实和她爷爷一样固执,尤其是在她明知爷爷身体状况每况愈下的情况下,依旧默默为他开着维稳药剂,并在体检报告中悄悄修改数值——这一点,我是后来才从她眼神中读出来的。

最终检查完成后,我们进入最后一次全体任务简报会议。会议室不大,但布置得极为精细,环形透明桌面嵌入全息投影节点,正中央悬浮着目标星域的三维模拟图。随着投影旋转,我望着那个名为KL-077的星系,感觉像是注视一枚尚未被开启的硬壳星球糖果。
孙教授环顾众人,用他一贯不紧不慢的语调开场:“我们要做的,不止是找矿,更是在验证一种未来资源勘探与长期航行的模式。如果1108号这次任务成功,这类小型多用途探测舰将成未来远航先锋。”
我补充:“换句话说,我们是在为将来把‘地球经验’带向更远的地方打样。”
“说得好,”孙教授点头,“同时,我们也可能是第一批踏足某些‘不在地图上的地方’的地球人。”

我注意到他在“地图外”这几个字上用了一个特别的停顿。我不知道那是否意味着他掌握着任务之外的信息,或者说,他内心仍未真正放弃那个早年提出的“未知文明探索计划”。
但我没有追问,孙教授不是个轻易透露真相的人,而我,也学会了何时该等他说完,何时该等他说透。
“如果任务执行周期超出预期怎么办?”我问。
“按B计划执行。”孙教授答道。
我点头。B计划是延时返航备选流程,其中就包括使用飞船内置的粗加工异构锂晶反应堆,在必要时自制推进燃料。这项技术理论上可行,但需要精确控制,否则飞船引擎容易过热甚至爆燃。

简报会最后一项内容是由我负责说明紧急离舰程序。看着几个年轻船员略显紧张的表情,我故意用轻松口气说:“别紧张啊,真出了问题你们躲进逃生舱,我会留在驾驶席,一路送你们出去。”
孙教授笑着接话:“你这是玩老式英雄剧本。”
我耸耸肩:“标准流程嘛。谁让我这人最擅长的就是:喝酒不开车,开车技术好。”
会议室响起几声轻笑。气氛暂时从紧张中缓和下来。

当所有人散去做最后准备时,孙教授留了我一会儿。他把手轻轻放在投影上的星域模型上,低声说:“秋水,我知道你想问什么。”
我没有说话,只是看着他。
“这次的坐标,不是我第一次提交。”他缓缓道,“十年前,我就在某个微波信号记录中看到这片星域有异常反应。提交给联邦,没人批准。说是误报。后来我才知道,这类信号曾在另一处任务记录中出现过,结果那艘飞船——至今失联。”
我脑中一震,思绪翻涌:“你是说,我们可能不是第一批接近那个坐标的船?”
他轻轻点头:“所以我们不只是去找矿。我们去找答案。”

那一刻,我心跳略快,但嘴上仍带着玩笑:“那您这是骗我上船?”
“我只是让你看到了正确的方向。”他意味深长地说,“至于你怎么走,决定权还是你的。”
我望着窗外舰桥开始亮起的登舰指示灯,默默握紧掌心。
这不仅是一场远航,更像是一场注定会改变什么的旅程。只是,我还不知道,它会改变谁——我,教授,还是整个地球。

C#中字符转整数的高效技巧

2025年5月17日 00:32

C#中字符转整数的高效技巧

在日常开发中,我们常常需要将字符串中的数字字符转换为整数。比如把 "123" 转成 [1, 2, 3]。许多初学者第一反应是使用 int.Parse()Convert.ToInt32() 等方法。然而,在性能敏感或高频调用的场景下,这些方法显得略显“笨重”。

本文介绍一个高效、简洁的技巧 —— 使用字符的 ASCII 差值直接转换数字字符为整数:

1
int number = someChar - '0';

🎯 一行代码,背后的原理

C# 中的 char 本质上是一个 16 位的 Unicode 字符,它也可以参与整型运算。每个字符都有一个对应的整数值,即它的 ASCII/Unicode 编码。例如:

字符ASCII 值
‘0’48
‘1’49
‘2’50
‘9’57

因此,将数字字符 c 转换为整数的本质就是:

1
int num = c - '0'; // ASCII值相减

举例来说,'3' - '0' = 51 - 48 = 3,正是我们想要的整数。

✅ 为什么推荐这种写法?

相比 int.Parse()Convert.ToInt32(),这种方式具有明显优势:

  • 速度更快:是低级别的 CPU 运算,无需函数调用;
  • 更少内存开销:不涉及字符串解析或装箱操作;
  • 写法简洁:代码清晰直接,适合处理批量字符数据。

例如,在二维字符网格转换中:

1
2
3
4
5
for (int y = 0; y < lines.Length; y++) {
for (int x = 0; x < lines[0].Length; x++) {
Data[x, y] = lines[y][x] - '0';
}
}

这种写法在游戏地图加载、图形编辑器、数据压缩等场景非常常见。

⚠️ 注意事项

尽管这种写法高效,但也要注意它的适用前提

  1. 字符必须是合法的数字字符(’0’ ~ ‘9’),否则计算结果会错误:

    1
    2
    char c = 'A';
    int result = c - '0'; // 错误,结果为 17
  2. 建议加入合法性判断,提高程序健壮性:

    1
    2
    3
    4
    if (char.IsDigit(c))
    num = c - '0';
    else
    num = 0; // 或者抛异常、记录日志等

示例代码

我之前的像素艺术家中有一个场景,需要将配置文件中的笔刷数据读取出来,1代表有颜色,0代表无颜色。
以下是一个实际用于数据格式化的操作,即将竖线分隔的字符串转成二维整型数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void FormatData() 
{
if (string.IsNullOrEmpty(ShapData)) return;

var lines = ShapData.Split('|');
int y = lines.Length;
int x = lines[0].Length;

Data = new int[x, y];

for (int _y = 0; _y < y; _y++)
{
var cols = lines[_y].ToList();

for (int _x = 0; _x < x; _x++)
{
if (_x >= cols.Count || !char.IsDigit(cols[_x]))
Data[_x, _y] = 0;
else
Data[_x, _y] = cols[_x] - '0';
}
}
}

结语

使用 char - '0' 转换数字字符是一种小而巧的技巧,简单、高效、实用。只要确保输入是合法的数字字符,这种方式将比传统方法更具性能优势。无论你是在处理大规模文本数据,还是追求极致性能的游戏开发者,这都是你工具箱中不可或缺的一招。

我曾“指点迷津”,如今选择沉默

2025年5月15日 23:05

我上班比较早,至今已有十三年有余。在我还不到二十岁的时候,当身边同龄人还在大学里上课、憧憬未来的时候,我已经坐在办公室里,开始了自己的第一份工作。也正因为起步早,等我工作几年之后,周围同龄的同学才刚刚走出校门,步入社会。

那个阶段,有不少同学或亲戚家的孩子会找到我,问我:“我该不该选择某个方向?是不是应该先参加培训班或者自学?”那时候的我,虽然已经工作了几年,但坦白说,阅历尚浅,对行业的理解还只是表面功夫。但年轻的我不懂分寸,自以为见过世面,便不吝啬地大谈特谈起来。

我会很认真地说:“某些行业已经是落日余晖,不值得投入。”或者说:“这些方向是星星之火,未来可期。”我还会按自己的经验列出路线图,告诉他们应该先做什么、再做什么,最后走上怎样的路。听我劝的,有人成了和我一样的大龄程序员;没听我劝的,有的另辟蹊径,在其他行业混得风生水起,甚至开了公司,年入百万。若干年后的今天,再回头看那些“指点迷津”的时刻,我竟然忍不住想笑。

时间是流动的,世界是变化的,没有哪个行业会永远烈火燎原般地燃烧,当然,丧葬行业或许是个例外。我们只能活在此时此刻。常听人劝说不能活在过去,其实人也不会真正活在一个不确定的将来。现实告诉我:再理想的建议,也终究敌不过个体命运的变幻无常。

后来再有人来问我择业方向,我学会了沉默。非要发表意见的时候,我会先补上一句“免责声明”:“我说的,仅供参考。”这句话,成了我多年后给自己的保护符。

因为我逐渐意识到——参与他人命运的次数越多,背负的因果就越复杂。当初“听信谗言”的那拨人,有的人进了互联网行业,可能刚好赶上了去年那波裁员潮,不知道他们有没有在心里想过:“早知道当初就不听他的,去干点别的多好。”也有没听我劝的,现在工作的不尽如人意,私下里也曾半开玩笑地说:“当年你怎么不拦着我。”这些声音,不是凭空臆想,而是真真切切听到过的。

所以我渐渐学会了放下——不再参与他人的抉择。毕竟,那是别人的人生,我没有权力置喙,也没有能力承担责任。那句话怎么说来着?“尊重他人的命运,其实无论是否有我的参与,事情都会变好的。”

到了这个年纪,我能想明白很多事,却也开始有意识地模糊掉另一些事的概念。就像某天有人问你:“你选苹果还是梨子?”换作以前,我可能会帮他分析各自的优劣,列出数据、做出推荐。但现在的我会轻描淡写地说:“我选‘或’。”

为什么选“或”?因为我两个都想要。在程序员眼中,“或”运算符是一种可以同时满足多个条件的逻辑选择——苹果也好,梨子也罢,只要符合我想要的特性,那就都是好答案。所以,在这个问题上,作为一个程序员,我至少可以赢一次。

但我也知道,生活不是代码,人生没有最优解。能选“或”,是幸运;无法两全,是常态。而我,已经不再想左右别人的选择了。

2941747321203_.pic_hd

职场浮世绘

2025年5月13日 22:29

前段时间,一位朋友给我发来一张名片,说是想帮一个人找工作。当时我以为是他本人,后来才知道,是他朋友的朋友,一个零几年的女生,法国籍。简历一看,是亚洲面孔,可能是华人背景。让我有点好奇的是,为何她现在要回头找“实习”?不过这件事,我并不是特别在意,只是受朋友之托,尽人事而已。既然是朋友,自然能帮则帮。

加了微信之后,和她的中间人,也就是朋友的朋友,断断续续沟通了几天。主要是因为简历实在不太标准。比如直接发给我英文或法文版本,联系方式也只有邮箱,没有手机。我就提醒她:中文简历还是得准备一份,起码附上手机号码等必要信息,让HR看到时能方便联络。调整完后,我帮她推了一下腾讯的岗位,也发了我们公司内部推荐的二维码。事情到这一步,我的“任务”就算完成了,后续能否拿到面试、入职,也不是我能掌控的了。

其实,类似的事以前也遇到过,很多人到一个时间点会陷入一种迷茫状态:该去哪里?要做什么?是继续坚持之前的道路,还是尝试转弯?这些问题没有标准答案,但它们注定会成为某一阶段人生的主旋律。

最近还有一位朋友被裁员,工作刚满一年左右。她大学读的是德语专业,本科毕业后进入了一家普通外企,但因为行业调整,她所在的部门被砍了。突然失业对任何人来说都不是轻松的事,更何况她刚刚步入社会。

不过我反倒觉得,这或许是一次“被动的重新选择”。有句话说得好:“换行穷三年,跳槽穷三月。”这句话背后的含义,其实是提醒大家:换行业是需要代价的,特别是放弃原先积累,再投入新方向,意味着很多东西要从头来过。但反过来看,对于一个刚工作一年的人来说,原本积累也谈不上太多,此时选择新的方向,甚至更有可能趁早找到适合自己的位置。

工作本身就是一场长期博弈,不同阶段有不同的策略。你是要快速上升通道的刺激,还是选择稳定可预期的生活节奏?有些人会走在快速更替的岗位间,积累经验、跳槽涨薪,也有人愿意在一个行业里慢慢扎根,追求的是专业深耕,还有一些人选择“离开战场”,比如考研、考编,或是转行创业。

就像我身后的那位小伙子,上周刚刚 last day,我们一共共事了五年。他从去年初开始备考山东的公务员考试,几乎花了一整年时间,终于上岸。为什么他选择转战体制内?我们聊过很多次。他说,工作这些年,有点疲了,想要一个相对稳定的生活节奏,想回老家,也想考虑婚姻家庭的事。

说实话,我挺理解的。在上海这样的大城市,打拼多年,节奏快、压力大,每天上下班两小时起步,房价高、生活成本也高。有时候我们以为自己是在追求理想,其实不过是在生活的推搡中前进。而在家乡,有编制、有稳定的工作、有亲人的陪伴,也许换一种维度来看,这也是一种“上岸”。

更有趣的是,这哥们还是单身,我调侃说:考上公务员后,老家的亲戚可能会立刻给他安排三场相亲。在某些地方,有编制就像是通关密钥,不仅是就业保障,更是婚姻“加分项”。听起来有些现实,但生活本就如此——每个人都在根据自己所处的环境做出选择。

这些年,从毕业到工作,我们遇到很多人。有些人陪伴的时间甚至比大学同学还要长。当听说他们要离职,总会有些不舍。明明昨天还在工位上一起吐槽会议,今天却已经打包好箱子,准备奔赴人生下一站。

但人生不就是这样吗?不断有人进入、有人离开,有人坚持、有人转身。每一次转身,都有一份勇气;每一次离开,都带着新的期待。说到底,谁也不欠谁什么,我们在各自的轨道上奔跑,偶尔交汇,然后各奔东西。

对那些已经离开的朋友们,我打心底希望他们一切安好。无论是在新公司开始新征程,还是在新的城市重新生活,愿他们都能找到属于自己的节奏。愿我们也能在各自的路上,不急不躁,继续前行。

522751747147430_.pic

风起淀山湖

2025年5月6日 00:06

现在已经是五一的最后一天假的最后一个小时了,现在对即将逝去的五一进行一个盖棺定论,那可在适合不过了。
前两天去了淀山湖露营,之所以想去淀山湖,因为这边露营,无论是环境或者是费用上,都是相当不错的。
拍了一些风景图,选几张留在博客,也有一些随手拍的人物,拍到即是有缘人,哈哈。

DSC04514

近处的护堤,有些草,但是不多,在我看来有那么两种可能。
一是附近没有人管理,搭帐篷,烧炉子的人随意踩踏。
二是这草不想活了。
大概也就这两种可能,这边露营的人真的是非常的多,基本只要来的都是露营的。

DSC04515

这天的风超级大,刮的生活垃圾乱窜,只要过几分钟,就能看到不知道什么小垃圾,飞到帐篷边上。
DSC04581

哎 ?这张图压缩后,居然翻转了,算了,翻就翻了吧。
宝宝还是很喜欢出去游玩的,现在这个年纪正是不知疲倦的玩耍的时候。
有时候我也感慨,还是刚出厂的身体好使,玩一天都不累。
DSC04513

天幕真的很难搭起来,花了20,让这边服务人员帮忙搭的,这项服务还不错,露营椅子租借也是10元一张。
来这边才知道,原来帐篷临时租借也才一百出头,对于露营比较少的人群来说,非常的友好。
在dy上说这边不许搭帐篷,有草坪的养护期啥的。实际来这边一看,你只管扎堆就行,哪有人就去哪儿搭。

515621746459994_.pic

临走的时候,收拾帐篷,发现一根铝合金支撑杆,无法回缩了,尝试良久,发现彻底收不回去了。

515631746459995_.pic

帐篷的收纳袋也在大风吹的淀山湖边不翼而飞,大概也暗示着帐篷要报废了。
抱着侥幸心理,问了下骆驼的售后,售后的意思很明确,没有售后。
果然呀!最好的售后就是没有售后,反正我以后不会买他家的东西了,告辞!

515591746459990_.pic

回到家之后,看了下手臂,脖子,我说抓一下怎么就痛,还有点痒,果然晒伤了。
这天风很大,在天幕下居然会冷,谁能想到30度出头的天气,在天幕下居然会冷。
太阳晒得暖暖的,皮肤晒伤都没有一点的感觉!看来我还是太嫩了,手动滑稽。
515601746459991_.pic

以上风起淀山湖,愉快的露营游记。

徒手造车小游戏玩法

2025年5月5日 23:27

前言

这个游戏的内核是UGC,鼓励玩家去编辑车型,赛道。创建赛道作为关卡,是分享给其他人进行挑战的。
玩法简单,W/S 键保持车身平衡,空格键加速。
内设的关卡是非常简单的,可以用来练手,真正的挑战是玩家编辑后的关卡,可以设置障碍,掉落陷阱等。

现在此项目是一个Demo,意在演示玩法,也不具有分享功能。

演示视频

编辑器演示,文末提供了素材,可供下载使用

车身编辑

  1. 点击车身或者车轮进入编辑界面,使用滚轮可缩放地图。

  2. 点击工具栏中的drag,可以拖动小车的图像,将图像拖动出画布则视为移除。

  3. 点击工具栏中的image,可以导入外部资源,点击空白处,选择需要导入的图片。
    文末提供了两张可供导入的png,当然也可以是任意png格式的图

  4. 点击Resize调整,导入的图像大小,pixel可以调整图像的像素化程度。
    调整完毕,点击Add添加到画布中,如还需要导入其他的图,重复此步骤。

  5. 车身或者轮胎编辑完成后,点击exit 可返回到主界面。
    返回到主界面可以根据需要,调整轮胎的位置。

地图编辑

  1. 点击主界面任意空白处,可以触发地图编辑,进入地编界面。

  2. 点击image,导入地图笔刷,彩虹笔刷在附件或者文末有图片,或者是任意的png,jpg图像。

  3. 在layer层级面板,可以看到已经存在的三条地形,取消show的勾选可以隐藏当前地形,默认都显示。

  4. 点击Eraser笔刷会变成橡皮擦,可以擦掉任意绘制的图案。

  5. 点击Brush开始绘制地形,需要注意的是 layer 层级一览,选中的是第几张图,绘制的就是第几张。

基础操作

使用WS控制车身平衡,W抬起,S下压

出现车厢道具,按Space键,使用,加速前进

翻车,或者掉落陷阱则判定失败

UGC内容示例素材,你可以使用这两张图进行DIY, 或者任意你喜欢的图都可以。

右键下载图片,注意保存为Png结尾。


试玩地址 https://px.vrast.cn

如游戏更新,需要清理本地缓存参考如下:
这个清理缓存与清理网页缓存不同,unity的web程序会直接使用本地存储。
清理方式如下:

机顶盒与消防课堂

2025年4月28日 16:50

大概是去年这个时候,在公司楼下遇到了一个推销携号转网的老乡,于是就说帮一把,完成一下他的业绩。
将联通的手机号转到了移动,还被附赠了一根宽带,实际上家里有一个电信宽带,但想着不拿白不拿。
安装宽带的时候,被塞了一个高清电视盒子,实际上家里根本用不着,当初跟安装的师傅说。
他是这样回答:你如果不需要,就自己去移动营业厅退,我们安装工人是不能退的。

IMG_6583

那也没办法,这个盒子一放,就放到了一年后的今天,上周六说去退,也没退成。
为什么没退成呢,我拿了个号,前面要等38位,平均一个客户要占用10分钟,真的无奈。

想着这周,抽个工作日,在节前把机顶盒给退了,不然后面每月要收费20,我也不知道现在社会到底哪些人需要机顶盒。
大家好像都在用手机,平板,机顶盒应该成为被淘汰的产物了吧 ?

IMG_6578

IMG_6580

跟宝宝在路上倒是拍了两张图,挺养眼 。

今天上午,请了半天假,参加了幼儿园开展的安全教育课堂,家长与小朋友有一些亲子活动环节。
安全教育家校联动的模式挺好的,主要还是在借机教育大朋友们,一些常备灭火器,灭火毯,放毒口罩。
还有车上需要备破窗带切割的安全锤等,都是很有意义的,这些东西平时不起眼,用的时候能保命。

qkaed0

最后无奖竞猜,以前的博文,网友总说我很神秘,哈哈。这下算是露脸了。

对了,最近没有更新博客,是业余在做小游戏 徒手造车小游戏 感兴趣可以提提意见。
等做的差不多了,再专门聊一下 哈哈。

以上,近况。

花海-生日-幼儿园

2025年4月17日 18:35

前段时间去周浦的四季花海,位置就在公司边上,去这边的路每天上班都走,去玩的当天,真的有种加班的错觉。

878342EF-B960-4B7C-B453-A478132BB753_1_105_c

这边地方比较大,是真的花海,露营,吊龙虾,烧烤,儿童乐园,骑马,喂动物,还有一些体育类的游乐项目。
总的来说基本上户外的热门活动都有,对于周末来说算是个比较不错的去处。

当然我们家也搭了帐篷,遮阳篷没搭好,就先拍了张照,没天幕,大概就这样罢。
帐篷是买的时候是750+,现在做活动500+,我觉得挺保值的,购入4年才降了两百多。

49CC79AA-7A43-4D7C-9823-B86B9A17D68C_1_105_c

露营的装备是这样的,只会越买越多,过两天,再拍拍我新购入的天幕,小椅子。
上海市内露营的地方还是挺多的,环境好的地方一般都是收费的,属于公园内。
我还想着等五一天气温度起来了,找个小溪边扎营玩一天,想必也是极好的,只是这样的地方不好找。

5B0251AA-F0AC-406B-A2AF-2A579F6C0620_1_105_c

过生日

前段时间宝宝过生日,也收到了舅舅,舅妈买的玩具,安静的玩了一下午,顺便又把红色的印泥翻出来,弄了一手。
幸好这次发现的早,早早的就把印泥收起来的。上次的教训还历历在目 -2025春节小记,当时宝宝把外婆家窗帘弄的都是红色巴掌。

幼儿园

宝宝在幼儿园被其他的小朋友欺负了 没问出个所以然,大概说是有一个小女孩,个子长得比较大,大概是打了她,或者玩的时候比较用力,宝宝是认为这个小姑娘打了她,身上倒是没有伤,估计也是吓到了。听说也有其他的家长跟老师说过,这个小姑娘欺负过他们家的娃。

本来我跟领导都准备去找对方家长了。提前一天跟陈老师打电话,老师的意思就是小朋友之间的打闹大人不要管,让学校去牵头,教育小朋友

第二天我俩早上送娃去幼儿园,约见了老师。还是前一天跟我通电话时候的说辞,当然陈老师说的也有道理,都是幼儿园的小朋友,都是很可爱的小朋友们,你能说她做错了什么吗,其实也不能,只能说将两个小朋友都往各自成长的正确方向上继续引导。

以上记录最近发生的一些印象深刻的几件事。

无锡游记

2025年4月7日 15:59

前两天游了无锡,今天抽空记录一下。
无锡之行只花了两天时间,一天时间自由行,另外一天是跟团游。

自由行是第一天,当天上午坐高铁到无锡,原本定的8点多的票,但是从家里出发堵车,到火车站要1个小时,8点出发来不及了,改到9点多的票,顺利坐上车,丛上海出发45分钟就到无锡了,可以说是非常快。

下了高铁去酒店放行李,酒店就在火车站旁边的全季酒店,打个出租车,师傅说从人行道穿过去就到了,直线距离才200米,但是我看导航上显示要1.3公里,真是坑爹的导航!最终傅很不好意思的收了10块钱起步费,载我们到达酒店。放完行李后我们步行到崇安寺附近的西新饭店,是无锡老牌饭店了,里面有很多年龄大的在吃饭,肯定是来对了,点了一个118套餐,再加了一个白丝鱼,价格还是挺美丽的。

44861744011962_.pic

吃完饭沿着崇安寺步行街走走逛逛,发现实际上是一个沿着扩建的步行街,没有寺,还有一个党支部第一办事处,广场有很多老年人在活动,感觉已经变成老年场所了,然后去买了茶颜悦色,上海没有,但是每到一个地方只要有就会喝,因为很好喝~

44851744011961_.pic

44871744011981_.pic

44901744011985_.pic

44911744011986_.pic

44921744011987_.pic

44941744011989_.pic

44951744011990_.pic

44971744011992_.pic

45001744012024_.pic

步行街走到头就是三阳广场地铁站,1号线坐一站路到南禅寺下车,先去南禅寺逛了一圈,领导烧了个香,我则是拍拍照,顺便还帮一个游客拍了几张照片。南禅寺香火挺旺盛的,然后从南禅寺走到南长街,一路上都是小吃,简直什么都有,但是领导吃了饭什么也吃不下,我还调侃说“行不行啊,出来什么也不吃”。从南禅寺走到南长街步行街入口,有点累了坐在门口星巴克休息一会,对面有个特产店,逛了一圈买了一串手链,本来自己想戴结果手太大戴不进去,怕链子崩了,领导买了把无锡的团扇,说明天拍照用。

44961744011992_.pic

在南长街一路走到头,走走逛逛拍拍照,在清明桥打卡,旁边还有个中国丝业博物馆,可惜闭园了没进去参观,再往前走发现一排别墅区,非常有特色,查了一下300多万一套,领导说好心动,好想住进去。在旁边拍照的时候一直咪咪径直向领导走过去,然后在脚上蹭了蹭,我赶紧拍了领导和咪咪的合照,很有意思,一路上还看到很多可爱狗狗。走出南长街,打车去吃了胖妹饭店,是一家人开的饭店,菜不便宜,味道尚可,都很热情,吃饭的时候有好几桌上海人,领导说每次去周边城市哪里都是家乡话,甚至比在上海听到的都多。吃完饭就打车回酒店休息了,第二天一早就要集合出发~

第二天是跟团走,跟团游有个好处,旅游团的车可以直接开进去,一路畅行,坏处也比较明显,就是比较赶时间。如果你想在短时间游览一些关键景点,并且体力较为不错,选择跟团游是可以的。跟团去的地方会比较多,热门的地方都打卡了,但也只是打了卡,要说想歇脚,那也是不行。在出发前就说明过很多次了,不能掉队,不能出现别人等你的情况。所以还是被上了压力的。

鼋头渚的景点非常大,起初的景点只是古迹庄园,后来周围由陆续开设了多家疗养院,近代又种植了樱花林。在一次次的扩建中,这边的景色也是越来越丰富。来这边玩先要坐游览车,进鼋头渚的老大门,然后直接乘船登岛,去一个人工景点。留给我们的自由活动时间只有40分钟,还没有拍几张照,就要集合登船回程,赶往下一个景点。

24D56DAB-06EC-48A5-973E-D53577B1ED72

A3E3AAF6-F0B0-49AF-B485-3F19D6013265

0681E296-8189-45B4-8CB5-DBEFE14016B2

1B90BFF3-A14B-42F6-B5D3-31AEEDB76791

0FBF5AE4-81FD-49D6-9BC9-7E8B6C5DA2EC

1AEFF02C-7288-40ED-AE5E-4FB1B41536B5

713069B6-65D6-4292-AB7E-6AE93BAE0B23_1_102_o

估计如果再去,应该会游玩一下比较集中的景点,如只去鼋头渚,不去惠山古镇。或者只去惠山玩,就不去鼋头渚,原因是这两个景点都需要刷上一天的时间,毕竟地方是很大的,我们达成的成就是一天之内刷完两个景点,也是惊人了。惠山古镇上有很多的祠堂,也就会有相当多的文字资料,有牌匾,有门联,也有一些文章,这可就触及到了我的知识盲区,甚至很多的牌匾上的字,也只能看懂个大概,另外一半靠猜。

当天人流确实大,基本在古镇上都是人推人在走,导致所有的照片只能斜线向上取景,好在还是拍了不少有趣的图。在这边发一部分,当作记录。

C9E08AD4-307E-49D5-9828-AF797830146B

12C39A70-F8F6-4F93-8D9A-BA72FCF32706_1_102_o

C3695341-8499-43DF-93CE-78038BCF83C5

804384F2-82A3-4B79-8507-25D5B16AFB3E

5DBDE562-92BE-4A39-B0A0-F54EC5EC8587

10E383C3-8367-421A-BC18-49EA71599D00

4C0D5553-71FE-4EF3-8CEF-5D8D64BFF3FA

6F608D4A-1847-450F-9250-31F2959FB2F3

A9AC878C-5D22-4A20-9857-58881A98D800

BDB8ECE2-44D8-4945-985F-4A9A21228D02

D1AA9F24-6610-4324-817B-879B01372ED4

5E7922E7-0D17-4A26-9A80-E8B0BCAAC671

惠山古镇便是我们出游的最后一站,临走时,导游跟我们聊起,你们猜猜我们无锡本地人有夜生活吗?
有人回答有,有人回答没有。
“我们本地无锡人,晚上都不出门的,都在家里辅导孩子做功课,小孩晚上都在加学习,所以我们本地人晚上都不出去”。

以上,无锡两日游。

吃鼻屎

2025年3月31日 17:15

家里的宝宝这个年纪是真的皮,喜欢打人,这段时间,还爱吃鼻屎。
真的我打下这段字,自己都在崩溃,真的是好气又好笑。
你跟她讲道理吧,她回头就跟你说,我不吃了,过了半小时,又在偷偷挖鼻屎。
是在是气不过了,揍她屁股,也没用,嬉皮笑脸的。
打了之后,我又后悔,刚才太用力了,应该轻一点的。
只能感慨说,这届小孩姐真难带。

昨天带宝玩,吃晚饭之前,奶奶还给宝宝买了一大袋薯片。
当然这个东西,给宝宝了就拿不回来了,我阻止速度还没有奶奶给出去的手快。

晚上吃 腊肠+鸡蛋+米饭 ,本来宝是很爱吃腊肠的,这次基本没吃多少。
一会儿跟我说,“吃饱了”,然后就是在我的视线死角,开始吃鼻屎。

!!!
我感觉自己带娃,也有问题,应该多准备点互动游戏,跟宝宝一起玩。
前段时间买的手工都做完了,今天该再补点货,跟宝一起做。

最近宝还学会了,我不爱你了,我不喜欢你了,诸如此类负面的话。
以前倒是没有跟我说过,看来这就是管的太多的后遗症。
要不吃就吃,反正也不是我吃,你说呢 ?

治疗肺炎

2025年3月27日 15:15

三月十八的时候,宝宝感冒了,确诊是呼吸道感染,后面的一周基本上好的七七八八了。
虽然宝宝的感冒好了,但好像又传染给我和领导,起初我们只以为是咳嗽,当时咳嗽频率挺高,就说我们俩周末去医院瞧瞧。

医生说让我俩验血常规的时候顺便拍个片子,本着来都来了的想法,我们就顺利的拍了片。
有点意外,双双确诊肺炎,我的肺部片子显示,炎症分布比较散,领导的片子则显示比较集中。
问了能不能吃药,被告知,只要是肺炎就六天起步,打吊针。

所以就在当天,医生就开了三天的吊水药,就是左氧氟沙星氯化钠注射液0.5g/瓶+ 0.9%氯化钠注射液100ml/盐酸氨溴15mg

32161743059185_.pic_hd

当天就打上了,已经十几年没有打过吊针了,到今天为止刚好已经是第六天的吊水了。
医院开药,一次只能开三天,三天药打完,重新挂号,重新开药,中间也问过,既然血常规的指标正常了,是否可以不继续吊水。
被急诊的医生告知:血液的指标正常,不代表肺部的炎症消失,所以继续按排打针。
当然,我不是专业人士,肯定是听取医生的建议。等六天满了,在拍个片子,看看肺部炎症的康复情况。

这里提一下费用,药物+CT 目前大概花费了930左右,两个人再翻个倍,两千不到。
基本上费用都被医保账户覆盖了,自费部分不超过十块钱。

我俩医保账户部分消费的部分,刚好还可以在保险报销,这样一进一出,基本上等于没有开销。
再次说明了,保险挺重要的,再就是在医院看病真的好贵。

32111743059157_.pic_hd

最近两个人的手都被打针打肿了,连续打吊水,真的是磨人。
现在就是下班回家,洗完澡就去医院,打好针再回家,基本都12点了。
另外左氧氟沙星的针剂会附带失眠的debuff,吊水过程中会痒。
领导怕睡不着又换成了阿奇霉素,倒不会失眠了,只是吊水过程会持续的痛。

以上,记录一次肺炎治疗过程。

会网购的文盲

2025年3月21日 16:54

前两天我妈妈的店里收到一堆宝宝的东西,有猫咪玩具,还有糖果,东西还挺多的。
我妈就在问东西是谁买的,我还问了领导,是不是她买的,结果问了一圈不是家里人买的。
宝说是自己买的,起初我们都没有当回事。
直到今天,我妈打开了我爸的pdd,发现购物车里面有一堆待收货的东西,刚好和前两天店里收到的东西对上了。

问宝宝,她是这样回答的,
“是我买的,老板娘人很好的,不要钱” 这里的老板娘是指pdd的商品有个讲解视频,大概率是个小姐姐。
由于爷爷的手机是免密支付,点了就直接下单,所以宝宝认为,老板娘没收她的钱,老板娘人很好。

宝的奶奶说:“想不到我家四岁的文盲也能用手机下单,哈哈哈哈”

宝宝买的玩具还是很有品味的,这个玩具我看着,也觉得挺好玩的。
反正马上就要过生日了,就当是宝宝给自己买的玩具呗。

领导说还是要教育宝宝的,教育归教育,一些多余的零食退掉就好啦。
邮费是要出一点的,不过能退货,也还不算不能挽回。

再说说免密支付支付,与现用后付,这两样设置,我觉得是不碰为好,会有很多的误下单产生。
无论是不小心碰到了,或者是养成不好的购物习惯上来说,都是不太好的。

以前也看到过新闻,说小孩用父母的手机玩游戏,结果产生了天价账单。
这中间其实透露出一点,就是作为大人,对自己的消费账单的监管漏洞,特别是这个电子支付盛行的当下。

保险过期

2025年3月18日 21:56

周日带娃去医院看病,又感冒了。周六夜里发了高烧,周日白天倒是没发烧。
这次医生还开了雾化的药,我们是第一次做雾化的小朋友,居然还很乖乖的配合。

三岁四岁的宝宝,谁都不怕,天不怕地不怕,还很抗拒睡觉别人给她盖被子。
所以感冒也不是一次两次了,即使晚上起来给她不停的盖被子,也是会被踢掉。
突然想起了杜甫的:“娇儿恶卧踏里裂” ,大概如此。

宝宝发烧,一般都是夜里,体温上涨的特别快,容易过热,但是吃个美林大概能睡一个整觉。
这里有个小贴士:美林4-6小时,才能用一次 且体温超过38.5,冰敷贴没有这个限制,所以趁早用可以。

现在孩子发烧,基本上我都不是很担心了,心里总想着,过一天就好了,也就放松下来了,焦虑毫无作用。
事实也基本上如此,每次发烧都是1-2天内完全退烧,只是咳嗽会持续一段时间。
小孩还跟大人不一样,小孩子的恢复力会强于大人,大概是人年纪上去了,身体的机能不如从前。

周日我还专门让医生开了个病毒检测,看看是不是流感,还好不是流感。
流感的康复期会拖的更长,而且发热会反复,只要不是流感,都好说。

今天准备用沪儿宝报销一下看病的费用

你猜怎么着,它提示我,不在保单生效时间。
我想着怎么会?我明明记得去年买了呀,我看短信,1月份过期的!
现在的各种滥用短信消息通知,我都没注意到手机上何时收到了这封短信息。

算了吃一堑长一智,现在就给续费上。
对于小孩子的保险来说,上海这边基本都是社保卡+其他保险 的配置方式。
任何理财型的健康保险,我觉得都是没必要的,既然买保险都是想容易理赔的最好。

以上,记录一次娃娃感冒与保险过期的经历,以后一定要注意看下通知短信。

你见过石磙吗

2025年3月13日 15:42

我出生在农村,但是自幼便随父母在城市生活,没见过石磙。
但是我工作之后的十余年里,每到一家公司都能见到活着的”石磙“ 。
小时候不懂,我妈说不做事的人就是 ”石磙“。
我问为什么,她说:“推一下动一下的那就叫石磙,你不推他就不会动”。

在职场流传一个都市传说,是绝对不能点破别人的身份。
当你说出了,“这个人怎么是个石磙 ?!”,很有可能你就会被干掉。
毕竟人家可能是不需要工作,但是你是真的需要。

”石磙“ 人是木讷的,观察你身边的这种人。
你会发现这种人的共情能力极低,就像行走在职场的npc。
这种人套着工具人的马甲,却无法主动思考任何工作内容。

最后,你见过石磙吗?

给雪花特效添加自动开启与关闭

2025年3月11日 13:58

冬天的时候给博客加了下雪特效,在这一篇博客的文末提了一嘴 –感冒了
当时当时忘记加自动关闭的功能了。
今天抽五分钟补一下,需要脚本的自取,附在本文末了。
说起为啥想起来要补关闭特效的功能,还是在「灰常记忆」的博客中,看到了「网友小宋」的留言才记起。

看了下最近的天气,反复无常,又在下雨。
上海的气温一如既往的不稳定,谨防感冒,注意添衣。

后记

我又修改了脚本,并且添加了樱花🌸效果,主要的修改为:

  1. 去除定时关闭,以后尝试不同的季节用不同的树叶飘落效果
  2. 增加樱花图片/将雪花地址更新为樱花图片地址
  3. 后面尝试添加天气效果,先待定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
(function() {
// 配置参数
const snowflakeCount = 10; // 雪花数量
const minSize = 15; // 雪花最小尺寸
const maxSize = 30; // 雪花最大尺寸
const windEffect = 40; // 风的强度(越大,飘动越明显)
const snowflakeImage = 'https://vrast.cn/img/snow.png'; // 外部雪花图片路径

// 创建雪花元素并设置随机属性
function createSnowflake() {
const snowflake = document.createElement('div');
snowflake.className = 'snowflake';

// 随机大小
const size = Math.random() * (maxSize - minSize) + minSize;
snowflake.style.width = `${size}px`;
snowflake.style.height = `${size}px`;

// 随机水平位置、动画速度
const leftPosition = Math.random() * 100; // 随机水平位置
const animationDuration = Math.random() * 3 + 3; // 动画持续时间
const delayTime = Math.random() * 5 + 's'; // 延迟时间

snowflake.style.left = `${leftPosition}vw`;
snowflake.style.position = 'fixed'; // 使用 fixed,避免影响页面滚动
snowflake.style.top = `${-size}px`; // 初始位置设置为视口外的顶部
snowflake.style.pointerEvents = 'none';
snowflake.style.userSelect = 'none';
snowflake.style.zIndex = 9999;

// 设置雪花图片
snowflake.style.backgroundImage = `url(${snowflakeImage})`;
snowflake.style.backgroundSize = 'cover'; // 图片铺满雪花容器

// 添加动画效果
snowflake.style.animation = `fall ${animationDuration}s linear infinite`;
snowflake.style.animationDelay = delayTime;

// 随机旋转角度,模拟风吹效果
const rotateAngle = Math.random() * 360;
const translateX = (Math.random() - 0.5) * windEffect; // 风吹偏移
snowflake.style.transform = `rotate(${rotateAngle}deg) translateX(${translateX}vw)`;

// 将雪花添加到页面
document.body.appendChild(snowflake);
}

// 初始化CSS样式
function initCSS() {
const style = document.createElement('style');
style.innerHTML = `
/* 雪花的样式 - 使用图片 */
.snowflake {
position: absolute;
background-color: transparent;
opacity: 1;
transform-origin: center;
pointer-events: none;
user-select: none;
}

/* 雪花下落动画 */
@keyframes fall {
to {
transform: translateY(100vh); /* 让雪花从顶部飘落到屏幕底部 */
}
}
`;
document.head.appendChild(style);
}

// 初始化雪花数量
function initSnowfall() {
for (let i = 0; i < snowflakeCount; i++) {
createSnowflake();
}
}

// 初始化函数
function init() {
initCSS();
initSnowfall();
}

// 获取当前日期对象
const currentDate = new Date();
// 获取当前月份,注意 getMonth() 方法返回的月份是从 0 开始计数的,所以 0 代表 1 月,11 代表 12 月
const currentMonth = currentDate.getMonth();

// 判断当前月份是否为冬季
function isWinter(month) {
// 11 代表 12 月,0 代表 1 月,1 代表 2 月
return month === 11 || month === 0 || month === 1;
}

// 调用函数进行判断
if (isWinter(currentMonth)) {
// 启动雪花效果
init();
}
})();

小孩子的争执

2025年3月10日 14:38

小孩子之间的争执比大人多的多,特别是自己的孩子跟其他亲戚家的孩子一起玩的时候。
大的孩子是真的一点也不让小的呀,也不是差一两岁,有的差了6~9岁,还是这样。

宝宝想要玩具,抢不过就会哭,看到马上要哭了,这时候我都会下场去干预下。
我侄子大9岁,侄女大我家的娃6岁,他们在玩的时候我就会说:

“没事我家宝宝不会拿走你的玩具,只是玩一下,如果玩坏了我给你买两份新的”。

我家娃倒是从来不拿走别人家里的东西,这一点我觉得教育的很好。
不是自己的东西玩一玩就算了,要拿走别人的东西,需先要征得主人同意。

长辈说,小孩打打闹闹很正常,一会儿就和好了,让我不要给小孩买东西,玩坏就玩坏,太见外不好。
后面我再去,我就让他们闹去,也再不说什么给大的娃买新玩具。

大孩子基本上不会带小的玩,只是小娃娃乐此不疲的当个跟屁虫。
一般情况就是小的皮,大的不理小的,小娃娃闯祸了,就轮到大的挨骂。
原因当然是没有看好弟弟妹妹,实际大的根本就懒得理睬小娃娃,自己玩自己的。
小娃娃,看了之后就要模仿,模仿不成反倒是闯祸不少。
可能是把杯子里的水倒在地上,也可能是把玩具印章,印到墙上。

现在我也懂了,为什么,家长一般比较宠家里最小的那个。
现在的独生子多,导致家里娃每次都想去找小姐姐玩,玩了之后又不开心。
博客圈有两娃的家庭,应该没有这个烦恼吧 ?反正都是自己家娃,也没有出去找玩伴的需求。

QQ20250310-142943

周六跟宝宝去公园玩,她在玩吹泡泡,有个路过的小女孩,伸手就要拿宝宝的。
我问宝宝
“你想给她玩吗”
“想” 点点头
“那你让妹妹玩会儿吧”
“她还在玩,不还给我了” 过了几分钟
“宝宝这是你的东西,你想玩,你就要说,这是我的东西,还给我”
“这是我爸爸给我买的,你还给我” 跟小女孩说了之后,顺利的把东西拿回来了。
晚上回去的路上,还悄悄跟我说 “爸爸,我今天大方吧,我把玩具借给妹妹玩了”

以上,记录一些育儿故事,小树苗一天比一天大了,感慨甚多,但就记录到这吧。

姐妹相亲趣事

2025年3月7日 17:45

最近肖师傅在工作中一直在开发新功能,身心比较疲惫,又迷恋上了王者中的刘禅,改名为小霸王爱飙车,主要玩法就是铭文点冷却,出肉装后和敌方秦王绕柱,顺带把塔退了,没事就推塔,从不参团,肖师傅说从中获得了巨大的快乐

所以今天由我来给大家分享点我姐妹的相亲八卦~

小c是有点社恐的女孩,小c妈妈介绍了一个男孩,两人在VX上聊的还可以,但是男孩白天基本上不找小c聊天,基本要半下午或者晚上才出现,有一次男生半夜还找小c聊天,两个人的兴趣爱好也不是特别合得来。随后男生约小c吃饭,出门前还很积极,还询问小c说能不能提前出来,然后两人吃饭时,由于都比较社恐,小c很努力的找话题,但是男孩一个话题都不着,小c很尴尬,找话题的时候礼貌的问了一下之前谈过女朋友没有,于是对方说之前谈了1个女朋友,谈了4年分手了,说前女友跟他出去玩的时候从来不穿裙子,但是和闺蜜和去男性朋友家玩的时候都穿了裙子,男孩很生气这件事,男孩对前女友好像念念不忘,追忆颇深,一直在和小c说他前女友的事情,吃完饭两人就各回各家了,然后小c礼貌问男孩吃饭多少钱,男孩的回答如下:

我觉得觉得男孩真的很搞笑,吃饭时候话题不找,一直在追忆前女友,饭钱倒是算的清清楚楚,生怕自己吃亏了,感觉不太尊重小c,于是我和肖师傅都pass了这个男孩。本以为两人很明显都没看上,不会再联系,结果男孩第二天晚上莫名其妙说了给小c发了2条微信:

小c惊呆了,不知道对方什么意思,还跟我说是不是食之无味弃之可惜,还要把她当备胎,小c很礼貌的回复了一些话,随后男人又没回了,之后小c就跟妈妈说拒绝对方并删除了,她说不然很尴尬留着VX也不会在说话了。

肖师傅对这个男的评价是:连顿饭都不请小姑娘吃
我对在这个男的评价是:pass,下一个

近期的所思所想

2025年2月25日 14:22

最近感冒

终于是逐渐好了,大概持续了约有一个月了,这个后遗症,也就是咳嗽,持续的时间可长了。
跟前面的几次感冒类似的话基本上都持平,大约要一个月才能好透,我是看出来了,病毒主要攻击的就是呼吸道。
柿子要挑软的捏,病毒是懂的,我的喉咙一直都不怎么好,有慢性咽炎。
最近在喝领导买的「胖大海罗汉果橘红润喉茶」,不过这个茶真的是难喝,先喝两盒再看看效果。

幼儿园

开学了,老师说要我们小朋友家长都准备好牙刷,带到幼儿园。
我觉得这一点倒是非常不错,小朋友在家刷牙都是懒得自己动手,知道家里人会给她刷。
老师推荐的是儿童牙刷「恐龙医生」,到货后我一看,比我之前买的牙刷要质感好一些,而且比较小巧。
带牙刷到幼儿园,小朋友们一起集体刷牙,没有了家人的干扰,也就自己动手了,还能学学怎么科学刷牙。
所以上幼儿园还是有好处的,真的能学到东西,我家娃以前两岁半还要用尿不湿,也是到幼儿园才能戒掉。
看来不是娃娃不给力,还是家长没有学会科学的教育方式,这点要反思下。

我妈过生日

就在前两天,娃娃在生日宴上闹个不停,十几号人看她在那边哭唧唧。
下午回去我问:

“为什么你中午吃饭的时候要哭呀?”
“奶奶过生日,不给我过生日,所以我就哭”

搞了半天,宝宝以为今天奶奶自己一个人过生日,不给她也过生日,所以要哭唧唧。
这是一个三岁小朋友的内心世界,我只告诉宝宝 “哈哈哈” 用来表达我的心情。
孩子长大点就好了,现在这个阶段闹就闹吧,三岁四岁狗嫌的年纪,这很正常。

关于deepseek的文章

这段时间我发了很多,前些年在流行web3,与ar相关我都没怎么写。
原因是ai在身边落地方案太多了,而且已经在影响我们的日常生活。
教育行业估计要被大洗牌,最先冲击的大概是语言类的教培班,这类培训班的生存无疑会更加的困难。

接下来就是语数的课程培训班,这方面利用好ai视觉基本上可以实现无痛教学。
对未来我们养娃来说,我觉得是利好消息,我是愿意每个月花费了20-50$去购买一些带视觉的ai服务的。
这类服务比较明显的就是,可以实时帮助娃去批改作业,纠正错误,这个不错。
如果这个钱花在培训上,可能就是一节课的价格,当然我并不是质疑线下教学,只是在家时间上更自由而已。

刷到一个采访

视频是讲了一个自媒体,去采访另外一个香港打工的,广州青年。
这个青年在视频中自我介绍,在内地读了大学,在香港读了个自认为很水的研究生,告诉观众拿到学历可以在香港工作了。
然后就是一些生活开销,这部分就是自媒体想要的爆点,简单总结就是房价高,非必要不外出,吃最便宜的饭攒钱。
后来这个视频火了,这个被采访的青年也被开了,我想他也没想到说了点真话,他居然会面临失业。
我并不对所谓香港生活有向往,记录这个例子,只是提醒自己公共场合谨言慎行,特别是现在这个人人都是自媒体的时代。

好了,就写这么多,以上近期的所思所想。

上有政策下有对策

2025年2月20日 16:38

前几天的事儿,今天才想起来写,这事儿一想起就觉的好笑,所以就在此记录。

先是在群里收到一条 “紧急通知” 如下,让家长带孩子看地方台的幼儿开学第一课。

看视频需要拍照留下 “证据” ,并且需要写观后感文档发送到群里。

由于我是比较后才看到这条消息的,所以就先看看其他的家长写的观后感,此处只例举其中一个写的比较多的。

上图节选了部分段落,说在开学第一课学习到了 消防知识,还有网络诈骗,交通安全 真的内容丰富。

然后我就跟娃一起看了老师发送的视频链接,结果你猜怎么着。

视频里只讲了小朋友在幼儿园的心理健康和一些注意事项,跟大部分家长提交到群里的文档中描述的内容,风马牛不相及。

由此可以得出结论,其他的人发的文档都是自己编的,细看之下还是ai写的。

不过拍摄的图都一板一眼,小朋友们端坐,这可都是三岁多的娃娃们,四岁都没有。

我赌一个棒棒糖,小家伙们摆拍最多30秒,就坐不住了。

这大概就叫上有政策下有对策罢。

通过js调用ollama的api

2025年2月18日 23:23

如果你有这个需求可以参考 ollama 的官方api与本篇文章,官方的例子里很多都是用了curl进行演示。
https://github.com/ollama/ollama/blob/main/docs/api.md

在写脚本之前需要先确认本地的 ollama 网络服务是否正常启动。
http://localhost:11434 通过访问本机的11434端口确定是否ollama的服务正常运行

值得注意的是在浏览器中访问本地 index.html 文件时,一般会遇到 CORS(跨源资源共享)策略限制,导致无法调用本地的 Ollama API,所以你需要在本地搭建一个http服务器,如果没有这个服务器的话,可以使用下面这个VSCode插件。

右键你的html文件启动本地http服务器,现在就可以很方便的调试你的页面,好用推荐。

既然我们已经拿到了官网的API文档,那么下面要做的事很简单,将这个文档丢给deepseek,或者是其他的ai,让打工ai给我们造一个前端界面就用。

分析下核心代码,参考了文档中使用curl发送json的测试用例,写了一个post方式提交数据到特定的地址。

参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>与 Ollama 交互</title>
<style>
body {
font-family: Arial, sans-serif;
}
#messages {
border: 1px solid #ccc;
padding: 10px;
max-height: 300px;
overflow-y: auto;
}
#inputMessage {
width: 100%;
padding: 10px;
margin-top: 10px;
box-sizing: border-box;
}
#sendButton {
margin-top: 10px;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
#sendButton:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<h1>与 Ollama 交互</h1>
<div id="messages"></div>
<textarea id="inputMessage" placeholder="输入你的消息..." rows="3"></textarea>
<button id="sendButton">发送</button>

<script>
const sendButton = document.getElementById('sendButton');
const inputMessage = document.getElementById('inputMessage');
const messages = document.getElementById('messages');

// Ollama 服务的 URL,假设它运行在本机的 11434 端口
const ollamaApiUrl = 'http://localhost:11434/api/chat';

sendButton.addEventListener('click', async () => {
const message = inputMessage.value.trim();
if (!message) return;

// 显示用户发送的消息
addMessage('你:' + message);

try {
const response = await fetch(ollamaApiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'deepseek-r1:8b',
messages: [
{ role: 'user', content: message }
],
stream: false
})
});

if (response.ok) {
const data = await response.json();
const reply = data.message && data.message.content ? data.message.content : '无回复内容';
addMessage('Ollama:' + reply);
} else {
addMessage('错误:无法与 Ollama 服务通信');
}
} catch (error) {
addMessage('错误:' + error.message);
}

inputMessage.value = ''; // 清空输入框
});

function addMessage(text) {
const messageDiv = document.createElement('div');
messageDiv.textContent = text;
messages.appendChild(messageDiv);
messages.scrollTop = messages.scrollHeight; // 滚动到底部
}
</script>
</body>
</html>

以上,记录通过js调用ollama的api。

一行代码在Mac上部署deepseek

2025年2月17日 23:13

前两天发了一个关于Ollama 项目的介绍的文章,今天就接着说一下通过几行代码在本地部署DeepSeek,当然如果你是windows系统也是差不多的步骤,都是控制台运行,之所以在这边都是推荐直接跑控制台是因为这样占用系统内容更少,减轻跑ai时候的系统压力。

圣兽镇楼

打开ollama软件之后,在控制台运行指令: ollama run deepseek-r1:8b
在此之前你需要先安装Ollama,这个比较简单,只需在官网下载(https://ollama.com/ ),运行即可。
随后控制台输入下面指令,运行 deepseek-r1:8b 版的大模型,如果未下载,会直接进行下载。

下图中使用的这个版本的模型较为小巧,也够日常使用,在ai思考的时候,我看下了gpu的内存占用情况,峰值大概接近90%左右。

目前我的Mac mini配置为 M4/24g/1T 版,运行起来没有卡顿,并且不影响其他工作,如果你也有类似需求,可以无痛部署一个本地ai ❤️。

下面欣赏下8b小模型生成的文章:

一文讲清楚Ollama项目

2025年2月13日 17:31

Ollama 到底是个啥东西呢,这一篇小白文给你讲清楚。

一、Ollama 项目的起源

在人工智能领域蓬勃发展的浪潮中,大语言模型(LLM)展现出了惊人的能力和潜力,然而,传统的模型使用和部署方式却存在着诸多限制。Ollama 作为一个专注于本地化部署大型语言模型(LLM)的开源框架应运而生,其诞生背景可以从以下三个关键方面进行深入剖析。

技术民主化需求

随着大语言模型如 Llama、GPT 等的相继问世并广泛应用,人工智能技术开始逐渐走进大众的视野。但与此同时,传统的云端部署模式暴露出了明显的弊端。这种模式严重依赖厂商提供的 API,用户在使用模型时需要将数据上传至云端进行处理。这不仅存在着数据隐私泄露的风险,使得用户的敏感信息可能会被第三方获取和利用,而且还需要支付高昂的使用成本。对于许多注重数据隐私和成本控制的用户来说,这种模式显然无法满足他们的需求。因此,市场上对于能够实现本地化、隐私可控的模型运行方式产生了强烈的需求。Ollama 的出现正是为了满足这一需求,它为用户提供了一种在本地运行大语言模型的解决方案,让用户能够更好地掌控自己的数据和成本。

简化部署复杂性

早期的开源大语言模型在部署过程中面临着巨大的挑战。手动配置环境、处理各种依赖项以及调试模型参数等操作,对于非专业用户来说几乎是难以完成的任务。这些复杂的步骤不仅需要用户具备深厚的技术知识,还需要花费大量的时间和精力。这使得许多有使用需求的用户望而却步,限制了大语言模型的广泛应用。Ollama 针对这一问题进行了深入的研究和创新,通过巧妙地封装模型权重、推理代码和微调脚本,实现了“一键运行”的功能。用户只需要简单地执行相应的命令,就可以轻松地启动和运行模型,无需再为繁琐的部署过程而烦恼。这种简化的部署方式大大降低了技术门槛,使得更多的用户能够方便地使用大语言模型。

通过Ollama官网下载的app实现一键下载大模型

社区驱动与开源精神

Ollama 的发展离不开开发者社区的积极推动。开发者们深刻认识到开源的重要性,他们希望通过开源的方式让更多的人参与到项目的开发和改进中来。结合 Docker 容器化技术,Ollama 将模型打包为标准化的模块(Modelfile)。这种模块化的设计使得模型可以在不同的平台上进行轻松的部署和运行,实现了跨平台的兼容性。同时,Ollama 的开源特性吸引了大量的开发者和贡献者,他们来自不同的领域和背景,各自发挥着自己的专业优势,为项目的发展贡献着自己的力量。在社区的共同努力下,Ollama 不断地进行迭代和优化,功能日益完善,性能也得到了显著的提升。

二、为何选择 Ollama 运行大模型?

1. 简化部署流程

  • 开箱即用:Ollama 提供了极其便捷的使用方式,用户只需通过简单的命令“ollama run <模型名>”,就可以自动下载并运行所需的模型。例如,输入“ollama run llama2”,系统会自动完成模型的下载和启动过程,无需用户手动处理复杂的依赖关系或进行繁琐的环境配置。这种一键式的操作极大地节省了用户的时间和精力,让用户能够快速地开始使用大语言模型。
  • 预构建模型库:Ollama 拥有丰富的预构建模型库,其中包含了 Llama、Mistral、Qwen 等主流的大语言模型。这些模型覆盖了从 3B 到 70B+ 的参数规模,能够满足不同用户的需求。无论是对于需要轻量级模型进行快速测试的开发者,还是对于需要高性能模型进行复杂任务处理的企业用户,都可以在模型库中找到合适的模型。用户可以直接调用这些预构建的模型,无需自己进行模型的训练和优化,进一步降低了使用门槛。
  • 跨平台支持:Ollama 具有出色的跨平台兼容性,它支持 macOS(特别是针对 Apple Silicon 进行了优化)、Linux、Windows(预览版)以及 Docker 容器化部署。这意味着用户可以根据自己的硬件环境和使用需求选择合适的平台进行模型的运行。无论是在个人电脑上进行开发和测试,还是在企业的服务器集群中进行大规模的部署,Ollama 都能够提供稳定可靠的支持。

2. 高效资源利用

  • 权重量化技术:Ollama 采用了先进的权重量化技术,支持 INT8、INT4 等低精度量化方式。通过这种技术,模型的显存占用可以降低至原始模型的 ¼。这使得在消费级硬件上,如配备 16GB 内存的 Mac,也能够运行 65B 参数的大型模型。权重量化技术不仅减少了对硬件资源的需求,还提高了模型的运行效率,使得更多的用户能够在自己的设备上运行大语言模型。
  • 分块加载与缓存机制:为了避免一次性占用过多的显存,Ollama 采用了分块加载的机制。在处理长文本时,模型会将文本分成多个块进行加载和处理,从而有效地减少了显存的占用。同时,Ollama 还引入了缓存机制,它会缓存历史上下文的计算结果。当再次需要使用这些上下文时,系统可以直接从缓存中获取,无需重新进行计算,大大提升了长文本处理的效率。
  • GPU/CPU 灵活调度:Ollama 支持 NVIDIA/AMD GPU 加速,利用 GPU 的强大计算能力可以显著提高模型的推理速度。同时,在没有 GPU 或者 GPU 资源有限的情况下,Ollama 也可以在 CPU 模式下运行。在 CPU 模式下,它通过 Metal(针对 Apple Silicon)或分布式推理等技术对性能进行优化,确保在不同的硬件环境下都能够实现高效的运行。

3. 隐私与安全性

  • 完全离线运行:Ollama 支持完全离线运行,这意味着用户的数据无需上传到云端进行处理。在一些对隐私要求非常严格的场景,如医疗、金融等领域,用户的敏感数据可能包含了大量的个人隐私和商业机密。使用 Ollama 可以确保这些数据始终在本地进行处理,避免了数据泄露的风险,满足了这些领域对数据隐私的严格要求。
  • 企业级定制:对于企业用户来说,Ollama 提供了私有化部署的解决方案。企业可以根据自己的需求,结合本地知识库(如 FastGPT)构建专属的 AI 应用。这种定制化的部署方式可以有效地避免敏感信息的泄露,同时还能够根据企业的业务需求对模型进行优化和调整,提高企业的竞争力。

4. 灵活扩展与定制

  • 模型微调支持:Ollama 集成了 LoRA、Prefix Tuning 等先进的模型微调技术。通过这些技术,用户只需要少量的数据就可以对模型进行微调,使其更好地适配垂直领域的需求,如法律、医疗等。这种微调方式不仅可以提高模型在特定领域的性能,还可以减少数据收集和标注的成本,提高开发效率。
  • 自定义模型导入:Ollama 支持从 GGUF、PyTorch、Safetensors 等多种格式导入私有模型。用户可以将自己训练的模型或者从其他渠道获取的模型导入到 Ollama 中进行使用。同时,用户还可以通过 Modelfile 对推理参数进行定制,根据自己的需求调整模型的行为和性能。
  • API 兼容性:Ollama 提供了类 OpenAI 的 REST API,这使得它可以无缝对接现有的工具链,如 LangChain、AutoGPT 等。用户可以利用这些工具链快速地开发和部署基于大语言模型的应用程序,无需对现有的代码进行大规模的修改,降低了开发成本和难度。

5. 生态工具集成

  • 可视化交互:为了提升用户体验,Ollama 与多种可视化工具进行了集成,如 Open WebUI、Chatbox 等。这些工具提供了类 ChatGPT 的图形界面,用户可以通过直观的界面与模型进行交互,无需使用复杂的命令行操作。这种可视化的交互方式使得大语言模型的使用更加方便和友好,吸引了更多的用户。
  • 分布式与并发处理:在高并发场景下,Ollama 支持多 GPU 并行推理和异步请求处理。通过多 GPU 并行推理,系统可以充分利用多个 GPU 的计算资源,提高模型的处理速度和吞吐量。异步请求处理则可以优化系统的响应性能,确保在大量用户同时请求时,系统能够快速地响应和处理。

三、Ollama 的核心价值

Ollama 凭借其极简部署、隐私保护和资源优化这三大核心优势,在本地运行大语言模型的领域中脱颖而出,成为了行业内的标杆工具。

其极简部署的特性使得用户可以轻松地在本地环境中运行大语言模型,无需具备深厚的技术知识和复杂的操作技能。这降低了使用门槛,提高了开发和应用的效率,让更多人能够参与到人工智能的开发和应用中。

Ollama 提供了完全离线运行和企业级定制的解决方案,确保用户的数据安全和隐私。这对于对数据隐私要求严格的行业和用户意义重大。

资源优化是 Ollama 的另一个重要优势。通过权重量化技术、分块加载与缓存机制以及 GPU/CPU 灵活调度等技术,能在有限硬件资源下实现高效的模型运行,降低对硬件的要求,提高资源利用率。

开源特性和活跃的社区生态为其发展提供了强大动力。开源让更多开发者参与项目开发和改进,不断注入新活力和功能。活跃的社区为用户提供交流和学习平台,用户可在社区分享经验、解决问题,共同推动大语言模型技术发展。

Ollama 推动了大模型技术的普惠化,使开发者、企业乃至个人用户能以低成本探索人工智能应用的潜能,为人工智能的普及和发展做出重要贡献。

如此药店

2025年2月12日 22:53

昨天去某丰大药房,买药,目标是补货奥司他韦和消炎药,头孢,氧氟沙星都行。

去药店的时候,白大褂大妈让我们等一下,她正在卖货,一个五十岁左右的大叔,正在她这边买保健品。
我倒是知道保健品可以用医保的钱买,但是我没想到,这大叔居然被忽悠着买了四千多的保健品。
具体是不是“保健品”这个分类我不太明白,也可能是营养品,当场我看这位大叔是刷医保卡的。

等他们忙好我问,“你这边有奥司他韦吗?” 领导在网上买的二十多块的奥司他韦已经快吃完了。
“我建议你吃,抗病毒中药” 药店的白大褂大妈说。
听到这我其实是挺生气的,你谋财没问题,算盘珠子都要蹦到我脸上了,未免有点不尊重人了。
“我不要抗病毒中成药,我就要奥司他韦” ,我再次强调。
“好,我拿给你,这个不可以刷社保的哦”
“可以” 我拿出手机,结果刷了我45块,
“你这边有头孢吗?“
“没有,但是有消炎中成药” 给我递上了三盒中成药,说是消炎去火的。
我说现拿一盒,结账一看价格76。扣掉社保,付7.6。

对了昨天晚上吃消炎的中成药,这药没用,早上五点喉咙肿有有咳嗽痛醒了。
为啥要记一下这个事情,单纯的觉得智商被按在地上摩擦了,用以警醒,睡不着一半是被气的。
以后我只在网上和医院买药,giao

《唐探1900》观后感

2025年2月7日 15:28

春节看了两场电影,分别是《唐探1900》和《哪吒之魔童闹海》
首先,恭喜哪吒2荣登中国影史票房第一!但是今天还是来讲讲《唐探1900》:历史迷雾中的华人抗争史诗,在辞旧迎新的光影盛宴中,《唐探1900》以其独特的历史纵深感令人耳目一新。影片巧妙糅合唐人街探案、印第安文化、清廷秘史三条叙事线,在旧金山淘金热的时代背景下,谱写了一曲华人劳工的悲壮史诗。

故事梗概

故事发生在1900年美国旧金山,议员候选人格兰特的女儿爱丽丝被开膛破肚惨死于剧院后巷中,同时旁边还有被割喉而亡的印第安族长六手,而嫌疑人是华人街协盛堂白堂主的儿子白振邦,因有路人指出,事出当晚白振邦出现过在剧院后巷中,且第二天早上6点出现在码头欲潜逃,此案轰动全美,称凶手为开膛手杰克。白堂主想找福尔摩斯帮忙给儿子脱罪,而此时在福尔摩斯身边当翻译的秦福被福尔摩斯忽悠来破这桩案子,听到事情原委后秦福觉得自己解决不了想逃离,恰巧在从窗户逃离时碰到了想找杀父仇人的印第安族人阿鬼,由于族里的先知珍珠说第一个撞到他的人可以帮他找到凶手,于是他盯上了秦福,无论秦福躲到哪里,都能被他发现,最终被带回了印第安族,经过一顿神奇操作以及阿鬼的身世揭露,秦福与阿鬼踏上了探案之旅。

彼时的中国还是清朝末期,慈禧太后指派费洋古前往美国抓革命叛党郑仕良,但美国人民因为开膛手杰克事件非常抵制华人,刚下船到就被扒光衣服检查,还被骗走了行囊,只能到协盛堂求助白堂主,正好白振邦被保释回到堂内,而秦福和阿鬼查到了一些线索,需要帮白振邦脱罪需要问出案发当晚他去了哪里,一行人全在堂内碰头了,可想而知是画面是混乱又搞笑的。最终费洋古没抓到人,郑仕良说出了案发当晚和白振邦一起去爱尔兰帮会偷枪的事实。

局势还未明朗之际,中医医馆的中医林月娥以同样手法被杀害,秦福和阿鬼经过调查发现凶手不是同一人,作案手法不熟练,只是模仿作案,而后从中医馆老板口中得知白振邦与爱丽丝是恋人关系,经常来林月娥这里约会,且林月娥诊断出爱丽丝怀孕了,此时白振邦和郑仕良想通过在美国大火的魔术师金陵福回国之际运输枪支,秦福和阿鬼来找他们后,白振邦坦白,并告知那天早上6点在码头是为了和爱丽丝私奔,随后在离开剧院时遇到费洋古,双方大打出手,阴差阳错下帮助金陵福完成了一场精彩绝伦的魔术表演,但费洋古也看到了枪支所在,离开后去了爱尔兰帮与之达成合作,之后在护送枪支途中搏斗,抓到秦福、阿鬼和郑仕良后发现运送的是魔术道具,3人被抓,阿鬼在狱中放出信鸽。第二天费洋古欲活埋3人,关键时刻来报,清朝被八国联军攻打,费洋古满腔愤怒与爱尔兰帮开战,与2名手下纷纷战死,最后印第安族人赶到清理了战场。

在护送枪支前一晚,白振邦去找格兰特质问是不是他杀了爱丽丝,且格兰特说出女儿已怀孕的事实并打了白振邦一枪,把他丢进地下冰窖中,白振邦被冻死后,格兰特和手下做局,在白堂主的工厂里杀害了爱丽丝的黑人女佣,并诬陷给已死去的白振邦,在随后的发布会中本以为案件会盖棺定论,且排华法案要定案。发布会当天,秦福3人出现还原案件发生经过,杀死爱丽丝的凶手竟是格兰特,因接受不了女儿与华人恋爱和怀孕,与女儿争吵过程中不慎把女儿推下楼梯而亡,因之前做过医生,所以把女儿的肚子剖开,器官也全拿了出来,而印第安族长因看到了他与手下抛尸的过程遂被杀,其余两起案件是手下做的。而在排华法案会议中,白堂主振奋人心的演讲和秦福3人的助攻下,最终投票也未通过法案,但没收了协盛堂的全部财产。

本以为故事到这结束了,没想到最后结局幕后黑手是一直在影片中帮助中国人做好人的威曼先生操纵大局,在格兰特家里商议能否取消排华法案时目睹了一切,所以出了嫁祸给白振邦的主意,最后即要了协盛堂的地和财产,又取消了排华法案,让华工做他们的奴隶。

观后感

刘昊然饰演的秦福,出身中医世家,爷爷是宫廷御医,后来全家死于战乱,于是秦福为了寻找哥哥来到美国。王宝强饰演的阿鬼是河北人,父亲在修建中央太平洋铁时死于爆炸事故,年幼的阿鬼被当地的印第安族收养。而影片最精妙处在于构建了三重身份对照:秦福的中医智慧与阿鬼的印第安生存哲学形成侦探组合的认知互补;白振邦作为华裔二代在爱情与族裔认同间的撕裂;费洋古这个清廷鹰犬在忠君思想与民族大义间的摇摆。当阿鬼用鹰羽拂过唐人街砖墙,当秦福以银针刺破凶案迷雾,两种古老文明的对话超越了探案本身。

历史褶皱里的现实回响

陈思诚将排华法案(1882)、中央太平洋铁路华工血泪史(1863-1869)、八国联军侵华(1900)三个时空折叠重构。在影片快结束时,发哥饰演的白堂主在市政厅的控诉戏,他最后孤身一人走进市政厅,独自面对几百个高高在上的白人进行辩驳的情节,他不卑不亢,他慷慨激昂,他请这些自以为高贵的洋人们睁开眼看看,建立起这座城市,修建起贯通全美铁路的,为你每天送上最新鲜蔬菜水果,为你浆洗衬衣的,都是你们蔑称为老鼠,视其为瘟疫的华工们。而从修建铁路这种最繁重的工作中一点点咬牙撑过来,在唐人街打拼多年拥有了一份家业的白轩龄,也是千千万万被卖猪仔的华人劳工的缩影。特别是这句”当你们的火车穿越内华达山脉时,每根枕木下都沉睡着一个中国灵魂!”这种艺术化的历史重述,让观众在悬疑叙事中触摸到真实的历史肌理。

文化解构中的当代启示

当结尾字幕浮现”本片致敬所有无名建设者”时,影院响起经久不息的掌声。这部电影的价值不在于推理的缜密,而在于它撕开了文明冲突的伪装——那些修建铁路的茧手、浆洗衣物的冻疮、培育菜园的佝偻身影,共同构成了美国崛起的隐秘基石。正如阿鬼的双重身份暗示的:在殖民者眼中,所有被压迫者都是”他者”。

尾声

走出影院,我和肖师傅说,作为一个中国人,我们应该自强不息,我更深刻的理解了国歌的内涵 “起来,不愿做奴隶的人们,把我们的血肉铸就我们新的长城”。在这部影片中,中国人就是美国人的奴隶,用血肉铸就了新中国的发展。现在的科技发展和和平生活都是无数前辈们造就的,应当珍惜,不要崇洋媚外,中国的大好河山值得我们爱护。《唐探1900》以其磅礴的叙事野心提醒我们:历史从不曾真正过去,那些被湮没的华人故事,正在新时代的银幕上获得重生。当秦福的银针最终刺破阴谋时,我们看到的不仅是案件的真相,更是一个民族找回历史话语权的寓言。

流感康复记

2025年2月6日 11:16

本来昨日应是上班第一天,但在前天写完 -2025春节小记 的后两个小时,就突然的发烧了。
症状
下午,没有什么征兆都是好好的,写完博客就只是躺了一会儿,觉得脑仁有点痛,不是表面的皮肤,是觉得大脑深处出来的感觉,很难去形容。
约过1h后,身体开始发冷,畏寒,吹一点风就开始冷的发抖,没有出汗,伴随关节疼痛,
大约2小时,症状开始加重,体温上升至39-40°,先吃了奥司他韦。

再过后半小时左右吃了布洛芬,随后就刷刷手机,半梦半醒消磨时间。期间体温高峰期过了40°

晚上,22点左右彻底退烧,在此期间流了大量的汗, 24点左右脑子基本上清醒了,没有浑浑噩噩的感觉,脑仁还有点痛感,已经微弱。

第二天请假了,也就是昨天,上午睡觉居然睡到11点,大概近期睡得最久的一次,上午还有点恍惚,现在我判断应该是睡太久导致的。
下午被领导拉去看了一场电影吃了晚饭,期间一直在流汗,现在看来应该是吃晚饭的时候穿多了,又不敢脱外套导致的。

这次流感与前些年疫情刚放开的那会儿的病状几乎完全一致。当时没有奥司他韦,熬了一周才好,咳嗽持续了月余。
对了,咳嗽的情况也记录下,喉咙痒,有咳嗽,有痰。早起较多,日常比较少,咳嗽也不多。相对第一次感染新冠有大大的减弱,可为不幸中万幸。

近期流感高发,期望我的感染康复经历能帮助到阅读此文的朋友。
以上,流感康复记。

2025春节小记

2025年2月4日 11:41

今天是春节假期的最后一天了,然而我家也没在单位请假,所以明天就要去上班咯。
就稍微休整下心灵与身体,这段时间带娃,又是走亲戚太累了。

我也有思考过,是否有必要走亲戚?
80-90这一代,各家都是独生子多,所谓亲戚多是上一辈的兄弟姐们的走动。对我们来说,多是陪着长辈各家去拜年。
等真的到了上一代人老去,估计走动的会更少。

城市里宗族观念薄弱,农村里倒是越发提倡宗族,比如前段时间我妈跟我说,镇上蒋肖氏族人都要出钱修祠堂。
选址是个风水极佳的地段(我们那边是4A旅游区,雪场也有。所以风景必定是极好的)。
每个族人要出300,点人头,一家几口人就要出多少钱。不出钱就不准录入族谱。
换句话说 ,赞助300 = 一个名字,多少有点变味了。
在这边流传一个笑谈,如果上海人逛xxx(一般指一些上海特色景点),是要被开除沪籍的。
但是在修祠堂这件事上,不出赞助费,是真的给你开除了宗族籍。

城市里不兴这个,也省去了很多的麻烦,基本上就是往上数两代人的亲戚之间互相走动下,大多就是找个饭店一起吃饭。
厨艺好,并且相聚的人少的话,一般就自己在家里烧一下,上海男人在厨艺方面一般都是不错的,这点值得各地学习。
当然我不是土生土长的上海人,所以我厨艺自然是遗传父母,一塌糊涂也正常。
要说会烧饭的湖北人多不多,我觉得是不多的,至少我亲戚这个圈子里,基本上烧菜水平都一般。
我们家乡人吃饭,一般碳水较多,所以每顿都要吃米饭,菜吃的倒是不多,评价一顿饭好不好吃,就是这个菜下不下饭。
如果都按照“这个菜下不下饭” 的标准来评价的话,不知道这算不算是导致烧饭水平不高的原因之一。

老丈人烧饭水平还是非常高的,再就是我姑爷。都是实力相当强劲的选手,每次去吃都能吃个肚儿圆才回家。
当然这个春节也去了,老丈人的儿子去他丈母娘家了,是山东的,刚好我们就在老丈人家借住一晚。

以前领导是有房间的,后来给了他哥的女儿,装饰成了儿童房,我有时候跟她开玩笑说:
“你连个房间都没有,你要生气回娘家都回不了!”
“我干嘛要回娘家,我有自己的房子,我会把你赶到次卧的!” (原文是赶出去,迫于形势修改之

大概就是如上对话,每次去借住都会被我想起,当然我肯定不会总是提起,未免显得情商过低。
时而拿来调侃一下,倒是没有关系,领导比较豁达,从不在意这种物质上的得失。

出去住,肯定是带上古灵精怪的宝宝,如果是带娃不闯祸那是不可能的,请看VCR

我侄女的玩具很多,外婆就给宝宝都拿出来玩,我正在看他们几个打牌,还在夸我家娃:
“我家宝宝,玩玩具的专注力很好的,就自己一个人能玩好久”
这句话没说完多久,他外公就看到宝宝悄咪咪的走过了,大概就是这样子。
开始外公以为是口红,等靠近“作案现场”才知道是玩具堆里面藏了个红色的印泥。
柜子上,地上,玻璃上,白色窗帘上,都是红色的小巴掌印。
外婆说: “还好宝宝争气,没有把印泥涂在墙上“, 毕竟墙纸比较难弄。
这次外婆家之行,宝宝留下了带红手印的白色窗帘,其他地方都弄干净了。
还好是我家娃,估计是我小侄女要挨打了,所以呀,臭宝,年龄就是你的保护色。

这可真是“为所欲为”的年纪,说到这,我想起了前几天火遍全网的,小孩子鞭炮炸井盖,父母赔偿几百万的事。
据说后续是父母离婚了,我想也是,离婚的话,未必是真离婚,应该是一个人背债,一个人维持家庭开销。
这件事出来,教育意义更大,熊孩子父母还是要加强安全教育,这可马虎不得。

春节也没有出去拍照,就跟几家亲戚拍了全家福。
哦,对了,回家的时候给领导也拍摄一张美图。

以上,2025春节小记。

iPhoneMirroring与DeepSeek

2025年1月31日 00:34

有些人看到标题可能会奇怪为什么这个博主要把,iPhoneMirroring与DeepSeek放在一起,该不是又是一个蹭流量博主吧。
嘿,我先不回答这个问题,先让我讲讲本期要分享的第一个主题「iPhoneMirroring」 。

第一个主题 : 当 Mac 遇见 iPhone

深度解析「iPhone Mirroring」功能与手柄游戏的革命性体验

在苹果生态系统中,跨设备协作一直是核心优势之一。2024 年 WWDC 大会上,苹果正式推出 macOS Sequoia 系统,其中一项重磅功能便是 「iPhone Mirroring」。这一功能不仅实现了 iPhone 屏幕的无缝投射,更允许用户直接在 Mac 上操控 iPhone,彻底打破设备间的壁垒。结合游戏手柄,用户甚至能在 Mac 上享受主机级的手游体验。本文将结合最新官方动态与实测数据,为你全面解析这一功能的使用技巧与玩法。

一、iPhone Mirroring:苹果官方的终极无线投屏方案

1. 功能亮点与更新

  • 无线连接,零延迟交互:与以往依赖第三方工具或数据线不同,macOS Sequoia 的 iPhone Mirroring 基于 Continuity 协议,支持无线低延迟投屏(需 iPhone XR 及以上机型,运行 iOS 18+)。
  • 直接触控与键鼠操作:用户可通过 Mac 的触控板、鼠标直接点击、滑动 iPhone 屏幕,甚至用 Mac 键盘输入文字。
  • 独立窗口,多任务并行:镜像窗口可自由缩放、置顶,支持与 Mac 应用同屏操作(如边刷短视频边写文档)。

2. 如何开启 iPhone Mirroring?

  1. 系统要求
    • Mac 升级至 macOS Sequoia,iPhone 升级至 iOS 18
    • 两台设备登录同一 Apple ID,并开启蓝牙和 Wi-Fi。
  2. 连接步骤
    • 在 Mac 菜单栏点击 「控制中心」 → 选择 「iPhone Mirroring」 → 选择你的 iPhone。
    • 首次连接需在 iPhone 上点击 「允许」 授权。
    • 连接成功后,iPhone 屏幕会以独立窗口显示在 Mac 上,且 iPhone 本体自动锁屏(防误触)。

3. 对比第三方工具的优势

功能官方 iPhone Mirroring第三方工具(如 AirServer)
连接方式无线,无需数据线部分需有线或局域网稳定环境
延迟控制<50ms(实测)100-200ms(依赖网络质量)
交互体验原生触控支持需模拟触控或手势映射
隐私保护端到端加密依赖第三方协议

二、手柄+镜像:解锁 Mac 上的主机级手游体验

1. 手柄与 Mac 的完美适配

  • 官方推荐手柄
    • Xbox Series X/S 手柄PS5 DualSense 手柄Switch Pro 手柄(需 macOS Sequoia 及以上系统)。
    • 苹果特别优化了 Xbox 手柄的震动反馈和 DualSense 自适应扳机(需游戏支持)。
  • 连接方式
    • 蓝牙直连:长按手柄配对键(Xbox 为顶部按钮,PS5 为 Share+PS 键)→ 在 Mac 的蓝牙设置中选择设备。
    • 有线连接:通过 USB-C 线直插 Mac(推荐 Xbox 手柄,延迟更低)。

2. 游戏场景实测与设置

  • 原生支持手柄的游戏
    • 《原神》:连接手柄后,镜像窗口自动识别,支持 4K 分辨率投屏(需 iPhone 15 Pro 的 USB 3.0 输出)。
    • 《暗黑破坏神:不朽》:通过 Mac 键鼠或手柄均可操作,实测帧率稳定 60FPS。
  • 非手柄游戏的按键映射
    • 使用 「Game Porting Toolkit」(苹果官方工具,macOS Sequoia 内置):
      • 将触屏手势映射为手柄按键(如《王者荣耀》技能键绑定到肩键)。
      • 支持保存多套配置,适配不同游戏类型。

3. 延迟与画质优化指南

  • 降低延迟
    • 关闭 Mac 的 「随航」(Sidecar) 功能,避免带宽竞争。
    • 使用 5GHz Wi-Fi 频段USB 有线连接(iPhone 15 系列支持有线投屏)。
  • 提升画质
    • 在 iPhone 设置中开启 「高画质投屏」(设置 → 通用 → AirPlay 与接力)。
    • 通过 Mac 的 「QuickTime Player」 录制镜像画面时,可自定义分辨率(最高 4K)。

三、生产力与娱乐的跨界玩法

1. 游戏场景

  • 多屏协作:在 Mac 主屏写代码,镜像窗口挂机手游《星穹铁道》,用手柄一键切换焦点。
  • 直播推流:通过 OBS 捕获镜像窗口,用手柄操控游戏,同步录制解说(实测 M3 MacBook Pro 可 4K 60FPS 推流)。

2. 办公与创作

  • 远程演示:在会议中镜像 iPhone 上的设计稿,用手柄代替翻页笔控制 Keynote。
  • 跨设备剪贴板:在 Mac 上复制文字,直接粘贴到 iPhone 的微信输入框(需开启「通用剪贴板」)。

四、争议与限制

  • 设备兼容性
    • 仅支持 iPhone XR 及以上机型,且 M1 以下芯片的 Mac 无法开启高画质模式。
  • 云游戏限制
    • Xbox Cloud Gaming 等流媒体平台会检测模拟器,可能封禁通过镜像投屏的账号。
  • 电量焦虑
    • 无线投屏时 iPhone 功耗增加,实测 1 小时耗电约 25%(iPhone 15 Pro Max)。

五、未来展望

  • Apple Vision Pro 整合
    消息称,未来 iPhone Mirroring 或支持将 iPhone 屏幕投射至 Vision Pro,结合手柄实现空间游戏操控。
  • 原生游戏生态扩展
    苹果正推动《生化危机 4 重制版》《死亡搁浅》等 3A 游戏登陆 Mac,未来或支持 iPhone 镜像同步存档。

小结

iPhone Mirroring 不仅是苹果生态的又一次进化,更重新定义了「设备边界」。当手游玩家在 Mac 上用手柄释放连招,当创作者用镜像窗口高效协作,这场由软硬件协同掀起的革命,正在将「无缝体验」推向新的高度。而对于普通用户,或许只需记住:你的下一台游戏主机,何必是主机?

很高兴你能阅读完第一个主题,在开始第二个主题之前,我想有必要说明下,上面这个主题的文章是由DeepSeek AI撰写的。
上文的图是我使用自己的电脑连接手柄,并且启用iPhone Mirroring截图的,并且当下iPhone Mirroring 是**不具备**手柄操作的功能。换言之,这些都有由DeepSeek AI自己联想出来的功能。
如果你没有察觉上文是由AI撰写的,那是否可以说明,现在市场上已经出现了一大批珍贵的“AI手稿” ?
举个不恰当的比如,当你发现冰山露出一角,真正的冰山远超你的想象。

第二个主题 :DeepSeek的写作能力探讨

对于 DeepSeek的写作能力,我想如果你阅读过第一篇主题,并且还被它给“骗了”那大概我们能达成一个共识,就是对于文章的撰写,它已经进化到一个不可思议的地步了。

在我使用其他AI工具的时候,提示词完全是我给出,而DeepSeek的步骤是,先根据我给出的提示词,进行解释与联想,生成更多,更详细的提示词。好处肉眼可见,生成的文章质量高了不止一筹,当然这并不是我说其他的AI工具生成的不够好,而是在用户数据输入这个步骤,DeepSeek的创作团队想的更多。
虽然在算力这块使用的更多了(增加了提示词的自我补全机制),但是总体看,生成的内容也更加贴近用户需求,这对于我们普通人来评价一款AI工具是否足够好用,非常的重要。

联网搜索

上图有个联网搜索的按钮(上图2标注),可以让 DeepSeek 抓取最新的网络文章,我第一次使用这个功能的时候,不能使用该功能的(上图1标注)。
大概是现在 DeepSeek 的服务器正在被大规模攻击的缘故,所以该功能被暂停使用了。
我突发奇想,看看能不能使用提示词,绕过这个限制,似乎是成功的绕过了(上图标注3)。

最后,强力推荐下 DeepSeek ,国产且强力又好用,希望你看了这篇文章之后,也去尝试下这个应用。

使用AI制作APP的UI

2025年1月31日 00:33

刚好前段时间制作了个像素图绘制程序,当初是简单做了一版的操作UI的排版,功能都有了但是看起来太临时。
对于一个APP来说,UI设计也是非常重要的,这直接关系到这个APP是否是个“产品”,没有设计过的UI会让项目永远停留在Demo阶段。

当下AI驱动UI设计的发展势头十分迅猛,今天我也尝试下试用一些工具,体验下高级生产力,顺便记录一下对于使用AI去生成UI的探索。

我会使用如下提示词:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
UI Components:

1. Edit Pixel Points Screen:
- Interactive grid display for pixel manipulation.
- Zoom in/out gestures.
- Color picker to select active pixel color.

2. Layer Options Screen:
- Layer management tools (add, delete, reorder).
- Layer visibility toggles.
- Opacity adjustment slider.
- Layer preview, selcted and drag to new index


3. Color Options Screen:
- Custom color palette.
- Color history and recently used colors.
- Option to create and save custom palettes.

4. Brush Options Screen:
- Selection of brush types (pencil, spray, etc.).
- Brush size adjustment slider.
- Quick-access button for frequently used brushes.

5. Image Import Screen:
- Options for importing images with pixel-level settings.
- Size adjustment controls (scaled dimensions and aspect ratio).

6. Image Export Screen:
- Scaling options for output size.
- Format selection for export (PNG, JPEG, GIF).

生成了一些设计稿

Galileo AI
UXPILOTG

Uizard
Uizard

小结

由于我这没有付费,所以在 Galileo AI 与 UXPILOTG 上获得的体验也是一般,但是在UiZard上倒是可以生成完整的,登录注册流程UI,加上核心的编辑器UI,只是部分的UI界面被置灰,告知只有付费才可以使用该UI页。

所以在自动化生成Ui流程上来说,我觉得Uizard 还是不错的,它甚至可以在线生成一个浏览设计稿的地址,点进去就是直接开始试用这个”APP样品”。

所以你更倾向哪个呢 ?

蜷缩在电视柜的男孩

2025年1月26日 17:16

今天和我一个同事 XAN 聊起他小时候的一些事儿,那些事,小时候只觉得是“当下困苦”。
现在作为一个成年人视角,怎么看,都是父母人为给孩子制造的终身难磨灭的痛苦记忆。

“你小时候睡过电视柜里面吗 ?”

“我没有?是什么样的电视柜?”

“就是教室的电视柜,大柜子。”

“为什么要睡这里面?”

“初中时候我寄宿,周末放假回家,我妈叫我不要回去,意思是路上要花路费,还浪费时间。我只能睡在学校,宿舍周末不开,只能睡到教室的电视柜里,冬天暖气只有上半夜有,下半夜没有暖气,还很冷。那时候小,不知道把宿舍的被子拿过来。会暖和一点。晚上保安会去锁上大楼的门,就我一个人,在里面,我很害怕,我就把教室的门反锁。早上出去买早饭吃,摔了一跤,看周围没有人,就把吃的又用手扒拉到袋子里。”

“那你应该只睡过几次吧,你父母也不会让你一直这样搞吧 ?”

“大概几十次吧”,XAN 给我用手比划了一下。

“我以前还觉得你对你父母不好,现在看你现在对你父母这样也挺好了”,以前在公司 XAN 也会聊起他的父母,之前我一直认为,他对他父母做一些事,显得比较情亲淡薄,不够尊敬长辈。现在想来,也是我不了解个中情况,还是片面了,要是换个儿女,说不定会更淡薄一些,也不为过。

“还有我高中的时候,大年初一的时候生病了,发烧,要吃药,自己去药店里买了药,回家要吃,我妈把药给我一把抢走了,说大年初一吃药,一年都要吃药,还好我堂妹给我偷偷用剪刀剪了半板药,给我藏起来。平时生病的时候,买药吃,我妈也骂我,有什么用,(意思是男孩不用吃药) 现在我妈只要是生病,就立马去医院,也要吃药,我都会给她讲,我小时候不让我吃药的这个故事。我问她为什么要吃药,她说身体难受就要吃药。”

“你爸妈都干什么工作的 ?”

“我妈是幼儿园老师,我爸是小学校长”

“那估计你爸妈在当地也有有头有脸的人物”

“小时候他们常吵架,把家里的碗都摔了,后来我家都换成金属的了,那时候我害怕回家,他们还总是在亲戚,家里来的客人面前贬低我,别人也会跟着一起说,你家两口子这么有本事,怎么生个这样的儿子。所以我内心一直是有些自卑的。”

“我觉得他们缺乏与人共情的能力,毕竟当父母不需要考资格证书。”

我们这代人已经长大了,父母也即将老去,你要是说是跟上一辈人划清界限,也是不可能。
毕竟给父母养老,是这一辈人的责任与义务,只是旧日童年的回忆,又有谁去疗愈。

有些人,嘴上说与原生家庭和解,会想办法去逃离原生家庭,我直言,这非常的困难。
从自身出发,能做到的,也只是让这种粗暴的传统教育方式在我们这一代 “到此为止”。

逃离原生家庭的最佳方式:不要像父辈那样去处世,不要被他们的生活习惯影响自己的生活习惯。
破山中贼易,破心中贼难,大概如是也。

后记,摘录部分网友的小故事

Jeffer.Z
我小时候也寄宿,家里给的钱吃不饱,我和我妈说他不信,开家长会,一个女孩妈抱怨孩子太能花钱,我妈说你给多少钱吃饭,那女孩子的费用整整是我四倍,然后我妈才意识到我真的吃不饱饭。她对钱的看重大于人,上学时候总说我花了多少钱,还说我舅舅家哥哥上学都不花钱,实际上我已经算是上学孩子里最穷的,没什么消费,就是吃饭。我和我妈的情感也很淡漠,因为日常她说的最多就是钱,这个东西多少钱,谁能赚多少钱,钱每天在她嘴里出现的频次超出任何东西,我成年后才真正意识到,这已经不是说抠门,而是病态。有时候大家看到一个人和父母不亲近或者淡漠。就觉得这个人不好,或者不孝顺,其实不是这个样子。很多时候孩子和父母的接触中不停受到伤害,孩子就会启动保护自己的机制防御来自父母的伤害。我老婆性格就很开朗,我看她和父母沟通就很好,我就不行。我不喜欢和父母说话,在家尽量保持沉默,因为有时候一沟通就会吵起来,沉默和保持距离对双方都好。我经历过这些,我对孩子的态度就是,虽然孩子是孩子,但是我把她当成平等的个体对待,始终陪着她,让她开朗,而不是像我这么阴郁。你的这个朋友一定会有更多难以启齿的细节是不会和你说的。

三十海河
这篇让我想起来我的父亲,16岁就出去打工的我,住着50元一月的房间,冬天漏风、夏天漏雨,发烧到41度我给他打电话,他给我说「你多喝点水就好了」。
后来现在他也怕死,总是说自己有哮喘,三天两头去诊所挂水,呵呵,前阵子他给我说自己喘的厉害,我也用这句话回应了他「你多喝点热水就好了」。

二丫讲梵
聊两个我的故事,与此文相关。
1.我小时候,家里管教也是极为严厉的,在家里,我从来都是大气儿都不敢喘一下的那种,从小到大,只有两个字,学习。除此之外,再无其他任何事。然而,我除了要学习之外,还需要跟随父母一块儿干农活,从小也是地里的活跟着干,十岁的时候就学会开拖拉机,也学着开始做饭。这些劳动上的困苦还好,精神上的压力越来越大,高中的时候,真感觉呼吸不过来,当时把胸中苦闷化解为文字,一口气儿写了五十多页的心里话,最终拿给了父母,他们在我第二周回来之后,态度为之180度大转变,感觉到孩子长大了。
2.关于住教室,讲个神奇的,我们初中那时候(07~10),条件不好,学校宿舍有限,仅有的宿舍,是女生住的,男生则都是在教室里住,由此引发了不少有趣的故事。男生的地铺以及盖的被子全都是放在教师后边的桌子上,每当晚上放学,都会把教室的桌子拉一拉,然后在地上铺开,三五一堆儿,打地铺睡觉。有趣的故事有:晚上不睡被一帮老师来教训啦,有时候夏天太热,把地铺铺到教室门前,以及操场上啦,有时候早上起太晚,女生都在教室门口啦。凡此种种,皆成为我美好回忆的一部分。
如今,我与父母关系非常友好。

过年之前的预热

2025年1月22日 19:56

新年总要添点小物件给家人,要么是红包,要么是小礼物。年年是如此,今年就记录下。
往年也是送点小礼物,但没有记录下来,今天还是领导在催更,那就不得不记一下。
灌水多了,也是要重写的,所以我肯定认真在记录了,你说,对吗?

鞭炮

今天是小年,家附近的鞭炮声不绝于耳,大概集中在9点左右,不知道是有什么习俗还是就听个响。
反正我是不明白这些地方习俗的,单纯个响。
晚上回家,刚下车,准备跟领导去拿快递,“嘭 嘭 嘭” ,还以为有大烟花看,抬头发现这个烟花没有特效,光有声音,和闪光。这放烟花的人儿,难道是被骗了吗,怎么买了个只有响没有烟花的烟花?

今天的朋友圈里,已经有同事已经在发去烟花批发市场拿货的场景了,哦对了,准确的说是前同事,在珠海。

是我小瞧了珠海的物价,还是小瞧了烟花的身价,现在的烟花已经让我觉得有点高攀不起了。
依稀还记小时候得有几十块钱的烟花,别说他便宜,放起来还真的挺好看。

准备了一些礼物清单(部分)

下面的一些图可供参考,都是我认为的一些送娃娃的/自用的好物推荐。

送给乖宝

年前快递要停了,买了一些容易打发时间的读物与玩具。争取度过一个和谐的春节。
玩具,我感觉可以隔一天给一个新的,保持新鲜感,与对明天的期待,哄小孩也是要技巧的。




现在这个阶段的娃还是能看的进书的,投其所好,还是能静下心看一段时间的,这个阶段培养读书的爱好是很重要的。
当然我家娃还是看视频更多一些,有时候大人忙事情,就给平板娃看看,可能大多数家庭都如此。
在平板上的应用还是以宝宝巴士为主,开会员之后app内就没广告了,互动模块不错,都是益智的小游戏。


老师要求小朋友们制作一些手工活,刚好把灯笼买下来。

招待客人

家里只有咖啡,和一些袋装茶,买了两小袋茶叶招待客人
这边说下为啥要买这家的茶叶,他家的茶基本上还原了霸王茶姬的茶底味道,好物推荐。

pdd治好了我买杯子的恐惧,以前买的杯子都不便宜,有了pdd帮我解决了这个烦恼。


给侄子侄女的小礼物

侄女有点懒,就送不用拼的,前年倒是送过一个若客的拼图。大概我拼了一夜,给她拼好的。
从此之后我记住了,以后不给这个小姑娘买拼图了。人不要跟自己过不去。。。

侄子喜欢自己动手,之前也是送了一个若客的拼图,是个电视机造型的音乐盒,看他父母都挺支持他玩这种性质的玩具。
就再买一份差不多的,可以遥控的赛车拼图。
还有就是刚好前段时间挨骂了,-今日无图 送个玩具他,让他缓缓,打发时间,过个愉快的春节。

虽然也给小辈们红包,但是红包他们父母是肯定不会给他们自己支配的,所以给了也是表示心意,但小孩子感受上来说,肯定是还有一份玩具更懂他们的内心。


领导送我的小礼物

今天刚好就用上了,之前的MBP只有512这次换上1T的,这下我又能存很多拍的相片了。
现在使用Unity3D打包一个工程文件,比之前快了3倍,属实是大大减少了等待时间。

之所以说要换一个mini而不是再换一台MBP的原因也简单,MBP的掉价太快了。18年的MBP现在咸鱼只挂2-3k,要知道当时入手是17k。属实是没有意思,不如mac mini实在,这台小鸡在jd上大概10k不到,加上国家家电补贴也就8k不到的样子。
感谢祖国,感谢党。让我用上了低价高配的生产力工具,2025年一定好好干活。

上午在公司激活的时候,发生了一点小插曲,Mac mini的盒子里面居然一根视频线都不赠送。
只有一个主机加上电源线,这也太省事了吧。还好公司里的配件多,很多小东西到处借一下就把电脑激活了。

再就是通过迁移助手进行迁移,如果你也像我一样要在两台电脑间迁移数据,需要注意用type-c连接两台电脑。
并且在需要传输内容的主机,开启传输助手数据转移选项。

最后,出于领导对本人的硬件赞助,再次释放彩虹屁,祝领导千秋万代,永远十八。
哎,对了,肯定有人要问,为什么没给领导买,她说要年后买,所以没写给领导买礼物也很合理吧!
以上,过年预热,预购的一些小物件。无心上班,快进到春节吧。华仔已经在我脑子里提前解冻了。

今日无图

2025年1月20日 00:22

最近闵行不是出了个事,一家三口跳楼了,不知原因,网传是学习问题,小的跳了,大人也跳了。
网传是学习问题,具体原因真实性不可考,没有官方通报,一切以官方通报为准。
就这件事跟我妈在家里聊起。

“妈,我觉得小孩的成绩也不是这么重要”

“是呀,你小时候我们也没逼你读书,你要读不出来也没办法”

“那确实,以后宝读书,如果读不好怎么办,要不继承你的理发店吧,开个百年老店”

“哈哈哈 哈哈哈”

“今天,你s姐(表姐)来店里,跟她wj(老公),店里还有客人,两个就在用普通话骂wjx(他儿子)”

“好好的为什么要骂他 ?”

“考试没考好呗,数学只考了七十几分,以前都考九十几,一百分的,wjx走的时候一句话都没有说”

“哦,为什么没考好?”

“说是这次的考试比较难,是普遍比较难,其他的同学也没有考好,都考的分数不高”

“那这也不能怪wjx,我跟我s姐说说,这样小孩没面子,小孩也有自尊心的”

“我店里,最近来个老两口客人,女儿就是读书成绩太好了,去国外了,不回来了”

“去国外不是挺好的吗 ?”

“好什么,他父母是离异的,她妈把房子卖掉了,换成钱全给她了,他也不回来看看,还给他爸打电话,让他爸把房子也卖掉,学学她妈,给她钱。”

“那他爸是怎么说的 ?”

“他爸说,房子不能卖,百年之后,有房子,可以换点钱,买墓地。你知道她女儿是怎说的吗?”

“怎么说的 ?”

“死了就烧掉,一把灰撒海里就可以了”

“xxxxx”

“他爸疫情的时候去国外她女儿家,他们开烧烤店的,她爸回不来,急死了,呆了三个月,天天在店里忙里忙外,他们小两口出去旅游也不带他去,告诉他爸,在那边(国外)不干活,是没有饭吃的,他爸害怕了,说再也不去国外了。”

“xxxxx”

“他们小两口回国,在市区开了个宾馆,说请老两口吃饭,找了一家快餐店,吃的不像话。结果付账的时候,是老两口请客吃的,女婿当场就说,早知道是你们请客,我就去吃贵的店了。你看国外的人说话一点都不含蓄,要是中国教育的人,怎么会说出这种话。”

“xxxxx”

“读书读的出就读,读不出就承欢膝下,也是好的”

“那确实”

后来我就把网传的这个跳楼事件的消息给我表姐了,期望她能理解分数没有孩子的自尊心重要。
毕竟条条大路通罗马,最后还是要出来当牛做马,只是读书的时间长短而已。

被催更

2025年1月16日 18:58

今天被领导催更博客了,线下催更最致命。麻溜的上线开始更新博客。

甲流

先说说最近都发生了什么事,最近身边很多人都得了甲流,好多同事中招了,我爸也是。
在外面戴口罩还是非常有必要的,马上就要过年了,在搞感冒的话,看医生都麻烦。

所以前面几天把我妈跟娃都接到我这边来住,物理隔离,以免被我爸传染了。
在我这边娃还是睡得比较早的,主要还是有人能镇得住她。

小马宝莉

娃最近喜欢小马宝莉,给她买了几百包卡,让她忙一下,消耗一点精力。
没成想,买来的卡好像是盗版的,品质没有正版卡好,价格也便宜了一半。
下次注意,过年重新买一批

过家家

再过三个月就满四岁了,最近这一年,我充分的感受到,小家伙智力在飞速拔高。
请看VCR!

寒托班

学校下周也要开始放寒假了,我们考虑给娃娃报个托班,这边托班收费相对都较低,对上班的人群来说,都比较友好。
还有一点考虑就是娃在家里玩,不如在幼儿园玩,幼儿园伙伴还多一些,幼儿园也不像小学管理严格,去玩几个小时就能接回来。

二手群

前段时间年后抽奖,虽然我啥都没抽中,只有一百JD卡。但是我在公司的二手群里收了一个牙刷。

公司群里200收的,这比任何活动都划算

领导抽中了一个取暖器,不理解这俩好像差了一百,但都是一个档位的奖品。
她说要送给她奶奶,老人家都快一百岁了,是家里的老寿星。
我发现南方这边高寿的老人家好多,至少比我家乡那边要多一些,就我所见。

公司二手群的砍价,基本都可以用原价的2/3拿到,大概是急于在年前出掉。
最近再蹲一蹲,看看群里能不能再收到一个牙刷给领导用。

像素艺术家

最近没啥时候做自己的项目,公司太忙了,回家就跟宝玩了,最近也就抽时间重构与优化了下代码。
最新的版本没上传,基本上已经挺好用的了,后面准备再用AI生成一版UI,做个翻皮。
最后上个微信小程序,或者APP Store就齐活儿了。

以上,记录最近发生的一些事,报告完毕。

记录一次公司年会

2025年1月11日 13:25

记录下今年公司年会,本来这种事我一般都不记录的,原因是领导当选本此年会主持人之一,这就不得不记录下了。
距离上次公司办线下年会不知道过了几年了,大约是三年还是几年,已经记不清了。

大约一个多月前,领导跟我说想参选年会主持人,当时我是这样说的,
“公司也不是大学,你看,都没人愿意去参加”
“我有一个当主持人的心愿…”
既然是这样,那就参加把,结果当然是顺利的通过了主持人的筛选。
我是做不到,在千人舞台上自如的讲话的,这确实要点天赋。
台上一分钟,台下是每天晚上还要背稿,这段时间着实辛苦了。

在追逐自己的热爱事物上,领导跟我都保持一致,都会去维持自己的爱好,并愿意在此之上花费时间与金钱。
并不一定是要建立在非要获得回报上面,更重要的大家常说的情绪价值。
人生短短数十载,不要总是说为了这儿,为了那。
却忘记了,人总归也要为了自己,满足自己的情绪,这同样重要。

图片用像素艺术家进行像素化了

以上,记录2025公司年会,愿大家百忙中能抽空做自己爱的事,人生是游乐场,愿你能玩的开心快乐。

年前好忙呀

2025年1月6日 19:56

照理来说我年前不应该那么忙的,今天单位又分给我一个小活儿,大概要搞到过年了。
导致我又要拖更了,真成了周更博主,属实无奈。

指令型生物

我这人有个毛病,只要一忙起来,就顾前不顾后,在家里也经常挨批评。
活干到一半跑去写代码了,或者是忘记干家务了,当然对于这种批评,必须是保证整改,当然我也为自己找了个推脱接口。
譬如,作为一个男人,我必须是比女人更了解男人。我常跟领导说男人是指令型生物,收到的安排期望是明确的,具体的。这样能保证结果的正确性,如果这个男人没有达到你的预期,不一定是男人的错,可能是调用了错误的指令集。

配眼镜

要说上海配眼镜哪里划算,只能是上海火车站了,没有之一。我在这边配过不下4副眼镜了,平均下来都是150一副。
好了,下图的四个人都配了眼镜,共花费910,我是换了一副镜片,外加配了一副眼镜。

小闺蜜请客吃的俄罗斯餐厅,味道还行,只是排队挺久的,不过大周末的也属于正常。
说起小闺蜜,我又要批评她了,他看中一副眼镜,然后老板问:
“你以前肯定也在其他的地方配过,你以前配的多少钱,我再给你便宜点”
“四百多”
“好,那就给你四百块!”
我此刻只想把她的嘴堵上,最后领导也只是还价了20,拿下价值380的眼镜。

夜市

最近刚开业,持续到15号好像,现在夜市都是同质化比较严重的,卖的东西跟实体店价格没什么两样。
以前说吃地摊小店是便宜,现在可不能够这样说了,都一样价。味道也差不多,夜市正在逐渐失去他的原本色彩。

家附近办夜市,也是从幼儿园群里看到的消息,我们正在吃夜宵之际,同班的小伙伴也过来玩了。
比起我家宝宝,他们家的娃确实是有点内向型。

所谓结对编程模式

这大概是一个人看动画片,另外一个人可以进行工作的最好模式。并且时不时还能帮你改改代码,制造点bug。
让精神时刻保持专注。最近娃在迷小马宝莉,投其所好我也买了几个公仔。

志愿者

幼儿园有个志愿者机制,大概就是每周轮两位家长去站岗,这周轮到我了,每天早上大概要去站四十多分钟。

也不是很无聊,娃看到我表示很惊讶。去这边站岗过才知道,原来小朋友可以带玩具去幼儿园,之前没注意。
刚好新买的碧琪公仔到了,明天早上带过去给宝一个惊喜,嘿嘿。

门口站岗的有个保安大哥特别厉害,能叫出大部分娃的名字!真人才在哪儿都能发光发热!

无奖问答

你知道这个公仔叫什么吗 ?

公仔寄过来,脸破了个洞,领导手巧给缝好了,yyds !

以上,时间像海绵中的水确实不够用!希望年后能恢复我咸鱼生活。

2024回忆录

2024年12月31日 17:04

我这只能算2024回忆录,对照苹果相册的时间轴,分别在每个季节选取几个代表性的图片,代表这一年令我印象深刻的一些趣事。

上个春节采购很晚才去,今年提前去了。

开春与我大姑姑,我妈一起去了趟西湖。那时候宝宝的头发还是短发。

带娃去西湖,跟长辈出行各种不适,以后估计不会在一起出游了。

公司楼下的樱花开了

春天的时候宝宝还有一些坏习惯没改回来,当时专门定制了个视频,用来教育她。成果斐然,有用!

宝宝第一次自己独立购物,跟阿姨对话,购买商品。

一看就是奥特曼老粉了

记得那天是周日,因为买了奥特曼玩具开心了一天,小孩子这个阶段的情绪价值很好满足。

公司组织过一次巅峰垂马,就是爬楼梯比赛类似,每一层都有活动。虽然我跑的快,但是活动环节掉链子了。

第一次买磁吸玩具,宝宝玩的还是很开心的,后来又复购了好几次。

我发现我家娃在和其他小朋友交流的时候容易生气,观察了下其他的宝宝,好像这个阶段的孩子都如此敏感。

截至到秋天,宝宝已经完全自己上厕所了,家长可帮可不帮了。我卖掉了最后四包没有开封的尿不湿。

第一次在外面被很凶的小男孩恐吓,原因是宝宝笑话小男孩不穿上衣,小男孩凶得很,还好我在边上,也是个家里的小霸王,看我在不敢动手。这次之后宝宝似乎懂什么话不能乱说了。果然自己人教不会,事教人一教就会。

第一次尝试探索了iPhone的相机拍照,启用了延时曝光,获得了一张比较不错的图。

第一次倾情演唱表演,能完整的唱好几首儿歌,还能背诵好几首古诗,老怀欣慰。

对于拼图这件事上来说,宝宝绝对是有天分的,能独立完成108块的拼图游戏。

今年夏天第一次游泳,稍微玩了下,宝宝表示长大了以后才能玩大大的水,让我以后别带她去了。

没多久,我就带她去浴场游乐泳池玩,结果顺着滑滑梯快速滑下去,钻到水里去了,留下了心理阴影,估计以后都不会去了。

今年去了一次武汉,虽然我是湖北人,但也就去过几次武汉,武汉很大,繁荣的地区呈现点状分布,另外东湖景点也比较好玩。

今年去了两次苏州,苏州的景点比较集中,也逛了个七七八八

今年一共修过两次车,都在车检之后,合计四千余元。车检?车检到底在检什么?

今年去了嵊泗岛团建,风浪大提前回来了。

今天的迎新活动,可惜上班未能参与,应该会很有趣。

今年也留下了很多的游记,纪念出游的快乐时光。

今年微信公众号发表了不到百篇左右的文章,明年再接再厉,争取多写一些干货。

更新:

今天下午发文的时候,领导在项目组交换礼物抽中了一个小耳机,虽然不贵,但好在给2024画上了一个美好的句号。

此刻,窗外已经听到有人放烟花的声音了,前些年还热衷出去跨年,每每到年末这一天,地铁公交都会延迟关闭,此刻外滩应该人山人海,想起来一个笑话,大意是:上海的同志们在这一天应该把外滩留给外地来玩的朋友,不然会被开除户籍的。2024.12.31 21:30

以上 2024回忆录。

感冒了

2024年12月30日 10:45

上周宝宝感冒了,这周基本上好的差不多了,只是还在流鼻涕偶尔还咳嗽,我家娃还是很坚强的,虽然请假一周没去上学,但在家也是生龙活虎的。除了晚上睡觉就咳嗽这一点之外,其他都还不错。

从前两天开始我有点鼻塞,直到今天我才意识到,这大抵是感冒导致的。这两天休息的都很早,只因为大脑告诉我要休息了,即将关机… 这真的是糟糕的体验。好在只是个小小感冒,并未有什么病来如山倒,白天不影响正常的生活。

周日老丈人过来送东西,周六我们和丈母娘去山姆买的一堆东西,有些甜点忘记分就回家。刚好老丈人就给送来了,还好两家离得不远开车也就四十多分钟。

顺道,带我老丈人去我妈理发店,剪了个头发,我则帮忙染了个黑头。去的时候好好的,回家的时候电瓶车没电了,我俩走回去。周日天气很好,边走走聊聊天,还是很让人舒服的。白天我都一度忘记我感冒了。

每次去他家都会烧一大桌子菜,领导也是得到了厨艺真传,果然是传女不传男,领导的哥哥没遗传到。当然我家是没有厨艺传承,父母烧菜都在水准线之下,当然他们也会互相比较。当他们问起,让我评价两个人谁烧饭好吃,只能说这很难评。

下午宝宝跟领导在家玩一下午,我三点多才回,宝宝真不愧是“熬拜”,这是爷爷取得外号,熬夜小能手,不爱睡觉。
一整天都没停下来,各种玩。值得表扬的是中午饭吃的很不错,晚饭也吃的很不错。

下午五点我大概是感冒导致的头晕,跟宝请了一会儿假,就睡了一个小时多。宝宝全程都没吵我,果然是长大了,现在吃东西也会主动的分享,我不爱吃水果,晚上她自己去剥了小橘子还喂给我吃,哎,好感动 😪,留下了感动的鼻涕。

感冒也不全是坏处,譬如我会11点上床,用手机码码字,记录下生活,再回忆下这两天的得失。

后记

冬季了,我给博客写了个下雪效果,如果没出现大概是缓存问题。
如你也想要这个效果,可以参考下面脚本,只需要导入js就可以,url可以替换为你喜欢的雪花图。
支持雪花数量,风力模拟,雪花大小,雪花图等控制。

1
https://vrast.cn/js/snow.js

像素艺术家优化之路

2024年12月27日 11:14


当前20x20的绘板+UI的drawcall来到了400+ ,卡的不行,制作的时候只顾开发快可不行。
现在就开个专题记录下绘板的性能优化。

效率优化第零版

所有的物体创建/销毁都是基于池,也就避免的额外的GC开销,缩短CPU耗时。

效率优化第一版

每次用笔刷绘图的时候,当鼠标划过网格,都会记录位置,划过的这个位置就作为一个 Tile 渲染的基本点。
在这个点上再去生成一个mesh,进行染色,标注这里被画出了颜色。

由于需要渲染的Tile,是动态创建的,都具有自己的单独的Render,并且需要改变自己的颜色。
对于材质来说,就会在每次改变属性之后创建出新的instance,众所周知instance多drawcall就多。
这个问题,并不难解决,通过 MaterialPropertyBlock 去修改属性,可以避免instance的创建。

1
2
3
4
5
6
7
8
9
10
11
MaterialPropertyBlock block;
public void SetColor(MeshRenderer render, Color c)
{
if (block == null)
{
block = new MaterialPropertyBlock();
}
render.GetPropertyBlock(block);
block.SetColor("_Color", c);
render.SetPropertyBlock(block);
}

效率优化第二版

当使用 MaterialPropertyBlock 去处理材质属性修改后,画板的drawcall已经保持在一个极低的数量级了。
直到我准备给画板添加一个背景,也就是预创建tile,给画板一个背景色。这时候新的问题又出现了。

100x100的像素图编辑,就有一万个tile,需要去染色,虽然是公用材质,但是架不住节点多导致的CPU耗时过高。
这时候,我想起,既然最后需要导出到像素图片,为什么不直接将像素点写入图片呢?

遂后,新增了一个实时渲染图,展示正在绘制的像素画状态。并且修改这个渲染tile的逻辑,每次要渲染tile的时候,不再进行mesh创建与render渲染,直接将像素写入实时渲染图。
至此,突破了之前的节点瓶颈,在512x512 ,也就是差不多2.6w像素的图片上,进行流畅的编辑。

效率优化第三版

在成功的在512x512的像素图上编辑的时候,我顺便也尝试了在1000x1000,2000x2000的像素图上进行编辑。
明显会觉得有点卡顿,分析了一下卡顿的原理,原来新的瓶颈在修改实时渲染图的频率上。
每次创建新的像素点,也就是画笔在滑动的时候路过的像素点,都会立即去做一个像素图的写入。

这个问题解决起来倒是不难,就是将实时像素图的写入频率降下来。
结合第一个优化版本的实现。每次玩家开始绘制与结束绘制之间,所有的像素点,都是用第一个优化版本,仍旧去创建tile,将这个过程产生的所有tile数据进行记录。
玩家手指抬起,结束一轮绘制,再将上一轮缓存的tile信息统一写入实时渲染图。并且回池所有的tile。

至此,在至少四百万的像素图编辑上表现得很丝滑,就如同在四百个像素点的编辑。

效率优化第四版

在增加了大贴图导入后,如果拖拽整个贴图会造成画面卡顿。原因是拖拽的是由unity的meshrender组成的画面。
画面有多少个像素点,就由多少个mesh(一个meshrender只渲染了一个像素点)。
这样数量上去了,也就又出现了性能瓶颈,为此改为了给mesh增加了一个支持贴图的材质球,匹配像素图进行缩放,将像素点都渲染到这个单位上,进行整体图片的预览,效率又上去了。
这里遇到一个问题,使用 MaterialPropertyBlock 进行针对 Texture 的drawcall 优化的时候,需要注意如果N个meshrender使用了的一个材质,但使用的并不是一张贴图,drawcall仍然会增加。
所以这边我记录玩家每次画笔下落与抬起,在期间,渲染玩家绘出的像素图,都是一张贴图。用以保证 MaterialPropertyBlock 能够正常生效。

当然这个效率优化并不会停止,先记录这些。

跳舞的洗衣机

2024年12月23日 22:28

想把这件事记录一下的想法很多次在脑子里冒出来,但是很快又被其他事打断就又忘记了。
今天稍微记录一下,带着记一下最近遇到的烦心事儿。
大概是去年夏天,搬家的时候新购入的洗衣机,那时候没找小米师傅安装。
是装修师傅帮忙弄的,结果收获了一个跳舞的洗衣机,视频有点搞笑,但是很生动。

本来连夜就想找小米保修,直到我准备睡觉的时候,在网上搜索到一个词,减震螺栓,哎呀 !
瞬间天灵盖被击中的感觉,赶紧爬起来,一看洗衣机后面果然有四只减震螺栓没有下掉。
费了大力气把洗衣机搬开,这玩意是真的重。下完螺栓后,终于正常了。
我建议是电器如果有安装服务,请务必一定要使用,除非你真的内行。

昨天又遇到洗衣机不排水

为什么我要拿这玩意拍张照片,他就是罪魁祸首了,广告的slogon很强大:开启洗衣新时代。

真强,直接把排水电机堵塞了,再开始手洗时代 ?这个吸色片会被洗衣机搅碎,最后堵死排水口的电机。
我跟小米的师傅忙活了两个小时,才完全弄好。
问题很简单,只是要搬动两台重家伙着实不容易。
洗衣机堵塞问题解决之后,点击脱水,洗衣机的水倒是排出来了。
但是不知道为什么,他不转了,师傅暗示,大概是排水泵坏了要换新。
我说,你瞧这个色片抠出来,排水正常了,说明这个泵是好的,不转是另外的事。
接了入水管,重新开机关机后,测试正常了。
这水泵到底还是没换成,这种事,还是要全程跟着,不然的话换不换就不好说了。

今天遇到台盆下水堵塞

早上准备刮胡子,结果水下不去了,无他,肯定是堵住了。
这段时间真的很魔幻,一直在出状况,领导说这是跟水犯冲。
急着去上班,先买了瓶魔法药水(威猛先生)灌下去了,顺便又买了根物理管道疏通,寄到公司。

晚上回家,你猜怎么着,威猛先生基本不威猛度,这水是一点都没有下去。
还好带了根疏通棒回来,一通操作半小时齐活儿,在搞点白泥补一下缝隙处。

疏通棒是好东西,建议家庭都备一个,这可比马桶搋子管用。
当然马桶搋子也有妙用,我用它卸扣板。

以上,最近遇到的烦心事儿,但是也吃一堑长一智。说好听点就是,永远满含热泪,永远是少年。

冬天是真的容易感冒

2024年12月21日 17:38

现在天气每天都很冷

我妈跟我宝都已经感冒了,由于咳嗽太厉害宝前天还呕吐了。
我们家是奶奶带睡觉,让奶奶抱到了半夜,不敢让孩子躺着,一躺下来咳嗽,就又要吐。
明天我妈要出国玩一周,那只能下周我多带带,说是多带带我也没法不工作,只能晚上带睡觉。
有句话怎么说的,搬砖的手无法拥抱你,虽然很想天天带娃,但还是不得不工作。
好在现在宝的感冒已经转好,咳嗽也没有那么厉害。老天保佑,这个冬天都不要再有感冒了。

家庭作业

又制作了手工,这次是制作了吐信子的蛇,制作起来不难,当然宝也玩的很开心。
幼儿园老师在群里说的话奇奇怪怪,诸如:”虽然xx请假了(感冒),但是家里人还是把手工作业送到幼儿园了。“
问我送没送,肯定没有送咯,但是上传了制作过程的摆拍。要问哪家不是摆拍?我才不信三岁的小孩子能独立完成。
制作手工,参与学校活动的目的对我来说就只有一个,别人家孩子有的,咱家也要有,不然孩子上学多可怜。
说到这,我想起来一件事,是这件事让我决定,以后其他幼儿园娃有的我家娃一定要有。
某日,幼儿园老师带班里小朋友去水果店,看水果,然后有的小朋友购买了水果。

宝宝回家,我问他:
“其他同学买了吗”
“买了呀”
“我问小朋友能不能跟我分享,小朋友说不行”

听到这,我真的是气呀,咱家也不差个水果钱吧,老师居然不能一碗水端平 ?
就这一件事,让我认识到,以后幼儿园需要给宝宝安排什么道具,用品,必须要安排上。
不能让娃在幼儿园受委屈,让做家长的心里也不好过。

以上,闲时小记,最后,大家都注意天气,不要感冒了,祝大家都身体健康。

像素艺术家-开发日志2

2024年12月18日 19:11

抽空发布了一个阶段版的像素艺术家项目成果。
具体描述我都写上面了,目前没做像素的擦除,这个后续版本补上。

快捷键说明没放上去:

  1. 处于非绘图状态鼠标右键,可以旋转画板。
  2. 绘图状态N键可以切换笔刷
  3. QE可以旋转画笔
  4. 鼠标右键退出编辑模式

项目主页

绘图界面

资源导出

目前支持导出 png jpg tga,注意png是透明底图

后续计划功能开发

  1. 批量框选
  2. 橡皮擦
  3. 喷涂工具
  4. 线条工具
  5. 撤销功能
  6. 图层功能
  7. 颜色覆盖
  8. 图片转像素

最后

你可以在左下角的猫咪菜单栏点击爱心,打开这个程序,或者访问 https://px.vrast.cn 均可。

清理缓存

如果之前打开过我这个站点的朋友估计要清理下缓存才能看到最新的开发进展。
这个清理缓存与清理网页缓存不同,unity的web程序会直接使用本地存储。
清理方式如下:

给Unity3D WebGL添加下载与上传

2024年12月17日 18:41

最近基于unity webgl 制作了一个绘图板,其中涉及到读写本地资源,并且处理完成数据后要完成下载操作。

其中既包含了上传,也包含下载。即使都是本地的文件操作,但由于浏览器的沙盒设计,我们并不能直接通过IO类进行文件操作,必须通过与js的通信,进行数据交换。

本篇将说明如何将两者数据进行交换,并提供相应的验证过的代码,你可以直接修改并使用下面代码。
理论上来说,这个代码是可以修改为下载其他任意文件的,比如下载贴图这里传的是内存指针,所以不限于下载图片。上传的代码也类似,给unity发送的是一个url,也是替换为任意类型都可以的。

有一点比较值得注意,在WebGL的开发过程中,每次重新部署后进入浏览器页面测试,都需要手动请清理缓存。
否则会出现部分文件被缓存,测试不正确情况。

文件下载

下面是个js封装库,并且实现了对图片文件的下载与上传。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mergeInto(LibraryManager.library, {
DownloadTexture: function (dataPtr, dataLength, fileName) {
var data = HEAPU8.subarray(dataPtr, dataPtr + dataLength);
var fileName = UTF8ToString(fileName);
var blob = new Blob([data], { type: 'image/png' });
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = fileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
},

LoadImageFile: function () {
var fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = ".jpg,.png,.tga"; // 限定文件类型
fileInput.style.position = 'fixed'; // 固定定位
fileInput.style.left = '-100vw'; // 定位到屏幕外
fileInput.onchange = function (e) {
var url = URL.createObjectURL(fileInput.files[0]);
window.unityInstance.Module.SendMessage('ImageLoader', 'OnImageLoaded', url);
};
document.body.appendChild(fileInput); // 添加到body,使其可以被点击
fileInput.click(); // 模拟点击
setTimeout(function() {
document.body.removeChild(fileInput); // 移除元素
}, 100); // 稍后移除,确保文件输入有足够的时间打开对话框
}
});

文件上传

当然这里也有一些值得注意的东西:

传入的参数有类型限制

string, a number 就这俩,之前我一度尝试使用byte[],或者从js发送内存指针都提示参数类型不正确。
下面是文档摘录。
Where objectName is the name of an object in your scene; methodName is the name of a method in the script, currently attached to that object; value can be a string, a number, or can be empty. For example:

在input很容易获取浏览器的缓存文件,通过URL.createObjectURL() 方法,创建一个表示参数中给定文件对象或 Blob 对象的 URL。这个方法返回的是一个 DOMString,它包含了一个唯一的 URL,这个 URL 指向由参数指定的文件对象或 Blob 对象,最后通过WebRequest加载这个URL就可以达到我们的目的。

这里使用了async语法,注意如果你改动这部分报错了,大概不会提示出来,会很难查bug哦。哈哈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public async void OnImageLoadedAsync(string url)
{
// 使用 UnityWebRequest 来下载图片数据
UnityWebRequest request = UnityWebRequest.Get(url);
DownloadHandlerTexture texDl = new DownloadHandlerTexture(true);
request.downloadHandler = texDl;

// 发送请求
await request.SendWebRequest();

if (request.result == UnityWebRequest.Result.Success)
{
var imageObject = GameObject.Find("ImageObject");
var sprite = Sprite.Create(texDl.texture, new Rect(0, 0, texDl.texture.width, texDl.texture.height), new Vector2(0.5f, 0.5f));
imageObject.GetComponent<UnityEngine.UI.Image>().sprite = sprite;
}
else
{
Debug.LogError("Error downloading image: " + request.error);
}

request.Dispose();
}

需要获取运行实例

下面摘录自官方文档,大致意思是js要调用unity的逻辑需要找到对应已创建的实例。

1
2
3
4
However, if you are planning to call the internal JavaScript functions from the global scope of the embedding page, you should always assume that there are multiple builds embedded on the page, so you should explicitly specify which build you are referencing to. For example, if your game has been instantiated as:
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/build.json", {onProgress: UnityProgress});
Then you can send a message to the build using gameInstance.SendMessage(), or access the build Module object like this gameInstance.Module.

下面代码是生成后的index.html,我们直接将unity的实例保存到当前window中 window.unityInstance = unityInstance; 方便全局调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
createUnityInstance(canvas, config, (progress) => {
document.querySelector("#unity-progress-bar-full").style.width = 100 * progress + "%";
}).then((unityInstance) => {
window.unityInstance = unityInstance;
document.querySelector("#unity-loading-bar").style.display = "none";
document.querySelector("#unity-fullscreen-button").onclick = () => {
unityInstance.SetFullscreen(1);
};

}).catch((message) => {
alert(message);
});
};

document.body.appendChild(script);

参考官方文档 https://docs.unity3d.com/2017.3/Documentation/Manual/webgl-interactingwithbrowserscripting.html

又至年末

2024年12月16日 14:54

今年一年过的真快,很难说有什么感慨,若说有,也只感慨忙忙碌碌的一年又快被过完了。

年初定了一些计划

确实有一些,也完成了一些,这些都是围绕建设公众号做了一些工作。
记录一下后面想写的主题 2024-01-24
说到这个公众号,订阅至今还差三十多人才满五百,果然发文的频率还是太低了。
由于里面发的都是技术文,受众少我倒觉得也很正常。
反正就是工作之外的自娱自乐,写着玩,倒是无所谓了.
倒是今年的下半年开始在博客中发一些生活类的文章,直接被归类为生活博主,这也很符合目前对此博客的定位。

裁员潮

依旧没有停歇,游戏行业一直在风口浪尖上,一度让我觉得不安。若说什么让中年男人最怕的,大概是下岗失业了。
当然从业十余年的游戏人,说要转行到其他行业,也是很难转。
虽然都是程序员,也是有细分项。总体来说也就三字,不容易。
前段时间看到福建某龙的企业内部会,大概是要将大部分工程师优化掉,让AI替代人工,现在这头就成了一个风向标。
若成,恐怕又为25年开了个坏头,环境变差,竞争就会变得激烈,已经很卷的环境就越发糟糕。

修车

前段时间才去车检,这不又出故障了。发动机故障灯+EPC故障灯都亮了。

由于是上班途中,也只能先开到公司附近的途虎养车去维修了。
这个维修价格在我这种外行人眼里看来太高了,由于不懂行,也只能认了。

手工

幼儿园老师又给我们布置作业了,这次我学聪明了,直接买的老师推的链接。果然安装起来简单。
结果群里另外一个老师又说了,希望动手制作,言外之意是让我们用生活中的材料手动做一些。

糖葫芦

领导晚上有空,就尝试做了一些糖葫芦,结果这个糖汁没有凝固,大概是做失败了,但是宝宝吃的挺香的。
我家娃挺爱吃草莓的🍓 我倒是啥水果都觉得一般性,没啥爱吃的水果,可能大部分男人都差不多 ?

以上,闲时小记,不是年终终结,咱不写这玩意。

记录下最近的生活

2024年12月11日 00:00

🧑‍🍳 请客

上周六领导的家人过来作客。提前一天,我们去盒马NB买了差不多两百的肉类,又跑到附近的蔬菜超市买了很多蔬菜,周五晚上就开始炖了猪骨,怕第二天时间不够,即使已经提前准备了,也是十二点半才开饭的,大家的都饿的差不多的,反正都觉得是好吃的菜。

记得当天烧了好几个硬菜,黄焖鸡,话梅排骨,猪骨萝卜汤,空气炸锅做的鸡翅,炒青菜,老丈人还带了提前烧好的梅菜扣肉,热气羊肉,大概是预防他女儿烧菜翻车所以带的。

要问为什么说了那么多连个图都没有,那天人很多,场面很混乱,谁都不记得拍照。过来一家五口人,着实热闹,什么都搞忘记了。姑且报个菜名,脑补下画面吧。

我挺佩服领导的,自己一个人就能整出一桌子菜,当然我只是打打下手,比如刷锅洗碗之类的。

当然我也想过说让我来烧饭,由于是新厨房,领导怕我炸了,只得就此作罢。

手工

不知道幼儿园这段时间是刮的什么风,小朋友和家长都在制作手工,主题是小乌龟。之前学校有发过手工的材料。
宝放学带回家,奶奶也不知道是啥,然后宝宝就拿着剪刀一顿嚯嚯,就发的这一点点材料,早就折腾没了。
幸好,我这边还备了一些存货,完成图如下。

像素艺术家

前段时间开了个独立项目的坑,我也是慢慢想明白往哪个方向走。还是准备先做个像素图编辑器。
这两天被一个旋转问题卡住了,今天晚上才调试通,要问是什么,简单的说就是 Map的旋转,图形的旋转。

正常我们旋转一个东西,只需要在编辑器输入角度即可,这样做,确实可以,但是更优的方案是在数据层面讲行列转置。
转置之后的数据,是旋转了,但是Map本身又没有旋转,仍旧可以进行各种Shap的拖放,保持与未旋转状态一样。

所以我常说算法上的活不能偷懒,万丈高楼平地起,慢慢来吧。

像素艺术家-开发日志

2024年12月6日 16:49

类似的方块游戏特别多,我想着做点差异玩法,前一段时间也有分析过,背包乱斗的玩法与代码,这种玩法还挺上头的。
背包大乱斗与俄罗斯方块(设计篇)
背包大乱斗与俄罗斯方块(代码篇)

目前在制作中的游戏就是从那份分析代码中衍生出来的,重构-重构-就出来了一个新的框架。

对最开始的一版代码进行的优化:

  1. 支持同时存在N张map,并且支持了Map缩放,行列定制。
  2. 拖动两个方块重叠,会直接还原到拖放之前的位置。
  3. 解决了一些微不足道的bug

在考虑是否有必要支持多个地图进行动态的拼接,即多个地图靠在一起,啪叽,融合成一个。
还有个想做的是支持跨地图的砖块拖放,当然这涉及到游戏规则的定制了。

现在这款游戏的状态就像是,创造了世界,但是忘记创造了规则(玩法)。
朋友们有啥想法吗,请畅所欲言,哈哈。

你可以在左下角的猫咪菜单栏点击爱心,打开这个程序,或者访问 https://px.vrast.cn 均可。

清理缓存

如果之前打开过我这个站点的朋友估计要清理下缓存才能看到最新的开发进展。
这个清理缓存与清理网页缓存不同,unity的web程序会直接使用本地存储。
清理方式如下:

记录一次幼儿园研学活动

2024年12月6日 10:52

上班路上等红灯,路边的树叶都渐黄了,只能感慨今年过得可真的快。

今天应该先抽空写点日常,不然这周又糊弄过去了。这段时间闲下来都在写独立游戏,说是独立游戏,也只是在搭玩法框架。说在忙,也是瞎忙。

刚好前两天宝宝的幼儿园有开展了户外活动,便在这里记录一下。

各位家长:
你们好!结合“交通工具”“我们的城市”“我是中国人”等主题,激发孩子发现中国的科技发展之强大,同时也满足孩子们对天空和飞行充满好奇和向往,为此,我园将计划12月初开展“小小航空梦想家”科普课程,通过实践活动,让孩子们近距离接触航空知识,拓宽视野,增强科学素养。
活动地点:索飞航空飞行中心(浦江镇沈杜公路)
活动时间:12月3日:托小混龄班幼儿+1名家长(家长费用100元自理)
活动准备:自备午餐(书包、水杯、午餐)
活动安排:
• 9:30-10:10模拟飞行体验
• 10:20-11:00动手制作
• 11:00-12:00午餐+休息
• 12:00-13:00射击打靶体验
• 13:00-14:00扫雷活动体验
• 14:00结束返程

活动安排的挺密的,又是羡慕宝贝的一整天。

枪械解说与射击体验


扫雷体验教学

天文知识教学

手工活动


开飞机体验课

自己动手制作了小飞机,带电机的,据说宝宝的飞机是飞的最高的一个,最后飞到了三楼拿不下来了。
最后奶奶问好心的工作人员,是个善良的小姐姐,又给了宝一个。

以上 记录一次去 索飞航空飞行中心 的幼儿园研学活动。

三游奈尔宝

2024年12月1日 23:30

稍微记录下昨天的日常,昨天上午跟宝宝玩了一上午的打豆豆。大概就是看书《找不同》,玩磁力积木。
下午才出发,原因我在第一次去奈尔宝的时候已经记录过,那边的午饭是真的难吃且价格不便宜。
里面不让带小零食,但是看门的小姐姐暗示,放到包里没关系的。
当然可以出来出,吃好再进去,一次出门的时间需要小于15分钟。
条件挺苛刻的,但也许这就是奈尔宝的生财之道。

天空之城奈尔宝

基本上算上海数一数二大的奈尔宝分店了,主要特色是两层楼高的滑梯
里面的高滑梯,是真的高,大人玩没问题,两层楼的高度,旋转滑下来,而且是全封闭的滑道。

我抱着宝宝玩了两次,第二次宝宝哭唧唧,我以为是在说害怕,就没有玩第三次。
后来回家我问她,你是害怕吗?
“我的腿,撞疼了” 指了指自己的右侧小腿。
看来家长抱着小孩玩,也是挺有风险的,毕竟速度太快了,就算抱着,小孩的四肢也可能被挤压到。
还不如让娃自己滑下去 。


星河湾奈尔宝

比较小,特色不明显,太多地方家长需要弯腰前进,大概再也不会去第二次了。

长泰奈尔宝

跟天空之城差不多大,项目比较适合小月龄的小朋友玩。
长泰店之前有记录过,奈尔宝游记

梦游?

我家宝宝晚上睡觉会到处爬,上半夜基本上睡的安稳觉,大概到3,4点的时候,就开始坐起身来,爬到床边,或者另外一个角落,抱着枕头或者趴着睡觉,你只要给她盖上被子,没一会儿就回重复上个步骤。

我一度怀疑这是在梦游,但是我没有确切的证据,原因是你叫她两句她能哼哼唧唧的答应,这一点梦游症应该无法解释。

以上记录一个愉快的周末出游。

记录第一次幼儿园运动会

2024年11月29日 13:55

这是我们第一次参加,幼儿园运动会,宝宝们也是第一次参与。
总体来说小朋友们都表现非常好,纪律和配合性上都像是中班的孩子了。

我们所在的班级是混合班,由小班与托班混编制,原因是现在生源少了,所以很多的公立幼儿园都采取这种办学措施。
好处也有,小月龄的孩子,跟着大点的孩子,会更快的成长,是今年才开始施行的,我们托班的时候没赶上这种好事。

我家娃好像在幼儿园里表现的胆子很小,被戏称“在家一条龙,在外一条虫”。你跟她说吧,她还不理你。

小运动员们闪亮登场!

热身环节,居然是举高高

参加完滚球项目,开始休息,滚球项目顾名思义跟爸爸一起把球滚到终点再折回来

所有的班级都同时获得了第一名奖杯🏆,这叫共赢!

小憩一会儿

领导摄影,大合照

以上记录第一次幼儿园运动会

交个朋友

2024年11月28日 22:10

想起记录一下这个事情,是源于昨天在公众号收到网友的私信,问
“兄弟,你做什么工作的,我这边有一个项目3D堆叠消除的游戏,不知道你有没有兴趣”
然后留了微信,隔天我们添加了好友。
由于我俩后来还聊的不错,具体聊天内容就不能公开了。

吸引力法则

早上我收到网友的消息,稍微总结下就是,我有想法,模仿个游戏,但是我没做过游戏,没资金,但是我有信心我们强强联合赚钱分。

看完他陆陆续续发的一段话。我是如下回复了:
“我这个人不忌讳交浅言深,所以我不避讳跟你说实话,你一开始就丢个饼的行为是不对的。打工的牛马什么饼没吃过”

本人愚见,真诚是交流的最正确途径,大家都不浪费时间,不合适就不聊,聊的来就哆嗦上几句,也无妨。

吸引力法则告诉我们,你要上来就谈钱,你身边就是都跟你谈钱的人。
如果说有人,上来被你分钱的饼砸中,相信我,别人看中的一定就不是这个饼。

认知以外的钱

基本上没有企业会限制员工,在工作之外去做任何私活的,当然在不使用公司资源的情况下。
所以这件事,本身不会有任何问题。

那现在的问题就是,你做的这个活,是否在你的领域内,我们是否能够跨领域去做私活,赚钱 ?
我给的答案是否定的,人赚不到认知以外的钱。

当然,这个朋友以前出过书,所以我建议是基于他之前出的书,细化一下人群分类,将书的受众人群转移到低龄化,这样又能赚到一波钱。

“听你的,我考虑一下这个,其实书销量不错的话还是很可以的,可是很难[捂脸]”
“难就对咯,赚钱哪有容易的,如果有容易的 请麻烦务必告诉我”

最后合作没成,但是也交了朋友,如下,我可截图了,你别忘了。
“对啦,我现在在北京这边工作,你有机会来这边出差可以知会我一声,可以请您一起吃个饭”

Windows10出现大容量存储设备禁用情况

2024年11月28日 18:29

如果你的电脑出现类似情况,可以参考本篇解决,注意是 “你的电脑” 。

Win + R 在运行中输入 regedit.exe 打开注册表编辑界面。

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR

可能出现如下权限不足

在编辑,权限一栏中,给User用户组赋予 “完全控制” 权限即可。

搞明白事情的次序

2024年11月27日 19:54

搞明白事情的次序挺难,刚开始我是打算直接开发射击游戏的,然后直接放web。

直到我晚上洗澡的时候才意识到,如果做web分发,我只能做小体量的游戏。
一来是我也拿不到很多被优化压缩过的资源,网络上的资源虽然是免费的,但普遍尺寸较大,大尺寸我无法负载分发成本。
二来是找资源费时费力,主要是我懒。

现在我更偏向在线上部署一个demo合集,去验证算法,玩法以及渲染相关的一些东西。
如果是射击demo,就直接用一个模型做玩法验证,就如之前制作的俄罗斯方块一样。

说到俄罗斯方块,我将这个demo放置在左下角黑猫警长的菜单栏内了,点击之后会弹出一个模态窗口。
这个窗口会动态加载一个frame,可以直接看到我最新的制作进展。

改动

之前已经制作了方块的添加,放置,障碍判定,用键盘移动,旋转,现在添加了用鼠标拖拽的功能。

优化

相应的算法也进行了优化,之前一张Map有N个节点,这些节点都被创建了。
现在则改为一张背景图,而不去创建这些节点,节约了大量的性能。
原理是通过获取玩家点击的位置,去计算玩家点击的相对点,如下:

1
2
3
4
5
6
7
8
9
10
11
12
public INode GetNodeMouseHitWorldPoint(Vector3 HitPoint) 
{
var colliderSize = new Vector3(Width, Height, 1) * Scale;
var colliderPosLeftDown = RootPosition - Vector3.one * Scale / 2f;

var relPos = HitPoint - colliderPosLeftDown;

var pointX = Mathf.CeilToInt(relPos.x / Scale) - 1;
var pointY = Mathf.CeilToInt(relPos.y / Scale) - 1;

return GetNodeWithXY(pointX,pointY);
}

清理缓存

今天刚好海河也问我了,如果要看最新的进展要清理下本地浏览器缓存。
虽然现在没啥可玩的,哈哈。

给主页添加一个轮播memos动态

2024年11月25日 19:12

常来我博客逛的朋友们应该都注意过,我的右上角有个寄语。如下图:

我在想有没有一种可能直接拉取Memos的数据,从而动态去取呢。
反正是用js的写起来,测起来都很方便。
随后花了半小时,写了个脚本,看起来它运作的不错。
顺便让豆包给了段样式,做了淡入淡出。
有需要的朋友可以自取,注意下版本号,由于是js拉取的,所以你在本地建一个html也可以进行测试。

以下Memos的API版本为:Version: v0.22.4

网页部分

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<script src="./a.js"></script>

<body>
<div id="description">
<a>最近在搜寻有趣博客中...</a>
</div>
</body>

</html>

js脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
String.format = function () {
if (arguments.length == 0)
return null;
var str = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
}


let data = {}
let index = 0

function refreshContentInterval() {
if (index >= 4) index = 0;
index++;
var firstData = data[index]
var result = firstData.snippet;
if (result.length > 30) {
result = result.slice(0, 30) + "...";
}
let post_index = "改成转跳的页面";
const descriptionDiv = document.getElementById('description');
descriptionDiv.innerHTML = '';
const aTag = document.createElement('a');

aTag.textContent = result;
aTag.href = post_index;
aTag.id = "fading-a"
descriptionDiv.appendChild(aTag);
}

function showFirstContent() {
var bbUrl = "https://你的memos域名/api/v1/memos?filter=creator=='users/1'&&visibilities=='PUBLIC'&&pageSize=5";
fetch(bbUrl).then(res => res.json()).then(resdata => {
data = resdata.memos;

refreshContentInterval();
setInterval(refreshContentInterval, 3000);
});
}


// 当页面加载完成后执行的函数
window.onload = function () {
showFirstContent();
}

css样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* 定义要添加淡入淡出效果的a标签样式 */
a#fading-a {
opacity: 0; /* 初始设置为完全透明 */
animation: fadeInOut 3s ease-in-out infinite; /* 应用淡入淡出动画,持续时间3s,缓动效果为ease-in-out,无限循环 */
}

/* 定义淡入淡出动画关键帧 */
@keyframes fadeInOut {
0% {
opacity: 0; /* 开始时完全透明 */
}

30% {
opacity: 1; /* 中间达到完全不透明 */
}

80% {
opacity: 1; /* 中间达到完全不透明 */
}

100% {
opacity: 0; /* 结束时又回到完全透明 */
}
}

以上,晚饭后半小时的摸鱼杰作。

VisionPro体验报告

2024年11月25日 00:12

今预约了苹果嘉里中心店的VisionPro体验

这大概是和一台高配 Mac 价格差不多的头戴设备(25k+),网络上的各种体验报告已经非常多了。
此前我体验过很多型号的国产VR,苹果的这款产品令我印象最为深刻。
用引导用户的工作人员常挂嘴边的一句话就是:“指哪儿打哪儿”,操作精准度高,稳定性强。

在这里我仅记录一些个人感受,以区别网络上的其他报告。

“十分钟上手,十五分钟沉浸,二十分钟出戏”
之所以我这样小结,应该它上手真的很简单,十分钟用户就可以完全上手,目前只要不涉及用户打字输入的地方,体感都十分的良好。
在学会使用后的前十五分钟你可以沉浸式体验各种APP与全息影像,颇有种把4D影院搬回家,而且是交互式的4D。
当到了二十分钟左右,由于头戴式设备的分量,你会明显觉得头部有个东西向下坠,有点累。由于所有的操作锁定都需要透过“注视”,眼睛也会有疲劳感。正是这些感受,会让我觉得使用20分钟以上会比较出戏。当然,如果自己买回家,是可以通过躺着玩与适应性训练去习惯它,长时间使用应该也没有什么问题。

之所以很难去描述这样一款产品带来的体验是它真的要你自己去感受。

记录最近拍摄的一些图与故事

2024年11月24日 00:23

最近没有什么成文的故事好讲,但是拍摄了一些有趣的图,换句话说大概是我自以为有趣的图。
走走看看,再记录一些瞬间,有时候觉得还挺解压的,unzip (讲个冷笑话)。

江苏路

去江苏路办事,刚好带了相机,闹中取静拍了几张,其实江苏路是非常繁忙的一条路。

街景
地铁站

环球港

宝可梦卡牌道馆的商品是真的很贵的,让人没有什么消费的欲望,大概是我们不是宝可梦周边的受众。
皮卡丘
可达鸭

这边开了一个动漫周边专卖的小铺子,连城一片,当然也看到了一些有趣的玩偶,听说是最近最新流行的造型。
公仔
动漫立牌

除了动漫,其实游戏也可以有很多的周边,比如下面这个,听说喜欢玩这类的女生还挺多。
游戏周边

科创公园

与表姐一家人一起出游扎帐篷,顺便收到了一张违停通知书。
这次跟宝跟小哥哥一起玩,自己穿鞋穿的飞快。
突然发现宝宝其实会穿鞋的,而且做的还不错!
光速穿鞋

公司

浦东这边写字楼真的多,只是流年不利,大部分企业都不好过,相应的办公楼需求也少了。
下图中非常帅的一栋楼大概空关了半年多了,找不到入驻企业也属于正常。
晚霞
大楼

以上,最近所思所想所见。

背包大乱斗与俄罗斯方块(代码篇)

2024年11月21日 16:31

前一段时间写了一篇 背包大乱斗与俄罗斯方块(设计篇) ,具体的实现思路在这一文中已经讲清楚了,后来我抽空去实现了一版。目前看效果还不错。

已经实现,形状的变换,定位,移动,消除,障碍判定等。
本篇稍微讲一下具体的实现过程,以及如何去优化这个算法。

基于池去实现节点的创建与回收

一开始就基于这个池模板去管理所有数量上较多的对象,后期优化的压力会小一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public interface IReset
{
void Reset();
}

public interface IPool<T> where T : IReset
{
Stack<T> nodesPool { get; }

T CreateOne<W>() where W : T, new();
void ReturnOne(T item);
}


public class BasePool<T> : IPool<T> where T : IReset
{
Stack<T> _nodesPool = new Stack<T>();
public Stack<T> nodesPool { get { return _nodesPool; } }

public virtual T CreateOne<W>() where W : T, new()
{
if (nodesPool.Count > 0)
{
return nodesPool.Pop();
}
return new W();
}

public virtual void ReturnOne(T node)
{
node.Reset();
nodesPool.Push(node);
}
}

分离算法与表现

我们的算法是需要适应不同的场景的,如果基于一套UI或者3D/2D渲染,混写代码,就会导致这个代码复用性低,迁移起来费时费力。

TileInfo.cs 作为管理单个形状( 物品) 渲染信息的最小单位。我们并不需要在这里书写任何如何去渲染的逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class TileInfo :  IReset
{
public List<GameObject> Cubes = new List<GameObject>();
public GameObject Tile;
public Color BaseColor;

public void Reset()
{
BaseColor = Color.white;

if (Cubes.Count > 0)
{
for (int i = 0; i < Cubes.Count; i++)
PrefabPoolManager.GetInstance().PushGameObjectByType(PrefabPoolManager.PrefabType.Cube, Cubes[i]);
Cubes.Clear();
}
PrefabPoolManager.GetInstance().PushGameObjectByType(PrefabPoolManager.PrefabType.Tile, Tile);
Tile = null;
}
}

将这个逻辑放到一个单独的Render脚本中,这样处理现在我们已经将渲染画面的功能完全隔离到了 BlockRender。
如果我们有3D的画面,就可以写一个3DBlockRender 或者是 UIBlockRender ,只需要抽象出接口做新的实现即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class BlockRender 
{
public TileInfo UpdatePreSelectNode(PreSelect node, LogicMap map)
{
return UpdateTile(node, node.Shape, node.x, node.y, map);
}

public TileInfo UpdatePreSelectNode(PreSelect node, IShape shap, LogicMap map)
{
return UpdateTile(node, shap, node.x,node.y,map);
}

...

至此我们已经完成了基础逻辑,他包含一个通用的池实现,与一个通用的渲染层。

核心算法

一般来说游戏的业务逻辑复杂度都不高,真要说复杂的,那肯定是渲染逻辑。
这段放置图形的代码,就是背包大乱斗最复杂的业务逻辑了。

通过当前节点的相对点加图形的数据结构中存储的x与y值,就可以推算出逻辑节点的坐标。
注意这边的逻辑节点,需要配置map的信息,比如map的位置信息与缩放进行一个定位,才能换算出真实坐标。

当然下面的代码并没有添加,是否这个位置有阻挡或者已经被占用的判定,由于我们的玩法尚未定型,则将这个判定放到了渲染层,在最后的演示中,你可以看到如果两个图形有重叠部分,重叠部分的区域会变成红色。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public INode PlaceShape(INode node,IShape shape) 
{
node.Shape = shape;

//解析data
var data = shape.Data;
var rows = data.GetLength(1);
var columns = data.GetLength(0);

for (int y = 0; y < rows; y++)
{
for (int x = 0; x < columns; x++)
{
if (data[x, y] == 0)
continue;

INode usedNode = GetNodeWithXY(node.x + x, node.y + y);
usedNode.State = NodeState.CUBE;
}
}

return node;
}

演示

通过空格键可以在左下角创建出方块,wasd去移动,qe可以转换方向,再次空格键可以放下方块。

页面有9M大小,加载较慢。演示地址 : 点我转跳

我尝试在下方加载了一个 iframe ,如果能正常显示的话就不用再转跳到上面的链接了。-

现在上面的演示地址失效,我用来放置游戏demo,当然这个demo也是用如上算法,欢迎参考,关注。

周更博主

2024年11月19日 15:32

什么我居然成了周更博主了,上周有几天在做背包大乱斗的教程,晚上就在玩王者荣耀国际服。
我才知道王者荣耀国际服,经常送玩家史诗皮肤,游戏环境还好,你骂别人都没人回嘴。
大概是语言太驳杂,你看不懂我,我看不懂你。所以让竞技类游戏环境变好的办法大概就是,简化沟通环境。

上吐下泻组合

前两天又又又食物中毒了,被我笑称是上吐下泻组合,她是上吐,我是下泄,宝宝就是组合。

起因是,领导点名吃的泰国菜(simply thai天泰),还贴心的买了两杯奶茶(CoCo)。不知道是这个奶茶有问题,还是说泰国菜有问题,宝宝也吃了烤肉,倒是没有问题。我们大概是喝了奶茶+吃了菜品导致的。毕竟买奶茶喝的也不是我们两人。直到现在我还不理解到底是什么导致我们食物中毒的。

吃到睡着

宝宝吃了几块烤肉之后就开始闹腾,抱了一会儿,就睡着了,吃饭吃了快两个小时,睡了一个小时,看来是真困。白天在家里玩的太嗨了,中午也不睡觉。我发现,孩子越大倒是越不爱睡午觉。

以上,愉快但是不顺利的周末。

背包大乱斗与俄罗斯方块(设计篇)

2024年11月19日 13:53

前段时间背包大乱斗身边的同事玩的还挺多的,刚好这几天有空去研究研究,我还专门去看了背包大乱斗的攻略。发现,“啊,这不是俄罗斯方块吗 ?” 又一番研究之后确实,背包大乱斗和俄罗斯方块有诸多相似之处。

玩法分析

在空间规划与摆放方式上,俄罗斯方块是要将各种形状方块合理放置在游戏区域,通过移动和旋转来填满行以得分,背包大乱斗则要在有限背包格子内合理放置装备等物品,考虑其形状、属性和搭配来最大化利用空间;

在决策过程中,俄罗斯方块玩家要在方块下落时快速决策其旋转、移动和放置时机,考虑方块间关系和后续空间预留,背包大乱斗玩家要依据职业、已有物品和游戏局势做出购买、合成等决策,两者都要综合考虑多种因素;

从形状与组合多样性来看,俄罗斯方块有七种四格方块,通过旋转和移动创造多样组合,背包大乱斗有多种装备等,通过合成、镶嵌等形成不同搭配;

游戏的动态变化性上,俄罗斯方块随着方块下落和消除游戏区域不断变化,玩家要随之调整策略,背包大乱斗在游戏中因新物品获取、对手情况变化而使局势改变,玩家也需要及时调整背包布局和策略。

游戏是继承与发展的。背包大乱斗本质上是俄罗斯方块机制的延展,从后者的空间利用、策略决策、形状组合和动态变化中获取灵感,深化空间放置与规划理念,发展出更复杂多样的内容,如物品属性和合成搭配,其动态变化也更具挑战性,给玩家全新体验。

背包大乱斗

代码设计

透过现象看本质,背包大乱斗的核心玩法,其实与俄罗斯方块是一致的,在这个基础之上包装了一个RPG。
当然你要说这个游戏,有着更加丰富的玩法,固然如此。但这些玩法最终都要依赖这个核心的玩法。

说了那么多,想必大家心里都有了不同的实现方案。那么现在我们动手去实现一下这个玩法的核心算法。

从一个二维数组开始

在所有的一切开始之前,要定义一个基础 Map ,我们所有的坐标定位都要基于这个二维网格。
顺便,我们将基础坐标系定在第一象限,方便我们定位与计算。

对应的数据可以表示成这样 (10X10) 空白格用0来表示:

1
2
3
4
5
6
7
8
9
10
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000

创建基础单位

一个基础单位,有上下左右,共四种朝向,当然这个基础单位可以任意的长短,这是灵活的,可配置的。

我们用虚线格填充这个基础单位,则有了下图,这样的好处是方便通过数据去描述这个单位长什么样子。

虚线格子用0表示,实线格子用1表示, 结合前面我们提到的,将这个坐标系放在第一象限,并且从下往上,从左至右自增。对于单个方块,我们可以用如下的数据结构去描述,它的不同形态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

010
111


01
11
01


111
010


10
11
10

设计一个运行框架

根据上面的思路我们可以这样去设计程序:

  • 我们的主体就是一张图,其中有N个节点。这个节点有个状态字段,如果不能放置或者被占用则标注之。
  • xy就是节点的坐标,因为我们的节点最终是要存储到一个list内的。
  • ShapeTemplate就是设计的重点,一个图形模板,通常一个图形模板对应多个分形(可以变换的状态)。

实际一个图形,在图中所占用的确切坐标,仅是一个node,根据这个节点定位结合图形的形状,可以轻松的定位到其他几个被影响到的点位。

以上背包大乱斗与俄罗斯方块的玩法分析与代码设计。

八段锦练习效果反馈

2024年11月13日 14:04

从10月20号左右到现在每天晚上都会练一遍八段锦,除了10月31号去体检了晚上断了一天,来说一下这20多天自己身体的变化,练习的是B站的版本,如下:

【健身气功八段锦完整版-带呼吸法口令版-哔哩哔哩】 https://b23.tv/Dg1ifrU

莫名的身体发热

初始原因是前几个月在夏天的时候发现自己手心和脚心一直会发烫发热,但量了体温又很正常,没有发烧,一直不是很舒服又不知道什么原因,在网上查了一下发现是比较像是阴虚,去医院看了中医,果然医生说我有点肝阴虚,肝的阴液不足导致虚热、干燥不润、失眠多梦、咽干等症状,给我开了14天的中药,一天早晚各1剂,医保花了500多。

先别说中药好不好喝,中药肯定都是苦的,就算我不怕苦每天喝2袋也有点遭不住,好不容易喝完14天的药,感觉也没好多少,就喝药期间觉得症状稍微有些许改善,停药后就完全没有效果了,中药真是需要喝很长时间才能有效果,每次500多的中药也顶不住呀,谁知道要喝多久时间才能好呢,于是就没有再去看中医,那身体还是不舒服怎么办呢?

药吃到饱

于是本庸医开始在网上查找对应症状能吃什么药,发现大阴补丸除了失眠多梦这个症状外都能对上,而且一听这个名字就很补,像武侠剧中药的名字,立马激情下单,连吃了3天,每天早晚吃一瓶盖6g,早饭还没吃就开始饱了。

大补阴丸主要用于缓解阴虚火旺引起的症状,如潮热盗汗、咳嗽咯血、耳鸣遗精等,通过滋阴降火等作用来调节体内阴阳失衡状态,但使用时要注意忌油腻食物,脾胃虚弱、食少便溏者需慎用,症状严重或持续不缓解应及时就医。

吃了3天后发现不太合适,好像没有太多改善自己的症状,反而又有些其他不适,于是就停药了,本庸医又在网上找其他药,看到一个中医说这大阴补丸需要和知柏地黄丸一起服用,于是又激情下单,但是刚准备吃就被肖师傅阻止了,跟我说不吃药身体自己也会慢慢恢复的,吃药反而不好,不要吃乱七八糟药,于是本庸医听劝没有再吃药了。

开始跟练八段锦

然后自己的睡眠就越来越差了,经常在床上翻来覆去半小时才能睡着,有时候夜里会出汗,有时候天快亮了就开始有点清醒了,经常晚上还会伴随耳鸣,右耳朵总是在咚咚咚的打鼓,休息不好精神就更差,人容易烦躁,脾气性子也有点大,刚好10月底又约了检查身体,心里想这不完蛋了,这身体这么差检查出来岂不是更不好了?

凑巧有一天晚上刷B站的时候看到了八段锦,之前也有看到过但没当回事,这次心里想要不试试吧,说不定能改善一些呢。

随后神奇之处就来了,练了几天后我的睡眠首先得到了非常大的改善,每天晚上睡前都很困,5分钟就睡着,做的梦也不记得了,渐渐地晚上也不出汗不会醒了,有深度睡眠睡得很沉,耳朵也不咚咚咚耳鸣了,虽然手脚有时候也会有点热,但是已经比之前好多了!

我真没想到竟然这么有用,一个健身操竟然对睡眠有奇效!随即到现在已经有20多天不到一个月了,当中断了一天很懊悔,因为感觉断了一天之前练得又从头开始了,每次练完气沉丹田的时候,总会感受到一些气在丹田中,这种感觉很奇妙,无法言喻,而气是一天天锻炼累积的,断了一天气又得从头开始攒了,就变少变轻了。精气神感觉也好了很多,之前每次出门或者做饭的时候都觉得人特别疲惫,现在明显感觉好很多,没有这么累了,真是感谢老祖宗留下的遗产,让我解决了令人头疼的身体问题,再次感受到中华民族文化的底蕴!

顺便说一下,新手练八段锦先不要跟呼吸,先把动作扣明白了,有很多细节可以在-在线文档学习,如果刚开始练动作做不到位也不要着急,尽自己最大努力跟练。我是比较喜欢做操的,以前也经常会跟练各种操,身体协调性和柔软性也ok,肩颈方面有什么不适也是通过针对性做操来改善的,因为对无氧运动没什么好感,体力不行。

对公园的大爷以及广场舞大妈,质疑他们,理解他们,成为他们,最后,希望大家也能经常想起来去锻炼一下,一起强身健体!~

找对象

2024年11月12日 16:36

我妈妈开理发店,平时接触的人也比较多,上周六晚上我妈跟我说讲了个委托。
一个湖北咸宁的老乡(这不巧了),说想问问我妈能不能帮忙介绍个对象。
我妈顺利成章的将这个艰巨的任务让给我了,说让我问问身边的朋友。

对女方的要求

小伙是附近中国航天研究所工作的,交大的博士生,年入40w以上。
我问他是否要找上海的小姑娘还是外地的也行,对学历有没有什么要求。
得到的是这样的回答:

男孩的心思你别猜

哎,虽然小伙是个好小伙,但是这要求也有点双标了吧,对本地的对象直接学历降一档。
我只能说小伙想躺平的愿望我是能理解的,但是你大大方方的说出来应该更好一些。

当然上述言论,是我事后得出来的,且听我讲,随后我给他介绍了领导的小闺蜜。
领导的小闺蜜目前在苏州工作,德语专业硕士,刚工作1年。
大概情况与照片我的给了这小伙,我想着小伙的要求是外地硕士,那不刚好符合要求。
结果告诉我是异地,让等一年姑娘来上海工作了再介绍给他。

我此时只是想说:学历和情商是两码事 。估计这小伙还不明白,反正后面我也不会给他介绍了,就此打住。

最后,给领导的闺蜜发一个相亲贴子

发一张小闺蜜的照片,具体情况如果你自己看了上文应该能了解。如果有合适的男士可以留言,推荐一下。

记录下平淡的生活

2024年11月12日 15:59

最近好像没有什么想写的主题了,大概是陷入了盲目的创作枯竭期。又或许是回归到生活的本质。
在网络上还是有人不断的制造,贩卖焦虑。要知道散播这种情绪是会让人能量场降低的,我建议是不要看。
还是多关注关注生活中美好,值得去记忆的东西,可能是景色,也可能是一时间的感慨。

学舞蹈,但是白跑一趟

周末带宝宝去上舞蹈班体验课,周末还下着小雨,上午约的九点,实际我们抵达大概九点二十。
宝一开始就说不想去,我还想去看看,万一看到其他小朋友跳舞,宝宝也想玩。
结果进去之后,直接哭着要走,那就走罢。
走的时候,前台小姐姐也说,我们家太小了,等大点再来看看。

回家玩积木

回家倒是挺开心的,玩了一上午的积木。 后来我跟家人讨论这件事都觉得是宝宝想赶紧回去玩玩具,所以不想去上课。
不过话说回来,玩什么不是玩呢,舞蹈和积木在我看来好像没有什么区别,也都是玩耍。


领导安排了四菜一汤

家里分工是领导烧饭,我洗碗,宝负责吃,可乐鸡翅,牛肉汤,烤南瓜,粉丝煲,虾仁跑蛋。
宝比较喜欢吃鸡翅,一顿能吃五个。

幼儿园做了手工,老师还带小朋友们去水果店买水果

我倒是比较少带宝宝去水果店,相对水果店来说宝宝喜欢逛超市大概更多一些。


近期在118广场有个军事主题展览

图是8天前拍摄的,那时候还在布展,感兴趣的朋友可以去看看,应该还能赶得上。


去日不可追,来日犹可期

2024年11月8日 11:30

我们这边传统虚岁是1岁,比如今年我满30周岁,就叫三十一岁,前两天刚好是农历生日。
现在过了三十这个坎,再回首二十多岁的样子,记忆里居然是有些模糊的。

我女儿常说过去的事,都是昨天。在她小小的脑子里,只要隔了天,无论是隔了多少天的事情都是叫昨天。
此时我突然觉得这样描述非常好,只有昨天,今天,明天,没有过去,人活的轻松又自在。

这叫什么? 理应是,去日不可追,来日犹可期 。

领导给买了个生日蛋糕

哦对了,还送了我一个小玩具-适马18-50镜头开箱,再次祝领导千秋万岁,永远十八。

宝宝是这样说的,爸爸你赶紧吹蜡烛,我等不及要吃蛋糕了!😅

当然也乖乖的陪唱了生日快乐歌,乖宝已三岁半了,时间也过得真快。

父母送了一块佛牌,说保佑平安

这个岁数了,父母叮嘱平时要注意安全的次数明显增多了 。突然想起来一个处世原则,叫幸福者避让。

幸福者避让原则

简单来说就是当你过得很幸福的时候,要是遇到了冲突或者别人的挑衅,别冲动地去对抗,而是选择退让。因为幸福的人有很多在乎的东西,像美满的家庭、稳定的工作啥的,而那些找麻烦的人可能没什么可牵挂的,跟他们硬刚可能会给自己带来更大损失。所以幸福者避让不是软弱,是保持理性和包容,是为了保护自己的幸福生活,不被一时的冲突给破坏了。就好比一个幸福的人在外面遇到无端挑衅时,明智地选择息事宁人、退让离开,这既是保护自己和家人,也有助于社会和谐。

补发一张图

买了个小模型,本来打算是晚上就拼好,结果应为质量太差,陆陆续续好几天晚上弄好。
练练对形体的理解挺不错的,有时候拍摄人物的身体不知道怎么摆姿势,刚好买个模型练一练。

以上,三十岁生日,小记。

记录两次与友人交谈

2024年11月5日 15:36

读书还是找工作

先说近的,今天中午和领导出去吃午饭,遇到两个不认识的妹子拼桌。我和领导吃了有一会儿了,她们的香锅刚点好,还在位置上等。周围吃午饭的客人很嘈杂,但是桌子很小,不可避免我与领导听她们的交谈会很清晰。

俩人兴致勃勃的交谈中,会提到实验室,实习,宿舍的字眼。特别是我还看了我斜对面女生一眼。就这个清澈而带点发光的眼神,好了,是研究生无疑了。我跟领导说,你看你隔壁的女生特别像徐yy,领导摇摇头说不像,“我说的不是这个脸,你看她的这个眼神,特别像徐yy刚工作的时候”,我们与徐yy刚认识的时候,就是她来我们公司实习的时候。徐yy也就是之前某一期文章中提到的小闺蜜 -世嘉都市乐园游记 。领导挺喜欢和大学生交朋友,说是大学生不复杂,社会上的人复杂比较难做朋友。我深表认同,工作的越久,接触的人越难交心。

话说回来,两位女生都是零零后,生物学研究生,癌症/神经 方向的。一个是川渝另外一个是广西桂林。
“巧了,前段时间我们刚去你老家玩”,桂林市游记 , 桂林市周边游记 ,这下好像距离感就缩近不少。

聊了有半小时吧,工作餐时间吃了一个正式餐的时间。有一些话我觉得印象很深刻。
“附近租房子最便宜要2300一个月,实习一天只有一百”,
“看来小时候成绩太好也不一定是好事,现在发现研究生这么多,对口的工作都饱和了”,
“21世纪是生物学生的元年,因为学生物的都转到各行各业了”,
“现在本科生的活都是研究生在做”。

关于为什么现在研究生比前些年明显的多,我个人是有一点想法的。大概是现在零零后只要上学基本上不存在着急学费的事情,再加上一代人固有印象就是知识改变命运,经济压力小了所以选择直升研究生的更多一些。
你要问知识是否能改变命运 ? 首先我认同这个观点。可现实又告诉我们,现在的环境对于研究生,大学生来说找工作真的很难的。

跟任何人说不

再说上周日与一老同学,相约商场去玩滑板。约我出门是比较困难的,约了两周鸽了一周,有娃家庭大家都知道,时间安排不过来挺正常,滑板运动也不适合小孩子参与。他因为辞职了,所以时间上比较灵活。前段时间他跟我说过感情上的困扰,我还以为这次还要跟我倾诉云云。

他玩的是长板,我玩路冲。我是直接划着板子去商场找他的,这边是个露天商场,中间有广场可以玩滑板。
到了之后,我俩先沿着商场周围划了一圈,不得不说,长板是真的快,玩路冲我的腿都拧麻,还是追不上。
长板速度大概速度是路冲的两倍左右。“看来你不带你老婆来是正确的,不然你划得这么慢。多没面子”,我就笑笑。
“你试试我的滑板,我试试你的?”,随后我俩交换了下滑板,他的板子中间软,我体重大,上去会有明显凹陷,他尝试路冲又是左右晃各种不平衡,“不行不行,不适应。”

“我辞职了,是被迫辞职的,公司的管理层有问题,我找了个公司的原因,直接书面通知公司,被迫离职就走了。我们公司的管理层都没什么好下场,有些都被关进去了”
“那你怎么不问公司要赔偿?”
“赔偿也就十万块,我们公司有法务的,而且公司会找到各种理由拒绝赔偿,万一仲裁失败了,可不就丢人了”
“你不工作你家人支持吗?”
“不谈家事”
“女朋友呢?”
“这个也不谈”
“你现在不工作,大概多久再找呢?”
“两年”
“为啥那么精确”
“因为我的失业金就可以领两年”
“原来如此,前段时间我和朋友算了一笔账,大概是在上海一千两百万存款,就可以算财务自由了。再也不用工作了。每个月的利息就可以很体面的生活”
“我觉得不需要1200万,给我100万,甚至10万我都没有的情况下,我都能跟别人说不”
“是不上班吗,我觉得不太行,不上班,娃咋办,哦对,你还没结婚没有娃,那你女朋友呢,你女朋友的同意的话,女朋友的父母同意吗”
“我又没结婚,房贷也提前还清了,女朋友不同意就跟女朋友分手”
“果然孤身一人的情况下,能有勇气跟任何人说不”

聊得差不多了,我俩都准备回去,临走的时候我又问了他一天是怎么过的,
“你给我讲讲你现在不上班的一天都是怎么过的呗?”
“晚上九点多上床,玩玩手机,三四点睡觉,早上睡到十一二点起来,吃个早饭。吃两个包子,下午玩原神刷会视频然后再刷会儿视频玩玩原神,晚上就过来找你玩了”
“你早上还是要早点起来的”
“我为啥要早点起来呀,我又没有事”
“你早起我心里舒服点…”

遭遇Follow源失效

2024年11月4日 14:07

rss订阅本质上就是访问一个存于网站的不定期发布的xml文件,我的网站每次生成静态页面的时候都会更新这个文件。
从上周五开始,我在follow上的源显示失效,实际上是可以正常访问的(通过浏览器访问这个文件)。
https://vrast.cn/atom.xml?t-1730687790025
本文记录一下这个问题以及如何去解决。

询问

找到博客圈的大佬 dujun,帮忙看看是否能访问,结果是不行。

@keyle 嗯,你网站现在不能访问了。我本地可能有缓存。我用国内和境外的两台云电脑访问你的网站,都提示 DNS_PROBE_FINISHED_NXDOMAIN。

合理推测

由于之前套了又拍云,本质上是将自己的站点做了反代,访问过来的流量实际上会走又拍云的服务器。
使用 https://tool.chinaz.com/speedworld/vrast.cn/atom.xml 站长测试工具,测试果然是有问题的。
又拍云的小鸡在外网访问速度都是0,应该是做过隔离处理。
将套的CNAME停用,等了十分钟再次测试,结果如下,直连可以访问。

解决问题

再次在Follow上刷新订阅源,问题解决。

再次感谢 @dujun 的帮助,如果你也套了CDN发现类似无法访问问题,也可以用站长工具测试下,外网是否被屏蔽。屏蔽的话,这个follow肯定就拉不到源的。

后记

我在又拍云提交了一个工单,很快就收到了回复。原来又拍云是可以控制是否启用全球访问。
这里要给又拍云大量的夸夸!真的很棒!

CDN性能优化一栏内可以找到这个选项

适马18-50镜头开箱

2024年11月4日 13:03

第一次写开箱,当然这是极不专业的开箱测评,纯粹是记录下领导给买了新玩具。
如果对你选择镜头有帮助,那就太好了。
半画幅3-4k的镜头里,在我看来基本上就两款,一款是腾龙17-70,另外一款就是这次开箱的。
由于我这边的设备是微单,如果是单反我会选择腾龙,其实也贵不了多少,大概2-300的样子。
微单用腾龙,无异于马骑吕布,大概是这样的画面。
在画面相差不大的情况下,我这边主要的选择指标有两项,重量与尺寸。

相关的参数信息

适马 18-50mm F2.8 DC DN|Contemporary 镜头的参数如下:
光学参数:

  • 焦距范围:18-50mm,可满足日常拍摄中的多种焦段需求,如广角端适合拍摄风景、建筑等大场景,长焦端可用于拍摄人像、特写等。
  • 最大光圈:f/2.8,恒定大光圈能够在不同焦距下提供充足的进光量,保证了在光线较暗的环境下也能拍摄出清晰、明亮的照片,同时还能营造出浅景深的效果,使主体更加突出。
  • 最小光圈:f/22,较小的光圈可以在需要大景深的场景中使用,例如拍摄风景时能够使前景到背景都保持清晰。
  • 光圈叶片数:7 片(圆形),圆形光圈叶片可以使焦外的光斑更加圆润、柔和,增强了照片的美感。
  • 最近对焦距离:广角端为 12.1 厘米,长焦端为 30 厘米,较近的最近对焦距离方便拍摄近距离的物体,能够展现物体的细节。
  • 最大放大倍率:广角端为 1:2.8,长焦端为 1:5,具有一定的微距拍摄能力,可以拍摄出较大的物体影像。

物理参数:

  • 镜头结构:10 组 13 片,其中包含 1 片 SLD(特殊低色散)镜片和 3 片非球面镜片。SLD 镜片可以有效减少色散现象,提高画质;非球面镜片则能够矫正像差,使成像更加清晰、锐利。
  • 视角:不同卡口的视角稍有不同,L 卡口和索尼 E 卡口为 76.5°(广角)-31.7°(长焦);富士 X 卡口为 76.5°(广角)-31.7°(长焦);佳能 RF 卡口为 73.4°(广角)-30.0°(长焦)。
  • 滤镜尺寸:φ55mm,方便搭配相应尺寸的滤镜,如偏振镜、UV 镜等,以满足不同的拍摄需求。
  • 尺寸:不同卡口的尺寸也有所差异,L 卡口为 φ65.4mm×74.5mm;索尼 E 卡口为 φ61.6mm×76.5mm;富士 X - 卡口为 φ61.6mm×76.8mm;佳能 RF 卡口为 φ69.2mm×74.5mm。
  • 重量:L 卡口和索尼 E 卡口为 290g;富士 X 卡口为 285g;佳能 RF 卡口为 300g。

下面图片中的主要设备

  • Sony-zve10
  • 适马18-50
  • 天利MrcUV



拍了一些照片

上海野生动物园游记-链接

上海野生动物园游记

2024年11月3日 23:14

计划带宝宝去野生动物园玩很久了,刚好今天是个大天晴,昨晚领导准备了一堆小零食。
我大概总结下带娃去类似动物园博物馆几样必带的:

  1. 水,零食
  2. 推车
  3. 隔汗巾
  4. 替换薄衣物

这几样排名简直不分先后,母慈子孝是不可能的,零食堵嘴是实实在在的。
要想太太平平的玩耍,最好是全程手推车前进。当然每个娃的情况不太一样,至少我家是这样的。

动物园P4停车场,入场路边人公湖

DSC02592

太阳岛表演,大约15分钟左右

DSC02617

熊猫睡着了,是真的睡着了

DSC02644

害怕天鹅吃手手

DSC02603

“妈妈我不敢喂大象!”,宝宝第一次跟动物互动表现的很怕,看了以后应该多去去。

DSC02680

宝跟领导去坐摩天轮了,图片压缩后天空上的云,色彩有点不对,但是将就看吧

DSC02669

河马的护栏是很低的,简直一步就能跨越,但是河马肯定不想出来

DSC02693

这鹦鹉也没有拴绳子,就是不飞走?

DSC02709

游览车进去的随手拍 1

DSC02719

游览车进去的随手拍 2

DSC02727

游览车进去的随手拍 3

DSC02730

游览车进去的随手拍 4

DSC02735

游览车进去的随手拍 5

DSC02738

游览车进去的随手拍 6

DSC02740

Stable Diffusion 的一些基础知识

2024年11月1日 17:32

Stable Diffusion 作为一种先进的深度学习模型,在人工智能领域尤其是图像生成方面具有重要意义。
这个章节是学习使用AI绘图绕不过的,无论使用哪种工具,都需要对其原理有个基础的的了解。

“很简单,我去采石场,看见一块巨大的大理石,我在它身上看到了大卫。我要做的只是凿去多余的石头,去掉那些不该有的大理石,大卫就诞生了。” –米开朗琪罗

整体架构

Stable Diffusion 是一个复杂的系统,由多个组件协同工作。以文生图为例,用户输入文本提示(prompt)后,首先由 Text Encoder(如基于 CLIP 模型的文本编码器)将其转换为 77 个等长的向量,每个向量包含 768 个维度。这些向量包含了文本的形态、视觉和语义等特征信息,使得模型能理解用户需求。
接着,这些向量与一张随机图(可视为充满噪声的图)一同进入 Image Information Creator。在此组件中,它们先被转换到 Latent Space(潜空间),然后通过多步(Steps)降噪过程,将随机图逐步转化为包含用户所需图像信息的 “中间产物”。这个过程中,Noise Predictor 根据随机图、prompt 向量和当前 Step 数预测噪声图,通过一系列计算(如噪声图相减、放大并相加等操作)来去除不需要的噪声,且负向 prompt 也会影响噪声计算从而改变最终图像。
最后,Image Decoder 将潜空间中的 “中间产物” 解码为最终的图片,整个过程类似在充满噪点的图像中 “雕刻” 出符合 prompt 的图片。

技术原理

其基于扩散模型原理,通过在训练过程中学习如何给图像添加噪声然后逆向去除噪声来生成图像。潜空间技术是关键,它通过对原始图像进行编码和降维得到低维空间表示,大大提高了运算效率,使得民用 GPU 也能相对快速地完成任务,同时也有助于更好地控制图像的细节和风格。但该技术也存在一定弊端,如数据编码再还原过程中会导致部分数据丢失,使得图像可能出现一些细节缺失或奇怪的情况,例如生成图像中的文字可能不够准确。

降噪过程与原理

基础概念

在 Stable Diffusion 中,降噪是将随机噪声图逐步转化为符合文本提示(prompt)的清晰图像的关键过程。这个过程主要在 Latent Space(潜空间)中进行,潜空间通过对图像进行编码和降维,将其表示为一组潜在变量,使得在这个空间中进行操作能够提高效率并更好地控制图像特征。

详细步骤

  • 在 Image Information Creator 中的每一步降噪(Denoise)操作,都需要输入随机图、Prompt 的词特征向量以及当前的 Step 数。其中有一个 Noise Predictor(噪音预测器)模型发挥重要作用。
    对于一张初始的随机图(例如 4X4 大小,这里的大小对最终生成图像的比例和大小有影响,若要改变最终图像大小需调整随机图尺寸而非通过 Prompt 指令),Noise Predictor 会根据随机图和 Prompt 词特征向量预测出一张噪声图 B,同时不使用 Prompt 词特征向量预测出一张噪声图 C(蓝色线)。
  • 将噪声图 B 和 C 相减得出图 D,其意义在于得到 “根据 Prompt 预测的噪声”(因为 B 可简单理解为包含 “根据 Prompt 预测的噪声”+“根据随机图预测的噪声”,C 为 “根据随机图预测的噪声”,B - C 就隔离出了与 Prompt 相关的噪声部分)。
  • 将噪声图 C 放大,一般通过乘以一个系数(如 CFG、CFG Scale 或 Guidance Scale),这个操作是为了提高 “根据 Prompt 预测的噪声” 的权重,使得生成的图像更符合 Prompt 描述,然后将放大后的图与噪声图 C 相加得到图 E。
  • 将原始随机图 A 减去图 E,得到一张新的图,这就是一次降噪后的结果,通过不断重复这样的步骤(多 Steps),逐步去除噪声,使图像越来越清晰,直到达到预设的 Steps 数或满足生成条件,最终得到中间产物(潜空间中的图像表示),再由 Image Decoder 解码成最终的清晰图像。

负向 Prompt 的作用机制(与降噪相关)

当输入负向 Prompt 时,也会生成相应的噪声图 B2。此时,会用正向 Prompt 生成的噪声图 B1 减去 B2 再减去 C 得出 D,这意味着最终生成的图像会更加远离负向 Prompt 相关的噪声,从而使图像更符合正向 Prompt 的要求,并且避免出现负向 Prompt 所描述的特征。

与其他模型降噪对比(以 Midjourney 为例)

Midjourney 在生成图像时会展示图像从模糊甚至黑色(充满噪声)逐步变得清晰的过程,即每一步降噪后的图像变化都呈现给用户。而 Stable Diffusion 在 Image Information Creator 中进行多次降噪步骤,但只将最后一次降噪后的结果通过 Image Decoder 解码成最终图像展示给用户,用户在生成过程中看不到中间的降噪步骤图像变化。不过两者的最终目的都是通过降噪技术生成高质量、符合用户需求的图像,只是在展示方式和具体的降噪实现细节上可能存在差异,这些差异也会影响到用户对模型的使用体验和在不同场景下的选择。

Stable Diffusion 使用注意事项

prompt 的重要性:准确、详细的 prompt 是生成理想图像的关键。应明确描述图像的主题、风格、颜色、构图等要素,例如 “一个在阳光明媚的花园中穿着复古连衣裙的年轻女孩,周围是盛开的玫瑰,风格为印象派油画”。
参数调整:
Steps 参数影响图像质量,一般步数越多图像越精细,但会增加生成时间和计算资源消耗。
CFG Scale(Guidance Scale)用于调整图像与 prompt 的相关性,较高的值会使图像更符合 prompt 描述,但可能降低图像的多样性。
模型选择与更新:不同版本的 Stable Diffusion(如 Stable Diffusion XL Turbo 等)有不同特点,用户应根据实际需求选择合适的模型,并关注模型的更新以获取更好的性能和功能。

与其他模型对比

与 Midjourney 对比:
在生成过程中,Midjourney 会展示图像从模糊到清晰的逐步变化过程(降噪过程),而 Stable Diffusion 在 Image Information Creator 中多次降噪但只展示最终解码后的图像。
两者都能生成高质量图像,但在图像风格、细节表现等方面可能因模型训练和算法差异而有所不同,用户可根据个人喜好和需求选择。

参考资料

Stable Diffusion 基础 - Comflowy - 链接

幼儿园组织秋游(小灶村体验农场)

2024年10月30日 17:39

幼儿园又又组织秋游了,这次是小灶村体验农场。
爷爷带宝宝开始奇妙旅行,同行家长都是一带一或者二带一,包车大巴从幼儿园直达。
其他小朋友的家长帮忙记录了一些有趣的图与视频,这里留存。

现在的小朋友基本上接触不到农村生活,有这样的体验是不错的。
虽然你不能指望三岁多的孩子能记得什么,只要开心就够了。

关于费用

包车的情况下,一个大人是230,第二位是185,幼儿收费,一百一位。

高德地图导航过去,有一些收费明细,自驾比较划算。

学校发的缴费通知单。

喂小动物

这个年纪的孩子就爱玩这个,只要小动物能吃就不带停的。

小火车

这个不错,我也想玩。

买了金鱼

抓拍技术令我担忧,能看的照片不多,周末我带娃去动物园再好好拍。

才艺表演环节

宝宝诗兴大发,吟诗一首:咏鹅。不知道叔叔阿姨们有没有告诉你,这是鸭子。

安装Comfyui

2024年10月30日 14:17

Comfyui介绍

它是一款极具创新性和强大功能的开源图像生成程序。它以独特的基于节点的操作界面为特色,将复杂的图像生成过程分解为一个个清晰可见的节点,就如同构建一座精美的艺术大厦的砖块。每个节点都代表着特定的功能模块,用户可以直观地通过连接这些节点来构建自己的图像生成工作流,仿佛在绘制一幅充满创意的流程图。
在模型支持方面,ComfyUI 表现得极为出色。它全面兼容 SD 1.x、SD 2.x、SDXL、稳定视频扩散、稳定级联、SD3 和稳定音频等多种稳定扩散模型,无论是经典的图像生成模型还是新兴的视频和音频相关模型,都能在这个平台上找到用武之地。它可以加载 ckpt、safetensors 和 diffusers 等各种格式的模型 / 检查点,还支持独立的 VAE 和 CLIP 模型,为用户提供了极大的灵活性和选择空间。此外,ComfyUI 还能与 ControlNet、T2I-Adapter 等工具完美结合,进一步扩展了其功能和应用场景。例如,借助 ControlNet,用户可以更精准地控制图像的生成,对图像的特定区域、姿势、线条等进行细致的约束和引导,从而创造出更加符合自己心意的作品。
在工作流管理方面,ComfyUI 也有诸多亮点。用户可以将精心构建的工作流保存为 JSON 文件,这不仅方便了下次使用,还能与其他用户分享自己的创意和成果,促进了用户之间的交流与学习。其异步队列系统能够高效地处理多个图像生成任务,大大提高了工作效率。而且,它还具备智能的优化功能,只重新执行工作流中发生变化的部分,极大地节省了计算资源和时间。
在图像编辑与增强功能方面,ComfyUI 同样可圈可点。它支持区域构图,允许用户对图像的特定区域进行精细编辑和处理,为创意的实现提供了更多可能。同时,图像修复功能也十分强大,无论是去除瑕疵还是恢复旧照片,都能轻松应对。

注意配合中文文档阅读当前文章,本文只做文档的部分补充说明。
https://www.comflowy.com/zh-CN/preparation-for-study

python 版本

注意使用3.1以上,我这边使用3.9,3.1会安装不了pyTorch。

安装 pyTorch

PyTorch 是深度学习领域极为出色的开源机器学习框架。它以动态计算图为突出特点,允许在运行时动态构建、修改和执行计算图,这不仅让调试变得轻而易举,还能根据不同输入数据和任务需求灵活调整模型结构,比如在开发中可随时打印中间变量值以便快速定位问题。其 API 简洁直观,对熟悉 Python 的开发者十分友好,学习曲线相对平缓,定义神经网络模型就如同定义普通 Python 类般简单。拥有强大生态系统,庞大的社区和丰富的第三方库支持使其成为开发者的得力助手,像 torchvision 库可用于图像数据处理和加载预训练模型,torchaudio 库能处理音频数据。同时,PyTorch 支持 GPU 加速,只需几行代码就能将模型和数据转移到 GPU 上,大大提高计算速度。在应用领域方面,它在计算机视觉任务中表现卓越,如图像分类、目标检测和图像分割等,许多知名模型如 ResNet、YOLO 都是用 PyTorch 实现的,开发者可借助 torchvision 库中的数据预处理方法和预训练模型快速构建应用。在自然语言处理领域,适用于文本分类、机器翻译和语言建模等任务,提供丰富的文本处理工具如 torchtext。在强化学习方面也被广泛应用,可与多种强化学习算法结合。与 TensorFlow 相比,PyTorch 更加灵活、易于调试和实验,而 TensorFlow 在生产环境部署和优化上有优势,PyTorch 的动态计算图适合研究开发,TensorFlow 的静态计算图在大规模部署时更高效。与 Keras 相比,Keras 是建立在底层框架上的高级 API,PyTorch 则提供更底层的控制和灵活性,适合深度定制和优化模型的开发者,而 Keras 更适合快速搭建和实验模型。总之,PyTorch 功能强大、灵活易用,是深度学习任务和应用场景的理想选择。

pyTorch 链接

WeChatadd8fa2fffc0d6f29e9e94dd1fbd2573

遇到源链接相关问题,直接切换清华源,类似下面写法:

1
pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

启动器下载

WX20241029-235955
Comflowyspace 是一款创新的开源 AI 图像和视频生成工具,它基于 ComfyUI 开发且遵循其协议进行代码开源。在功能方面,它具有便捷的一键安装功能,简化了传统复杂的安装过程;具备工作流管理功能,可自动保存操作改变并支持多标签同时运行多个工作流;提供丰富的工作流模板以降低搭建难度,对用户体验进行了诸多优化且与教程系统集成以降低学习门槛,支持 macOS 和 Windows 系统,其云版本预装多种常用扩展并整合 Civitai 模型,无需本地下载即可高效利用云端 GPU 资源。

Comflowyspace -github链接

尝试生成一只猫

WechatIMG41882

LPR下调

2024年10月28日 12:24

我有个朋友,收到2条短信如下:

短信1

【上海银行】根据中国人民银行〔2024〕第11号要求,您的存量房贷符合调整条件,我行将于10月25日进行批量调整。如您不同意调整,请于2024年10月20日(含)前,向贷款经办行提出异议书面申请;如您在此之前未提出异议,则视为同意。感谢您的配合,如房贷已结清请忽略本次短信。

【中国人民银行〔2024〕第11号】具体信息如下

中国人民银行公告〔2024〕第11号
中国人民银行公告〔2024〕第11号

参考贝壳财经的数据比对图

LRP变动

重定价周期和执行规则

重定价周期为一年,通常以贷款发放日或合同约定的特定日期作为重定价日,当然还有下图这种情况使用了一年一定,一般使用1 月 1 日作为重定价日,有一定的行业惯例。这是因为银行等金融机构在进行年度财务规划和业务安排时,通常会以自然年度为周期。
在重定价日,银行会根据最新的 LPR 和合同约定的加减基点,重新确定你的贷款利率。

Weixin Image_20241028112230

执行利率的确定方式为参照相应期限的 LPR(如 5 年期以上 LPR),再加上或减去一定的基点。基点的数值在贷款合同签订时确定,一般在整个贷款期限内保持不变,除非合同中有特殊约定。例如,如果合同约定在 5 年期以上 LPR 的基础上加 35 个基点,当 LPR 为 4% 时,你的执行利率为 4.2% + 0.35% = 4.55%。

短信2

【上海银行】2024年10月25日起,您组合个人住房贷款(新)利率已由4.55000000%调整为3.90000000%,贷款月供将发生相应变化,最近一期应还?元,您可联系贷款经办行或登录手机银行查看最新还款计划,请及时将足额资金存入还款账户。

下个定价日会有再次下调

根据上面短信结合下图,可以看到BP下调了65,调整到了3.9%,到下个定价日可以到3.3% 。
具体明年1月再看看情况,有了解的相关事项的朋友们欢迎评论区讨论。
Weixin Image_20241028113719

follow - 订阅一切

2024年10月24日 23:27

Follow是什么?

它本质上是个订阅工具,就像订报纸一样,你可以用它订阅你喜欢的网站上的用户,或者博客,一旦他们发了最新的内容,你在Follow上就可以第一时间浏览。follow就像是一个邮差,他会定时去取你订阅的内容。取到订阅的内容后将其存储在你的folow帐号,等你来阅读。

你可以在Github上找到Follow的源代码,最近一月Follow在Github上持续霸榜,正是当红炸子鸡。
Follow的slogan是:Next generation information browser
从此口号可见其图谋甚大,目前Follow在国内是可以直连的,由于各种法律问题,未来是否能继续保持直连尚未可知。

follow的访问隐忧

由于大平台都可以进行订阅,这种行为在某种程度上会触动大平台的利益。
follow的服务器并不在国内,且爬虫本身就自带法律风险。这些都有可能影响到国内对follow应用的访问。
即使现在可以使用,也并不代表未来能一直访问(直连)。

应用场景

订阅B站

订阅微博

follow-weibo

当然还可以订阅更多平台或博客类站点

注意在follow上你的订阅列表默认是所有人可见的,需要手动设置私有。

如何注册

https://app.follow.is/ 这是Follow的官网地址,同时它提供了丰富的多语言支持。

目前只支持Github与Google登录,现阶段处于半开放注册,需要邀请码。当然如果没有邀请码也是可以注册,只是会屏蔽部分功能。

follow与区块链技术

follow内置了区块链模块,你的每日签到与各种成就都会被奖励对应的power币。
follow-achivement

这个power可以用来给你喜欢的订阅源打赏。
follow-boostfeed

除了打赏外power可以用来生成邀请码
follow-invite

目前这个邀请码在闲鱼上可以卖到5元左右。

通过创建公开的订阅列表可以赚取power点数,你可以将公开的订阅列表进行标价。
follow-public-sub

空投活动送Power币

follow-summary
你可以在这个地址 https://follow.is/airdrop 参加空投活动,从而获取官方赠送的power

结语

follow是一个用于订阅的免费工具,我这段时间一直在使用它,它也在一定的程度上改变了我的阅读习惯。
实实在在的解决我每次阅读友链博客,挨个打开网页的烦恼。
总之好评,值得上手一试。

新手家长不明白

2024年10月23日 19:39

涵月现在已经上小班了,我这个新手家长遇到一些搞不懂的事,先记下来。

征订园服

前阵子幼儿园开始征订园服,只是这个价格有点怪。
幼儿园的某些收费,确实让我有点摸不着头脑。
跟同事老王聊了下,老王家里两个娃,他说这个收费正常。
如此都是这样收费的,那也就“正常”。

大家都平等

这个行为并不是个例,大家都是这样定的那倒也无话可说。
我们第一次定校服,看不懂这个收费是正常的,原来大家一直都这样。
还记得小学的校服是一百多两百的样子,老师让我们拿着收费单找父母签字,那时候定校服可便宜了。
现在社会进步了,物价也涨起来了。
所以校服涨点价这算啥,买一件牌子外套都要个千八百。
以上言论纯属说服自己

随大流的中国家长

毕竟后面幼儿园还有两年多,小学,初中高中长着呢。
接受现状从现在开始,就算它再涨价,翻一倍,翻两倍,还是得买。
总不能让娃到学校里,因为没有校服被歧视吧。
学校教育的不只是孩子,家长也在“被教育”,做手工,做义工。

卷在路上

现在三年级的英语课本该改版了,所以小学生从二年级就要开始补英语了。
现在一年级拼音都是一带而过,所以大班就要学会拼音了。
哦,对了。二十以内的加减法也要在大班学会。
还好,我家宝还在小班,卷还没卷到我们,不过在路上了。

平平无奇的一天

2024年10月22日 22:47

图床压缩

今天尝试使用简单图床 Github链接 进行图片压缩,图片的压缩尺寸大约是原来的十分之一,甚至更低,效果喜人,这边吹一波。

原图约为1.9Mb 压缩后 114Kb -张家界

芙蓉镇

铁铃关

苏州园林一景

苏州园林一景

大概是找到了版本答案,图片文件多又散就压缩后存本地,视频文件数量少且大,考虑用又拍云的云存。
又拍云联盟送了每年67的劵,可以使用。又拍云联盟

红绿灯风波

没拍图,行车记录仪估计录下来了,事是真的搞笑。

路上等一个红绿灯,我这边准备大转,天色较晚,只看到前面还有三辆车。一会儿灯绿了,旁边的一条左转道车子都走光了,我这边车道第一辆车居然连待行区都没进去。后面有车按喇叭,当然我也按了几次。
红灯了,排队第二辆车的大哥下去了,敲了第一辆车的车窗。下来一位女司机,不知道这俩人说了什么,好像挺激动。
开车窗才听清楚,女司机说 :”你家的S了人吗?那么急 xxxxx”,“你家才S了人,你全家都S了 xxx” 俩人骂起来了。
我寻思,看架势下个红绿灯也走不成,看后面没车,我往后倒一下,换隔壁车道走了。

记录下这件事儿,看来敲车窗有大风险,可不能学,这万一搞不好,吃不了要兜着走。

以上,平平无奇的一天。

嵊泗游记

2024年10月19日 15:56

嵊泗岛在哪儿

嵊泗县又称嵊泗列岛,位于中国浙江省舟山市。其具体的地理位置在杭州湾以东、长江口东南,是浙江省最东部、舟山群岛最北部的一个海岛县。
嵊泗列岛由大洋山、小洋山、沈家湾岛、薄刀嘴岛等 400 多个大小岛屿组成,其中最大的岛屿是泗礁山,面积 21.2 平方公里。这里海陆总面积 8824 平方公里,陆地面积 86 平方公里,海域面积 8738 平方公里,故有 “一分岛礁九九海” 之说。
嵊泗列岛是我国唯一的国家级列岛风景名胜区,具有 “碧海奇礁、金沙渔火” 等原生态旅游特点,素有 “海上仙山” 的美誉。其境内景点众多,被划分为泗礁(包括黄龙等周边岛屿)、花绿(花鸟、绿华)、嵊山枸杞、洋山四个景区。

从上海出发大概多久?

  • 陆路距离:如果单纯看上海到嵊泗沈家湾码头的陆路距离,大约是 100 公里左右。从上海市区自驾到沈家湾码头,一般需要 1.5 小时到 2 小时左右。
  • 水路距离:从沈家湾码头到嵊泗本岛(李柱山码头)的海上距离约 27 海里(约 50 公里)。乘坐客船的话,快船大约需要 50 分钟,客滚船大约需要 1 小时 50 分钟。
    综合距离及行程时间:从上海到嵊泗整体行程,包括陆路和水路,综合距离在 150 公里左右,全程所需时间大概在 3-4 小时(包括换乘、候船等时间)。如果选择自驾到沈家湾码头后乘船的方式,从上海出发到最终到达嵊泗岛上,顺利的话一般需要 3 个多小时。

为什么海水是黄色的

冷空气活动频繁,海上风浪增大,都会会影响海水的清澈度。
非大风、暴雨等恶劣天气之后:一般在大风、暴雨等恶劣天气过后,大量的泥沙和杂质会被带入海水中,导致海水变得浑浊。但等天气恢复平静,经过一段时间的沉淀和水体交换,海水会重新变得清澈。所以在恶劣天气结束后的一两天,如果天气状况良好,海水也会比较清澈。
海水的清澈度还会受到洋流、潮汐等因素的影响,每天的情况可能会有所不同。如果想要看到最清澈的海水,建议提前关注当地的天气预报和海洋状况。

嵊泗的海水在以下时段相对比较清澈:
夏季(7 月至 9 月):
这是嵊泗列岛的最佳旅游时间,受亚热带季风气候影响,夏季气候温和,海水温度适中,非常适合开展各种水上活动。此时海水呈现出蔚蓝色,清澈见底,仿佛一块巨大的蓝宝石镶嵌在大海之中。由于夏季太平洋的海洋运动,给嵊泗带来了漂亮的海景,是欣赏清澈海水的好时节。而且这个季节海岛上绿树成荫,花香四溢,自然景观也最为迷人。
不过需要注意的是,7 月至 8 月是休渔期,海鲜可能会相对较少且价格略高。
秋季初期(10 月上旬):秋季天气较为稳定,降水少,风浪相对较小,海水也较为清澈。在这个时间段,气温适宜,既没有夏季的炎热,也不会过于寒冷,是比较适合游玩的时间。

海滨

海岛

日出

霞光

留影

提前回家

由于天气原因接下来几天,都会有持续降雨与较强风浪,逗留在海岛上大概率会延误回去的行程。

如果你也去嵊泗玩推荐关注 嵊泗客运(公众号) ,可以随时了解到最新航运信息,避免影响行程。
在我们离开酒店的时候,刚好另外一个旅行团入驻,祝他们好运。

以上嵊泗两日游,六合朝阳,嵊泗日出。

我在博客养了一只猫

2024年10月16日 23:41

如果你最近访问我这个网站,在页面的左下角能看到一只黑猫,啥功能都没,它甚至不能喵喵叫。
要问为啥还要摆上去,就是单纯好看。我也是个爱猫人士,虽然现实条件有限不能养,但是云养猫还是可以的。
如果看看博文的时候还能溜溜猫,那可太惬意了。

相关文档

如果你也有类似的需求可以参考这个网站:oml2d 这个网站有概率无法访问,我也不知道为啥。
他的git地址在这里 hexo-oh-my-live2d

小贴士

由于原始看板娘程序会说话(点击后),也有附带的一些功能,我这边统统不需要,所以都屏蔽了。
另外如果你打算部署这个程序,我推荐把js脚本与贴图统统托管在自己服务器,避免无法访问的问题。

以前也养过猫

我母亲开理发店,那时候店里有老鼠,随后店里便开始养猫了。
由于是散养基本上到了发情期,猫就跑了,跑了也就找不回来了。
然后再养只小猫,不用去店里买猫,很容易就能在附近拾一只小猫,定时喂吃的,就驯化了。
大概是周而复始几次,店里就没养猫了,不过也没老鼠了。

羡慕养猫的家庭,只能说这个年纪养自己养娃都费劲,大概也只能养只电子猫了。

两种刷新网页缓存的方式

2024年10月16日 10:27

停用缓存

按F12打开浏览器自带的调试工具,注意需要勾选停用缓存,这样就可以使用网站的最新数据。

使用隐私浏览模式

隐私浏览模式可以保证不使用本地缓存的数据,与本地的cookie。所以隐私模式浏览可以获取最新的网站状态。
注意,隐私模式与正常浏览模式是隔离的,也就是切换成正常模式后,如有缓存仍然使用之前的缓存数据。

停用缓存工作原理

程序设计上来说,disable cache 就是一个开关,决定接下来所有的请求是否跳过缓存检测。
通常情况,命中缓存,调用缓存,跳过请求源文件。
勾选后,跳过缓存检测,直接请求原文件。

以下为测试步骤:

  1. 在stype.css文件中添加测试文本
  2. 在尚未勾选停用缓存下进行刷新(点击刷新按钮)
  3. style文件中并未出现测试文本,证明文件尚未更新
  4. 勾选停用缓存后进行刷新,style文件被更新

也有一些不会被缓存的

举个例子:你请求的是 a.html ,在这个html文件上进行的修改,则每次都会被刷新。这个文件并不会被缓存。

人不会死-矢萩直树

2024年10月15日 17:24

先将书源附上:原本阅读

为什么推荐

这本书写的就像一本回忆录,穿插作者生平与在急诊室见闻。
直树的经历很像我们大部分的的经历,大学毕业找不到工作,兴许会有好友拉你去一个单位。
上班兢兢业业却说不上多么喜欢自己的工作 (能完成的很好,也并不代表喜欢)。
主要的故事都发生在急症室,说实话我挺怕急诊室,这里是生与死的搏斗现场,也是大部分人最后的战场。
这本书很写实,穿越生与死 ,我们终会重逢。

人不会死-书籍介绍

谨以本书送给活着的我们,致敬逝去的他们 ——
这个世界是一座体育场,我们都是活在当下的参赛者。
虽然肉眼看不见,但往生者们一直在观众席为我们声援。
因此我们要好好活在当下,期待日后与他们重逢的那一天。
一名医师.五种生命感悟.三十六则短而精深的随笔手记
直言人生最纯粹的日常与美好

作者长年身处急诊医疗第一线,每天面对各色病患与家属,每年看诊超过三千人,看尽人生百态之余亦不停寻思:「人死后会变怎样?」
在历经三次濒死关头,透过灵媒与已逝母亲沟通之后,作者开始确信有「另一个看不见的世界」,并体悟到死亡并非终结,毋须恐惧。肉体之死,代表进入另一个世界,延续另一种生命。你心中想再见一面的人,一定见得到…… 只是在那之前,我们必须先做好「活着」这件事,心存感谢「活着」这件事。
矢作直树医师对人生的反复思辨与随笔手记,里头有生死观、生活哲学、舍却欲望的真义、静心等待的智慧、给予不望报(give and give)的精神…… 让人一窥他对人生的大彻大悟,并针对人生的哉问,提出思考的方向:
「为什么活着?是什么让你活?又是什 么值得你活?」
来源:好讀网

作者介绍

作者:矢萩直树

来源:免费百科全书“维基百科”
矢萩直树

出生1956年
母校金泽大学(学士)
滋贺医科大学(博士)
职业医生、医学家

东京大学名誉教授

矢萩直树( Naoki Yahagi , 1956 年出生)是一位日本医学家、医生和政治活动家。专长于急诊医学和重症监护医学。学位:博士学位(医学)。

东京大学名誉教授[1]。前东京大学教授、前东京大学医院重症监护中心主任。

他的主要著作包括《人不会死:一位临床医生对普罗维登斯和灵性的思考》、《多亏了你,我才活下去》、《皇帝》、《皇帝的国家:关于他退位的思考》 ,”和“日本历史全面回顾天皇的日本历史。” [2] [3]。

职业生涯
1956年出生于横滨。[4 ] 1981年从金泽大学医学院毕业后,他在麻醉科、急诊科和重症监护科、内科和外科科室积累了经验[4] [ 5 ]。

1982年,他成为富山医科药科大学的助理,1983年成为国立心脑血管中心的住院医师[6]。从1991年7月起,他在国立心脑血管中心外科担任重症监护专家,后来成为医疗主任[7]。1993年,他在滋贺县从事“氟烷的影响”的工作。、芬太尼和氯胺酮对狗静脉空气栓塞的肺部传递值”获得 医科大学博士学位(医学)。

1999年任东京大学工学部精密机械工学系教授,2001年任东京大学医学部急救医学系教授,2001年任东京大学医学部急救医学系教授,东京大学医院急诊科和重症监护室主任以及重症监护中心主任[8]。2016年,他任期结束退休,成为名誉教授[4] [9]。

2011年,他出版了主张死后生命存在的《人类不死》,并售出18万册,从此开始了出版生涯。 2014年出版的《感谢有你而活》 已售出超过30万册。

2016年,参加日本心比例代表选区第24届参议院例选,但落选[10]。

2021年左右以来,他多次出现在政党活动和总统神谷创平的视频中[11] [12] [13],并担任政治学校“政党政党DIY学校”的讲师[2]。在各政党向1,741 个市镇负责人发送的有关COVID-19疫苗接种的调查问卷中,他还被列为合作者[14] [15]。

给网站首页的文章标题下添加评论预览

2024年10月13日 13:23

起因是我想在博客的主页就看到水友们的评论,这样方便我一一回复,而不是每次都点进去。
有时候回复多了,会忘记是在哪个页面出现的评论。
正巧我看到 姜先森 的博客,是如下的样式。
这不刚好能借鉴一下,随后对本博客进行了一个小范围的改造。

去除了网页右侧的最近8条评论,添加了首页的文章前五条评论预览


我这边风格是比较朴素的,所以去掉了前面的icon。

twikoo API 调用注意事项

我发现了twikoo的getRecentComments API ,给它限定数量的话他会累积所有post url的评论总和前x条评论。
很显然这不符合需要,正常我们需要的都是每条post的前几条评论,随后对这个API进行每个URL分别调用。

老规矩放下代码,感兴趣的可以直接参考下面的代码进行调整:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
!function () {
const elements = document.querySelectorAll('.twikoo-comment-count');
const postUrls = [];

elements.forEach(element => {
const url = element.getAttribute('url');
if (url) {
postUrls.push(url);
}
});

twikoo.getCommentsCount({
envId: 'https://twikoo.vrast.cn',
urls: postUrls,
includeReply: false
}).then(function (res) {
elements.forEach((element, index) => {
const elementUrl = element.getAttribute('url');
const matchingRes = res.find(item => item.url === elementUrl);
if (matchingRes) {
element.textContent = `${matchingRes.count} 条评论`;
}
});
}).catch(function (err) {
console.error(err);
});

//需求2 预览部分评论
const commlistElements = document.querySelectorAll('.commlist');
const postUrls2 = [];

commlistElements.forEach(element => {
const url = element.getAttribute('url');
if (url) {
postUrls2.push(url);
}
});


postUrls2.forEach(postUrl => {
twikoo.getRecentComments({
envId: 'https://twikoo.vrast.cn',
urls: [postUrl],
pageSize: 5,
includeReply: false
}).then(function (res) {
commlistElements.forEach(commlistElement => {
if (commlistElement.getAttribute('url') === postUrl) {
let commentCount = 0;
res.forEach(item => {
if (commentCount <= 5) {
const li = document.createElement('li');
// const divAvatar = document.createElement('div');
// divAvatar.classList.add('avatar', 'letter-fallback');
// divAvatar.setAttribute('data-fallback', item.nick[0]);
// divAvatar.style.backgroundColor = `rgb(${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 256)})`;
// divAvatar.style.transform = 'rotate(0deg)';
// divAvatar.style.transition = 'transform 0.5s ease-in-out';

const a = document.createElement('a');
a.href = item.url + '#' + item.id;
a.title = item.comment;

// 使用 DOMParser 解析评论内容
const parser = new DOMParser();
const commentFragment = parser.parseFromString(item.comment, 'text/html').body;

// 将评论内容添加到昵称后面
a.textContent = item.nick + ': ' + commentFragment.textContent;

const spanContent = document.createElement('span');
spanContent.classList.add('comment-content');
spanContent.appendChild(a);

const spanRight = document.createElement('span');
spanRight.classList.add('right');
spanRight.textContent = item.relativeTime;//new Date(item.created).toLocaleDateString();

// li.appendChild(divAvatar);
li.appendChild(spanRight);
li.appendChild(spanContent);

commlistElement.appendChild(li);
commentCount++;
}
});
}
});
}).catch(function (err) {
console.error(err);
});
});
}()

米家体验报告

2024年10月10日 23:23

这个主题想写很久了,今天晚上抽空写下。如果你是打算入坑的或者已经使用部分米家设备的,本篇文章可能多少对你有一些小小的帮助。

联动才是米家的正确打开方式

如果有了智能开关,可以将家里的旧灯光线路都接入,通过小爱音响 可以控制这个灯光开关的打开与否。
当然这样做少不了,“小爱同学,帮我打开灯光” ,注意小爱同学是需要联网的,他的网路有时候并不是那么的好,
网络不好的情况会造成小爱音响的反应卡顿,当然如果你购买的是小爱Play,这个坑货音响,那它自带耳背系统。
发音不标准,或者你没有叫他的时候,他会进行延迟,或者错误的应答。

以上避坑,建议选择其他的型号

如果使用其他型号的音响与较好的网络条件,固然可以加快小爱同学的指令响应,但是还是要开口下达指令。
这个过程持续几次倒是还好,如果每次都要叫一句,那可太尬了,完成一来一回的指令下达,早就可以用手开灯了。

这一流程当然可以优化,只是需要用到一些传感器。

传感器是基础的触发单元

基于上面的使用场景,使用一个人体传感器就可以做到,人来灯光打开。

为什么我不说 “人走后灯光熄灭 ”,实际这是一个很难检测的情况,你大概不能一直保持在被传感器辐射的范围内。
当然也有个方案,开灯后自动延迟x分钟让灯光关闭。

再举个简单安防的案例:
我在马桶边,厨下,洗手台水管下,都放置了浸水传感器,如果出现漏水的情况,可以通过家庭的音响与手机通知,提示我去处理这类紧急情况。

通过家庭中枢驱动家庭智能的自动化

前面说了几个案例,这都是一些触发式的响应,并非真正意义上的自动化。
在我看来智能家居,需要有个数据处理单元,这个单元是要代替人思考,也就是执行一些行为。
这个行为的执行是依据是什么呢?
触发器得到的数据与其他信息(事件,时间,其他设备状态)进行一个针对当前行为的判定,是否最终要执行这个行为,或者将这个执行结果分散到不同的设备上去。

这里需要用到小米中枢,或者homeassistant。由于我们本篇是讲小米产品,那就用小米中枢来举例。
在小米中枢你可以看到所有的设备,并且可以查询每个设备的当前状态 或者 监听每个设备的状态变更。

下面再举一个简单的例子,这里我用到一个智能按钮,每次点击按钮会向外抛出一个点击事件。
通过监听这个事件的触发,就可以安排家里的其他智能硬件干不同的事情,如让监控打开,让家里的灯,空调等关闭。

结束语

智能家居融入生活的转变一部分人是无法接受的,咱们这批人先玩起来,哦,对了,如果使用home assistant可以将ai接入智能家居,然后实现一个现实版贾维斯,这也不错。

出去旅游总容易生病是为什么

2024年10月8日 19:09

如题,前段时间去桂林旅游,旅游第二天就开始咳嗽,大咳小咳不断。当时还没有当回事。
广西这边吃的比较重口,也有加剧病情。后来回到家之后咳嗽越来越厉害,时间持续了三周多。
当然现在已经接近康复了,虽然还有咳嗽,痰比较多,但至少喉咙不痒了。
问了下国庆出去旅游的朋友他说自己的身体也有一些不适。
看来出门稍微时间长一点的旅游,或多或少都会让人水土不服生点毛病。

在这里稍微总结下几个可能的影响因素,下次出去玩注意些:

  1. 饮食变化
  2. 作息不规律
  3. 疲劳
  4. 情绪波动

大概就这些因素造成我与领导两人双双病倒。

上单有哪些职责

以上的这些文字都是打游戏的时候,黑屏期间想到的。
打的是上单,经常黑屏。与妹妹,妹夫一起组,刚好又匹配到一对情侣。
领导看我总是黑屏,过来问我,”王者里面上单的职责有哪些?”
我说:“职责是一个人玩的开心点 !”

将评论组件切换到twikoo

2024年10月8日 12:39

原因很简单,waline的响应太慢了,拉个20余条的评论居然要半分钟。
实在无法忍受,直到今天才抽空换一下评论组件,现在将组件切换为twikoo。
基本做到了评论2秒内刷出来的程度。
下面简单介绍下基于 Maupassant 主题进行评论迁移的过程。
大部分的流程都类似, https://twikoo.js.org/ 的流程文档也比较细,照做就行了。
我这边使用的本地部署,所以直接用docker就行了。

使用twikoo加载完毕回调

这个 onCommentLoaded 回调函数,按照官方文档来讲就是评论区渲染完毕后调用。
我有个需求是将评论数量取出来,放到页面头部,进行一个显示与点击转到评论区。
如果你也有类似功能可以参考下面的初始化代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if theme.twikoo.enable == true
#tcomment
script(src='https://registry.npmmirror.com/twikoo/1.6.39/files/dist/twikoo.all.min.js')
script.
twikoo.init({
envId: '#{theme.twikoo.envId}',
el: '#tcomment',
region: '#{theme.twikoo.region}',
path: '#{theme.twikoo.path}',
onCommentLoaded: function () {
const commentCountElement = document.querySelector('.tk-comments-count');
const targetElement = document.querySelector('.waline-comment-count');
if (commentCountElement) {
const countSpan = commentCountElement.querySelector('span:first-child');
const commentCount = parseInt(countSpan.textContent);
targetElement.textContent = commentCount;
} else {
console.log('未找到评论数量元素');
}
}
})

填写twikoo的初始化参数

如果是本地化部署,需要注意下面的参数填写,envId 一栏填写评论组件的地址即可,其他不需要填写

1
2
3
4
5
twikoo: ## See: https://twikoo.js.org
enable: true ## If you want to use twikoo comment system, please set the value to true.
envId: https://twikoo.vrast.cn ## Tencent CloudBase envId
region: ## Tencent CloudBase region, e.g. ap-shanghai
path: ## Article path, e.g. window.location.pathname

评论数据迁移

waline的数据可以直接导出为json,在twikoo的后台界面直接导入即可。

数据备份

他的数据位于 app/data 内,定期备份下面几个json文件就行了。

无动力亲子乐园游记

2024年10月5日 21:49

抽空记录下我在抖音上看到的无动力亲子乐园吧。
价格是很便宜的一大一小86,我还在纳闷什么是无动力乐园,去了才了解什么叫一群家长驱动一个乐园。
无动力 约等于 家长动力,大部分机械设备都是家长吭哧吭哧的踩机器或者是推机器。
要说不好玩,那肯定是假的。累是累了点,孩子玩的开心最重要。

宝宝摩天轮

实际上下面是由四位家长联合驱动,其他的设备都类似,让家长踩机器传递动力。
更直接一点就是推着设备走,像下面这样。



震惊我

小家伙居然爬了那么高,大概离地五六米距离。我不放心就跟着一起爬。
然后他说太高了怕了,我俩一起退回去了,要她不说我也要说我怕了我们一起倒回去吧。

人到中年放假永远比上班更忙碌

2024年10月4日 10:41

昨天和领导一起去了正大广场(陆家嘴)做美容。人真的超级多,感觉是外地游客多一些吧。
正大广场7楼是做美容的(扎堆开店),基本上没人光顾,但是7层往下走乌泱泱都是人。
吃饭还好提前取过号了,基本上没有等位置,等我们坐上去的时候后面也都是人。
一张照都拍不了,全是游客,大概也只能将相机抬高再抬高勉强一张。

人到中年放假永远比上班更忙碌,这段时间估计也没空水博客了。

AI相片

最后再记录下抖音的AI相片,都是免费用的,觉得不错推荐下。
先提交相片,然后基于这个相片进行风格化的Ai创作。不错!

概括了我们的一生

2024年9月29日 14:32

今天看新闻,无意中点开了 gov.cn ,等我看到这个导航栏的之后,整个人都蒙了一下。
这不就是我们绝大部分人的一生吗 ?
感慨良多,不多言。预祝大家国庆节快乐!
祝祖国母亲节日快乐!愿我们的祖国越来越强大,人民越来越幸福!

幼儿园组织秋游(中国馆)

2024年9月27日 17:39

幼儿园又组织出游了,可惜还是没有时间去(年假用完了), 又是爷爷陪女儿去玩的。
校方组织的活动都很有意义,带小朋友做做爱国教育。从娃娃抓起。
又是羡慕宝宝的一天。
图都是其他家长拍的,摘录了部分,以存档。

压缩图片

2024年9月24日 12:20

在 CentOS 7 下可以使用convert命令结合mogrify工具来压缩当前文件夹下的图片。假设你要压缩当前文件夹下所有的.jpg图片,可以使用以下命令:

1
2
3
4
5
6
7
yum install -y ImageMagick

--下面指令会创建一个压缩后的副本后缀为 -compressed.jpg
for file in *.jpg *.png; do convert "$file" -quality 80% "${file%.jpg}-compressed.jpg"; done && mogrify -format jpg *.jpg -quality 80%

--下面指令直接将原文件覆盖掉
for file in *-compressed.jpg; do mv -f "$file" "${file%-compressed.jpg}"; done

这个命令会遍历当前文件夹下的所有.jpg文件,使用convert命令将每个图片以 80% 的质量压缩并生成一个新的文件名后带有 “-compressed” 的压缩后的图片文件。然后使用mogrify工具将所有的.jpg文件以 80% 的质量重新保存覆盖原文件。
你可以根据实际需求调整压缩的质量参数。

下面是压缩效果,大约尺寸只有原来的十分之一。

柳州游记

2024年9月23日 21:48

文接上回,我们从阳朔坐高铁直达柳州,全程一小时左右。柳州打卡点主要还是当地的特色美食,大声的告诉我特色美食是什么!螺蛳粉!

说实话一开始我是抗拒的,我对螺蛳粉有种刻板印象,大概就是每一碗螺蛳粉背后都有一位煮shi人,臭且味道一般。
直到领导带我去了金弟炒螺蛳粉,这才对螺蛳粉有了改观。原来真正好吃的螺蛳粉(炒粉)是不臭的。有臭味的是酸笋,他们家的酸笋处理上可能与我之前见过的店处理上不一样,似乎味道没多大。

乘着夜色爬了马鞍山,准确的说应该是乘坐电梯上山,然后散步下山的。电梯票20一位,可以免去爬山的辛苦,送你轻松登顶。下山的电梯停运较早,晚上并不开放。

马鞍山顶峰可鸟瞰大半个柳州闹市区,山脚下会有景观灯射向主峰,导致拍照总容易画面爆掉。



白天在领导督促下游了鱼峰公园,也就是前一晚去的马鞍山脚下的公园。好家伙,原来是个打牌胜地,密密麻麻的扎堆打牌的。除了打牌的就数乘凉的人最多,每个小山头上,或躺或坐都是人。

这次出游日子比较久,我是有点扛不住了,每天都是一万多步打底。下午我问领导还想去哪儿,答曰:“青云市场” 。

青云市场其实就是菜市场与小吃街的混合体,只有入口开始的主干道是小吃街,往两边延伸都是菜市场摊铺。各种小吃都有,挺全的,还有三元一包的螺蛳粉散装,当然这种我们俩不敢买。我们逛了主干道之后想往两边看看还有什么没逛到的,着实是过了一把逛菜市场的瘾。两侧商铺紧邻,虽说是街上却过道狭小,也不通风。想象一下这个味道吧。

从菜市场穿出,就是五星商业步行街,领导笑谈这是柳州人的南京路步行街。实在不行了,跟领导商量,我俩在街上的网吧里呆了三小时,算是结束了这次旅行。在网吧了我还写了这篇日志:
日志链接 桂林市游记

oh~ 忘记说了,我们也去了柳州博物馆,青铜器藏品即使是今天的眼光去看也是精致的像艺术品。

以上,柳州游记,桂林行游记结束。

桂林市周边游记

2024年9月22日 22:54

文接上回,上篇记录了桂林市内游玩,这篇专门记录下桂林市周边,兴坪-阳朔一带的游记。
看山水在市区看到的比较有限,真的是想要有跋山涉水的体验还是去市区之外的景点。
可以选择坐游船游漓江,从桂林市区直达阳朔。游船的价格不一 ,从小几百到大几百都有。时间上比较久一般都为四小时以上。

兴坪

因为时间因素,领导和我选择了坐高铁从桂林北到阳朔。这里有几个细节,我们目的地是兴坪,也就是二十元景点(20rmb上的山水出自兴坪),为什么要坐高铁到阳朔呢?原因是兴坪古镇距离阳朔高铁站很近。近到车站门口大巴收费接驳仅五元的地步。算上坐高铁的二十多分钟,也就一小时内抵达兴坪镇。



酒店就不推荐了,各种各样类型的都有。

兴坪在地图上叫兴坪古镇,实际上么,就是个商业化比较重的镇子,问了下广西本地人,他们自己都觉得兴坪,阳朔的物价比较高。

我发现酒店的被子都挺厚的,天气也燥热。晚上吹着冷空调,可能是半夜掀了被子,不出意外我就感冒了,一路旅游一路咳嗽。

当地比较有特色的是啤酒鱼,烧鹅,竹筒鸡。刚来桂林第一顿正餐吃的是啤酒鱼。那时候那不觉得啤酒鱼的店多,直到我们来阳朔,才知道什么叫满大街的金牌啤酒鱼。

我们租了个电瓶车30元一天,后来住酒店才知道店家说有电瓶车可以免费借给房客。哦,这家酒店叫诚信酒店120左右一晚。是一家人盘下来的店,属于二手老板了,跟小老板聊了之后我才知道有人会贷款创业,艰难创业,属实不易。

我带领导骑车从镇上到了竹筏码头,大概两公里,很近。兴坪竹筏游,属于比较精华的一段游览点,从20元景点出发,一路向上,估摸行进距离约五公里左右之后返航回码头,时长约一小时。

个人觉得竹筏游挺无聊的,我们坐在第二排,全程硬座,没什么互动,我倒是希望自己撑着竹筏玩一小时。几次举起相机想要拍点竹筏行进的视频,又在后排只拍到两个人头,着实可惜。
为了弥补我这个遗憾,领导又陪我骑电动车往上走了五六公里。直到我们找到一处浅滩,边玩水,边拍了一堆美照。

阳朔

到阳朔很方便,坐了公交中巴车,15元票价,一小时左右也就抵达阳朔。阳朔属于县城里了。直观感受主要有两点,一是到处都是酒店,二是到处都是啤酒鱼。靠旅游业的县城应都是如此吧,只是这啤酒鱼遍地开花属实难顶。

阳朔的主要景点我们选了十里画廊,看似是一个景点实际上是一个比阳朔县城还大的风景区,进去不要票,内部是一个个景点组成,最出名的还数千古情景点(领导点名要看的舞台剧)。

吸取兴坪游的经验,我们直接租了电瓶车,畅游十里画廊,也在遇龙河边上的河堤看一波波竹筏的船夫奋力将竹筏顶过河堤。回程观看千古情表演的路上,遇到了一场山雨。还好躲得快,领导没有淋湿多少。约莫半小时雨停了,才又上路。


千古情景区门票190,里面大主题是舞台剧,小主题是各种游乐项目,有表演(魔术,招亲大会),也有体验电影,鬼屋等,项目不少。我也体验了个有人看没人玩的项目。并且不出意外的落水了,还好领导聪明让我提高点裤子,这才没湿透。

阳朔夜市没什么特点,九点后的西街可以逛逛,在前一天刚刚体验了桂林正阳街之后,好像就能对夜市免疫。并没买什么东西吃,由于早饭没吃(兴坪基本没有早饭店,米粉也不想吃),中饭就吃多了,晚饭也吃不下。属实省钱了。

中饭忘记说了,是家比较好吃的店,叫椿记烧鹅,特色是烧鹅和鹅肠,烧鹅的皮烤的很脆,好评加一。领导特意嘱咐记录下当地的奶茶,确实很好喝,珍珠超级好吃。

飞机快落地了,就记录这么多吧 2024.9.21 。
以上,兴坪,阳朔两日游。

❌