技术手册 v2.0.1

AI辅助的
代码编辑器

一款面向本地优先开发的三面板专业工作站,具备 AI 编排能力。以数据所有权、模块化架构和自主智能体为核心。

阅读文档
申请测试会议

1. 概览

XteVision Coder 是什么,为谁而设?

1.1 XteVision Coder 是什么?

XteVision Coder 是一款 AI 辅助的代码编辑器和网页端 IDE,面向希望借助集成 AI 支持来创建、编辑和管理项目的开发者。它提供专业的三面板工作站布局,包含文件浏览器、代码编辑器、AI 聊天、实时预览和终端访问——全部在本地运行,并支持多种 AI 模型。

1.2 核心能力

  • 多根工作区管理,支持拖放式文件操作
  • 专业代码编辑,由 Monaco Editor(与 VS Code 相同的引擎)驱动
  • AI 辅助编程,支持流式响应和自主智能体模式
  • 持久化的认证会话,具备独立登录/注册和基于 PostgreSQL 的会话存储
  • 保存的 AI 对话,带有标题、重命名/搜索/收藏控制,以及自动恢复上一次会话
  • 工作区状态恢复,可恢复活动工作区根目录、已开标签页、活动标签页和未保存的编辑器缓冲区
  • 实时预览,针对 HTML/CSS/JS 项目采用沙箱化的 iframe 渲染
  • 集成终端,带命令白名单以保证安全执行
  • 多模型支持,覆盖 MLX、Ollama、LMStudio、GitHub Copilot 和 OpenRouter
  • 智能代码合并,基于 diff 的编辑应用和可视化 diff 预览

1.3 目标用户

  • 使用本地 AI 模型的开发者
  • 需要轻量级自托管 IDE 的团队
  • 借助 AI 辅助来编程教学的教师
  • 希望获得浏览器中类 VS Code 体验的任何用户

2. 系统架构

高层设计与通信流程

2.1 高层架构

┌──────────────────────────────────────────────────────────┐
│                      浏览器 (客户端)                     │
│  ┌────────────────────────────────────────────────────┐  │
│  │               前端 (原生 JavaScript)                 │  │
│  │  ┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐       │  │
│  │  │ 文件   │ │ Monaco │ │  AI  │ │ 实时   │       │  │
│  │  │浏览器 │ │ 编辑器 │ │ 聊天 │ │预览 │       │  │
│  │  └────────┘ └────────┘ └──────┘ └────────┘       │  │
│  └────────────────────────────────────────────────────┘  │
└──────────────────────┬───────────────────────────────────┘
                       │ HTTP/REST API (localhost:5004)
┌──────────────────────┴───────────────────────────────────┐
│                  Python 后端服务器                    │
│  ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ ┌──────────┐ │
│  │ 文件 I/O │ │ Shell  │ │AI 代理│ │工作区 │ │认证/聊天 │ │
│  └──────────┘ └────────┘ └────────┘ └──────────┘ └──────────┘ │
└──────────────────────┬───────────────────────────────────┘
         ┌───────────┬───────────┬───────────┐
         │           │           │           │
     ┌─────▼──────┐ ┌──▼────────┐ ┌▼──────────┐
     │  文件      │ │PostgreSQL │ │ AI 模型  │
     │  系统      │ │用户 +     │ │  服务器   │
     │            │ │会话       │ │           │
     └────────────┘ └───────────┘ └───────────┘

2.2 通信流程

  1. 前端 → 后端:针对文件操作、shell 命令和 AI 代理的 RESTful HTTP 请求
  2. 后端 → AI 模型:向本地或远程模型服务器发起 OpenAI 兼容 API 调用
  3. 后端 → 前端:通过 SSE 返回包含文件内容、执行结果或流式 AI 响应的 JSON 响应
  4. 前端 → 用户:UI 更新、编辑器变更、聊天响应和终端输出

2.3 部署模型

XteVision Coder 面向 本地优先开发 设计:

  • 完全运行在用户机器上
  • 无云依赖(除可选的 AI 模型代理外)
  • 后端托管静态前端文件
  • 所有数据保留在本地文件系统上

3. 技术栈

前端、后端与 AI 集成技术

3.1 前端技术

技术版本用途
JavaScript (ES6+)ES2020+应用逻辑
HTML5-语义化结构
CSS3-样式与布局
Monaco Editor0.52.2代码编辑
Marked.js-Markdown 解析
Prism.js-语法高亮
html2pdf.js-PDF 生成
FontAwesome免费图标库

