递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 339|回复: 7
打印 上一主题 下一主题

[AI开发] 用AI做一个本地模型管理器结果做了个啥[开源]

[复制链接]

37

主题

268

帖子

1332

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1332
跳转到指定楼层
楼主
发表于 10 小时前 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 消散孤独 于 2026-10-21 09:40 编辑

用火山视窗可以干啥?我来告诉你!


本来只想做个本地模型管理器:模型太多,想有个地方一眼看清谁多大、谁能跑、谁支持工具调用。


于是有了模型列表、模型详情、模型市场。


然后我想,既然模型都在本机了,为什么不能直接在界面里聊?于是有了对话页。


再然后,某天看着对话框里模型一本正经地输出一段 Lua,我冒出一个不太安分的念头:

「你倒是去跑一下啊。」


后来的事就有点失控了——它真的开始跑代码、读文件、写报告、调用本地程序,甚至拿起放大镜审查了它自己。


这不是产品说明书,是事故现场记录。



一、它不只会写代码,还会把代码跑一遍


我在对话框里说:用 Lua 算 1 到 100 的和,请调用 run_lua 执行脚本,然后把脚本和运行输出一起告诉我。


它没有只丢给我一段代码,而是先弹出一张审批卡,我点「批准」,它才真的执行。


运行输出:5050。不是它编的,是脚本真的跑完、把结果回灌给它的。

后来我又试了 Python:用 run_python 计算 2 的 100 次方,顺便告诉我这台机器有几个 CPU 核心。

审批卡长这样——工具名、目标沙箱、要执行的代码,全给你看:


批准之后:


1267650600228229401496703205376,一个数字不差;44 个逻辑核心,也是真的。

这就是它和「聊天壳」的区别:不是给你一段代码,是执行完再告诉你结果。

二、所谓「技能书」,其实就是一份 Markdown

我没有做花哨的技能商店。技能书就是一份操作手册:

F:\AgentSandbox\

├─ skills\

│  └─ pe-安全体检.md     ← 技能书

├─ tools\

│  └─ pe_audit.py        ← 技能书里引用的工具

└─ target\

   └─ Ollama模型管理器.exe

Agent 启动后,第一步就是自己 read_file 把技能书读进来,然后照着步骤干活:


这条路子意外地好用:换技能不用改代码,换一份 Markdown 就行。

写一份「周报生成技能书」、一份「日志排错技能书」、一份「接口压测技能书」,Agent 就多了几种手艺。

三、让 AI 拿放大镜看自己

这是我觉得最好玩的一次。

我把自己的 exe 复制进沙箱,写了一份《给 exe 做静态安全体检》的技能书,然后对 Agent 说:

先读 skills\pe-安全体检.md,按里面的步骤给 target\Ollama模型管理器.exe 做静态安全体检,最后把结论告诉我。

它读完技能书,列目录确认目标,调用 Python 脚本解析 PE 头,最后给了这么一份结论:


摘几条真实的:

- ASLR:OK

- DEP:OK

- CFG:未启用

- 高熵地址:未启用

- TLS 回调:有,需人工确认

- 敏感 API 命中 5 个:CreateProcessW、GetProcAddress、LoadLibraryA/W、RegSetValueExW

- 启发式评分:85/100

它没发现什么后门,但发现了我没开 CFG。

行吧,被自己写的工具教育了。

必须说清楚:这是启发式静态扫描,不是漏洞证明。它做的是「看特征像不像」,误报漏报都正常。真想深挖,把 dumpbin、IDA、Ghidra 的命令行接进 run_command,让模型自己调度就行——工具是同一套,只是换把更专业的放大镜。

四、本地软件,都能被它「喊」起来

run_command 是个很朴素的能力:在沙箱目录里执行命令。

但配上模型,它就变成了「手」:

- 想跑 Python?python xxx.py

- 想跑 Node?node xxx.js

- 想转个视频?把 ffmpeg 命令丢给它

- 想调自家的小工具?把 exe 放进沙箱

它不需要为每个软件写插件。只要那个软件有命令行,模型就能学着用。

五、8 个工具,够用就好

read_file       读沙箱内文件

write_file      写 / 覆盖文件(自动备份)

search_files    按关键词搜文件

list_dir        列目录

run_command     执行命令(危险命令黑名单)

fetch_url       抓网页正文

run_lua         跑 Lua 5.4(静态内置,断网可用)

run_python      跑 Python 3(调用系统解释器)

没有第 9 个。因为大部分「新能力」,都可以用这 8 个组合出来。

六、给 AI 装手,先给它戴手套

这是我在整个项目里最在意的部分。

- 三级审批:每次确认 / 仅新增自动 / 全部自动

- 沙箱根:文件读写只能在圈内,越界直接拒绝

- 命令黑名单:format、diskpart、bcdedit 这类先拦一遍

- Lua 去牙:直接把 io / os / require / dofile / loadfile 整库移除

- 超时:Lua 30 秒、命令和 Python 60 秒强制中断

- 限流:代码 64KB、输出 8KB / 256KB、回灌上下文 8KB


但我也得诚实:Python 不是沙箱。它只受「审批 + 工作目录」约束,脚本本身仍然能访问系统。这和 run_command 一样,是能力也是风险。别把「全部自动」开给一个你不信任的模型。

七、它是用什么写的

一句话:中文编程 + WebView2 + 一堆踩坑。

- 后端:火山视窗,9 个 wsv 分层继承链,约 1.9 万行

- 前端:原生 HTML/CSS/JS 多文件源码,约 7100 行,300ms 轮询快照

- Lua 5.4.8 静态链接进 exe,没有 DLL、没有运行时依赖

