Repository navigation
Releases: int2t05/Cognik
Releases · int2t05/Cognik
Release list
v1.8: 后端依赖热更新 + 文章发布事务化 + 纯净审计
配置热加载真重建
Embedder.client改atomic.Pointer— 修复配置热替换时的数据竞争ConfigReloader(onReload 闭包) — 写 .env 后原子重建 LLM/Embedding 客户端,无需重启database.Init指数退避重试(5 次),DB 未就绪不再立即退出
文章发布事务化(修复"索引已写但状态 failed")
根因:ReplaceVectors 自管 *sql.Tx 提交,process_status 经回调在独立 GORM 连接单独写——四个非原子窗口。
ReplaceVectorsWithTx加入调用方 GORM 事务 → 向量写入与process_status='completed'同一提交(Window A)ProcessTask.Finalize回调:post-commit 副作用 panic 不再改写为 failed(Window B)UpdateArticleProcessStatusCAS:重试路径 CAS 声明,避免并发双写(Window C)ListArticlesForRetry扩展 stuck-processing 恢复:10min 阈值拾取崩溃残留(Window D)
配置映射修复
GetEnvConfigskey 改真实 .env 变量名(COGNIK_*),写回即生效,消除 friendly-key 漂移- 前端 SECTIONS/defaults/AppShell 同步
COGNIK_*键空间
系统配置页 Tab 栏
- 顶端 segmented Tab 栏(通用/LLM/Embedding/RAG/搜索/上传/重排序)
- 字段友好标签 + 三种渲染:文本/密钥脱敏/布尔即时切换
- 清理 ~30 个死 i18n key
纯净审计(421c951 后全部 diff)
- 删 2 死文档(
llm-config.md/llm-config-hot-reload-flow.md),新增config.md - 修 TECH/ROADMAP/FLOW/API/knowledge 共 ~20 处死引用(LLMConfigManager/system_configs/llm_config_id)
- 修
COGNOS_→COGNIK_改名残留(重试配置 env) - 删死配置键(RAG_QUERY_REWRITE/MULTI_ROUTE/HYBRID/RERANK/DEFAULT_TOP_K),
.env.example对齐config.go - benchmark 死代码清理(ResultArticleIDs/maskKey/var_)+ Phase 编号修复
验证
go build/go vet/tsc --noEmit全通过- 后端健康 HTTP 200;retry scanner 无报错
- 热重建运行时验证:改 model → 日志确认重建;配置写回 roundtrip 生效
Full Changelog: v1.7...v1.8
v1.7 — i18n + Rename Cognik + Purity Audit
Highlights
🌐 Internationalization (i18n)
- Frontend zh/en switch via
next-intl(cookie-based, no[locale]URL prefix) — locale: cookie →Accept-Language→ fallback Chinese; SSR renders correct locale with no hydration flash - GitHub display surface English-first: bilingual README & CONTRIBUTING with cross-links, bilingual Issue templates
- Full string extraction across all portal/admin pages and shared components →
messages/{zh,en}.json - CONTRIBUTING accepts Chinese or English commit messages; code comments stay Chinese
🏷️ Rename: Cognos → Cognik
- Eliminated naming conflict with IBM Cognos Analytics (search visibility was severely diluted)
- Cognik = Cognition + -ik (tech suffix) — GitHub has no same-name project, low trademark risk
- Full rename: Go module path, env prefix (
COGNOS_→COGNIK_), brand name across 277 files - GitHub repo renamed (old URL auto-redirects), SEO-optimized description & README
📚 Purity Audit (16-point checklist)
- Dead link fix:
docs/design/DESIGN.md(directory removed, link not synced) - Embedding dimension unified across README/PRD/TECH (Qwen3@1024 / DashScope@1536, configurable)
admin-ops-flow.md: 5 doc/impl gaps fixed (field names, trend structure, config keys, message types)knowledge-publish-flow.md: removed Review audit-log hallucination, added Disable audit+BM25 steps, fixed stale line numbers- 4 cross-directory dead links fixed (knowledge/ ↔ chat/)
- Dead config field removed (
COGNOS_AI_CONFIDENCE_THRESHOLD→_LOW/_HIGH)
🧹 Cleanup
- Removed orphan
shared/handler/common.go(functions inlined per-domain; domain-first layering) .gitignorecovers rerank model artifacts- Test signature fix for
AutoMigratevector-dimension parameter
Full Changelog
v1.6 — 检索优化 + 自迭代知识闭环
核心特性
Agent 自迭代闭环
- CreateAndPublish — Agent 写回即发布进 RAG,绕过人工审核,下一轮
kb(search)可召回 - UpdateAndRepublish — 更新已发布文章 + 增量 reindex(复用 SHA256 跳过未变 chunk)
- 语义去重 — embed 标题+首段,CosineSearch > 0.92 拒绝重复,提示用 update
- system_prompt — Search→Fetch→Write→Auto-publish 循环 + Update existing 指令
检索优化
- Frontmatter schema — ArticleMeta(type/tags/status/source_type/created/updated),type 留空时 LLM 补全
- Embedding 1536 — DashScope text-embedding-v2,DB 列
halfvec(dim)可配 - 5-worker 并行池 — Processor poolSize 2→5
- INDEX.md 锁 — per-kbID mutex + dirty-flag 循环,并发发布不损坏
- Contextual Retrieval / Sandwich Reorder / BM25 Enriched / RRF k=30 / Context Packing
工单闭环
- 上传文件 / LLM 元数据补全自动创建复核工单(
source=3KnowledgeReview) - Ticket 加
related_article_id/related_kb_id关联文章
架构
- 自建 agent/llm.ChatModel — net/http 直连 OpenAI 兼容 API,替代 eino-ext
- 六级上下文压缩 — Tool Result Budget → Snip → Microcompact → HeadAndTail → 去重 → Autocompact
- 记忆系统 — 会话记忆 + 全局记忆 + ExtractMemories + AutoDream 复盘
- COGNOS_DATA_ROOT — 统一数据根目录(storage/memory/logs/agent.db 派生)
技术栈
Go + Gin + GORM | PostgreSQL + pgvector (halfvec + HNSW) | Next.js + React + TypeScript + shadcn/ui | 自建 RAG 引擎 | DashScope text-embedding-v2 @ 1536
部署
docker compose -f deploy/docker-compose.yml up -d postgres
cd server && go run ./cmd/main.go
cd web && npm run dev默认账号:admin / Admin@123
V1.4 — 深度搜索 + Agent 基座重构
V1.4 — 深度搜索 + Agent 基座重构
Agent 基座重构(自建 Loop)
彻底重构 Agent 基座,完全吸收 Claude Code 架构:
- 自建 ReAct Loop(替代 Eino react.Agent)—— 真异步恢复(fire-and-forget + completion-notification)
- 统一工具接口(SyncTool/AsyncTool)—— 消除 StreamableTool 中间态,Loop 用 type assertion 派发
- SubAgent 真异步派发(dispatch_subagent AsyncTool)—— 主 Agent 给任务描述 → 子 Agent 后台跑 → 事件透传 → 完成恢复注入结果
- EventSink 替代 PipelineEmitter 跨层 ctx 注入 hack
- TaskID 事件隔离 —— 子 Agent 事件归入 dispatch_subagent 卡片,不混入主 Agent 文本
深度搜索工具链
web_search—— Exa→Tavily→DuckDuckGo 搜索降级链web_fetch—— Firecrawl→本地 http.Get 提取降级链(含 SSRF 防护)generate_article—— 结构化 Markdown + frontmatter 写入知识库 Draftdeep_researchSubAgent —— 提示词驱动(8 条研究原则),替代代码 pipeline
流式渲染优化
- 背压消除事件丢弃(runner 阻塞发送 + buffer 1024)
- 结构事件即时 flush + 文本 rAF 单帧平滑
- 卡片默认折叠(reasoning/tool_call),纯净执行
- 流式滚动跟随(100ms ticker)
SQLite 增量写入
- 每次事件增量写入 parts(status=generating),中断可恢复
- 所有退出路径落库:generating/completed/cancelled/failed
删除(纯净重构)
- Eino agent 层依赖(react/adk/compose/tool)
- research/ 代码 pipeline(deep_research 改提示词驱动)
- task/ 死代码 TaskManager + 4 个死端点
- async_bash + ToolFactory + PipelineEmitter hack
内置 SubAgent
| SubAgent | 工具集 |
|---|---|
| research | read_file / glob / grep / list_dir(只读) |
| coder | bash / read_file / write_file / edit_file / mkdir(读写) |
| deep_research | web_search / web_fetch / generate_article(网络调研) |
完整变更: see commits on v1.4 branch.
OpsMind v1.3 — Agent 基座
V1.3 — Agent 基座
新增
- Agent Loop — 基于 Eino 的 ReAct 循环(ReactAgent + ToolCallingModel + StreamToolCallChecker),替代 V1.2 的手写 OpenAIClient + 线性 RAG 管道
- 订阅渠道网关 —
runtime.Gateway[E]通用网关(ring buffer 1024 + seq 游标重放 + 30s grace + 非阻塞 fan-out),替代 GenerationHub。对齐 LangGraph Server / Mastra Durable / OpenAI background - 9 内置工具 — bash / async_bash(StreamableTool) / read_file / write_file / edit_file / list_dir / glob / grep / mkdir
- SubAgent — research(只读探查)+ coder(读写操作),通过
adk.NewAgentTool包装为工具,父 Agent 委托子 Agent - 异步任务 — Task model + TaskManager 后台执行 + SQLite 持久化
- Agent 数据隔离 — SQLite(
glebarez/sqlite纯 Go),与业务 PostgreSQL 分离 - threads API — 12 端点(线程 CRUD + 流式对话 + 异步任务),替代 chat-sessions
- 前端 parts 数组模型 — 对标 AI SDK UIMessage.parts,流式渲染解耦,tool_call/tool_result/reasoning 全事件渲染
架构
生产者(AgentRunner)与交付渠道(Gateway)解耦:runner 只产出事件,chat 层订阅并 Publish 到网关。
纯净审计
16 点 checklist 全量清理(溯源残留 / 装饰冗余 / 死内容 / doc-impl 裂隙 / 语言平台残留)。
升级注意
- Agent 对话数据迁移到 SQLite(
./data/agent.db),与业务库隔离 - API 路径
chat-sessions→threads - V1.2 的 RAG 管道代码保留,作 V2.0
search_knowledge_base工具后端 - 配置项精简:移除 7 个零读取的 AIConfig 字段(DefaultTopK / ConfidenceThreshold / MaxHistoryMessages / RAG*)
Full Changelog: v1.2...v1.3
V1.2 业务完善
V1.2 业务完善
5.1 知识库上传增强
- 上传上限配置化(
kb.max_upload_size)+GET /api/v1/config/upload接口 - 批量并发上传(WaitGroup + 信号量,部分失败逐项返回)
- react-dropzone 拖拽 + 每文件 XHR 进度条 + AbortController
- 文件类型校验(前端白名单 + 后端 MIME,放行图片 jpg/png/webp/gif/bmp)
- xlsx/pptx 误判为 docx 修复
5.2 申告管理增强
- 批量关闭(
POST /tickets/batch-close,复用单条 close 状态机) - 处理时限(
deadline_at字段)+ 调度器每小时扫描超时 + 站内消息通知 - 申告列表关键词搜索(管理端+用户端)
5.3 看板增强
- 趋势 CSV 导出(
GET /dashboard/trends/export,BOM 头防 Excel 乱码) - 自定义日期范围 + granularity day/week 生效
5.4 前端体验优化
- 代码分割(TrendChart/ChatPipeline/Markdown 懒加载)
- 表单 required 标记
- 列表搜索全覆盖(知识库/审计/用户/角色 + 申告用户端补齐)
- EmptyState 清除筛选入口
- SWR keepPreviousData 无感切换
5.5 Markdown 富文本
- @uiw/react-md-editor 分屏编辑(预览复用 remarkMath/rehypeKatex/rehypeHighlight)
- 图片粘贴上传(通用文件上传接口
POST /files/upload+ 下载代理) - 未保存确认(isDirty + ConfirmDialog + beforeunload)
- Mermaid 图表 + 代码高亮 + LaTeX 公式
其他
- 列表筛选交互优化(TableFilterHeader 不跳动 + 多维度组合筛选)
- 登录锁定窗口 15 分钟 → 3 分钟
- 纯净审计修复(escapeLike/extractErrMsg 提取共享 + xlsx 类型修复)
- 通用文件上传接口替代文章上传(职责分离:文档入库 vs 图片存储)
Full Changelog: v1.1...v1.2
v0.1.0: OpsMind 运维数字员工系统
功能基本实现
Full Changelog: v0.1.0...v0.1.0