3.2 后端技术

技术版本用途
Python3.8+HTTP 服务器
http.server标准库基础 HTTP 服务器
socketserver标准库TCP 线程
subprocess标准库shell 执行
PostgreSQL12+用户账号、认证会话与聊天会话
psycopg22.9+PostgreSQL 连接
argon2-cffi23+密码哈希
PyJWT2.8+签名版 Prodigy 交接令牌

3.3 浏览器支持

浏览器支持备注
Chrome/Edge✅ 完整File System Access API
Firefox⚠️ 部分基于服务器 I/O
Safari⚠️ 部分受限的文件访问

4. 安装与设置

几分钟内让 XteVision Coder 运行起来

4.1 前置条件

  • Python 3.8+(用于后端服务器)
  • 现代浏览器(推荐 Chrome/Edge)
  • AI 模型服务器(可选,用于 AI 功能)

4.2 安装步骤

步骤 1:下载

cd /path/to/mlx_coder

步骤 2:安装 Monaco Editor(可选)

bash download-monaco.sh

步骤 3:配置 AI 服务器(可选)

mlx_lm.server --model <your-model-path> --port 5010

步骤 4:安装 Python 依赖

pip3 install -r requirements.txt

步骤 5:启动 XteVision Coder

# 默认配置
python3 server.py

# 自定义端口
PORT=8080 python3 server.py

# 使用基于 PostgreSQL 的认证
XTEVISION_DB_HOST=192.168.1.4 \
XTEVISION_DB_PORT=5432 \
XTEVISION_DB_NAME=codebase \
XTEVISION_DB_USER=postgres \
XTEVISION_DB_PASSWORD=your-db-password \
python3 server.py

步骤 6:访问应用

http://localhost:5004

4.3 首次设置

  1. 创建账号:使用登录/注册浮层创建首个独立的 Coder 用户
  2. 打开工作区:点击“打开文件夹”选择项目目录
  3. 配置 AI:打开设置(齿轮图标)并保存你偏好的 AI 后端
  4. 开始会话:使用会话工具栏创建、命名和收藏持久化的 AI 对话

4.4 认证设置

XteVision Coder 现在基于 cookie 认证,并由 PostgreSQL 支撑。每个用户只能看到自己的已保存聊天会话和工作区恢复数据。

所需数据库:后端期望一个 PostgreSQL 数据库,例如 codebase。在启动时,当配置好的数据库可达时,Coder 会自动创建并迁移 coder 模式。
  • XTEVISION_AUTH_COOKIE_NAME:会话 cookie 名称,默认为 xtevision_session
  • XTEVISION_AUTH_SESSION_DAYS:cookie 有效期(天数),默认为 14
  • XTEVISION_AUTH_ALLOW_REGISTRATION:启用/禁用本地注册
  • XTEVISION_PRODIGY_SHARED_SECRET:可选的共享密钥,用于将来可信的 Prodigy 启动交接

4.5 OpenRouter 设置

将 OpenRouter 作为 AI 后端使用:

  1. 在右侧边栏打开 设置
  2. AI 服务器 下拉框中选择 OpenRouter
  3. 将 API URL 设置为 https://openrouter.ai/api/v1/chat/completions
  4. 选择一个 OpenRouter 模型 ID,例如 qwen/qwen3.6-plus-preview

当选中 OpenRouter 时,XteVision Coder 会附加以下请求头:

  • Authorization: Bearer <OPENROUTER_API_KEY>
  • HTTP-Referer: <配置的网站 URL>
  • X-OpenRouter-Title: <配置的网站标题>

5. 应用结构

目录布局与模块组织

5.1 目录布局

