81366ca2730baf6a3594709e0c1cd18382c7bb15
用户报「卡在步骤 3」,实际断在第 5 步 structure:请求发出 46ms 后浏览器 连接断开,Gin 的 Request.Context() 被取消,上游回 499,后端包成 400。 服务端与前端应用层都没有任何主动取消(全仓 grep cancel/AbortController 零命中),是一次客户端断连。 断连本身无法在代码里杜绝,但它暴露了三个真 bug: 1. 报错文案说「第 1 步」,右栏说第 5 步 —— 尾部两步按自己这一轮从 1 数。 新增 STEP_NUMBERS,报错与右栏共用同一份编号(这就是「步骤 3」这个 说法的来源:用户看到的第一个数字就对不上)。 2. 断连后界面上没有任何续跑入口,任务永远停在 4/6(右栏六步是只读的)。 失败的那条助手消息上挂「🔁 重试」。 3. 无脑重跑会在同一任务里留第二份「结构化纪要」,两份差别用户看不出来。 resumeAudioSkill 收 skipSteps,按 task_run.action_key 判「跑过没有」 —— 不用产物类型判,document/checklist 别的技能也在用。 另修:待确认那条消息改用 reactive()。messages 是 ref([]),push 进去的对象 模板读时才被代理,而代码改的是那个变量,改普通对象不触发重渲染, 用户会一直看到「正在继续整理...」。 验证(临时任务 100,已删,先备份 db):CDP setBlockedURLs 掐掉 structure 复现同形断连 → 消息挂出重试按钮,文案与右栏同为第 5 步;后端补跑一次 structure(模拟响应丢失但已落库)→ 点重试只跑 minutes,落库 document 1 份、 checklist 1 份。反证:再手工跑一次 structure,同名产物立刻变 2 份。 详见 bugs_and_errors.md E14。 E15(未修,记录在案):DeleteMyTask 只删 task_record,run 与 artifact 全成 孤儿,产物 content_text 是完整逐字稿。删除语义务必先定硬删还是软删。 Co-Authored-By: Claude Code <noreply@anthropic.com>
EAI AgentPlatform
智能 Agent 平台 — 基于 Go + Vue 3 构建。
快速启动
# 开发环境启动(前端 10231 + 后端 10232)
./start_dev_10231_10232.sh
端口说明
| 端口 | 服务 | 说明 |
|---|---|---|
| 10231 | 前端 Vite 开发服务器 | 本地开发,自动代理 API 请求 |
| 10232 | 后端 Go API 服务 | 本地开发端口 |
| 8080 | 外部 LLM 服务 (llamacpp) | AI 对话 API 入口 |
| 8081 | 外部 Embed 服务 (llamacpp) | 向量嵌入服务 |
| 11434 | 外部 Ollama 服务(可选) | 如使用 Ollama 路由则需运行 |
注意: 8080 和 8081 是外部 AI 服务的端口,平台后端会调用它们获取 LLM 对话和向量嵌入能力。
配置
复制环境变量模板并修改:
cp .env.example .env
主要配置项见 .env.example。
启动脚本参数
--force 强制释放端口(包括非本项目进程)
--skip-preflight 跳过预检查
--skip-smoke 跳过管理员登录冒烟测试
--skip-build 不重新编译后端
--help 显示帮助
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
| PORT | 8080 | 后端 API 端口 |
| EAI_DEV_BIND_HOST | 127.0.0.1 | 开发绑定地址 |
| EAI_DEV_PUBLIC_HOST | 自动检测 | 公开访问地址 |
| LLM_BASE_URL | http://127.0.0.1:8080/v1 | LLM 服务地址 |
| EMBED_MODEL | bge-m3 | 向量嵌入模型名 |
Languages
Go
51.5%
Vue
34.4%
JavaScript
10.4%
Python
2.4%
Shell
0.9%
Other
0.4%