面向AI的编辑器怎么设计

版主: hci

回复
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#1 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

计算机发展的早期,人机界面是非常底层的,没现在这么人性化。一直到70年代都还有一些机器需要手工输入二进制的boot loader (boot sequence)才能启动。这种机器没有显示器,上面有N个switch,代表N位地址,然后有M个switch代表M位数据(一个word,字长为M)。每次把地址和数据的0/1都设好了,按一个按钮载入。就这么一个word一个word地把启动代码输进去,然后才能启动。

IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。

然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

图片

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。


Agent还有别的各种做法,这里的讨论基于我采用的AA体系https://arxiv.org/pdf/2502.09903

+2.00 积分 [版主 hci 发放的奖励]
x2 图片
上次由 wdong 在 2025年 2月 25日 09:43 修改。

标签/Tags:
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#2 Re: 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

为什么我要费力气写这些呢?因为我们想让AI编程,第一件事情就是要开发一个编辑器给AI用。

我们可以说目前的AI/LLM尚且处在串口和命令行时代,所以AI编程的体验应该和70年代人类编程的体验比较接近。现在用LLM实现的AI和人的接口就是一个串口,人和AI轮流往一个字符串(prompt,同时也充当AI的memory)上添加。将来需要发展出修改记忆的功能,图灵机读写头不能只往一个方向挪动。我的协议里已经有对应修改memory的部分了,但是目前这一代LLM如果不finetune,单纯靠prompt engineering感觉效果还不好。

“时代”的发展并不是要改进串口通信本身。串口这东西在现在最先进的GPU里依然能找到它的影子。时代的发展是要在串口的基础上构建更上层的东西,一代一代往上爬。那么机器应该顺着人走过的路往上爬吗? 我觉得对于机器而言是不需要二维的屏幕的。因为图灵机就是一个超长字符串,所以一维字符串对AI来说应该是最自然的结构。

如果上面的argument合理,那么需要把我们的思想rollback到pdp/unix时代,从二维屏幕中解放出来。然后以串口和ed为起点,加进去适合AI的设计。
上次由 wdong 在 2025年 2月 25日 10:13 修改。
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#3 Re: 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

插个题外话。我们现在认为一个文本文件就是一个存到文件里的字符串。这个不是一开始就这样的,而是unix的一个巨大的发明。在unix以前,人们的思维是被卡片束缚的。IBM是从卡片公司起家的,基因里都是卡片。如果你们去用IBM的巨型机(过两天我来写模拟器),你们会发现一切都是构建在卡片模型基础上的。所以 IBM的文件都是记录文件。每个文件由一条一条的记录构成。文本文件要存成记录,每一行就有列数限制。啥的啥的,非常不好用。

我们的脑子其实也被很多今天的卡片结构束缚着,比如我们认为程序是程序,文档是文档,接口是接口实现是实现。同样的idea,我们需要拆开了,在文档里写一遍,在程序里再写一遍,在测试案例里再写一遍。我们需要把这种因为技术限制导致的人为构建的各种规矩破了,在今天的技术之上重新思考,编程是怎么回事(人和电脑一起修改图灵机那个长条,人修改长条是编程,机器修改长条是程序运行),怎么编程才能达到最好的效果。
上次由 wdong 在 2025年 2月 25日 09:40 修改。
头像
YouHi
论坛元老
论坛元老
YouHi 的博客
帖子互动: 2605
帖子: 36000
注册时间: 2022年 7月 22日 22:36

#4 Re: 面向AI的编辑器怎么设计

帖子 YouHi »

裂害。
著名网友名单
🇺🇸 NC CHINESE AMERICANS FOR TRUMP 🛩️
你也是Trump U毕业的吗???
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#5 Re: 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

下面是我目前给我的agent提供的编程接口。设计参考了普林斯顿的swe-agent。希望众将给我出出主意。 我接下来要做的是一个覆盖目录树和程序的tree结构,允许agent在tree上navigate。搞agent的一个大问题是输出不能太多,因为每一个token都要花钱。一个超长的find结果传过去可能一毛钱就没了,而且如果不优化,以后每次交互都是一毛钱。所以每次只能精挑细选一部分输出给agent。

