一节保健课

前几天看见张雪峰猝然离世的消息,想起来大一的时候曾经参加过他的讲座,当年他那彪悍幽默的话语,听完讲座之后我就发了条——简直是德云社分社。近些年见他在网上也一直语不惊人死不休,尽管不喜欢他的一些言论,但也佩服他如此彪悍地活着。

跟所有的意外一样,网友开始总结经验教训。在社交网络上,人们开始反思马拉松是不是对身体负担太大,研究早起还是下午运动更健康,推荐还是先确保睡眠再运动为好,更有甚者直接得出结论去电商平台下单辅酶Q10。我想头七这个传统不是没有道理,家人守夜、祭拜、默哀,消化那些情绪,外人在这时总结死者哪些地方做的不好,就显得有点不合时宜了。当然,这只是一点个人想法,人们关起门来在自己家讲讲健康道理就够了,没必要以死者为例发在网上,另一方面,再过七天还有多少人会因此保持早起早睡、饮食清淡、合理运动呢?如果每次都能记住并执行每一个健康事项,那么今天能科普的内容就不会那么多了。

你能隐约感觉到,人们对于这个世界总有一种很公平的假设:只要我做对事情,灾难就不会降临到我头上。因此每次都要复习一整套保健课程,就像刚背下来高年级同学留下的去年考试答案,内心也得到了短暂的平静。有人会说我的确学到了注意身体啊,是的,张雪峰的确过度运动了,他的确不注意心脏健康,今天我们可以告诉自己各种心脏和跑步注意事项。明天有人因为出车祸掉进河里的时候,我们学习蛙泳和如何砸窗户而不受伤。后天呢?

现代社会习惯去制作一场幻梦,把青春活力当做唯一的主题,往大大小小的屏幕里塞满唇红齿白、鲜衣怒马,那里总有更新鲜的生活、更先进的科技。死亡则隐没在医院和墓地那一小块地方,它是医疗失败,是运动过度,是超速行驶,被看成是急需解决的疾病,唯独不是自然的归宿。人们就像在参加一场永不结束的宴席,围坐圆桌旁大口咀嚼、推杯换盏,偶尔身旁就会有人黯然离席,人们会手足无措,会举手道别,但转过头来人们就会把酒杯碰在一起,就像谁也不曾离开。

那些觥筹交错的声音,能掩盖住心底的一丝惨淡。我们都受不了无常,受不了毫无道理的消亡,只要找出来那些意外的逻辑破绽,只要把那个破绽填上,把自己剔除出危险名单,人们这才敢安心地关灯睡觉。但酒席终将散场,无常来临的时候,不管有多少规律睡眠、适量运动、平衡饮食,中间再垒上多少瓶维生素和益生菌,它都会在那头等着。这一整套的保健课程更多是献给了我们的恐惧,又怎么可能避免无常带来的痛苦、遗憾呢?

在铺天盖地的信息中,我看见张雪峰的一张直播截图,他说他的人生目标,是在死的那一天各个平台热搜都有他的名字。在网上,讨厌他的人批评他张扬夸大,误导了学生家长。喜欢他的人为他惋惜,说他是个好老板,给了员工长假和各种福利,还身体力行为教育事业捐款。人们争吵着,两边都不断发出各种消息。我想这也许是一直在屏幕上彪悍的张雪峰会喜欢的结局,这也许是他认为的人生意义。如果说非要总结出一点保健课程,那最为根本的保健就是找到那点自己真正认同的意义,毕竟死亡不可避免,无常随时降临。


题图由 AI 生成

题图:宴席

图片生成算法:Midjourney v7.0

Prompt:

A vibrant, sunny modern illustration with rich textures and warm colors, depicting a large outdoor Chinese banquet in a sun-drenched courtyard. Multiple large round tables with red tablecloths are covered in traditional dishes, ceramic bowls, and bottles of liquor. Bright sunlight creates strong light and dappled shadow patterns. A joyful crowd, dressed in colorful modern Chinese attire, laughs, toasts, and eats. While most people are engaged in celebration, in the foreground on one table, several chairs are empty, with objects like a jacket or bag left on them, indicating people have left. In the background, a few solitary figures are seen walking away down a garden path lined with blooming flowers and traditional Chinese architecture. The scene is bright, uplifting, and painterly, not photographic. Wide-angle view. –s 750 –v 7.0

