Skip to content

v0.5.0 — 前端重写为 Vite + Vue 3 SPA

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 07:11
· 4 commits to main since this release

前端整体重写为 Vite + Vue 3 单页应用,并修复若干权限与可靠性缺陷。

⚠️ 升级前请读

前端已从 Nuxt 换成 Vite + Vue 3 SPA,nuxtweb/ 目录已删除。 如果你是
从源码构建且曾修改过 nuxtweb/**,这些改动的落点已变为 web/**。

未设置密码时不启用登录。 若你用 --host 0.0.0.0 且没有 --password,
同网段任何人都能操作这个可执行 Shell 命令的 Agent。本次是首次发布带
明确提示的版本,请务必配合 --password 使用:

./licode --host 0.0.0.0 --port 8080 --password 你的密码

配置与数据目录 ~/.licode/ 格式未变,可直接沿用旧目录,无需迁移。

前端重写

  • 技术栈:Nuxt 3 → Vite 7 + Vue 3.5 + Pinia 3 + vue-router 4.6 + Tailwind v4 + TypeScript strict。构建产物仍以 go:embed all:dist 嵌入二进制,发布链路保持纯 Go,不依赖 Node.js。
  • 三栏布局:宽屏 ≥1280px 为「会话列表 / 对话 / 文件树」三栏常驻;1024–1280 左栏常驻、右栏浮层;768–1024 左右皆抽屉;<768 单列抽屉。
  • 删除顶栏:导航、连接状态、主题切换移至左侧栏底部,界面左上角品牌统一为小写 licode。
  • 状态栏:底部固定,格式统一为 N轮 N步 · N tok/s · N tok · 缓存 N%,三段可点开详情(会话统计 / Token 用量 / 上下文已用)。token 用量以 M/K 英文单位显示。
  • 移除「信息」页:会话统计归入状态栏,排障信息归入诊断页;旧书签 /info 保留重定向,不会落到空白页。
  • 首 tok 耗时、输出速度等指标由前端打点计算(服务端未提供),刷新页面后归零并显示 -。
  • 响应式与移动端:修复了此前移动端无输入框的问题(输入区曾被条件渲染限制在「会话就绪」状态,导致新会话无法发消息);底部布局改用 flex + 100dvh 自然布局,软键盘弹出时输入框不再被遮挡;抽屉收起时补齐 visibility,不再拦截点击。

安全修复

  • 权限旁路:未经 Agent.Run 注入运行钩子的调用会拿到零值并按默认 allow 放行,等于任何持有 runtime 引用的代码都能绕过 deny/ask/plan 门禁。现在区分「配置为空(显式允许)」与「未注入(旁路调用)」,后者只放行只读工具,副作用工具一律拒绝。
  • 备份导入:备份包中的 MCP stdio 条目会在下次构建 Agent 时 spawn 任意命令,静默落盘等于「导入即获得开机自启任意命令」。导入时剥离并报告降级动作。

修复

  • 输出长度上限:Settings.MaxTokens 的语义是上下文字符预算(默认 1e6),并非单次输出上限,原样透传会被服务端以 400 拒绝,导致新装默认配置不可用。现在按厂商钳到保守上限(Claude 32000 / OpenAI 16384 / Gemini 8192),仍超限时减半重试。
  • DNS 配置判空:公开 API 直接构造 Settings 时 s.DNS 可能为 nil,补判空避免 HostIP 注入路径 panic。
  • 消息裁剪的孤儿 tool_call 不变量测试(裁剪历史时若留下带 tool_calls 的 assistant 消息却删掉对应结果,部分模型会以 400 拒绝整轮请求)。

下载

平台 文件
Linux licode-linux-amd64 / licode-linux-arm64 / licode-linux-386
macOS licode-darwin-amd64 / licode-darwin-arm64
Windows licode-windows-amd64.exe / licode-windows-arm64.exe / licode-windows-386.exe
FreeBSD licode-freebsd-amd64
VERSION=v0.5.0
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
curl -L -O "https://github.com/LiStudioorg/licode/releases/download/${VERSION}/licode-${OS}-${ARCH}"
chmod +x licode-${OS}-${ARCH} && ./licode-${OS}-${ARCH}

校验完整性(checksums.txt 按原始文件名匹配,故上面用 -O 保留原名):

curl -L -O https://github.com/LiStudioorg/licode/releases/download/v0.5.0/checksums.txt
sha256sum -c checksums.txt --ignore-missing   # macOS 用 shasum -a 256 -c

单二进制约 12 MB,纯静态编译(CGO_ENABLED=0),不依赖 glibc。

完整变更:v0.4.0...v0.5.0