From --------------------------------
From: user@localdomain
To: swe1@agents.localdomain
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

You are a software engineer. The current directory contains the codebase you
need to fix. The file problem_statement.txt contains the ticket to be resolved.

To assist your job, the following shell commands are provided.

# Project commands
aa_test # After you modify the code, use this to test.

# File editing
These commands are specially designed for our email communication protocol
and will be easier to use than unix tools like ed and sed. These commands
remember some states like the current file. The last few lines
of their output shows you the current state.

aa_open path/to/file # this opens a file
aa_search regex # search the give regular expression in the current file
aa_list 5-25 # list line 5-25 of the current file
aa_list 100 # list some lines starting from line 100
aa_scroll up # If you see "can scroll" in the last output,
# use this to scroll up (print a few lines before the previous window)
aa_scroll down # Scroll down.

All commands above do not require stdin; so don't generate an email body.
The two commands below require stdin. Your email body is to be used as stdin so don't include
anything extra in the email body except for the content you intend for stdin.

aa_edit 25-45 # replace lines 25-45 (inclusive) of the current file with content of stdin and write the file.
aa_create path/to/new/file # write the content of stdin to the new file

Don't blindly assume a filename and try to aa_open it. Usually you need to
find hint in the problem statement and use a combination of find and grep to
locate the file to modify.

+1.00 积分 [版主 hci 发放的奖励]
chinav5(宇宙华人华侨星际联合会会长)
著名点评
著名点评
帖子互动: 544
帖子: 4859
注册时间: 2023年 3月 1日 23:10

#6 Re: 面向AI的编辑器怎么设计

帖子 chinav5(宇宙华人华侨星际联合会会长) »

