Blizzard
|
a5cf2c5f36
|
ci: 构建链补完 wails v2→v3 迁移,CI 触发收敛到 main
代码早就全量迁到 v3(go.mod 只要 wails/v3、main.go import v3/pkg/application),
但"怎么构建"这一层从没跟上,全还是 v2:
- release.yml 装 v2 CLI(wails@v2.12.0)去编 v3 代码,编不过;产物路径也还
指向 v2 的 build/bin/,而 v3 落在 bin/。这条只在打 v* tag 时触发,迁移后
一次都没跑过,所以坏了半个月没人知道 —— 下次发版必炸。
- Makefile 的 wails dev/build 直接 command not found。
- README 叫人装 v2 CLI;RELEASE.md 还在提早已删除的 wails.json。
改动:
- ci.yml 触发从 [main, dev] 收到 [main]。dev 分支已删,开发在 feat/wails3,
留着 dev 是死条件;PR 以 main 为目标仍会跑,合入前有关卡。
- release.yml 全量转 v3:
* CLI 钉死 v3.0.0-alpha2.117,与 go.mod 的 wails/v3 版本一致 —— alpha 阶段
CLI 生成的 bindings 和运行时配套,版本错开会出难查的怪问题。
* mac 走 wails3 task darwin:package:universal。v3 的 build 只出裸二进制
(macOS 上双击不起窗),必须 package 才有 .app;本地实跑验证过,
lipo -archs 确认是真 universal(x86_64 + arm64)。
* Windows 保持 v2 时代行为发裸 .exe。v3 的 package 默认走 NSIS 出 installer,
依赖 runner 上有 makensis,属额外未知数,要升级安装包再单独议。
* 产物路径 build/bin/ → bin/。
* fail_on_unmatched_files 改 true,并按 matrix 只匹配自己那个产物 ——
原来是 false 且两个平台都列全量文件,产物路径写错会安静发一个没附件的
Release。这次的 bug 正是路径漂移,得让它当场炸。
- RELEASE.md 版本号对齐表补上第三处 build/config.yml 的 info.version(此前写着
"必须三处对齐"却只列了两处,第三处是已删的 wails.json),并记下改完必须跑
wails3 task common:update:build-assets 重新生成 Info.plist —— 这坑踩过。
- 清掉 v2 残留:frontend/wailsjs/(v2 绑定,v3 用已跟踪的 bindings/)及其
gitignore 规则、build/bin/ 里 v2 时代的 .app。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-16 15:03:32 +08:00 |
|
Blizzard
|
a5fd251fc0
|
feat(deploy): 容器化 + 一键独立部署 —— 5 服务镜像 + prod compose + 安装/备份/许可
此前应用服务只是本机裸二进制、无 Dockerfile、无法交付。本提交把项目从"只能在我笔记本
跑"变成"任何人一条命令起一整套",是「演示 / 拉投资 / 卖给客户独立部署」的可交付基础。
- Dockerfile ×5:gateway/dispatcher/mcp-go 多阶段(distroless static, 36–55MB);
mcp-py(python-slim, 268MB);admin(node 构建→nginx 托管 SPA + 反代 /api,76MB)。
Go 构建上下文为仓库根以兜住 replace ../sundynix-shared;.dockerignore 瘦上下文。
- docker-compose.prod.yml:应用 + 基建一把起;经服务名互连(顺带避开 localhost DNS 坑);
基建端口不对宿主暴露;depends_on 健康检查保序(mcp-go 待 Milvus healthy);
APP_ENV=production 强制密钥校验 + 锁 CORS + 管理员白名单。
- .env.example + DEPLOY.md:两类密钥分层(引导密钥走 .env,模型 key 控制台加密存库);
首次管理员流程;安全建议。LICENSE 专有(授权模型可后定)。
- scripts/backup.sh + restore.sh:PG 逻辑备份 + 各数据卷快照 / 恢复。
- .gitignore 挡 .env*(密钥不入库)。
live:5 镜像全构建通过;独立 project 起整套 → nginx→gateway→NATS→dispatcher→mcp 全链路
注册+提任务 running→done,depends_on 保序生效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 15:23:36 +08:00 |
|
Blizzard
|
ba8c6b3c43
|
feat(report): 报告生成端到端 — 规划→分章并行检索撰写→渲染真实 Word
- shared: 新增 intent=report 任务约定 + ReportPath(跨进程共享落盘目录,零配置对齐)
- dispatcher: handleReport 专用编排(DeepSeek 规划大纲 → 各章并行 RAG 检索+撰写
→ 汇聚 → report_render),Pool.Chat 非流式聚合;进度与正文经 Token 流实时回流
- mcp-go: 用标准库 archive/zip + OOXML 拼出真实可打开的 .docx(零额外依赖),
report_render 工具落盘到共享目录;附 docx 有效性测试
- gateway: POST /reports 触发;GET /reports/:id/download 下发 Word
- desktop: 新增「报告」页(主题→实时编排进度→下载 Word),左导航置为就绪
实测:DeepSeek 生成 5 章报告 → 渲染 5KB docx → file 识别为 Microsoft Word 2007+
→ textutil 提取标题/各章正文完整。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-12 14:02:21 +08:00 |
|
Blizzard
|
8469cfc0db
|
docs: README 运行指引补真实桌面端(make desktop / desktop-build + Wails 前置)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-11 17:36:00 +08:00 |
|
Blizzard
|
21e5f6620d
|
chore: fresh-clone 可直接运行审查与修复
确保 git clone 后零配置(除 LLM key)即可跑通后端链路。
- go.work: 移出 sundynix-desktop(Wails,//go:embed frontend/dist 需先 npm build,
且 main 为桩),避免污染后端工作区构建;保留后端 4 模块
- mcp-py pyproject: 注释未 import 的 mcp/docker 重依赖(对应功能仍为桩),
fresh pip install 只装实际用到的 nats-py + docx/openpyxl/pypdf,更快更稳
- README: 完整环境改为 fresh-clone 零配置运行指引(infra→4后端→2前端→控制台配模型)
- 审查结论: 无硬编码绝对路径; 各服务 env 默认全对齐 docker-compose; go.sum/
package-lock 齐全; /tmp clone 实测: 4 后端模块 go build ✓、admin npm ci+build ✓、
mcp-py 全新 venv 安装+导入 ✓; e2e PASS
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-11 17:13:55 +08:00 |
|
Blizzard
|
adc521f94d
|
feat: 打通 Dispatcher→MCP 工具调用链路 (core NATS request-reply)
第 4 层 Dispatcher 经 NATS request-reply + 队列组同步调用第 5 层 MCP 工具,
工具不可用/超时即降级,不阻断主流程。
- shared/contract: ToolCall/ToolResult + sundynix.tools.go.* subject 约定 + ToolSubjectGo/Py
- shared/bus: CallTool(发起) / ServeTool(队列组订阅+应答)
- mcp-go: 接共享 bus,gateway 通配订阅按工具名分发(wiki_search/echo),main 优雅退出
- dispatcher: ToolCaller 接口 + Orchestrator.retrieveContext(调 wiki_search,超时3s降级)
- e2e: TestToolCallRoundTrip(PASS);demo.sh 加 mcp-go(就绪门避免启动竞态),live 跑通
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-10 11:31:58 +08:00 |
|
Blizzard
|
c7a02c3905
|
feat: 初始化 sundynix-agentix 分层式 AI Agent 平台脚手架
5 层 + 1 条 NATS 零拷贝消息总线的 monorepo(Monolith First → Microservices Morph B)。
纵向主干(任务流 + Token 流回流)已真实跑通,横向各层能力为带注释的桩。
已贯通(real code):
- sundynix-shared: 共享契约 + JetStream/core NATS 真实收发(bus) + 内嵌 NATS(devnats) + e2e 测试
- sundynix-gateway: Gin 接入 + DSL 解析组装 + NATS Publish + SSE 流式输出
- sundynix-dispatcher: NATS 消费 + Eino Orchestrator 流式回流 + 熔断器 + LLM Pool 占位流式
- 链路: HTTP POST → DSL → sundynix.tasks.* → Dispatcher → Token 经 sundynix.streams.<id> 回流 → SSE
- 基础设施: docker-compose(nats/postgres/redis/neo4j/milvus) + Makefile(make demo/e2e)
待填(桩):
- Eino 图编排 compose.NewGraph、LLM Pool 接 vLLM/Ollama
- Gateway store 换真实 pgx/redis
- sundynix-mcp-go: Bleve+Milvus+Neo4j 混合检索 / UniOffice / 外部 API
- sundynix-mcp-py: gVisor 沙箱 / MinerU(PaddleOCR) / Docker 解释器
- sundynix-desktop: React Flow 画布 → DSL 导出 → SSE 展示
|
2026-06-10 11:00:29 +08:00 |
|