年终记一只流浪猫

对我来讲,写年终总结像回到了那个暑假快要结束的午后,笔耕不辍地完成剩下的作业。每次写工作要求的周报都已经绞尽脑汁在回忆周一周二在干嘛,年终总结?谁还记得上个月具体发生了什么呢。在理想情况下,人们应该写日报,基于日报写周报,然后月报,最后才是年终总结。但那是理想情况,就像每次放假前我背着满满一书包,信誓旦旦认为自己会每天学习,按时完成暑假作业。

但还是得记录——哪怕是在社交媒体写点小作文呢,于是我还是写了。记录是在马不停蹄的生活中,稍微弯下腰让人看看这蹄子到底要去哪的动作。如果人们不曾奔走,也不需要明确方向,那自然也不需要记录。人们的生活就是忙碌的,忙着去工作,急着去娱乐,然后去睡觉。如果其中有一点记录和觉察,在那样一个小时里安顿下来,也许那些思考和智慧的灵光会闪耀起来,从而撬动一点点改变。

翻翻日记,我经历了许多人生第一次,比如第一次参加好朋友的婚礼,过去一年里,也有些沉浮,更想写的是关于那只流浪猫:

四月下雨天,在小区发现一只猫咪,浑身湿漉漉,躲在车下面。是一只布偶猫,宠物猫,如果不救怕它活不下来。联系了物业和居委会,甚至去隔壁小区逛了看有没有告示,都没有找到原主人。只好养在自己家先看看,起了个名字叫南南,体型大,医生说他大概两岁。带他驱虫、治耳螨、洗澡、绝育,身上终于干干净净。可能是因为流浪过,很粘人,看见人就凑过来,看见手就站起来用头蹭。

我有两个原住民,蓝猫叫噗噗,银渐层叫青云。买了个两米高一米宽的围栏隔离开布偶和原住民,按教程让他们慢慢熟悉。让猫咪们一起玩逗猫棒,一起吃零食,让他们共享正向的回忆。某次围栏没有关牢,青云好奇去探头,南南直接冲过去把他揍了。是真揍。青云应激喘着气,下巴掉了一块皮,吓得一个星期不跑酷也不吃零食,南南因体型大没受伤。后来也不是没试过让他们打开围栏见面,只要我们在,还能相安无事,让他们单独相处时就会打起来,有一次拉架还给我手上留了疤。

只好把南南隔离在外面房间,南南想进卧室粘人,不停挠门,原住民在里面又怕又恨。既不能让他们好好相处,也不能让原住民享受原本的生活空间。出远门还要备两份猫砂和粮。回来时,那道隔离围栏常常倾斜了一半,又是差点打起来的痕迹。

想着还是为南南找个合适的家庭吧,在朋友圈、社交媒体上发表领养的图文,找一些人脉广的朋友发群里,甚至在二手交易平台上以极低价格筛选领养者,这些信息一经发出就石沉大海。

事情就是这样,你做了一切你认为科学正确的猫咪引入步骤,但事情就是不如人意。我做的是对的,救了没有生存能力的宠物猫。南南是对的,因为猫本就是独居动物,他也没有选择来到一个有两只猫的地方。没有人领养是对的,北京到处都可以领养猫咪,甚至有些刚出生的品种猫可以领养,何必领养一只成年的流浪猫呢。每个人都是对的,但我却觉得痛苦,有个朋友劝我,干脆送到他公司那的公园,那边喂养的人也多,我总觉得养都养了,好事要做到底。也许这就是苦的来源,我以为三只猫咪应该相处其乐融融,以为那么可爱的猫咪找到人领养会很容易,在那个应然的世界里,一切都是顺心如意的,一旦那个坚硬的现实撞过来就是头破血流。

往心里装入做好事要善始善终、生活应当井井有条的念头,塞下对完美结局的渴望。忙着把外界的反馈、他人的评价、事态的走向往那个已经很拥挤的心里塞,直到挤得喘不过气来。但如果仔细审视心中那些念头,会发现那里全是紧绷的控制欲,和对于自己无能为力的不可接受。但为什么非得是这样就是“成功”,那样就是“失败”,怎么就没有一个中间状态呢?有没有一种可能,即便是过隔离的生活,也能让大家都舒服起来?只要想通这点,起码心里会平静,动作就不会变形。