看起来好像很有道理
wdong 写了: 2025年 2月 25日 09:03 [Agent有别的做法,这里的讨论基于我采用的体系https://arxiv.org/pdf/2502.09903]

计算机发展的早期,人机界面是非常底层的,没现在这么人性化。一直到70年代都还有一些机器需要手工输入二进制的boot loader (boot sequence)才能启动。这种机器没有显示器,上面有N个switch,代表N位地址,然后有M个switch代表M位数据(一个word,字长为M)。每次把地址和数据的0/1都设好了,按一个按钮载入。就这么一个word一个word地把启动代码输进去,然后才能启动。

IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。

然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

图片

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。

+1.00 积分 [用户 wdong 给您的打赏] 谢谢!
x1 图片
土鳖 ——— 中土最大外发
rgg
知名作家
知名作家
帖子互动: 87
帖子: 1119
注册时间: 2022年 9月 12日 15:00

#7 Re: 面向AI的编辑器怎么设计

帖子 rgg »

wdong 写了: 2025年 2月 25日 09:31 下面是我目前给我的agent提供的编程接口。设计参考了普林斯顿的swe-agent。希望众将给我出出主意。 我接下来要做的是一个覆盖目录树和程序的tree结构,允许agent在tree上navigate。搞agent的一个大问题是输出不能太多,因为每一个token都要花钱。一个超长的find结果传过去可能一毛钱就没了,而且如果不优化,以后每次交互都是一毛钱。所以每次只能精挑细选一部分输出给agent。

From --------------------------------
From: user@localdomain
To: swe1@agents.localdomain
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

You are a software engineer. The current directory contains the codebase you
need to fix. The file problem_statement.txt contains the ticket to be resolved.

To assist your job, the following shell commands are provided.

# Project commands
aa_test # After you modify the code, use this to test.

# File editing
These commands are specially designed for our email communication protocol
and will be easier to use than unix tools like ed and sed. These commands
remember some states like the current file. The last few lines
of their output shows you the current state.

aa_open path/to/file # this opens a file
aa_search regex # search the give regular expression in the current file
aa_list 5-25 # list line 5-25 of the current file
aa_list 100 # list some lines starting from line 100
aa_scroll up # If you see "can scroll" in the last output,
# use this to scroll up (print a few lines before the previous window)
aa_scroll down # Scroll down.

All commands above do not require stdin; so don't generate an email body.
The two commands below require stdin. Your email body is to be used as stdin so don't include
anything extra in the email body except for the content you intend for stdin.

aa_edit 25-45 # replace lines 25-45 (inclusive) of the current file with content of stdin and write the file.
aa_create path/to/new/file # write the content of stdin to the new file

Don't blindly assume a filename and try to aa_open it. Usually you need to
find hint in the problem statement and use a combination of find and grep to
locate the file to modify.
是不是太wordy了。 只留些要改动填写的,其它的作为template藏在后台?
头像
YouHi
论坛元老
论坛元老
YouHi 的博客
帖子互动: 2605
帖子: 36000
注册时间: 2022年 7月 22日 22:36

#8 Re: 面向AI的编辑器怎么设计

帖子 YouHi »

用Emacs可解。
著名网友名单
🇺🇸 NC CHINESE AMERICANS FOR TRUMP 🛩️
你也是Trump U毕业的吗???
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#9 Re: 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

rgg 写了: 2025年 2月 25日 09:45 是不是太wordy了。 只留些要改动填写的,其它的作为template藏在后台?
是有这种感觉。Email是protocol。实际调LLM API是是可以编译成别的等价形式的,有的header可以删掉。
我决定留着是因为:

1. 以后token会越来越便宜,每个消息上百个token的overhead应该可以接受。
2. AI看到的是token。比如text/plain,在AI看来**可能**就是1个token。
3. 我还要拿这套体系干别的,证明数学定理啥的,还不能全按编程方便来搞。

Email是一个已经证明非常成功的协议,可能会在意想不到的地方给我提供便利。
Caravel
论坛元老
论坛元老
Caravel 的博客
帖子互动: 560
帖子: 24542
注册时间: 2022年 7月 24日 17:21

#10 Re: 面向AI的编辑器怎么设计

帖子 Caravel »

wdong 写了: 2025年 2月 25日 09:49 是有这种感觉。Email是protocol。实际调LLM API是是可以编译成别的等价形式的,有的header可以删掉。
我决定留着是因为:

1. 以后token会越来越便宜,每个消息上百个token的overhead应该可以接受。
2. AI看到的是token。比如text/plain,在AI看来**可能**就是1个token。
3. 我还要拿这套体系干别的,证明数学定理啥的,还不能全按编程方便来搞。

Email是一个已经证明非常成功的协议,可能会在意想不到的地方给我提供便利。
可以拿些简单任务训练一下自然语言指令跟随?

比如在Linux上面用shell find cut extract 一些东西?

比如把linux 常用command加入到system prompt里面

这些现在的大模型可以做到么?

如果上面可以做到,下面就可以

用comment写code,把phsedo code变成真code
Caravel
论坛元老
论坛元老
Caravel 的博客
帖子互动: 560
帖子: 24542
注册时间: 2022年 7月 24日 17:21

#11 Re: 面向AI的编辑器怎么设计

帖子 Caravel »

wdong 写了: 2025年 2月 25日 09:19 插个题外话。我们现在认为一个文本文件就是一个存到文件里的字符串。这个不是一开始就这样的,而是unix的一个巨大的发明。在unix以前,人们的思维是被卡片束缚的。IBM是从卡片公司起家的,基因里都是卡片。如果你们去用IBM的巨型机(过两天我来写模拟器),你们会发现一切都是构建在卡片模型基础上的。所以 IBM的文件都是记录文件。每个文件由一条一条的记录构成。文本文件要存成记录,每一行就有列数限制。啥的啥的,非常不好用。

我们的脑子其实也被很多今天的卡片结构束缚着,比如我们认为程序是程序,文档是文档,接口是接口实现是实现。同样的idea,我们需要拆开了,在文档里写一遍,在程序里再写一遍,在测试案例里再写一遍。我们需要把这种因为技术限制导致的人为构建的各种规矩破了,在今天的技术之上重新思考,编程是怎么回事(人和电脑一起修改图灵机那个长条,人修改长条是编程,机器修改长条是程序运行),怎么编程才能达到最好的效果。
我认为可以搞一个分级 Agent的体系

比如

第一级: 负责high level 系统design

第二级: 把第一级的design文本转变成code comment

第三级: 把第二级的文本转成可执行code

第四级:负责运行和检查结果,并且反馈给第三级

这样每一级可以放不同的system prompt,比如负责design的没必要知道怎么执行Linux command,这样agent 就出现了分工和专门化
forecasting
著名点评
著名点评
帖子互动: 297
帖子: 4102
注册时间: 2023年 4月 17日 08:26

#12 Re: 面向AI的编辑器怎么设计

帖子 forecasting »

wdong 写了: 2025年 2月 25日 09:31 下面是我目前给我的agent提供的编程接口。设计参考了普林斯顿的swe-agent。希望众将给我出出主意。 我接下来要做的是一个覆盖目录树和程序的tree结构,允许agent在tree上navigate。搞agent的一个大问题是输出不能太多,因为每一个token都要花钱。一个超长的find结果传过去可能一毛钱就没了,而且如果不优化,以后每次交互都是一毛钱。所以每次只能精挑细选一部分输出给agent。

From --------------------------------
From: user@localdomain
To: swe1@agents.localdomain
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

You are a software engineer. The current directory contains the codebase you
need to fix. The file problem_statement.txt contains the ticket to be resolved.

To assist your job, the following shell commands are provided.

# Project commands
aa_test # After you modify the code, use this to test.

# File editing
These commands are specially designed for our email communication protocol
and will be easier to use than unix tools like ed and sed. These commands
remember some states like the current file. The last few lines
of their output shows you the current state.

aa_open path/to/file # this opens a file
aa_search regex # search the give regular expression in the current file
aa_list 5-25 # list line 5-25 of the current file
aa_list 100 # list some lines starting from line 100
aa_scroll up # If you see "can scroll" in the last output,
# use this to scroll up (print a few lines before the previous window)
aa_scroll down # Scroll down.

All commands above do not require stdin; so don't generate an email body.
The two commands below require stdin. Your email body is to be used as stdin so don't include
anything extra in the email body except for the content you intend for stdin.

aa_edit 25-45 # replace lines 25-45 (inclusive) of the current file with content of stdin and write the file.
aa_create path/to/new/file # write the content of stdin to the new file

Don't blindly assume a filename and try to aa_open it. Usually you need to
find hint in the problem statement and use a combination of find and grep to
locate the file to modify.
找机会看看再讨教
forecasting
著名点评
著名点评
帖子互动: 297
帖子: 4102
注册时间: 2023年 4月 17日 08:26

#13 Re: 面向AI的编辑器怎么设计

帖子 forecasting »

wdong 写了: 2025年 2月 25日 09:03 计算机发展的早期,人机界面是非常底层的,没现在这么人性化。一直到70年代都还有一些机器需要手工输入二进制的boot loader (boot sequence)才能启动。这种机器没有显示器,上面有N个switch,代表N位地址,然后有M个switch代表M位数据(一个word,字长为M)。每次把地址和数据的0/1都设好了,按一个按钮载入。就这么一个word一个word地把启动代码输进去,然后才能启动。

IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。

然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

图片

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。


Agent还有别的各种做法,这里的讨论基于我采用的AA体系https://arxiv.org/pdf/2502.09903
用过打孔的卡片,暴露年龄了 :lol: :D
stonesthat(stones)
小有名气
小有名气
帖子互动: 3
帖子: 44
注册时间: 2023年 11月 7日 14:31

#14 Re: 面向AI的编辑器怎么设计

帖子 stonesthat(stones) »

本地起个 deepseek 能便宜很多吧?
wdong 写了: 2025年 2月 25日 09:31 下面是我目前给我的agent提供的编程接口。设计参考了普林斯顿的swe-agent。希望众将给我出出主意。 我接下来要做的是一个覆盖目录树和程序的tree结构,允许agent在tree上navigate。搞agent的一个大问题是输出不能太多,因为每一个token都要花钱。一个超长的find结果传过去可能一毛钱就没了,而且如果不优化,以后每次交互都是一毛钱。所以每次只能精挑细选一部分输出给agent。

From --------------------------------
From: user@localdomain
To: swe1@agents.localdomain
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

You are a software engineer. The current directory contains the codebase you
need to fix. The file problem_statement.txt contains the ticket to be resolved.

To assist your job, the following shell commands are provided.

# Project commands
aa_test # After you modify the code, use this to test.

# File editing
These commands are specially designed for our email communication protocol
and will be easier to use than unix tools like ed and sed. These commands
remember some states like the current file. The last few lines
of their output shows you the current state.

aa_open path/to/file # this opens a file
aa_search regex # search the give regular expression in the current file
aa_list 5-25 # list line 5-25 of the current file
aa_list 100 # list some lines starting from line 100
aa_scroll up # If you see "can scroll" in the last output,
# use this to scroll up (print a few lines before the previous window)
aa_scroll down # Scroll down.

All commands above do not require stdin; so don't generate an email body.
The two commands below require stdin. Your email body is to be used as stdin so don't include
anything extra in the email body except for the content you intend for stdin.

aa_edit 25-45 # replace lines 25-45 (inclusive) of the current file with content of stdin and write the file.
aa_create path/to/new/file # write the content of stdin to the new file

Don't blindly assume a filename and try to aa_open it. Usually you need to
find hint in the problem statement and use a combination of find and grep to
locate the file to modify.
duiduilu2(abc)
已冻结已冻结
帖子互动: 32
帖子: 766
注册时间: 2025年 1月 5日 12:42

#15 Re: 面向AI的编辑器怎么设计

帖子 duiduilu2(abc) »

我觉得你把输入和输出混为一谈了。

人编辑软件,软件在硬盘上。

输入是键盘,是一维的,
输出是显示器,是二维的,
鼠标,在这个二维上作为输入,是个定位的作用。

假设吧,现在人换成了AI,那输入还是一维的,
输出可以不用显示器,就输出一个字符串,那就是一维的了。AI看代码,一维二维区别不大,但是人看一维代码太累。
鼠标是一维的定位。

所谓,其实什么都不用做。把编辑屏幕定义成一行的屏幕就行了。
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#16 Re: 面向AI的编辑器怎么设计

帖子 wdong(万事休)楼主 »

duiduilu2 写了: 2025年 2月 25日 18:53 我觉得你把输入和输出混为一谈了。

人编辑软件,软件在硬盘上。

输入是键盘,是一维的,
输出是显示器,是二维的,
鼠标,在这个二维上作为输入,是个定位的作用。

假设吧,现在人换成了AI,那输入还是一维的,
输出可以不用显示器,就输出一个字符串,那就是一维的了。AI看代码,一维二维区别不大,但是人看一维代码太累。
鼠标是一维的定位。

所谓,其实什么都不用做。把编辑屏幕定义成一行的屏幕就行了。
高见!
oxo(牛喔)
正式写手
正式写手
帖子互动: 24
帖子: 167
注册时间: 2025年 2月 4日 19:14

#17 Re: 面向AI的编辑器怎么设计

帖子 oxo(牛喔) »

wdong 写了: 2025年 2月 25日 09:03 计算机发展的早期,人机界面是非常底层的,没现在这么人性化。一直到70年代都还有一些机器需要手工输入二进制的boot loader (boot sequence)才能启动。这种机器没有显示器,上面有N个switch,代表N位地址,然后有M个switch代表M位数据(一个word,字长为M)。每次把地址和数据的0/1都设好了,按一个按钮载入。就这么一个word一个word地把启动代码输进去,然后才能启动。

IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。

然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

图片

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。


Agent还有别的各种做法,这里的讨论基于我采用的AA体系https://arxiv.org/pdf/2502.09903
有意思,原来80列标准可以回溯到卡片时代。我特别讨厌80列折行的文本,做些简单的手动搜索挖掘都不方便。
pnlmpnlm(pnlm)
正式写手
正式写手
帖子互动: 37
帖子: 151
注册时间: 2025年 2月 12日 03:13

#18 Re: 面向AI的编辑器怎么设计

帖子 pnlmpnlm(pnlm) »

AI时代,相对厉害的就是自然语言模型,推广的方向应该是更多的人参与降低门槛。世界是为懒人设计的。那么所谓AI编辑器的设计,其实应该要更多不懂编程,半吊子编程的人参与,而不是简单的程序员设计。
回复

回到 “葵花宝典(Programming)”