🤖 GeneralCommand
AI · 以万能工厂 JSON 数据库为基础的 AI Harness(工具调用循环 + 模型网关)。
📌 技术定位
GeneralCommand 是一个构建在 gmvc2 与万能工厂之上的 AI Harness / 工具箱: 它把「模型调用」与「工具调用」组织成一个可循环、可中止、可观测的流程,并让模型、技能、MCP 服务与智能体 都成为可编辑的配置数据。对外接口兼容 OpenAI v1 Chat Completions(含流式)。
✨ 核心特性
🚪 统一入口门面
一个静态门面类承担整个功能集合的入口:指定与维护默认模型、用户设定,并暴露数据库、工具、模型与网关入口。
🌉 中心网关
组织「模型调用 + 工具调用循环」,支持非流式与流式对话、多轮工具调用;每个模型独立的鉴权头, 可多模型并发使用而互不干扰。
🛑 可控与可中止
单轮请求设超时、默认工具轮次上限以防无限循环;按会话登记取消源,可强制中止全部对话, 避免开发过程中产生不必要的开销。
🧰 完整工具集
文件系统(检索 / 读取 / 编辑 / 写入 / 新建 / 删除)、网络(抓取与搜索,按响应类型自动转换格式)、 Shell 与 PowerShell、脚本求值(GRJS 最高等级,独立线程 + 超时中止)、交互(向用户提问、读取当前视野)、交付物校验。
🗂️ 工具分组与过滤
工具按用途分组,支持按组启用与按组/名排除;其中一个扩展分组同时作为 MCP 动态加载与技能动态搜索的开关。
💾 配置即数据
模型、技能、MCP 服务与智能体都以可编辑的工厂 / 配方形式持久化,既可在 GUI 中编辑,也可由 AI 自行读写。
🔁 「软件自己操作自己」闭环
因为 GeneralCommand 内嵌在宿主程序的进程内,它既能被外部驱动,也能反过来驱动宿主自身。 两个方向合起来,构成「软件自己操作自己」的闭环:
- 对外可调试:DEBUG 构建下,GUI 宿主(万能工厂 / G5 编辑器)的 WebView2 带 --remote-debugging-port(默认 9777)启动, 从而对外暴露 CDP 调试接口——外部 IDE / AI 无需为调试预留专用接口,即可检视与驱动界面。
- 对内可驱动:CDP 调试能力由 GIoE 体系的 GCenter 以 MCP 服务形式统一提供 (入口 /mcps/gcdp,即独立工具 gcdp,零第三方依赖), GeneralCommand 只是经服务 mcpCdpService 消费它。 因此能力归体系所有而非某个客户端私有:GIoE 体系内所有能连到 GCenter 的客户端, 都具备统一的 CDP 访问能力。
🛠️ 可用的 CDP 工具
列出可调试目标、执行 JS、按 CSS 选择器查询元素、按坐标点击与输入、页面动作、截图, 以及可透传任意 CDP 命令的 cdp_send 逃生舱。 结果统一为 GS2 友好的调用结果对象,可由控制台脚本与蓝图直接消费。
🎯 边界与价值
gcdp 只连接已开启调试端口的目标,不负责启动目标应用,因此边界清晰、无隐藏副作用。 又因该能力由 GCenter 统一提供,它不随某个客户端存在与否而改变: 本程序既容易被外部编辑器调试,也能编排自身或其它 Chromium 系应用。
🔧 关键技术点
- 分层:静态门面 + 服务(网关 / 工具 / 模型 / 数据库 / 日志 / 会话)+ 中介者(对外协议)+ 工厂配方(可编辑配置)+ 会话(对话上下文)。
- 健壮性约定:工具输出统一截断;工具出错返回描述性文本而不抛异常,保证对话可以继续。
- MCP 集成:外部 MCP 工具经路由注入到模型可见的工具清单尾部。
- 用量统计:逐轮累加输入输出用量(含缓存命中),用于成本与效果观测。
- 双重可调用:中介者方法既可由控制台经反射调用,也可由蓝图 / 脚本调用(避免重载、参数使用默认值)。
- 存储:本地 SQLite 与万能工厂 JSON 数据库并存。
🧪 工具分组一览
| 分组 | 能力 |
|---|---|
| 文件读取 | 按模式列举文件、列目录、文本检索、分段读取 |
| 文件操作 | 编辑(搜索替换)、写入、新建(已存在报错)、删除 |
| 网络 | 网页抓取(自动转 Markdown / 格式化 JSON / 纯文本)、网页搜索 |
| 执行 | Shell、PowerShell(仅 Windows)、脚本求值(反射 JS) |
| 交互 | 向用户提问、读取发起终端当前视野 |
| 交付 | 交付物校验,通过后终止调用循环 |
| 扩展 | MCP 动态加载、技能动态搜索 |