后面我又搬了更大的房子,或许是冥冥之中自有定数,搬完没几天,托宠物医院传播的信息,被一位爱猫人士转发,又让一个正好想养猫的人家看上。他们上周末坐长途过来看猫,最后一起协商领养走了。南南去了新家。我和原住民也终于拿回了曾经割让的领土。现在,我坐在因为南南而特意租来的两室一厅里,摸着正在打呼噜的青云。这一年确实没按计划过,全是意外,但还好,家里安静了。


题图由 AI 生成

题图:迈步走向2026

图片生成算法:Nano Banana Pro

Prompt:

An ultra-wide cinematic landscape shot, capturing the cold aesthetic of "Manchester by the Sea". A tiny, solitary figure in a dark coat is walking away, barely visible, along a desolate, snow-dusted coastal road that stretches infinitely towards a distant horizon line. The road acts as a timeline leading into 2026. Vast grey overcast sky, rough freezing ocean, muted blue and brown tones, sense of immense isolation and quiet acceptance. Film grain, photorealistic, natural diffused light.

如何在不安装 Transformers 的情况下使用 LLM Tokenizer

在构建 LLM 应用时,想对文本进行分词或者计算长度,却不得不安装了几 GB 的 transformers 和 torch(transformers 依赖 torch),这会导致 Docker 镜像体积剧增。网上对于这个问题提到的很少,但还是有人问,想着还是写下来吧。

其实只要利用 HuggingFace 的 tokenizers 库(Rust 实现),在不依赖 PyTorch 的前提下,就可以复现 AutoTokenizer 的功能(包括 apply_chat_template)。实测下来,在 Qwen 2.5 模型的 tokenizer 下,同样的 1k 长度的 Prompt,就 tokenize 的速度而言,rust 版的 tokenizer 相比于 transformers 中的 AutoTokenizer 可以提速十倍。

以 Qwen2.5 为例的 tokenizers 使用

import json
from tokenizers import Tokenizer
from jinja2 import Template
from pathlib import Path

model_dir = Path("models/Qwen2.5-14B-Instruct/")
tokenizer_json_path = str((model_dir / "tokenizer.json").resolve())
config_json_path = str((model_dir / "tokenizer_config.json").resolve())

tokenizer = Tokenizer.from_file(tokenizer_json_path)

# 加载 Chat Template
# transformers 的 apply_chat_template 实际上就是读取 tokenizer_config.json 里的 chat_template 字段
with open(config_json_path, 'r', encoding='utf-8') as f:
    config = json.load(f)
    chat_template = config.get("chat_template")
    # 获取特殊 token,用于传递给模板上下文
    bos_token = config.get("bos_token", "")
    eos_token = config.get("eos_token", "")

# 准备输入数据
prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"role": "user", "content": prompt}
]

# 手动渲染 Chat Template (替代 tokenizer.apply_chat_template)
# Qwen 的模板通常需要 messages, add_generation_prompt, bos_token, eos_token 等参数
template = Template(chat_template)
text = template.render(
    messages=messages,
    add_generation_prompt=True,
    bos_token=bos_token,
    eos_token=eos_token
)

print("=== Rendered Text ===")
print(text)

prompt = "你好,世界"

encoded = tokenizer.encode(prompt)

# 获取 input_ids 和 attention_mask
input_ids = encoded.ids
attention_mask = encoded.attention_mask

print(input_ids)

print(f"Total tokens: {len(input_ids)}")

给英语人士使用:

How to use LLM tokenizers without the transformers library.

When building LLM applications, if you simply want to tokenize text or calculate token lengths, you are often forced to install several GBs of transformers and torch (since transformers depends on torch). This causes the Docker image size to balloon significantly. There isn’t much discussion about this online, but since people keep asking about it, I thought I’d write it down.

Actually, by utilizing HuggingFace’s tokenizers library (implemented in Rust), you can replicate the functionality of AutoTokenizer (including apply_chat_template) without any dependency on PyTorch. In my tests using the Qwen 2.5 model’s tokenizer, for a prompt of the same 1k length, the Rust-based tokenizer was ten times faster than the AutoTokenizer found in transformers.

Using tokenizers with Qwen 2.5 as an Example

import json
from tokenizers import Tokenizer
from jinja2 import Template
from pathlib import Path