mlx_coder/
├── index.html                      # 主 HTML 入口
├── style.css                       # 应用样式
├── script.js                       # Bootstrap 与模块加载器
├── server.py                       # Python HTTP 后端
├── .mlx.json                       # 项目状态
├── js/
│   ├── modules/                    # 前端 ES6 模块
│   │   ├── state.js                # 全局状态管理
│   │   ├── config.js               # AI 配置与各供应商特定设置
│   │   ├── utils.js                # 工具函数
│   │   ├── filesystem.js           # 文件 I/O 与工作区
│   │   ├── editor.js               # Monaco Editor 初始化
│   │   ├── chat.js                 # AI 聊天与流式传输
│   │   ├── agent.js                # 智能体循环与函数调用
│   │   ├── auth.js                 # 登录/注册/登出引导
│   │   ├── sessionPersistence.js   # 聊天会话自动保存与恢复
│   │   ├── tools.js                # 工具定义
│   │   ├── diff.js                 # 基于 diff 的编辑
│   │   ├── preview.js              # 实时预览与 PDF 导出
│   │   └── ui.js                   # UI 渲染与交互
│   ├── marked.min.js               # Markdown 解析器
│   ├── prism.min.js                # 语法高亮器
│   └── html2pdf.bundle.min.js      # PDF 生成
├── fontawesome-free-web/           # FontAwesome 图标
├── requirements.txt                # Python 认证/数据库依赖
├── projects/                       # 用户项目文件
└── logs/app.log                    # 应用日志

5.2 状态管理

export const state = {
    editor: null,               // Monaco Editor 实例
    files: {},                  // 文件内容缓存
    openTabs: [],               // 已开编辑器标签页
    activeTabPath: null,        // 活动标签页路径
    tabDirty: {},               // 各标签页的未保存状态
    messageHistory: [],         // 当前聊天消息历史
    chatSessionId: null,        // 当前已保存聊天会话 ID
    chatSessions: [],           // 可用的已保存聊天会话
    workspaceFolders: new Map() // 已打开的工作区文件夹
};

6. 核心功能

文件浏览器、代码编辑器、AI 聊天、预览和终端

文件浏览器

多根工作区、拖放式操作、上下文菜单、路径遍历保护,以及三种工作区模式(原生、服务器、回退)。

代码编辑器

Monaco Editor,支持 20+ 语言、多标签页编辑、IntelliSense、迷你地图、查找/替换、多光标和代码折叠。

AI 聊天

流式与智能体模式、SSE 响应、7 个工具、@-提及、代码块操作(复制、智能合并、插入、创建、替换)以及可视化 diff 预览。

保存的会话

按用户持久化的 AI 会话,支持重命名、搜索、收藏、自动保存,以及聊天历史和/或工作区/编辑器状态的恢复。

实时预览

在沙箱化 iframe 中渲染 HTML、Markdown 转 HTML、YAML 格式化,以及通过 html2pdf 导出 PDF。

终端/Shell

LOG 和 SHELL 标签页、100 条命令历史、40+ 命令白名单、被拦截模式的纵深防御。

认证

独立浏览器登录、安全的会话 cookie、Argon2 哈希密码,以及将来的签名版 Prodigy 启动支持。

智能体模式详情

属性
最大迭代次数每任务 15 步
超时最长 1 小时
重试逻辑3 次重试,指数退避
可用工具read_file, write_file, edit_file, list_files, search_files, run_shell, create_directory

7. 前端架构

核心模块与事件系统

7.1 核心模块

state.js — 全局状态管理器

集中式状态,通过 Proxy 进行惰性 DOM 缓存,并带拼写错误检测。

config.js — 配置管理器

AI 服务器预设、供应商特定请求头、OpenRouter 头注入、localStorage 持久化以及连接健康检查。

utils.js — 工具函数

公共辅助函数:escapeHtml、logToTerminal、safeFetchJson、cleanContent。

filesystem.js — 文件系统操作

文件 I/O(原生 + 服务器)、工作区管理、拖放、IndexedDB、AI 辅助。

editor.js — Monaco Editor 管理器

Monaco 初始化、多标签页管理、保存操作、未保存状态跟踪。

chat.js — AI 聊天管理器

消息处理、供应商特定请求头、SSE 流式传输、智能体协调、代码块操作、@-提及以及会话感知的消息历史更新。

agent.js — 智能体引擎

多步执行、供应商特定请求头、函数调用、工具解析、重试逻辑、Copilot 协议。

auth.js — 认证引导

登录/注册/登出流程、启动门控,以及为受保护的 IDE 外壳更新认证 HUD。

sessionPersistence.js — 会话管理器

自动保存聊天会话、恢复最新会话,并重新填充工作区根、标签页、未保存缓冲区与收藏。

tools.js — 工具定义

工具模式、执行逻辑、针对 7 个工具的参数验证。

7.2 事件系统

