Repository navigation
前端整体重写为 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