model_dir = Path("models/Qwen2.5-14B-Instruct/")
tokenizer_json_path = str((model_dir / "tokenizer.json").resolve())
config_json_path = str((model_dir / "tokenizer_config.json").resolve())

tokenizer = Tokenizer.from_file(tokenizer_json_path)

# Load Chat Template
# The apply_chat_template method in transformers actually just reads the 
# chat_template field from tokenizer_config.json
with open(config_json_path, 'r', encoding='utf-8') as f:
    config = json.load(f)
    chat_template = config.get("chat_template")
    # Get special tokens to pass to the template context
    bos_token = config.get("bos_token", "")
    eos_token = config.get("eos_token", "")

# Prepare input data
prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"role": "user", "content": prompt}
]

# Manually render Chat Template (replacing tokenizer.apply_chat_template)
# Qwen's template usually requires parameters like messages, add_generation_prompt, bos_token, eos_token, etc.
template = Template(chat_template)
text = template.render(
    messages=messages,
    add_generation_prompt=True,
    bos_token=bos_token,
    eos_token=eos_token
)

print("=== Rendered Text ===")
print(text)

prompt = "你好,世界" # "Hello, World"

encoded = tokenizer.encode(prompt)

# Get input_ids and attention_mask
input_ids =

 encoded.ids
attention_mask = encoded.attention_mask

print(input_ids)

print(f"Total tokens: {len(input_ids)}")

一只玳瑁猫的教授

某天晚上心情郁闷,骑车出去逛逛,也没有设定目的地。在网上搜寻过北京冬夜里既暖和又能散步的去处,得到的答案大多是戏谑——人们推荐了工位:暖气充足,凌晨下班。

在北京的冬夜里,街上车流寥落,只有外卖骑手偶尔疾驰而过。路过一个熟悉的公园,园内小路无灯,借着公路漫进来的光,行人都成了模糊的剪影,彼此默契维持着距离。广场上倒是热闹,孩童的欢笑声搅动着空中的冷气。一座寺塔立在广场旁边,据说明代建成,在射灯下,昏黄的寺塔嵌在紫黑色的夜空前,显得格外孤寂。

走到尽头折返时,看见一只黑棕相间的玳瑁猫,瘦小,趴在草坪上,大约一岁。北京的冬夜能冻透骨头,想领养回去,但家里已有一只流浪猫,还跟两只原住民大打出手。又想起那逼仄的房子,还是作罢。这只玳瑁察觉我的凝视,冲我喵喵叫。我伸手摸去,它一蹬腿蹿上矮树。我试图凑近,它跳下走远。我只好作罢,退回石板路。

路上只剩我的脚步声,偶尔夹杂着枯叶碎裂的细响。回头看去,还是那小家伙,要不是那尾巴在动,很难发现树影下还藏着一团黑黢黢。我往前走,走几步发现它还跟着,已走到椅子下。慢慢,我朝它走去,它发现我突破安全距离,又跑回树下。不让摸,那我就走,但回头仍见那黑影悄悄跟着。走到开阔明亮的地方,小猫跟到路灯下,我再次缓慢走去,同时用人类最常用的猫语跟它套近乎。它叫了两句,四脚腾空像要起飞一样。我紧追不放,距离拉近它飞奔,距离过远它又趴在原地慵懒地等着我,仿佛在玩真正的躲猫猫。

在这场拉锯战中,我几次远离它,让它靠近,再迅速反击,均以失败告终。如果有路人远远看见,怕不是觉得这边闹鬼了。寒意不知不觉消散,我决定一鼓作气,看看它到底逃到哪里。等它又一次跟过来,我穷追不舍,这小黑球也发了狠,四只脚踩得树叶哗哗作响。眼见它敏捷地穿过一棵又一棵树,只恨笨拙的两脚兽身躯无法跟上。再定睛一看,面前一片枯黄的草丛,它一个猛子扎进去,传来阵阵唰唰声,越来越远,直到整个公园再次归于宁静,好像什么也不曾发生过。


题图:猫咪回头望

图片生成算法:Midjounery

Prompt:

An impressionistic oil painting with a thick impasto texture, depicting a tortoiseshell stray cat about to disappear into the yellow grass of a park. The cat is rendered as a blurred mass of dark brown brushstrokes, blending into the deep shadows of the low-lying grass and trees. Light emanates from a distant, dim streetlamp, casting faint beams that subtly illuminate scattered dry leaves and the cat’s silhouette. The overall scene is dim, dominated by a wintery, withered yellow palette with no green. The style combines characteristics of Claude Monet and Vincent van Gogh, rich in emotion and atmosphere, with visible brushstrokes, emotional depth, and expressionistic techniques.

手中蜜罐

有一天你连接到了一个公开无密码的 wifi 网络,你感觉很好,终于不用浪费流量了。你用上免费的网络,黑客则撬走了你的隐私和钱包。这种蜜罐陷阱,是计算机安全中的一个技术手段。

人们往往遭受的不是这样的蜜罐攻击,打开 App,刷新列表,赫然显示着一位大家熟知的企业家离世的新闻,点进一看发现并不是那个人。或者打开某个内容 App,本来想学习怎么煎牛排,结果不知不觉就想要找一个最好的平底锅,一不小心半个小时过去了,菜还没买。只要上网的时间够长,这样的事情似乎无法避免。

从内容创作者的角度而言,创造蜜罐的目的和手段各有不同。

在文字内容平台,用户第一时间能看见的是标题和题图,因此内容创作者就像设计蜜罐一样去设计这两者,就像语文老师教的一样——制造悬念、对比反差。

在短视频平台,决定用户能否继续停留的是视频前几秒钟。由于可以创造更丰富的视听体验,视频创作者有更多手段,渲染出更夸张、更吸睛的开头。如果你去搜索短视频创作的教程,就会发现他们会告诉你要如何创造钩子,如何激发情绪、唤起共鸣、吸引人看完整个视频,这也是为了提升视频完播率,让平台将视频推荐给更多的人。

电商平台的逻辑则完全不同,在电商平台,你本来只想快速挑选,买完走人,但平台要尽可能提升用户的浏览时长,于是他们也创造了数量庞大的蜜罐。打开 App,映入眼帘的是文章、视频、直播构成的瀑布流。你明明只是想搜索具体商品,但在打开的瞬间,斑驳的信息瞬间涌入,占满大脑的内存,你的觉知和原初想买的商品欲求就变成了大脑的次级任务。除了超量的信息涌入,那些新奇的商品也像短视频平台一样,激发着人们的贪婪和好奇。

说到底,当今手机就是一个巨型蜜罐。手机里的巨头App,恨不得把能制造的所有蜜罐都塞到一个页面里。

手机里的生活服务,比如外卖、共享单车、地图,这些高频功能让你形成打开某个 App 的习惯。内容服务,比如小说、短视频、直播,则创造出缓解压力的幽默、填满空虚的陪伴、对现状不满的焦虑、对理想生活的渴爱,让人能沉溺其中,用近乎无限的信息淹没人的注意力。接着顺势告诉你,某个商品或服务就能满足你的需求,如果你囊中羞涩,还能花几秒钟开通借贷服务。如果你担心商品快递太慢或者服务太慢,还可以选择一小时内送达的外卖和上门的服务。这正是一个 App 主页塞满了豆腐块的原因 —— 巨头们或主动或被动创造了一个高效的蜜罐系统。

在现代生活里,人们在工作中已经消耗了相当多的心力,仅剩下晚上不多的休息时间,还要投入手机里贡献金钱和注意力。人们离正襟危坐在电脑面前、打开一个又一个页面比价的电脑冲浪时代已经过去了十年,离凭肉身货比三家、靠现金购买商品还会产生心痛的逛街购物也已过去了十五年,现在人们一般都是深夜瘫倒在床上,用所剩无几的思考能力,一键下单,对藏在支付软件后面的余额下降没有一点点感觉。

佛陀在世时,人心质朴,大多数人尚且吃不饱饭,认识到自己的欲望是相对容易的。如今,人们的欲望不仅在现实中涌现,还凭借一个完备的虚拟世界来生成。手机不同于烟酒这样的合法成瘾品,在推荐算法加持下,渗透进我们每一个脆弱、冲动的瞬间,同时又像衣物鞋履一样不可逃避。学会和这手中蜜罐相处,是我们现代生活的修行,就像《色戒》里的师父问达世,满足一千个欲望,或者战胜一个欲念,哪一个更重要?


题图:街拍2

图片生成算法:Midjounery