// 用于设置变更的自定义事件
window.dispatchEvent(new CustomEvent('xtevision-settings-changed'));

// 监听事件
window.addEventListener('xtevision-settings-changed', () => {
  // 对设置变更做出反应
});

7.3 错误处理

// 异步初始化的全局错误边界
try {
  await checkServerAvailability();
  await connectToServerWorkspace();
} catch (error) {
  logToTerminal(`初始化错误: ${error.message}`, 'error');
}

8. 后端架构

Python 服务器配置与请求处理

8.1 服务器配置

PORT = int(os.environ.get('PORT', 5004))
PROJECTS_DIR = os.path.join(os.getcwd(), 'projects')
AI_PROXY_TIMEOUT_SEC = 3660
AUTH_COOKIE_NAME = os.environ.get('XTEVISION_AUTH_COOKIE_NAME', 'xtevision_session')
AUTH_DB_HOST = os.environ.get('XTEVISION_DB_HOST', '192.168.1.4')
AUTH_DB_NAME = os.environ.get('XTEVISION_DB_NAME', 'codebase')
PRODIGY_JWT_SECRET = os.environ.get('XTEVISION_PRODIGY_SHARED_SECRET', '')

8.2 线程安全

_current_dir_lock = threading.Lock()
_current_dir = os.getcwd()

def get_current_dir():
    with _current_dir_lock:
        return _current_dir

8.3 认证与会话存储

后端会初始化一个包含以下内容的 coder PostgreSQL 模式:

  • users:用于本地和将来 Prodigy 关联的身份
  • auth_sessions:用于安全的会话 cookie 登录状态
  • auth_launch_tokens:一次性签名启动交接
  • chat_sessions:用于保存的聊天、标题、收藏和 UI 恢复负载

8.4 请求处理器

class CustomHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self): # 处理 GET
    def do_POST(self): # 处理 POST
    def do_OPTIONS(self): # CORS 预检
    def end_headers(self): # 添加 CORS 头

8.5 AI 代理行为

后端提供两个 AI 相关的代理端点:

  • /api/proxy:用于模型发现等轻量 JSON 抓取
  • /api/ai-proxy:用于向 OpenAI 兼容的聊天端点转发完整请求

对于 OpenRouter,两个端点都会转发供应商请求头,并在代理白名单中允许 openrouter.ai,从而让经过后端回退路径的认证模型发现和聊天补全正常工作。

9. AI 集成

支持的服务器、协议与函数调用

9.1 支持的 AI 服务器

服务器默认 URL端口备注
MLXhttp://localhost5010Apple Silicon 优化
Ollamahttp://localhost11434流行的本地模型
LMStudiohttp://localhost1234基于 GUI 的模型服务器
GitHub Copilothttp://localhost5015通过代理
OpenRouterhttps://openrouter.ai443云 API 网关
自定义用户定义任意OpenAI 兼容 API

9.2 OpenAI 兼容协议

端点: /v1/chat/completions

{
  "model": "your-model-name",
  "messages": [
    {"role": "system", "content": "你是一个编程助手..."},
    {"role": "user", "content": "写一个函数来..."}
  ],
  "stream": true,
  "tools": [{"type":"function","function":{"name":"read_file","parameters":{"file_path":"string"}}}]
}

9.3 流式响应格式

服务器推送事件(SSE):

data: {"choices": [{"delta": {"content": "你好"}}]}
data: {"choices": [{"delta": {"content": "世界"}}]}
data: [DONE]

9.4 函数调用

工具解析(3 种格式):

  1. Gemma 风格call:read_file{"file_path": "test.js"}
  2. 结构化 JSON{"name": "read_file", "arguments": {...}}
  3. 标记格式

9.5 Copilot 规划器协议

当使用 GitHub Copilot 作为后端时,智能体使用纯 JSON 响应格式进行结构化工具调用,并遵循规划器-执行模式。

10. 安全模型

五层安全实现

10.1 Shell 命令白名单

40+ 条批准命令:ls、cat、echo、pwd、mkdir、touch、cp、mv、git、npm、python、node、curl 等。

被拦截的模式(纵深防御):

  • rm -rf / 及其变体
  • sudo 命令
  • chmod 777
  • 管道到 shell:curl ... | sh
  • fork 炸弹和文件系统工具

10.2 路径遍历保护

使用 os.path.commonpath() + os.path.realpath() 防止基于符号链接的路径遍历攻击。所有文件操作都会被验证为保留在工作区根目录内。

