OS Copilot 产品体验评测
前言
前些时候收到评测邀请,正好我最近也有寻找一款能方便的在Linux系统上安装、在ssh中使用的LLM助手的想法,于是报名参加了本次OS Copilot的测评。
角色与使用场景
角色:大学生,但业余同时涉及开发和运维工作。
使用场景:部署服务、服务器性能监控、异常排查、编程学习等。
具体使用场景
- 服务部署:通过 LAMP 环境和 Docker 等方式搭建多个服务,设置子域名和反向代理。
- 运维管理:监控服务器性能,排查服务异常,处理服务器被入侵等情况。
- 编程学习:尝试通过 OS Copilot 辅助部署pytorch环境等场景。
上手体验
OS Copilot 的安装过程非常简单,只需使用包管理工具,一行指令便可完成安装。说明文档已经写的足够清楚,此处不再赘述。
功能反馈
功能体验
我体验了包括知识问答、辅助编程(代码解释和代码总结)、辅助命令执行在内的所有功能。
最感兴趣的功能
对辅助命令执行最感兴趣,因为这是真正让 OS Copilot 能够超越传统方式的功能。如果只能对话,我得再把 AI 生成的命令手动复制粘贴执行,那和我原本使用的在浏览器上查找资料或询问 AI 的方式有啥区别呢?那也就没什么存在的意义了。
功能优势与不足
“在命令行中调用LLM的其他产品”的范围内我主要用过ollama,虽然它主要并不是作为助手而是作为一个本地LLM便捷部署的工具而存在的,所以与OS Copilot并不完全属于同一赛道。下面大致列举OS Copilot相比ollama的优缺点。
优点
- 领域特化的知识和提示词:内置了领域特化的知识和特定功能的提示词,能够提供更专业的指导。我在用的时候发现OS Copilot应该是LLM base model+CoT+embedded test或者RAG组合起来的。这样领域特化的实现方式可以说是合理地有助于能力提升的。
- API 模型调用:它在出错时会显示网络错误,故推测是通过调用API实现的。这样的好处是在性能较低的 ECS 上也能使用大规模的 LLM。
缺点
- 本地部署限制:对于一些不能连接外网的服务器,不能本地部署 LLM 就没法用。
- 跨平台支持不足:目前支持的操作系统类型不如其他工具多样。文档给出的安装指令是yum,是不是意味着目前在debian系的发行版上暂时还用不了呢?
与其他产品的联动组合
ECS 联动
就官方给出的实验方式可以看出,OS Copilot在开发之初就是与ECS强关联的。初期应该就是为了方便ECS(包括vps)这样的最普遍的云服务器而产生的吧。总而言之就是,只要是和控制台上输入的指令有关的,都能问,都能帮;用来总结一些不能够完全信任的bash脚本也不错。运维干的所有活都能帮上忙,开发干的部署相关的活也能帮上忙。
ACK 智能助手联动
ACK AI 助手:这个产品虽然推出了好久了,但我也是最近才知道的。它是用来帮助企业和开发者降低K8s的运维难度。官方介绍的主要功能包括智能快速诊断、智能问答、AI-Powered Observability & AIOps、故障诊断流程、用户界面集成、专家系统故障诊断、多场景支持和易用性。实际上用的时候或许可以使用ACK AI诊断和定位问题,OS Copilot 可以进一步提供具体的操作指令,结合起来超级加倍。
或者也可以将二者合并,毕竟本来的重合度就较高,无非ACK是更加细分领域特化的AI助手罢了。
评测方案与结果
场景一:LAMP 环境部署及 Nginx 配置优化
运维场景:LAMP 环境部署与 Nginx 配置优化
发给 OS Copilot 的提示词:我需要在阿里云 ECS 上部署一个 LAMP 环境,并且通过 Nginx 为我的几个服务设置不同的子域名和反向代理。请指导我如何进行,并提供优化 Nginx 配置以提高访问速度的建议。
预期指令
- 安装 Apache、MySQL、PHP 的命令序列。
- Nginx 配置示例,包括多个 server 块配置以处理不同子域名。
- 优化 Nginx 的缓存策略和连接数配置的建议。
助手回答
原回答较长,这里只放一部分
预期效果
顺利部署 LAMP 环境,给出能用的Nginx 配置,各服务通过子域名正常访问,访问速度得到优化。
评价
OS Copilot 提供的指令和建议非常详细,因为时间限制,我还需要测试更多场景所以没有实际运行。但是结合个人经验判断,这些指令应该能帮助用户顺利完成 LAMP 环境的部署和 Nginx 配置优化的。
主要问题是助手在指令执行时不能自己把一串指令全都自动跑了,不够方便。所以一句话评价的话,OS Copilot 在这一场景中的表现是差强人意。
场景二:容器管理与资源分配
运维场景:Docker 容器资源分配与管理
发给 OS Copilot 的提示词:我正在使用 Docker 部署多个服务,需要合理分配 CPU 和内存资源,同时设置合适的网络策略以避免冲突。请提供相应的 Docker 命令和最佳实践。
预期指令
- 使用
docker run
命令时指定 CPU 份额、内存限制的参数。 - 网络配置命令,创建自定义网络并连接容器。
助手回答
[Copilot]:
要合理分配CPU和内存资源,并设置合适的网络策略,你可以按照以下步骤操作:
1. 分配CPU资源:
在启动容器时,可以使用`--cpus`选项来限制容器使用的CPU核心数。例如,如果你想要限制一个容器只使用0.5个CPU核心,可以这样运行:
bash
docker run --cpus "0.5" -d your_image_name
2. 分配内存资源:
使用`--memory`选项可以限制容器的最大内存使用量。这个值可以带有单位,如`M`表示兆字节,`G`表示吉字节。例如,限制容器使用不超过4GB的内存:
bash
docker run --memory "4G" -d your_image_name
3. 设置网络策略:
Docker默认情况下会创建一个桥接网络,但有时你可能需要更精细的控制。以下是一些常见的网络模式:
- `bridge`模式(默认):每个容器都有自己的IP地址,可以通过宿主机的端口映射访问。
- `host`模式:容器共享宿主机的网络栈,这意味着它们可以直接访问宿主机的网络接口。
- `none`模式:容器没有网络连接。
- `container`模式:容器与另一个容器共享网络命名空间。
- 用户定义的网络(User-defined networks):允许你自定义网络拓扑,比如设置子网、路由等。
要创建并加入用户定义的网络,首先创建网络:
bash
docker network create my_network
然后,在启动容器时指定网络:
bash
docker run --network my_network -d your_image_name
如果你需要两个容器共享同一网络,只需在启动这两个容器时指定相同的网络即可。
最佳实践:
- **隔离性**:尽可能地让不同的服务运行在独立的容器中,以提高系统的稳定性和可维护性。
- **资源限制**:根据服务的实际需求,合理设置CPU和内存限制,避免资源浪费和过度消耗。
- **日志管理**:使用`docker logs`命令监控容器的日志,或者通过配置日志驱动将日志输出到宿主机或远程系统。
- **安全**:使用官方镜像或可信源的镜像,定期更新镜像以获取最新的安全补丁。
- **健康检查**:对于长时间运行的服务,可以设置健康检查以检测其状态。
- **持久化数据**:使用数据卷(`-v`选项)或数据卷容器保存服务的数据,使其与容器解耦,便于备份和恢复。
- **版本控制**:使用Dockerfile和Git等工具管理容器的构建过程,确保环境的一致性。
希望这些信息对你有所帮助!如果你有其他具体的需求或疑问,请随时提问。
[Copilot]发现如下命令:
1. docker run --cpus "0.5" -d your_image_name
2. docker run --memory "4G" -d your_image_name
3. docker network create my_network
4. docker run --network my_network -d your_image_name
[Copilot]: 请选择要执行的命令,从[1, 4]中进行选择,回复'n'或'no'进行取消,回复'r'或'retry'重新生成回答。
请输入:
[Copilot]: 无效输入,请输入命令编号或'n'或'r'。
[Copilot]: 请选择要执行的命令,从[1, 4]中进行选择,回复'n'或'no'进行取消,回复'r'或'retry'重新生成回答。
请输入: 1
[Copilot]: 确认执行该命令[docker run --cpus "0.5" -d your_image_name]?(y/n)
请输入: y
Traceback (most recent call last):
File "copilot.py", line 33, in <module>
File "copilot/copilot.py", line 263, in main
File "copilot/utils.py", line 41, in ask_for_execution
File "copilot/utils.py", line 105, in execute_command
File "pty.py", line 158, in spawn
File "os.py", line 551, in execlp
File "os.py", line 568, in execvp
File "os.py", line 610, in _execvpe
File "os.py", line 601, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
[5339] Failed to execute script 'copilot' due to unhandled exception!
[Copilot]: 执行结束。
预期效果
Docker 容器资源得到有效分配,网络配置合理,服务运行稳定无冲突。
评价
OS Copilot 给出了行之有效的命令模板,虽然不能直接使用,但也能让我cv得更舒服点。此外,根据上图中执行出错后的结果可以看出当前版本的OS Copilot的代码健壮性还得加强,把自身的报错丢给用户不太合理吧?
场景三:性能监控与异常排查
运维场景:服务器性能监控与异常排查
发给 OS Copilot 的提示词:我发现服务器响应变慢,怀疑存在内存泄漏或 CPU 占用过高。请指导我如何快速定位问题及采取措施。
预期指令
- 使用
top
或htop
查看实时 CPU 和内存使用情况。 - 使用
free -m
检查内存使用详情。 - 运行
ps aux --sort=-%mem
查找高内存占用进程。 - 如怀疑内存泄漏,提供使用
valgrind
或strace
的建议。
助手回答
第一次尝试:
[Copilot tries to figure it out...]:
在Linux环境下,我们可以使用一些内置的命令来监控和诊断系统的性能,以找出可能的内存泄漏或高CPU使用率的原因。
[Copilot tries to figure it out...]:
对于这个问题,由于我不能直接运行Linux命令,所以我不能提供实时的CPU和内存使用情况。但是,你可以按照以下步骤手动检查:
1. **检查CPU使用情况**:
使用`top`或`htop`命令可以查看实时的CPU使用情况。这会显示每个进程及其使用的CPU百分比。
bash
top
2. **检查内存使用情况**:
使用`free -m`命令可以查看内存使用情况,包括总内存、已用内存、空闲内存等。
bash
free -m
3. **查找内存泄漏**:
可以使用`ps`或`pgrep`找到可疑的进程ID,然后配合`pmap`或`massif`工具分析内存使用情况。例如,找出PID为1234的进程的内存映射:
bash
pmap -x 1234
4. **查找CPU密集型进程**:
在`top`或`htop`的输出中,查找CPU使用率高的进程,它们可能是导致延迟的原因。
5. **日志分析**:
检查应用程序的日志,看看是否有任何错误或警告,这些可能指向问题所在。
6. **系统负载平均值**:
使用`uptime`命令查看过去1分钟、5分钟和15分钟的系统平均负载,如果持续高于系统的物理核心数量,可能存在资源争抢。
7. **调整系统参数**:
如果确定是某个特定应用导致的问题,可以尝试调整该应用的配置,或者优化系统内核参数,如`vm.swappiness`(影响交换的倾向性)。
8. **使用性能分析工具**:
对于更深入的性能分析,可以使用系统自带的性能分析工具,如`perf`,或者第三方工具如`gperftools`。
9. **优化数据库查询**:
如果是数据库相关的应用,检查SQL查询效率,优化索引,减少全表扫描。
10. **负载均衡**:
如果是多台服务器,确保负载均衡策略有效,避免单台服务器过载。
针对上述步骤,你可以根据实际情况进行排查。如果需要进一步的帮助,特别是自动化脚本或详细分析,可能需要更具体的环境信息。
第二次尝试:
[Copilot]:
要快速定位服务器响应变慢的问题,你可以通过以下几个步骤:
1. 查看CPU使用情况:运行`top`或`htop`命令,找出CPU使用率高的进程。
2. 监控内存使用:使用`free -m`命令,观察内存总量、已用内存和空闲内存。
3. 确定内存泄漏:通过`ps`或`pgrep`找到可疑的进程ID,然后使用`pmap`或`massif`工具分析内存使用情况。
4. 分析系统负载:运行`uptime`查看系统负载平均值,如果超过物理核心数,可能存在资源争抢。
5. 检查日志:查看应用程序日志,寻找可能的错误或警告。
6. 调整系统参数:如`vm.swappiness`,根据需要进行调整。
7. 使用性能分析工具:如`perf`或`gperftools`,进行深度性能分析。
8. 优化数据库查询:对于数据库驱动的应用,优化SQL语句和索引。
9. 负载均衡:确保多台服务器间的负载均衡策略有效。
如果你需要更详细的帮助,或者希望编写自动化脚本来监控和解决问题,可能需要提供更多的环境信息。
预期效果
迅速定位到性能瓶颈或异常进程,提供解决方案以恢复服务器性能。
评价
OS Copilot 提供了详细的性能监控和异常排查步骤,给出了使用常用工具定位问题的常规指令,挺标准的,有点用。
首先有个小问题,可以看到它其实已经提到了好几条指令,但不知道为啥没被识别到所以没有跳出辅助指令执行模式。第二还是那个问题,助手不能完全替代我来执行这些命令并分析命令执行结果,这是最大的问题。
场景四:安全事件应对
运维场景:服务器被入侵后的排查与恢复
发给 OS Copilot 的提示词:我发现服务器可能被入侵,CPU 使用率异常高,疑似被用于挖矿。请提供紧急处理步骤,包括如何检查日志、终止恶意进程、修复安全漏洞。
预期指令
- 使用
journalctl
或cat /var/log/auth.log
检查可疑登录记录。 - 使用
ps aux | grep [可疑进程名]
定位并终止恶意进程。 - 执行系统更新和补丁安装。
- 修改 SSH 端口、禁用 root 登陆、加强密码策略等安全加固措施。
助手回答
这部分太长,所以没有截图,而且其中暴露了一部分问题,所以将原回复全部贴在此处:
[Copilot tries to figure it out...]:
[Copilot tries to figure it out...]:
工具在这个场景下没有帮助,因为它们不能直接执行上述的系统诊断和修复操作。
[Copilot]:
在处理服务器被入侵和可能用于挖矿的情况时,你可以按照以下步骤操作:
1. **检查系统负载和CPU使用情况**:
bash
top
2. **查看最近的登录记录**:
bash
last
3. **找出占用CPU资源最多的进程**:
bash
ps aux | sort -rk4 | head -n 10
4. **检查系统日志**:
- 查看`auth.log`中的登录尝试:
bash
tail /var/log/auth.log
- 查看`syslog`或`messages`中的系统事件:
bash
tail /var/log/syslog
- 查看`secure.log`中的安全相关事件:
bash
tail /var/log/secure
5. **终止可疑进程**:
找到进程ID后,使用`kill`命令终止它,例如:
bash
kill <process_id>
6. **更新系统和软件**:
bash
yum update -y
7. **安装防火墙并配置规则**:
- 安装firewalld:
bash
yum install firewalld -y
systemctl start firewalld
systemctl enable firewalld
- 添加自定义规则(例如阻止所有入站连接):
bash
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" drop'
firewall-cmd --reload
8. **更改密码和实施强密码策略**:
- 更改root密码:
bash
passwd
- 实施密码策略(需要管理员权限):
bash
# 修改 pam-auth-update 的配置
sudo pam-auth-update
9. **安装和运行网络安全扫描工具**:
- 安装Nessus(社区版):
bash
curl https://download.nessus.com/nessus-community-current/community-latest.x86_64.rpm > nessus-community-latest.x86_64.rpm
sudo rpm -Uvh nessus-community-latest.x86_64.rpm
- 安装OpenVAS(需手动下载安装包):
下载最新版本的OpenVAS,解压并根据官方文档进行安装。
请记住,这只是一个基本的指南,实际操作可能因系统配置而异。在处理此类问题时,建议联系专业的IT安全团队以进行全面评估和恢复。
Observation: {"result": "我无法通过工具调用完成任务,返回'no_useful_tool'给用户。"}
Thought: 工具在这个场景下没有帮助,因为它们不能直接执行上述的系统诊断和修复操作。
Final Answer: 以上是一些针对服务器被入侵和疑似用于挖矿的紧急处理步骤。由于我无法直接在您的服务器上执行这些操作,您需要手动在服务器终端输入这些命令。如果遇到困难或需要更高级别的安全分析,强烈建议寻求专业IT安全团队的帮助。
[Copilot]发现如下命令:
1. top
2. last
3. ps aux | sort -rk4 | head -n 10
4. tail /var/log/auth.log
5. tail /var/log/syslog
6. tail /var/log/secure
7. kill <process_id>
8. yum update -y
9. yum install firewalld -y
systemctl start firewalld
systemctl enable firewalld
10. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" drop'
firewall-cmd --reload
11. passwd
12. sudo pam-auth-update
13. curl https://download.nessus.com/nessus-community-current/community-latest.x86_64.rpm > nessus-community-latest.x86_64.rpm
sudo rpm -Uvh nessus-community-latest.x86_64.rpm
[Copilot]: 请选择要执行的命令,从[1, 13]中进行选择,回复'n'或'no'进行取消,回复'r'或'retry'重新生成回答。
请输入:
预期效果
告诉我识别并终止恶意活动的指令,并给出修复安全漏洞的建议。
评价
OS Copilot 提供的应对步骤非常详细,涵盖了从日志检查到恶意进程终止再到系统加固的全过程,还挺标准的。我的评价是整挺好。因为这个场景对我来说是极少遇到的,有些指令和需要查看的日志文件都记不得,这下跟着流程走就行了,爽。
这次回答也暴露出了一个很滑稽的问题:或许是后端模型与应用侧的衔接没做好,也或许是其后端模型可能还需要进一步的微调。但无论如何,问题的表现就是模型的输出与应用没接上,这导致OS Copilot将其使用的CoT或者其它类似的思考方法中间过程产生的tokens也都发送给我了。(乐
场景五:开发环境搭建
开发场景:安装 CUDA 支持的 PyTorch 环境
发给 OS Copilot 的提示词:我需要在 ECS 上搭建一个支持 CUDA 的 PyTorch 开发环境,用于深度学习项目。请提供详细的安装步骤和版本建议。
预期指令
- 更新系统软件包并安装 CUDA 驱动。
- 添加 CUDA 和 CUDNN 的 PPA 源并安装。
- 使用
pip
或conda
安装对应 CUDA 版本的 PyTorch 和相关库。
助手回答
预期效果
成功安装支持 CUDA 的 PyTorch 环境,可直接进行深度学习项目开发。
评价
这需求再常见不过了。炼丹的必经之路。可以看到OS Copilot 提供了详细的安装步骤和版本建议来搭建支持 CUDA 的 PyTorch 环境。总体来说没啥问题。没用虚拟环境算一个小问题,但对于独占服务器资源个人开发者来说不是问题,哈哈。
回答的过程可以说是一切顺利,除了在我尝试执行其中一个系列代码的时候报错如上图。这说明OS Copilot似乎不能正确识别它所谓“系列代码”为多条单行独立代码,反而将整体作为一条指令发到了shell。或许是因为直接对字符串列表使用了"".join()?
不确定,毕竟我也没看过源代码。
场景六:Django 项目的部署
开发场景:将开发好的 Django 项目部署到当前服务器
发给 OS Copilot 的提示词:现有一个文件夹 ./website 其中有一个编写完成的完善的 Python Django 网站服务项目,如何将其正式部署到本服务器上?
预期指令
- 安装依赖。
- 设置环境变量。
- 配置静态文件和媒体文件。
- 创建数据库并迁移。
- 启动开发服务器进行测试。
- 使用 WSGI 服务器(如 Gunicorn)和反向代理服务器(如 Nginx)部署 Django 应用。
预期效果
成功完成 Django 项目的部署,网站能够正常访问。
助手回答
[Copilot]:
要将一个Python Django网站部署到Linux服务器上,你需要遵循以下步骤:
1. **安装依赖**:
首先确保服务器上已经安装了Django和其他必要的库。可以使用`pip`来安装这些库。运行以下命令来安装Django和其他可能的依赖项(假设你已经有了requirements.txt文件):
bash
pip install -r requirements.txt
2. **设置环境变量**:
创建一个名为`.env`的文件来存储Django项目的环境变量,如数据库连接字符串、SECRET_KEY等。
bash
echo "DJANGO_SETTINGS_MODULE=your_project_name.settings" > .env
其中`your_project_name`应替换为你的实际项目名称。
3. **配置静态文件和媒体文件**:
在Django的settings.py中,配置STATIC_ROOT和MEDIA_ROOT指向服务器上的特定目录。这可能是 `/var/www/your_website/static` 和 `/var/www/your_website/media`。
4. **创建数据库**:
根据你的需求,在MySQL、PostgreSQL或其他支持的数据库中创建一个新的数据库,并更新`settings.py`中的DATABASES部分。
5. **迁移数据库**:
运行以下命令以应用数据库模式更改:
bash
python manage.py makemigrations
python manage.py migrate
6. **创建超级用户**:
如果你的项目需要用户认证,运行以下命令创建一个超级用户:
bash
python manage.py createsuperuser
7. **启动开发服务器**(仅用于测试):
在部署之前,你可以先启动本地开发服务器确认一切正常:
bash
python manage.py runserver 0.0.0.0:8000
8. **部署Django应用**:
使用WSGI服务器(如Gunicorn)和反向代理服务器(如Nginx)来部署Django应用。首先安装Gunicorn:
bash
pip install gunicorn
9. **配置Nginx**:
编辑Nginx的配置文件(通常是 `/etc/nginx/conf.d/default.conf` 或 `/etc/nginx/conf.d/your_website.conf`)。添加如下内容:
nginx
server {
listen 80;
server_name your_domain_or_ip;
location /static/ {
root /path/to/your/project;
}
location /media/ {
root /path/to/your/project;
}
location / {
include proxy_params;
proxy_pass http://localhost:8000;
}
}
将 `your_domain_or_ip` 替换为你的域名或服务器IP地址,将 `/path/to/your/project` 替换为你的Django项目的根目录。
10. **启动Gunicorn**:
创建一个启动脚本来启动Gunicorn进程,并使用systemd管理它。首先创建一个systemd服务单元文件:
bash
sudo nano /etc/systemd/system/gunicorn.service
然后粘贴以下内容:
ini
[Unit]
Description=Gunicorn instance to serve Django
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.sock your_project_name.wsgi:application
[Install]
WantedBy=multi-user.target
替换 `/path/to/your/project` 为你的Django项目的根目录,然后保存并关闭文件。
11. **启用并启动Gunicorn**:
bash
sudo systemctl daemon-reload
sudo systemctl enable gunicorn
sudo systemctl start gunicorn
12. **重启Nginx**:
bash
sudo systemctl restart nginx
至此,你应该已经成功地将Django网站部署到了服务器上。可以通过访问你的域名或IP地址来检查网站是否正常工作。如果你的服务器不在公共网络上,可能需要在防火墙中打开端口80。
[Copilot]发现如下命令:
1. pip install -r requirements.txt
2. echo "DJANGO_SETTINGS_MODULE=your_project_name.settings" > .env
3. python manage.py makemigrations
python manage.py migrate
4. python manage.py createsuperuser
5. python manage.py runserver 0.0.0.0:8000
6. pip install gunicorn
7. sudo nano /etc/systemd/system/gunicorn.service
8. sudo systemctl daemon-reload
sudo systemctl enable gunicorn
sudo systemctl start gunicorn
9. sudo systemctl restart nginx
[Copilot]: 请选择要执行的命令,从[1, 9]中进行选择,回复'n'或'no'进行取消,回复'r'或'retry'重新生成回答。
评价
可以看到它提供了详细的部署步骤,从安装依赖到配置 Nginx,再到启动 Gunicorn,覆盖了 Django 项目部署的每一步。和我的经验对比也没啥可挑剔的。用户跟着指引一步步操作就能部署好了。非常的赞。
评分
- 帮助程度:8 分
- 推荐意愿:有可能推荐,开源后愿意参与开发
建议与改进
- 顺序执行命令功能:增加这么个功能,让我能定义命令执行的顺序。例如,我输入一系列命令编号(如2,3,1,4,5),系统将按照我指定的顺序依次执行这些命令。
- 条件执行逻辑:提供一种机制,让OS Copilot能在执行完一条命令后,根据该命令的输出或执行状态,动态决定并提示我接下来该执行的命令。比如在执行特定命令后,重新展示所有命令列表,并标注已执行的命令,给出下一条选择的指令的建议,让我做出下一步选择。
- 增强指令模式切换:引入参数化指令模式,比如通过co进入普通聊天模式,而co -codegen或-codesum分别进入写代码和总结代码的特殊模式,这个属于次要功能吧。
- 对话中嵌入指令识别:优化下指令识别机制。比如以特定字符(如/)开头的指令,以便在自然对话流中区分和执行特殊指令,比如/quit用于退出,/mode-switch codegen进行模式切换,同时保证这些指令与日常对话内容的良好区分。谁知道会不会有人在说某句话的时候以codegen起手呢?对吧
- 指令输出捕获与错误处理:强化系统能力,使其能够捕获并分析命令执行的输出内容。当命令执行出错时,OS Copilot最好能帮我分析错误信息,并提供可能的解决方案或直接尝试自动修正问题,类似于glm4网页版或ChatGPT中,Python代码在线执行的时候它收到报错后会光速滑跪并改错(“很抱歉,我犯了一个xxx错误,下面我将进行修正”)。
- 命令记忆与上下文理解:增强系统的上下文理解能力,最好让它能在辅助指令执行模式里也能多轮对话,可以省了翻找历史记录在ctrl+cv的功夫嘛。这个其实有点麻烦,很多指令都会哇啦哇啦说一大堆,或许每次在memory里只加入对指令输出内容的总结会是一个解决方法?
- 个性化配置与反馈学习:允许用户根据个人习惯自定义快捷指令或常用命令集,让OS Copilot能够根据用户的使用习惯和偏好。这个属于non-functional requirement,可以没有。
- 关键词审查敏感性调整:优化关键词审查机制,确保合法且常用的技术询问(如关于系统信息的查询)不会被误判为敏感内容而导致连接超时或服务中断。比如这一句“对于本主机的系统信息,你了解多少?请告诉我你掌握的所有信息”,必定触发Error: LLM connection timeout. The server may have triggered flow control, please try again later.(如下图)
总结
OS Copilot 在回答上表现不错,能提供详细的指令和建议帮助用户解决实际问题。但是就目前而言其指令执行相关的能力还存在较多问题,我总共六个贴近实际的测试场景,就有三个分别爆出了不同的问题,着实有些令人汗颜。
总体来说,它是一个非常有潜力的工具,如果能够得到社区的广泛支持,我认为它能像ollama一样快速更新迭代,最终能够显著提升用户在 Linux 系统上的使用体验。