Prompt (源于和菜头):a photograph of a young dior model, wearing high heels, posing in the middle of the galleria vittorio emanuele ii. she is striking poses with one leg on top of another’s knee. the background features luxury fashion stores. people are walking around. –ar 3:4 –p 9s14d1j –v 7.0 –s 750

为什么大语言模型(LLM)还不能真正开发软件

Zed 编辑器的博客发的新文章,提出了“心智模型”的说法,可以看看。

Why LLMs Can’t Really Build Software — Zed’s Blog

为什么大语言模型(LLM)还不能真正开发软件

我花了很多时间做的一件事,就是面试软件工程师。这显然是个难题,我也不敢说有什么灵丹妙药;但它确实让我有机会深入思考,那些真正优秀的软件工程师到底是怎么工作的。

软件工程的循环

当你观察一位经验丰富的软件工程师时,你会发现他们总是在重复以下几个步骤:

  • 构建对需求的心智模型(mental model)。
  • 编写代码(希望它能实现需求!)。
  • 构建对代码实际运行情况的心智模型
  • 找出两者之间的差异,然后更新代码(或者调整需求)。

完成这些步骤的方法有很多,但优秀工程师的显著特点在于他们能够构建并维护清晰的心智模型

那么,大语言模型(LLM)呢?

公平地说,大语言模型在编写代码方面确实相当出色。当你指出问题所在时,它们在修改代码方面也表现得相当不错。它们还能做很多真正软件工程师会做的事情:阅读代码、编写和运行测试、添加日志,甚至(大概)使用调试器。

但它们无法做到的是:维护清晰的心智模型

大语言模型会无休止地陷入困惑:它们会想当然地认为自己写的代码是正确的;当测试失败时,它们会不知所措,不知道该修改代码还是修改测试;而当它们感到沮丧时,干脆就把所有东西都删掉,从头再来。

这与我所寻找的优秀工程师特质恰恰相反。

软件工程师在工作过程中会不断测试。当测试失败时,他们可以对照自己的心智模型来决定是修改代码还是修改测试,或者只是收集更多数据再做决定。当他们感到沮丧时,可以通过与人交流来寻求帮助。虽然有时他们也会删除所有代码从头再来,但那是在对问题有了更清晰理解之后。

但很快就会改变,对吗?

随着模型能力越来越强,这种情况会改变吗?也许吧?!但我认为这需要改变模型的构建和优化方式。软件工程需要的模型,不仅仅是能生成代码那么简单。

当一个人遇到问题时,他们能够暂时搁置全部上下文,专注于解决当前问题,然后“弹出”他们的思维堆栈,回到手头的主要任务。他们也能够“放大”视野,关注大局,让细节暂时消失,只在必要时才深入到小块内容中。我们不会仅仅因为要处理更多信息,就不断往自己的“上下文窗口”里塞更多文字,因为那会把我们逼疯。

即使不考虑上下文过多的问题,我们也知道当前的生成式模型存在几个直接影响它们维护清晰心智模型能力的问题:

  • 上下文遗漏:模型不擅长发现被遗漏的上下文信息。
  • 近因偏差:它们在上下文窗口中存在强烈的近因偏差(即更关注最近的信息)。
  • 幻觉:它们经常会“幻觉”出一些本不该存在的细节。

这些问题希望不是无法克服的,目前也正在进行相关工作,试图为模型添加记忆功能,让它们能像我们一样进行类似的“思维技巧”。不幸的是,就目前而言,它们(一旦复杂度超过一定程度)还无法真正理解正在发生什么。

它们无法开发软件,因为它们无法维护两个相似的“心智模型”,找出差异,并判断是应该更新代码还是调整需求。

那么,现在怎么办?

显然,大语言模型对软件工程师来说非常有用。它们可以快速生成代码,并且在综合需求和文档方面表现出色。对于某些任务来说,这已经足够了:需求足够清晰,问题足够简单,它们可以一次性完成整个任务。

话虽如此,对于任何非简单的任务,它们都无法准确地维护足够的上下文,从而迭代出一个可行的解决方案。你,作为软件工程师,仍然需要负责确保需求清晰,并且代码确实实现了它所声称的功能。

在 Zed,我们相信一个人类与智能体(agents)可以协作开发软件的世界。但是,我们坚信(至少目前)你才是驾驶员,而大语言模型只是你触手可及的另一个工具。