10.3 SSRF 保护

AI 代理仅限受允许的域名:

  • localhost127.0.0.10.0.0.0
  • 192.168.10.3(用户本地网络的 AI 服务器)
  • openrouter.ai(云端供应商端点)

防止利用代理访问内部网络服务。

10.4 CORS 加固

用仅 localhost 来源替换了通配符 CORS:

  • http://localhost:5004
  • http://127.0.0.1:5004
  • http://localhost:8080

防止恶意网站向本地服务器发起请求。

10.5 认证

XteVision Coder 现在通过独立浏览器认证来保护工作区:

  • Argon2 哈希的本地密码存储在 PostgreSQL 中
  • 服务器签发的会话 cookie,有效期可配置
  • 在后端强制执行按用户聊天/会话隔离
  • 将来可通过签名的一次性 JWT 进行 Prodigy 启动交接

10.6 数据丢失防护

  • beforeunload 警告:在关闭含有未保存更改的标签页前警告用户
  • 设置保存无需重载:派发自定义事件而非页面重载
  • 未保存状态跟踪:Monaco 版本 ID 监控编辑
  • 会话自动保存:聊天历史、收藏、工作区根和未保存缓冲区按用户持久化

11. API 参考

完整的 REST API 端点

11.1 文件操作

POST /api/write-file

请求:
{
  "path": "projects/myapp/src/index.js",
  "content": "console.log('你好');"
}

响应:
{"success": true, "message": "文件写入成功"}

POST /api/read-file

请求:
{"path": "projects/myapp/package.json"}

响应:
{"content": "{...}", "success": true}

POST /api/create-folder

请求:
{"path": "projects/myapp/src/components"}

响应:
{"success": true, "message": "文件夹已创建"}

GET /api/list-files

响应:
{"folders": ["src", "public"], "files": ["index.html", "package.json"]}

POST /api/delete-item

请求:
{"path": "projects/myapp/old-file.js"}

响应:
{"success": true}

POST /api/rename-item

请求:
{"old_path": "projects/myapp/old-name.js", "new_path": "projects/myapp/new-name.js"}

响应:
{"success": true}

11.2 Shell 执行

POST /shell

请求:
{"command": "ls -la"}

响应:
{"output": "总共 48\ndrwxr-xr-x ...", "success": true}

11.3 AI 代理

POST /api/proxy

将请求转发到配置的 AI 服务器,用于模型发现和轻量级操作。

POST /api/ai-proxy

向配置的 AI 后端转发完整的聊天补全请求,并为 OpenRouter 集成携带供应商特定的请求头。

11.4 认证

GET /auth/me

返回认证用户和后端可用状态,用于登录引导。

POST /auth/register

创建新的独立 Coder 用户,包含用户名、可选邮箱和密码。

POST /auth/login

认证本地用户并返回会话 cookie。

POST /auth/logout

撤销当前认证会话并清除 cookie。

11.5 聊天会话

GET /api/chat-sessions

列出当前用户的已保存聊天会话,按收藏状态和最近活动排序。

GET /api/chat-sessions/current

返回用于登录恢复的最新活跃聊天会话。

POST /api/chat-sessions

创建新的聊天会话,包含标题、消息、收藏状态和序列化的 UI 状态。

POST /api/chat-sessions/<id>/save

更新现有会话,包含新消息、重命名标题、收藏标志、工作区根、已开标签页和未保存缓冲区内容。

POST /api/chat-sessions/<id>/delete

删除认证用户的选中聊天会话。

11.6 Diff 编辑

POST /api/edit-file

请求:
{
  "path": "projects/myapp/src/index.js",
  "edits": [{
    "search": "console.log('old')",
    "replace": "console.log('new')"
  }]
}

响应:
{"success": true, "message": "文件已更新"}

12. 配置

环境变量与设置

12.1 环境变量