- 最终产物:约 3.9MB 的 exe(界面是 WebView2)

顺手记录两个真 bug:

1. CU8String(文本).GetText() 存成 const char* 会悬空——临时对象在分号处就析构了,Lua 拿到的是野指针,报错信息离谱到怀疑人生。

2. 模型爱写 return sum 而不是 print(sum)——后来把返回值也并进工具输出,世界安静了。

八、所以,它现在长这样

本地模型页,参数、量化、上下文、显存占用一眼看清:


详情页连 Prompt 模板和原始 JSON 都能翻出来:


模型市场,先告诉你本机能不能全速跑:


还能把自己变成 OpenAI 兼容端点,直接喂给 Trae / Cursor / VS Code:


九、开源 1.0 已经打包好了

我把能用到的都塞进了一个包,放在夸克网盘:

游客,如果您要查看本帖隐藏内容请回复

包里有什么:

- 可运行版:exe + 依赖 DLL + 市场仓库,解压即用

- 完整源码:后端 9 个 wsv + 前端 ui\src + C++ 支撑 + 市场仓库

- 火山编译器 + 一键编译 / 前端合成脚本

- AI 开发手册 8 份(环境、语言、架构、状态协议、工具、踩坑、配方)

- 10 张功能截图

注意:包内不含火山 SDK(MSVC + Windows SDK,约 5.3GB)。只运行不需要;想从源码编译,把本机 SDK 放到包根目录的 SDK\ 即可(路径必须是纯英文)。

想一起做的事:

- 工具市场:让工具真正可插拔

- MCP 接入:把外面的世界接进来

- 更多技能书:运维、数据分析、逆向、写小说都行

- 把 CFG 打开(这条是它自己提的)

适合谁:

- 喜欢在本地跑模型、不想把数据发云端的人

- 想给 AI 装手、但又怕它乱来的人

- 对中文编程好奇、想看看能撑到什么程度的人

- 单纯觉得「让 AI 审自己」很好玩的人

十、尾声

所以它到底是什么?

一个本地模型管理器,误打误撞长成了能给 AI 装手的小工作台。

能写代码,也能把代码跑一遍;

能读技能书,也能照着技能书干活;

能调用本地软件,也能拿起放大镜看看自己安不安全。

如果你也觉得这事儿有意思,欢迎一起来添砖加瓦。

毕竟,让 AI 自己审自己这种事,一个人玩有点寂寞。

10-接入指南.png (200.37 KB, 下载次数: 1)

10-接入指南.png

03-模型详情.png (265.98 KB, 下载次数: 1)

03-模型详情.png

02-模型市场.png (167.7 KB, 下载次数: 1)

02-模型市场.png

01-本地模型.png (184.3 KB, 下载次数: 4)

01-本地模型.png

09-对话跑Python.png (117.86 KB, 下载次数: 1)

09-对话跑Python.png

08-工具审批.png (124.31 KB, 下载次数: 1)

08-工具审批.png

07-对话设置.png (173.65 KB, 下载次数: 1)

07-对话设置.png

06-对话跑Lua.png (111.78 KB, 下载次数: 1)

06-对话跑Lua.png

05-Agent体检结果.png (131.51 KB, 下载次数: 1)

05-Agent体检结果.png

04-Agent执行中.png (118.42 KB, 下载次数: 1)

04-Agent执行中.png

03-模型详情.png (265.98 KB, 下载次数: 1)

03-模型详情.png

02-模型市场.png (167.7 KB, 下载次数: 1)

02-模型市场.png

01-本地模型.png (184.3 KB, 下载次数: 1)

01-本地模型.png

09-对话跑Python.png (117.86 KB, 下载次数: 1)

09-对话跑Python.png

08-工具审批.png (124.31 KB, 下载次数: 1)

08-工具审批.png

07-对话设置.png (173.65 KB, 下载次数: 1)

07-对话设置.png

06-对话跑Lua.png (111.78 KB, 下载次数: 1)

06-对话跑Lua.png

05-Agent体检结果.png (131.51 KB, 下载次数: 4)

05-Agent体检结果.png

04-Agent执行中.png (118.42 KB, 下载次数: 1)

04-Agent执行中.png
回复

使用道具 举报

3

主题

131

帖子

2086

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
2086
8#
发表于 1 小时前 | 只看该作者
安卓和服务器可以吗?
回复

使用道具 举报

3

主题

131

帖子

2086

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
2086
7#
发表于 1 小时前 | 只看该作者
谢谢分享
回复

使用道具 举报

10

主题

180

帖子

5624

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
5624
6#
发表于 2 小时前 | 只看该作者
666666666666666666666
回复

使用道具 举报

18

主题

871

帖子

4255

积分

金牌会员

睡觉睡觉,头发重要

Rank: 9Rank: 9Rank: 9

积分
4255
5#
发表于 3 小时前 | 只看该作者
牛逼。token为王
回复

使用道具 举报

3

主题

227

帖子

3957

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
3957
地板
发表于 3 小时前 | 只看该作者
谢谢分享
回复

使用道具 举报

25

主题

190

帖子

1828

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1828
板凳
发表于 3 小时前 | 只看该作者
大佬,用的是什么硬件配置?
回复

使用道具 举报

37

主题

268

帖子

1332

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1332
沙发
 楼主| 发表于 9 小时前 | 只看该作者
- 第三方头文件(httplib、yyjson、llama.cpp/ggml)31,855 行,不计入自写
- 市场仓库里的技能书与工具脚本(Markdown / Python / Lua),未统计
所以对外说「约 3 万行自写源码」是准确的(后端 1.9 万 + 前端 7 千 + C++ 3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2026-10-21 16:04 , Processed in 0.096120 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表