Files
ctbjrj/成套报价软件/AI助手设置.cs
T

153 lines
5.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}
}
}