基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace 成套报价软件
|
||||
{
|
||||
/// <summary>AI助手设置:引擎状态/端口/令牌/开机自启(纯文件操作与 HTTP 探测,
|
||||
/// 引擎启停用 ai助手 目录里的 启动引擎.cmd/停止引擎.cmd)。模型与密钥在内嵌面板里配置。</summary>
|
||||
public partial class AI助手设置 : Form
|
||||
{
|
||||
/// <summary>用系统默认程序打开 URL(ShellExecute,不经 Process.Start)。</summary>
|
||||
[DllImport("shell32.dll", CharSet = CharSet.Unicode)]
|
||||
private static extern int ShellExecuteW(IntPtr hWnd, string verb, string file, string parameters, string directory, int showCmd);
|
||||
|
||||
public AI助手设置()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.btn刷新.Click += btn刷新_Click;
|
||||
this.btn复制令牌.Click += btn复制令牌_Click;
|
||||
this.btn保存.Click += btn保存_Click;
|
||||
this.btn复制引擎目录.Click += btn复制引擎目录_Click;
|
||||
this.btn复制状态目录.Click += btn复制状态目录_Click;
|
||||
this.btn查看日志.Click += btn查看日志_Click;
|
||||
this.btn打开面板.Click += btn打开面板_Click;
|
||||
this.Load += AI助手设置_Load;
|
||||
}
|
||||
|
||||
private void AI助手设置_Load(object sender, EventArgs e)
|
||||
{
|
||||
刷新界面();
|
||||
}
|
||||
|
||||
private void 刷新界面()
|
||||
{
|
||||
bool 就绪 = OpenClawHost.网关就绪();
|
||||
txt状态.Text = 就绪
|
||||
? "运行中(端口 " + OpenClawHost.端口 + ")"
|
||||
: (OpenClawHost.运行时已安装()
|
||||
? "未启动 —— 请先双击 ai助手\\启动引擎.cmd(或重开软件自动拉起)"
|
||||
: "未安装引擎运行时(ai助手\\zcode 目录缺失)");
|
||||
if (OpenClawHost.端口 >= num端口.Minimum && OpenClawHost.端口 <= num端口.Maximum)
|
||||
num端口.Value = OpenClawHost.端口;
|
||||
txt令牌.Text = OpenClawHost.令牌;
|
||||
chk自启.Checked = OpenClawHost.自启已登记();
|
||||
}
|
||||
|
||||
private void btn刷新_Click(object sender, EventArgs e)
|
||||
{
|
||||
刷新界面();
|
||||
}
|
||||
|
||||
private void btn保存_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
OpenClawHost.保存端口((int)num端口.Value);
|
||||
OpenClawHost.设置自启(chk自启.Checked);
|
||||
MessageBox.Show(this, "已保存。端口修改需重启引擎(停止引擎.cmd → 启动引擎.cmd)后生效。",
|
||||
"AI助手", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
刷新界面();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, "保存失败:" + ex.Message, "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
private void btn复制令牌_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(txt令牌.Text ?? "");
|
||||
MessageBox.Show(this, "令牌已复制到剪贴板。", "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex) { OpenClawHost.写日志("[AI助手设置] 复制令牌到剪贴板失败: " + ex.Message); }
|
||||
}
|
||||
|
||||
/// <summary>在系统默认浏览器中打开 AI助手面板(ZCode Web,自动带端口与令牌)。</summary>
|
||||
private void btn打开面板_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!OpenClawHost.健康检查(OpenClawHost.端口))
|
||||
{
|
||||
MessageBox.Show(this, "AI 引擎未运行。请先双击软件目录的「成套报价软件启动器.cmd」"
|
||||
+ "(或 ai助手\\启动引擎.cmd)后再打开面板。", "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
string url = "http://127.0.0.1:" + OpenClawHost.端口 + "/#token="
|
||||
+ Uri.EscapeDataString(OpenClawHost.令牌);
|
||||
ShellExecuteW(IntPtr.Zero, "open", url, null, null, 5); // 5=SW_SHOW
|
||||
OpenClawHost.写日志("[AI助手] 已在浏览器打开面板 http://127.0.0.1:" + OpenClawHost.端口);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, "打开失败:" + ex.Message, "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
private void btn复制引擎目录_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(OpenClawHost.引擎目录());
|
||||
MessageBox.Show(this, "引擎目录路径已复制,粘贴到资源管理器地址栏即可打开。", "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex) { OpenClawHost.写日志("[AI助手设置] 复制引擎目录失败: " + ex.Message); }
|
||||
}
|
||||
|
||||
private void btn复制状态目录_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(OpenClawHost.状态目录());
|
||||
MessageBox.Show(this, "状态目录路径已复制,粘贴到资源管理器地址栏即可打开。", "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex) { OpenClawHost.写日志("[AI助手设置] 复制状态目录失败: " + ex.Message); }
|
||||
}
|
||||
|
||||
private void btn查看日志_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string f = OpenClawHost.网关日志路径();
|
||||
string 内容 = "(暂无日志)";
|
||||
if (System.IO.File.Exists(f))
|
||||
{
|
||||
string[] 行 = System.IO.File.ReadAllLines(f, Encoding.UTF8);
|
||||
int 起 = Math.Max(0, 行.Length - 40);
|
||||
var sb = new StringBuilder();
|
||||
for (int i = 起; i < 行.Length; i++) sb.AppendLine(行[i]);
|
||||
内容 = sb.ToString();
|
||||
}
|
||||
MessageBox.Show(this, 内容, "AI助手日志(末 40 行)",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, "读取日志失败:" + ex.Message, "AI助手",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user