Skip to content

Latest commit

 

History

History
31 lines (18 loc) · 3.54 KB

File metadata and controls

31 lines (18 loc) · 3.54 KB

全 TypeScript 迁移验收

日期:2026-09-18。决策见 ADR-0002。原 Go 实现与对照脚本保存在 Git 提交 4cb0a3b 及更早历史中。

当前实现

前后端、Agent 内核、工具、测试、维护检查与修复练习使用 TypeScript。后端通过 Node 24.12+ 的原生类型剥离运行,网页仍由 tsc 构建;没有新增 Agent 框架。现有 TypeScript 编译器也用于提取实际函数源码、定位 JSON 原始行号。Node 的运行支持见官方说明。

保留 Chat Completions 请求格式、会话标识、逐批工具回执、请求与工具预算、动态上下文、单活跃任务、错误回传、JSON/JSONL 持久化、续聊及轨迹展示。新增运行将 TS 源码快照与构建摘要一起保存。生产边界仍检查输入类型与权限,静态类型不替代运行时验证。

Go 平均值练习已换为 TypeScript:只允许修改 average.ts,检查读取时的 SHA-256,测试文件与 package.json 受保护。Node 测试容器使用固定镜像摘要,保持断网、非 root、只读挂载、资源限制、输出上限、退出状态与清理确认。公开运行模式禁止 Coding 练习与本地编辑器调用。

旧记录不承担新版回看或续跑兼容。新版默认使用 ~/.loop/ts-runs/;原 ~/.loop/runs/ 的 20 份运行、60 个文件保留,切换前后 SHA-256 全部一致。主服务已切换到本机 8877,沿用 glm-5.3-flash,新历史为空。

已通过的检查

  • npm test:严格类型检查、12 项后端检查、19 项前端轨迹与会话检查。3 项真实 Docker 检查默认跳过,由下一条单独执行。
  • npm run test:docker:4 项检查全部通过,包括文件边界、失败/修复测试、隔离、输出截断、取消清理、HTTP 授权与续聊,以及固定模型响应驱动的完整测试—读取—修改—再测试闭环。该闭环使用真实容器和文件,模型响应是测试脚本。
  • docker build -t loop-ts:local .:基于固定 Node 24 镜像构建成功。容器健康检查通过,未配置模型时正确显示未配置,公开模式禁用 Coding。
  • 浏览器:空历史、新任务、TS 练习授权范围、失败轨迹、原始工具结果及对应 TS 函数源码已核对;控制台没有警告或错误,390 px 下无横向溢出。主端口切换后重新核对页面。
  • 本地超时检查验证了等待响应头、响应体中断时的取消,以及失败请求不会自动重试。

真实模型验收的限制

浏览器提交的 GLM 运行 6e53a0d7e8069d44d0256a8d31d89f1a 没有产生最终回答:模型先后提出绝对路径、错误的相对目录,执行器均拒绝并把错误交回;第三次改用 . 后成功列出两份文件。第四次模型请求记录约 108.6 秒,结束于 ConnectionOrTimeoutError,整次运行约 113.3 秒,共 16 条事件、3 次工具调用、2 次工具错误。

该异常未重跑,也未继续消耗模型额度来替换失败证据。真实请求为何超过配置的 60 秒截止时间仍未归因;本地可控测试验证了取消逻辑,不能据此解释真实网络路径。因此不将本次工作表述为真实 GLM 端到端验收通过,真实模型完成 TS 修复练习也尚未验证。

原始失败记录和切换证据保存在本机 ~/.loop/ts-validation-20260918/。历史源码随记录保留,不用当前修改后的源码冒充当时执行版本。

本次仅完成本地实现、检查与本机切换;没有提交、推送或部署线上服务。