变量默认值描述
PORT5004后端服务器端口
XTEVISION_AUTH_COOKIE_NAMExtevision_session会话 cookie 名称
XTEVISION_AUTH_SESSION_DAYS14cookie/会话有效期(天数)
XTEVISION_AUTH_SECURE_COOKIEfalse在 HTTPS 之后将 cookie 标记为安全
XTEVISION_AUTH_ALLOW_REGISTRATIONtrue启用或禁用本地注册
XTEVISION_DB_HOST192.168.1.4PostgreSQL 主机
XTEVISION_DB_PORT5432PostgreSQL 端口
XTEVISION_DB_NAMEcodebasePostgreSQL 数据库名
XTEVISION_DB_USERpostgresPostgreSQL 用户名
XTEVISION_DB_PASSWORDPostgreSQL 密码
XTEVISION_PRODIGY_SHARED_SECRET可选的签名版 Prodigy 交接密钥

12.2 localStorage 设置

设置类型描述
xtevision_ai_serverstring选定的 AI 服务器预设
xtevision_ai_urlstringAI 服务器 API URL
xtevision_ai_modelstring模型名称/ID
openrouter_api_keystringOpenRouter API Key
openrouter_site_urlstringOpenRouter HTTP-Referer 请求头的值
openrouter_site_titlestringOpenRouter X-OpenRouter-Title 请求头的值
xtevision_last_filestring最近打开的文件路径

12.3 基于数据库的用户数据

以下数据不再仅存储在 localStorage 中:

  • 用户账号和活跃认证会话
  • 保存的聊天会话和重命名标题
  • 收藏状态和会话活动时间戳
  • 工作区恢复元数据、已开标签页和未保存编辑器缓冲区

12.4 AI 服务器预设

预设URL端口
MLXhttp://localhost5010
Ollamahttp://localhost11434
LMStudiohttp://localhost1234
OpenRouterhttps://openrouter.ai443
Copilothttp://localhost5015

13. 开发指南

模块创建与调试

13.1 新增模块

// 1. 创建 js/modules/mymodule.js
import { state, elements } from './state.js';
import { logToTerminal } from './utils.js';

export function initMyModule() {
  logToTerminal('MyModule 已初始化', 'info');
}

// 2. 在 script.js 中导入
import { initMyModule } from './js/modules/mymodule.js';

// 3. 在初始化期间调用
initMyModule();

13.2 调试

  • 启用调试日志localStorage.setItem('debug', 'true')
  • Chrome DevTools:对 ES 模块提供完整的源映射支持
  • 网络标签页:监控 API 请求和响应
  • Console:所有错误都带上下文记录

13.3 测试 AI 集成

// 从 Console 测试 AI 连接
const response = await fetch('http://localhost:5004/api/proxy', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    model: 'test-model',
    messages: [{role: 'user', content: '你好'}]
  })
});
console.log(await response.json());

13.4 缓存破坏

所有 JS 模块都使用 ?v=APP_VERSION 查询参数来进行缓存破坏。在做出更改后,请更新 config.js 中的 APP_VERSION

14. 故障排除

常见问题与解决方案

14.1 Monaco 编辑器未加载

  • 问题:编辑器显示错误遮罩或空白
  • 解决方案:运行 bash download-monaco.sh 或检查网络是否能访问 CDN

14.2 AI 连接失败

  • 问题:LOG 终端中显示“连接被拒绝”错误
  • 解决方案:确保 AI 模型服务器在配置好的端口上运行,并从 AI 后端设置弹窗中再次保存供应商设置

14.3 认证后端不可用

  • 问题:登录/注册浮层报告认证后端不可用
  • 解决方案:确认 PostgreSQL 正在运行、配置好的 codebase 数据库存在,且 XTEVISION_DB_* 变量与服务器配置一致

14.4 文件保存失败

  • 问题:Ctrl+S 显示错误
  • 解决方案:确认后端服务器正在运行。检查浏览器 Console 是否有 CORS 错误

14.5 Shell 命令被拦截

  • 问题:“命令不被允许”错误
  • 解决方案:命令不在白名单中。如有需要,添加到 server.py 中的 ALLOWED_SHELL_COMMANDS

14.6 混合内容错误

  • 问题:HTTPS 页面拦截 HTTP 请求
  • 解决方案:通过 http://localhost:5004 访问(无 HTTPS)。使用 shouldForceBackendProxy() 检测

14.7 Safari 文件访问受限

  • 问题:只能访问所选文件
  • 解决方案:Safari 不支持 File System Access API。使用基于服务器的模式或切换到 Chrome/Edge

14.8 智能体模式无响应

  • 问题:智能体循环挂起或超时
  • 解决方案:确认 AI 模型支持函数调用。在 AI_PROXY_TIMEOUT_SEC 中增加超时时间