吉鑫升
8af4fed89d
feat: update knowledge workspace and menu configuration
2026-08-18 15:23:14 +08:00
吉鑫升
68c4896088
fix: stabilize auth sync and stream recovery for ji
2026-08-17 19:27:39 +08:00
吉鑫升
5bf08c83a6
Merge remote-tracking branch 'origin/master' into ji
2026-08-17 15:53:36 +08:00
吉鑫升
3ab2c9b282
feat: improve WeKnora source preview and wiki management
2026-08-17 15:53:19 +08:00
吉鑫升
94cf37a2ae
fix: normalize system messages before model calls
2026-08-17 10:12:43 +08:00
吉鑫升
4809ee7db3
fix: update offline backend llmwiki support
2026-08-13 11:17:11 +08:00
吉鑫升
c4fd9dd7da
Merge remote-tracking branch 'origin/master' into ji
...
# Conflicts:
# .gitignore
# frontend-web/src/components/workspace/input-box.tsx
# frontend-web/src/core/threads/types.ts
# frontend-web/src/pages/ChatPage.tsx
2026-08-12 15:55:51 +08:00
吉鑫升
b4d076a2d4
fix: harden WeKnora knowledge permissions and details
2026-08-12 15:45:28 +08:00
吉鑫升
e0c09f6704
feat: integrate WeKnora llmwiki knowledge flow
2026-08-11 18:13:30 +08:00
吉鑫升
5436719bfb
Merge branch 'master-dev' into 'master'
2026-07-21 14:47:46 +08:00
吉鑫升
e571caaf2c
fix: keep offline start script minimal
2026-07-21 14:46:58 +08:00
吉鑫升
5d2997b6a0
fix: preserve offline deployment LF files
2026-07-21 14:39:57 +08:00
吉鑫升
f8cb7be18c
chore: add offline backend wheelhouse deployment
2026-07-21 14:35:06 +08:00
吉鑫升
db2f21191c
fix(frontend): handle clipboard fallback and markdown word export
2026-07-03 16:54:16 +08:00
吉鑫升
ae30a20739
Merge remote-tracking branch 'origin/master' into ji
2026-07-02 11:15:06 +08:00
吉鑫升
7e7d3c9846
fix: truncate rwfx 3q context
2026-07-02 11:05:12 +08:00
吉鑫升
daff70c34f
fix: include rwfx 3q status in context
2026-07-02 10:43:16 +08:00
吉鑫升
36a3851233
feat: inject 3q context into rwfx chat
2026-07-02 10:03:34 +08:00
吉鑫升
c23350f17b
fix: isolate user concurrency from internal agent runs
2026-06-30 14:56:29 +08:00
吉鑫升
124eb04a6b
Merge remote-tracking branch 'origin/master-dev' into ji-dev
2026-06-30 11:34:45 +08:00
吉鑫升
b4206d6421
Add Redis-backed concurrency gate
2026-06-30 11:25:44 +08:00
吉鑫升
199269712f
Merge branch 'ji' into master
...
账号级登录口令(白名单管理页设明文口令,凭 /login/<用户名>?password= 直登)。
2026-06-27 11:19:58 +08:00
吉鑫升 and Claude Opus 4.8
9572b66ecb
feat(白名单): 账号级登录口令——管理员设明文口令,用户凭 /login/<用户名>?password= 直登
...
白名单管理页可给单个账号设明文登录口令(users.login_password,可空):
设置后该账号用户名直登(/login/username)须带匹配 ?password=,且优先于全局共享口令门;
未设口令的账号行为不变。前端登录 URL 已支持透传 ?password=,无需改登录页。
- 后端:UserRow/User 新增 login_password + 仓储映射;/login/username 账号级口令闸门
(_lookup_user_by_username 仅查不建);新管理员接口 PUT /users/{id}/login-password;
UserListItem 暴露明文(仅 admin 列表);migration 20260625_04 + 幂等补列 SQL。
- 前端:白名单页新增「登录口令」列(设置/修改/清除 + 复制登录链接);
core/auth api+hooks 增 setUserLoginPassword/useSetUserLoginPassword(含 Y-Log)。
- 文档:根 + 后端 CLAUDE.md 同步。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-27 11:03:39 +08:00
吉鑫升
26ab6f663c
Merge branch 'ji' into master
...
完善并发监控图表(整数刻度Y轴 + 图例 + 说明)
2026-06-26 21:23:40 +08:00
吉鑫升 and Claude Opus 4.8
bce0abba6e
fix(监控): 完善并发监控图表——整数刻度Y轴 + 图例 + 说明
...
- 修复并发量图左轴出现「0 0 0 1 1」重复刻度:值很小时改用整数刻度(nice
ticks,0/1/2…无重复),并修正按 axisMax 归一
- 每张图加图例(带当前读数)+ 一句中文说明,讲清每条线含义:
并发量=峰值(红)/平均(橙);出字速度=平均(蓝)/最慢(紫)
- 修复两张图共用同一个 SVG 渐变 id 导致的颜色串用(改 useId 唯一化)
- 空数据态更友好(虚线占位 + 引导开启采样)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 21:23:08 +08:00
吉鑫升
9ef8b1990e
Merge branch 'ji' into master
...
实时并发监控 + 真正停止对话 + 409 中文化(管理员排行榜)
2026-06-26 20:40:56 +08:00
吉鑫升 and Claude Opus 4.8
26f8010a57
feat(监控): 管理员排行榜实时并发监控 + 真正停止对话 + 409 中文化
...
- 排行榜页顶部新增「实时并发监控」面板(admin-only):当前并发大模型调用数 +
调用列表(用户/智能体/类型/已运行时长),每行「停止」+「全部停止」经
RunManager.cancel 真正中断 LLM 流式调用,减轻大模型压力
- 并发量折线图(峰值/均值,按分钟/小时):新增轻量后台采样器写入新表
concurrency_samples(create_all 自动建表),可按分/时聚合
- 大模型出字速度折线图(tokens/秒,按分钟/小时):复用 llm_call_metrics 聚合,
便于定位是模型/供应商慢
- 后台采样可开关、默认关闭(opt-in)、运行时切换免重启、对线上零影响
(单条极小 INSERT、保留期清理、查询有上限、全程 best-effort)
- 409 中文化:上一轮未结束又发新问题时返回中文提示,前端 onError 友好映射
后端:runtime/runs/manager.py(list_active)、persistence/concurrency(新模块)、
config/system_settings(ConcurrencyMonitorSettings)、gateway/routers/admin_active_runs、
app.py(采样后台任务)、services.py(409)。前端:core/admin/{active-runs,hooks}、
components/workspace/admin/concurrency-monitor、AdminUserLeaderboardPage、threads/hooks。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 20:29:26 +08:00
吉鑫升
38f98cdf5c
Merge branch 'ji' into master
...
# Conflicts:
# offline-backend-20260512/backend/scripts/sql/column_additions_mysql.sql
2026-06-25 21:49:12 +08:00
吉鑫升 and Claude Opus 4.8
a417124c21
feat(auth): 登录白名单细化为黑名单模式(approved 默认放行)+ 同步构建产物
...
- approved 放行标记默认 True:新账号首次登录即放行,登录白名单开关打开时只拦截
被管理员显式「取消放行」(approved=False) 的用户;enforce_user_approved 放在
各登录端点拿到 user 后、签发 JWT 前调用,admin 永远放行。
- 同步调整 LoginWhitelistPage / local_provider / models / system_settings /
迁移 20260625_02 / user model / column_additions_mysql.sql 与 CLAUDE.md。
- 更新 backend/backend.zip 构建产物。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 21:41:15 +08:00
吉鑫升 and Claude Opus 4.8
f3f11461de
fix(open-3qfx): 免登录建会话补 default 用户上下文,修复 thread_meta 不落库
...
开放接口 /api/open/3qfx/ask 免登录、无 user context,start_run 写 thread_meta
前先 thread_store.get() 默认 user_id=AUTO,resolve_user_id(AUTO) 在无 context 时
抛 RuntimeError 被 start_run 的 try/except 当「非致命」吞掉,thread_meta 行从未
创建,前端按 metadata.taskId 怎么也搜不到这条会话(run 却已建)。
- 调 start_run 前显式 set_current_user 为 default 用户桶(后台 run_agent task
在 create_task 时快照此 context,故后台运行也归属 default,符合任务深链对话
全局共享、按创建者解析文件的语义),thread_meta 正常落库。
- 把 cop_task_detail_* 配置补到实际加载的 offline-backend-20260512/config.yaml
(此前只加在不生效的 backend/config.yaml)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 21:40:57 +08:00
吉鑫升
cc017a22c7
Merge branch 'ji' into master
2026-06-25 20:38:33 +08:00
吉鑫升 and Claude Opus 4.8
58357547c9
Merge branch 'ji' into master
...
按钮管理「登录参数」两套实现冲突解决——两分支各自独立给跳转按钮加了登录态追加能力,
二者正交、保留两套,互不影响:
- master: login_params (JSON 列 login_params_json,从 userInfo 解析,类似轻应用登录参数)
- ji: append_auth + auth_token_param + auth_name_param (token 登录时追加 token1+用户名)
迁移 revision 碰撞修复(两分支都用了 20260625_01):重编号为线性链
20260620_02 → 20260625_01 (login_params) → 20260625_02 (auth_params) → 20260625_03 (users_approved)
并同步 column_additions_mysql.sql 注释里的 migration 编号。
前后端 task_buttons(model/sql/memory/router/前端 type·api·admin 页)均保留两套字段;
两份 CLAUDE.md 文档合并为同时记录两种机制。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 19:36:43 +08:00
吉鑫升 and Claude Opus 4.8
864224e07c
feat(message-token-usage): 速度条下方常驻颜色含义图例
...
生成结束后在速度条下方展示一行图例(SpeedLegend),把进度条配色归并为用户视角的
延迟正常/微长/长 + 无响应四类说明,帮助用户理解速度条颜色代表的模型生成延迟状态。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 16:07:54 +08:00
吉鑫升 and Claude Opus 4.8
04b38a4a25
fix(task-buttons): append_auth 显式 server_default 修复旧库 /api/task-buttons 报 500
...
旧库已存在 task_buttons 表时,启动期自动补列 _ensure_orm_columns_sync 会跳过
「NOT NULL 且无 server_default」的列,导致 2026-06-25 新增的 append_auth 永远补不上,
GET /api/task-buttons 查询报 Unknown column → 500。给该列加 server_default="0" 后,
重启即自动 ALTER TABLE 补列,与迁移 20260625_01 保持一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 15:57:26 +08:00
吉鑫升 and Claude Opus 4.8
f8b40353ef
feat(task-buttons): 跳转按钮可追加登录态 token+username + token 登录离线测试映射
...
rwfx/3qfx/xdfx 任务工作区的可配置跳转按钮(按钮管理)新增「追加登录态」开关:
url 类型按钮可在外链后拼 ?token=<token1>&username=<登录名>(参数名可配,默认
token/username),供跳转目标外部系统识别当前登录用户。
- 仅 token 登录(login/token)生效: token1 = ?authToken=,username = 后端用
token 调 getTokenInfo 解析出的原始登录名(非邮箱前缀/非解 JWT)。二者登录时
经 persistLoginCredentials 存入 login.token1/login.username(scoped-storage
自动隔离嵌入/独立会话);非 token 登录读不到 token1 则跳过追加。
- 后端 UsernameLoginResponse 回传 username(原始名,规避邮箱归一化有损);
token_login 加 mock_tokens 离线测试映射(123ewq->admin),命中即跳过外网
getTokenInfo,便于本地全链路联调。
- task_buttons 加列 append_auth/auth_token_param/auth_name_param
(migration 20260625_01 + 幂等 SQL)。
Tests: test_task_buttons.py, test_auth_login_modes.py(mock token/username 回传)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 14:52:07 +08:00
吉鑫升 and Claude Opus 4.8
6989dd45f1
fix(chat): 问答回答时间戳不再漂移到当前电脑时间
...
AI 回答无自身时间戳,原先在首次渲染时用 new Date() 兜底,导致
未在原会话完成、或从历史重新加载的回答显示加载时刻而非真实时间。
改为让 AI 回答继承同轮提问的可靠 client_ts(turnTime),并停止给
AI 消息打 now 戳;显示层优先用提问时间,可自愈历史错误时间。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 22:57:21 +08:00
吉鑫升
c1143564ef
Merge branch 'ji' of http://192.168.0.200/knowledge-base-bj/deerflow-server into ji
2026-06-24 22:42:21 +08:00
吉鑫升 and Claude Opus 4.8
ea2ea9783e
feat(task-deeplink): xdfx 开场信息追加行动标题与行动内容
...
xdfx(行动分析)深链开场信息原先只附行动id(action_id),现额外
拼上行动标题(actionName)与行动内容(narration)。优先读登录时
缓存的行动详情(readActionDetail),无缓存再 fetchActionDetail,避免
重复请求。buildOpeningText 第三参数由 actionId 改为 ActionOpeningInfo。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 22:34:25 +08:00
吉鑫升 and Claude Opus 4.8
e3e93712b6
feat(task-deeplink): xdfx 开场信息追加行动标题与行动内容
...
xdfx(行动分析)深链开场信息原先只附行动id(action_id),现额外
拼上行动标题(actionName)与行动内容(narration)。优先读登录时
缓存的行动详情(readActionDetail),无缓存再 fetchActionDetail,避免
重复请求。buildOpeningText 第三参数由 actionId 改为 ActionOpeningInfo。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 22:33:09 +08:00
吉鑫升
1a87077642
Merge branch 'ji' into master
...
并入: loop 跨事件循环 DB 访问修复(asyncmy attached to a different loop)、y-log 前缀、全角参考文献角标识别
# Conflicts:
# CLAUDE.md
2026-06-24 17:13:45 +08:00
吉鑫升 and Claude Opus 4.8
6aff165d09
fix(db): 路由跨 loop 的 DB 访问回引擎主 loop,消除 asyncmy "attached to a different loop"
...
会商/定时任务/沙箱工具等在 worker 线程的临时 loop 上用 asyncio.run 跑全局引擎连接池的
DB 操作,连接被绑定到随即关闭的临时 loop;池子回收/释放该连接时 asyncmy
_terminate_graceful_close 在错误的 loop 上触发 future,持续刷
"got Future attached to a different loop"。
- engine.py: 新增 run_db_blocking(fire_and_forget_db_write 的带返回值版本)。离开主 loop
时用 run_coroutine_threadsafe 把协程送回主 loop 执行、阻塞调用线程拿结果;仅在无主 loop
或正同步处于主 loop 内(送回会死锁)时退回临时 loop。
- thread_paths / prompt / skill_tools: 三处同步→异步阻塞读桥(任务owner解析/常驻技能/
技能可见性)改走 run_db_blocking,删除各自重复的 _run_coro_blocking。
- llm/tool metrics 中间件: fire-and-forget 写改走 fire_and_forget_db_write。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 15:57:04 +08:00
吉鑫升 and Claude Opus 4.8
5ecf28e60c
feat(y-log/knowledge): 日志前缀改 CM助手-全量 + 入库 nodeName 按标题去时间戳保持一致
...
1. Y-Log 上报 optDetail 前缀 B1-CM助手 → CM助手-全量(全量替换 44 个前端文件 + 文档)
2. 知识库入库 nodeName 改为只取 md5(标题).md(去掉时间戳),同一篇 md 每次入库一致,避免重复记录
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 15:46:51 +08:00
吉鑫升 and Claude Opus 4.8
3e68260afa
fix(citations): 识别全角参考文献角标(全角数字/合并/区间)
...
正文里的引用角标识别此前全角括号只支持单个半角数字 【1】,
导致 【1】(全角数字)、【1,2】/【1,2】/【1、2】(合并)、
【1-3】/【2~5】(区间) 等中文常见写法无法识别成参考文献。
补齐全角括号的「全角数字 / 合并 / 区间」三种形态,转成半角后交给
原有半角逻辑统一处理;仍保留 isValidIndex 闸门,避免把正文里的
【3】(越界)、【附录】(非数字) 误判为引用。新增 inline-citations.test.ts。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 22:14:52 +08:00
吉鑫升
b5e682cfd2
Merge branch 'ji' of http://192.168.0.200/knowledge-base-bj/deerflow-server into ji
2026-06-23 21:01:05 +08:00
吉鑫升
2193c4484b
Merge remote-tracking branch 'origin/master' into ji
2026-06-23 20:58:41 +08:00
吉鑫升 and Claude Opus 4.8
14082b3e7b
fix(深链): 删除接口空响应体也判成功
...
dropSixOrSevenData 成功时返回空响应体,原 success: obj.success === true
永远为 false,导致删除已成功却总弹「清除失败/无法覆盖」。改为
success: obj.success !== false:请求未抛错即算成功,仅显式 {success:false} 才失败。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 20:28:18 +08:00
吉鑫升 and Claude Opus 4.8
a1fbfaf864
feat(xdfx): 行动历史查询与删除(与 rwfx 共用 dropSixOrSevenData 删除接口)
...
- 删除接口统一为 dropSixOrSevenData:rwfx 传 ?taskId=、xdfx 传 ?actionId=,另一参数直接不出现在 URL
- xdfx 工作区新增「清除记录」按钮(按行动id 删除),删除前预检「行动历史是否存在」
- action_history_url 配置位(地址待提供,留空则不查询/不阻断删除)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 19:14:16 +08:00
吉鑫升 and Claude Opus 4.8
5aa66fc07d
chore(backend): 放宽递归与循环检测阈值
...
- build_run_config recursion_limit 100 -> 250
- LoopDetectionMiddleware 默认阈值放宽(warn/hard/window/tool-freq)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 17:48:23 +08:00
吉鑫升 and Claude Opus 4.8
23d170cde1
fix(rwfx): 3q 无数据时不默认发送问题,仅「不去3q分析」才发送
...
问题:rwfx 进入时的 3q 预检弹框与「目的树为空自动发送第一次问题」相互独立,
导致 3q 无数据时弹框出现的同时问题已被自动发出。
修复:新增 rwfx 专用 3q 门控(rwfx-sq-gate.tsx,RwfxSqGateProvider + useRwfxSqGate),
把自动发送交给门控——
- 3q 完成/无法判定 → 立即发送;
- 3q 未完成 → 弹「前往 3qfx」框并挂起发送,仅当用户「暂不(不去3q分析)」或关闭弹框才发送;
点「前往 3qfx」则跳转并丢弃发送。
TaskPurposePanel 自动开始改调 gateStart(onStart);手动「开始问答」/覆盖确认不受影响。
替换原独立的 RwfxSqReportGate(它弹同一个框但没门控自动发送)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 17:48:23 +08:00
吉鑫升
ec56fa671b
Merge branch 'ji'
...
# Conflicts:
# CLAUDE.md
2026-06-22 21:02:35 +08:00
吉鑫升 and Claude Opus 4.8
dd942cdd60
feat(xdfx): 行动分析聊天记录按行动id划分 + 首问追加 action_id
...
xdfx 单智能体问答不再按 task_id 划分聊天记录,改按「行动id(action_id)」划分:
- TaskContext 增加 partitionByAction 标记 + taskThreadMetadata 统一产出线程标签
- xdfx 新建线程额外打 metadata.actionId,对话列表按 actionId(+agent_id) 过滤
- 仍保留 metadata.taskId 以维持后端「任务深链对话全局共享」语义
- 首次提问开场信息追加「行动id(action_id)为…」
- useTaskThreads 增加 actionId 过滤参数;useChatsBase 从上下文派生
rwfx / 3qfx 行为不变。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 21:00:22 +08:00
吉鑫升 and Claude Opus 4.8
fbec222eb4
Merge branch 'ji' into master
...
合并 ji 的功能:开放问答接口(/api/open/chat[/stream] 回传生成文件 + 临时不留存)、
技能地址管理、智能体详情「最近对话」等。
冲突 frontend StrategyRoutes.tsx 已解决:同时保留 admin/roundtable-diagnostics(master)
与 admin/skill-addresses(ji) 两个管理员路由。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 19:39:35 +08:00
吉鑫升 and Claude Opus 4.8
7c55a577ad
feat(open-chat): 开放问答接口回传生成文件 + 临时不留存
...
- /api/open/chat[/stream] 新增 include_files(默认开),把智能体在 outputs 目录
生成的文件(name/virtual_path/encoding(text|base64)/content)随结果回传,
解决"报告写进文件、answer 只回一段总结"导致拿不到完整内容的问题;
既无 answer 也无文件时返回 502。
- 无状态运行标记 ephemeral:lead agent 跳过记忆与知识库中间件(不召回/不留存/
不自动沉淀),取完文件后清理临时线程目录,做到"通过本接口的聊天记录不存储"。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 19:36:30 +08:00
吉鑫升 and Claude Opus 4.8
06b169d7a1
feat(skill-addresses): 新增技能地址修改记录,支持单次记录回退
...
后端:
- 每次「应用」写一份 {id}.manifest.json(记录本次 from→to 替换明细/文件数/处数),
放在备份目录的同级,避免被回退误恢复或计入文件数
- GET /backups 返回每条记录的 replaced_total + replacements;POST /rollback/{id} 回退单条
前端:
- 把「撤销上次」升级为「修改记录」面板:每条显示时间/改了哪些地址/文件数,
带「回退此次」(二次确认);应用后自动展开
- BackupEntry 类型扩展 replacedTotal + replacements
同步更新前后端 CLAUDE.md。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 18:05:05 +08:00
吉鑫升 and Claude Opus 4.8
7487395e44
feat(skill-addresses): 地址检索升级为多关键词匹配
...
- 空格分隔多个关键词,全部命中(地址或技能名任一包含)才显示,便于在大量地址中收窄
- 搜索框加清除按钮 + 更清晰的占位提示
- 过滤时列表头显示「命中 / 总数」
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 17:55:44 +08:00
吉鑫升 and Claude Opus 4.8
26557b30a0
feat(skill-addresses): 将「技能地址管理」并入管理员「技能管理」页的标签页
...
- SkillAddressesPage 主体抽成可复用的 SkillAddressesPanel(默认导出保留旧路由作直链回退)
- AdminSkillsPage 顶部加 Tabs:技能列表 + 技能地址管理(嵌入 panel)
- 移除 page-sidebar 左下角设置下拉里两处独立的「技能地址管理」入口
- 同步更新前后端 CLAUDE.md 文档
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 17:35:42 +08:00
吉鑫升 and Claude Opus 4.8
f8228847ab
fix(skill-addresses): 补提交被 gitignore 漏掉的 address_scan 引擎模块
...
skills/ 忽略规则误伤了 packages/harness/deerflow/skills/address_scan.py,
导致部署环境缺模块、启动报 ModuleNotFoundError: deerflow.skills.address_scan。
强制纳入跟踪。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 17:29:10 +08:00
吉鑫升 and Claude Opus 4.8
6b480fdbe9
feat: 新增技能地址管理与开放问答接口,完善任务工作区
...
- 新增「技能地址管理」页面与 /api/skill-addresses 路由(扫描/预览/批量替换技能内地址)
- 完善 /api/open/chat 开放问答接口与模型工厂、网关配置
- 调整任务工作区、侧边栏与路由
- 将本地 0622/ 临时目录与 __pycache__/ 加入忽略,不提交
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 17:17:54 +08:00
吉鑫升 and Claude Opus 4.8
32476c7ad4
feat: 智能体详情新增「最近对话」列表,完善推荐问题与任务深链配置
...
- 新增 AgentRecentChats 组件,在智能体详情面板底部按 agent_id 展示最近对话
- 调整问答/智能体侧边栏与最近对话列表展示逻辑
- 补充 dashboard-input、task-deeplink 相关配置与线程工具方法
- 后端推荐问题接口标签处理及 position_sync 微调,新增相关测试
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 14:47:43 +08:00
吉鑫升 and Claude Opus 4.8
16ba5deb0e
feat(agents): 智能体归属/发布操作前增加「账号已切换」提醒
...
- 新增 useLiveAccount 钩子:跟踪「实时」登录账号(随 storage/focus 刷新),
并与组件挂载时捕获的账号对比;token 存 localStorage 会被同浏览器其他标签页
共享,另一标签页登录会静默替换本页 API 所用账号
- agent-card / agent-detail-panel / publish-square-picker-dialog / NewAgentPage
接入该钩子,切换账号后对归属/发布类操作做提醒,避免误归属
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 11:30:15 +08:00
吉鑫升 and Claude Opus 4.8
2b6424b3ff
feat(open-chat): 新增 /api/open/chat 开放问答接口
...
- 无需登录(/api/open/ 加入 auth 白名单 + CSRF 豁免),供外部系统直接调用本项目智能体做问答
- 可指定模型(model_name)与智能体(agent_name 中文名称,扫描 agents/*/config.yaml 解析为运行 id);GET /api/open/agents 列出可选名称
- 只返回最终结果(answer = 最后一段 markdown),不含中间过程/工具调用
- 可靠关闭思考:thinking_enabled=false 时下发 thinking_force_disabled,经 create_chat_model(force_disable_thinking=True) 强制注入 enable_thinking=false(及 GLM thinking.type=disabled),覆盖只声明 supports_thinking 的内网 vLLM/Qwen 模型(与生成标题关思考一致)
- 一次性问答设 is_scheduled_run 跳过自动起标题
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 11:21:56 +08:00
吉鑫升 and Claude Opus 4.8
e906a911b2
feat(agent-sidebar): 「智能体」区支持收起/展开
...
标题栏改为可折叠头(chevron 切换),收起后仅留标题栏并隐藏来源下拉/搜索/列表,
下方「最近的对话」占满剩余空间;收起状态持久化到 localStorage。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-19 16:09:01 +08:00
吉鑫升 and Claude Opus 4.8
8cc2650e98
feat(agent-sidebar): 独立问答智能体列表栏增加「最近的对话」区(参考首页)
...
左栏改为上下双区:上半智能体列表(来源下拉+名称搜索),下半新增「最近的对话」——
跨智能体近期会话、计数徽标、历史搜索、点击打开/当前高亮/置顶标记,含重命名/置顶/
收藏/分享/导出/删除菜单。会话链接走 usePathOfThread,自动带路由命名空间与 agent_id。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-19 16:09:01 +08:00
吉鑫升 and Claude Opus 4.8
1f2a1aaa76
feat(agent-sidebar): 「智能体」区支持收起/展开
...
标题栏改为可折叠头(chevron 切换),收起后仅留标题栏并隐藏来源下拉/搜索/列表,
下方「最近的对话」占满剩余空间;收起状态持久化到 localStorage。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-19 15:04:30 +08:00
吉鑫升 and Claude Opus 4.8
c1c23d9136
feat(agent-sidebar): 独立问答智能体列表栏增加「最近的对话」区(参考首页)
...
左栏改为上下双区:上半智能体列表(来源下拉+名称搜索),下半新增「最近的对话」——
跨智能体近期会话、计数徽标、历史搜索、点击打开/当前高亮/置顶标记,含重命名/置顶/
收藏/分享/导出/删除菜单。会话链接走 usePathOfThread,自动带路由命名空间与 agent_id。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-19 14:42:40 +08:00
吉鑫升 and Claude Opus 4.8
13ef1942f2
feat(agent-sidebar): 独立问答智能体列表栏顶部增加智能体名称模糊搜索
...
下拉来源切换下面加搜索框:防抖 300ms 走服务端 search(按原始名 + 内置缩写
脱敏映射匹配,与智能体管理页一致),在当前来源(我的/某广场)内搜全量;
带清除按钮、无结果显示「未找到匹配的智能体」、搜索中复用 isFetching 半透明指示。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 11:16:39 +08:00
吉鑫升 and Claude Opus 4.8
0bd4524334
feat(task-deeplink): 首次进入且任务无历史时自动发送,无需手动点开始回答/覆盖
...
新增「首次进入且该任务无聊天对话」信号 taskAutoStart:TaskFxIndexResolver 在
「无历史 → /new」时注入 state,用户主动点「新建对话」则不带。
- 3qfx/xdfx:taskAutoStart 时自动发出开场词(一次性 ref,不受 mount 时 threadId
抖动影响、不会重复发),不显示「开始回答」按钮;用户主动新建对话才显示按钮手动发。
- rwfx:闸门 autoStartWhenEmpty = autoStartWhenPurposeEmpty && taskAutoStart,即仅
首次无对话历史时目的树为空才自动开始;目的树有数据始终弹「覆盖并开始问答」确认(不误删 B 系统数据)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 09:51:50 +08:00
吉鑫升 and Claude Opus 4.8
6aaa4c841e
feat(task-deeplink): 3qfx/xdfx 新建对话改手动「开始回答」+ xdfx 行动详情卡片 + 独立问答智能体列表栏
...
- AgentChatPage: 纯绑定深链(3qfx/xdfx)不再自动发开场信息,改由右上角「开始回答」按钮手动触发,从根上消除新建对话竞态导致的重复发送;移除 autoSentArmedRef/streamThreadId 相关逻辑
- task-deeplink.ts: 抽出 fetchActionDetail 返回整包 ActionDetail,fetchTaskIdFromAction 复用之
- TaskFxWorkspace: xdfx 左栏「当前任务」下新增「行动详情」卡片(行动名称/叙事)
- StrategyRoutes/WorkspaceRoutes: 独立智能体问答整页新增最左「智能体列表」栏(showAgentList);xdfx 右侧宿主改用 TaskBindChat(精简版)
- 新增 agent-chat-sidebar.tsx
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 20:55:41 +08:00
吉鑫升
179a3f2b2f
Merge branch 'ji' into master
2026-06-18 19:24:03 +08:00
吉鑫升 and Claude Opus 4.8
678035afed
fix(frontend): 修复 3qfx/xdfx「新建对话」开场白重复发送两次
...
根因:mount 进入 /new 时 useThreadChat 会抖动 threadId(useState 先给一个 uuid,
紧接着 effect 又 setThreadId(新 uuid))。旧去重用 taskAutoSentRef,而 reset effect
依赖 threadId,被抖动重置回 false;此时 onCreated 未回、streamThreadId 仍为
undefined(守卫放行),自动发送 effect 二次触发 → 发两次、创建两个线程,回答开始时
切到最终线程,表现为「开始回答后突然变成一个」。
改为「武装」标志去重,只在会话真正创建完成(isNewThread→false)后才重新武装,
对 threadId 抖动免疫,保证每个新建会话恰好自动发一次。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 19:19:23 +08:00
吉鑫升
3aa629f0df
Merge branch 'ji' into master
2026-06-18 17:17:11 +08:00
吉鑫升 and Claude Opus 4.8
e5ca717783
fix(frontend): 修复 3qfx/xdfx 任务深链「新建对话」开场白发进上一个会话
...
根因竞态:从已有会话点「新建对话」时 isNewThread 立刻翻 true,但 useThreadStream
的 onStreamThreadId 慢一帧才归零;自动发送 effect 同帧 submit,而 SDK 的
SubmitOptions.threadId 仅在 hook 线程为空时生效,于是开场白发进了上一个对话
(表现为「一直在同一个聊天框里发消息」,首次正常、之后每次都串)。
- useThreadStream 追加返回当前绑定的流线程 id onStreamThreadId(向后兼容)
- AgentChatPage 自动发送 effect 增加守卫 streamThreadId == null:等底层 stream
切到全新线程后再发,开场白即落到新建对话
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 17:16:19 +08:00
吉鑫升 and Claude Opus 4.8
29cc004b69
feat(frontend): 任务工作区/目的树脱敏 — 业务名→业务码 + 数据值过 desensitize
...
- 种子脱敏表新增 任务分析→rwfx / 三情分析→3qfx / 行动分析→xdfx(整词在前,优先于「任务」「行动」匹配)
- TaskFxWorkspace:左上业务名 + 底部快捷跳转按钮标签过 desensitize
- TaskPurposePanel:目的树表头/单元格正文/理由过 desensitize
- 硬编码 UI 文案与 admin 按钮管理页保持原文(与菜单管理一致)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 16:52:59 +08:00
吉鑫升
77aa895a70
Merge branch 'ji' into master
...
# Conflicts:
# offline-backend-20260512/backend/CLAUDE.md
# offline-backend-20260512/backend/app/gateway/app.py
# offline-backend-20260512/backend/app/gateway/deps.py
2026-06-18 16:36:30 +08:00
吉鑫升 and Claude Opus 4.8
ecb79ce49c
feat: 3qfx/xdfx 任务深链 1:N 工作区 + xdfx 行动id解析 + 3q详情链接
...
- 3qfx/xdfx 单智能体改走任务工作区(TaskFxWorkspace):按 taskId+agent_id 隔离的
1:N 对话列表;3qfx 纯绑定(taskBind 自动发开场信息),xdfx 带目的树闸门(taskGate)
- 左上角「当前任务」卡片:留存查询到的任务名称+简介(readCopTaskDetail)
- rwfx 工作区新增「切换到三情分析」按钮,带同一 taskId 进入 3qfx
- xdfx 深链传入的是行动id:resolveDeeplinkTaskId 经 action 接口解析出真正任务id
(可配置 action_detail_url + action_test/mock.action_detail,离线可测)
- 目的树面板「弹框查看」旁新增可配置「3q详情」链接(detail_3q_url + ?id=任务id)
- AgentChatPage 拆分 taskGate/taskBind;use-task-threads 增加 agentId 过滤隔离
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 11:37:05 +08:00
吉鑫升 and Claude Opus 4.8
47bf0c2a1b
Merge branch 'ji' into master
...
合入 ji 的两处前端修复(任务深链开场信息补 task_id + 加宽任务目的弹框)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 20:40:47 +08:00
吉鑫升 and Claude Opus 4.8
85dc5466c5
fix(frontend): 任务深链开场信息补充 task_id + 加宽任务目的弹框
...
- rwfx 任务深链开场信息末尾追加「任务id(task_id)为xxx」,让后端能识别任务
(buildOpeningText 增加 taskId 参数,覆盖 pendingAgentMessage 与任务上下文两条路径)。
- 任务目的「弹框查看」用 sm:!max-w-[90vw] 覆盖 DialogContent 基类的 sm:max-w-lg
(此前无前缀的 max-w-4xl 被基类响应式类压回 512px,故加宽不生效)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 20:39:22 +08:00
吉鑫升
af8db1d24c
Merge branch 'ji' into master
2026-06-17 17:39:23 +08:00
吉鑫升 and Claude Opus 4.8
54fff09e74
feat(frontend): 不带 sidebar 的聊天页顶栏右侧也展示名称+岗位
...
紧凑布局(无全局 Header)下复用 UserIdentityBadge,数据源与全量模式 Header 一致,仅在 !compactChrome 时渲染,避免与全局顶栏重复。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 17:36:39 +08:00
吉鑫升
6c47da82c4
Merge branch 'ji' into master
2026-06-17 17:21:15 +08:00
吉鑫升 and Claude Opus 4.8
392394b4c9
fix(db): 修复 alembic 多 head 导致后端启动失败
...
迁移图存在两处问题导致 `alembic upgrade head`(网关启动时执行)报
"Multiple head revisions are present":
1. 20260612_01 分叉出 20260615_01 与 20260616_03 两个 head 未合并;
2. 20260611_01、20260616_02 各被两个文件重复占用,污染 DAG 产生幽灵 head。
处理:
- roundtable_draft_task_id 20260611_01 -> 20260611_02(接在 square_id 之后),
20260612_01 父节点改指 20260611_02;
- skill_favorites 20260616_02 -> 20260616_04(接在 knowledge_folders 之后),
20260616_03 父节点改指 20260616_04;
- 新增 no-op 合并迁移 20260617_01 合并 (20260615_01, 20260616_03)。
保留 20260611_01 / 20260616_02 原 id 不变,仅重命名重复副本,已 stamp 的库不受影响;
所有迁移均有 _has_table/_has_column 守卫,全链路在已建表的库上重跑为安全 no-op。
`alembic heads` 现仅余单一 head 20260617_01,无重复告警。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 17:19:29 +08:00
吉鑫升 and Claude Opus 4.8
a2bb8c80a2
feat: 任务目的树表格化展示 + 切换会话停止老对话服务端 run
...
- task-purpose: normalizeNode 容错(未知 *Dto 兜底/文本字段改名兜底);新增 flattenPurposeTree 拍平目的树
- TaskPurposePanel: 目的树改表格展示(列数自适应),支持弹框放大查看
- threads/hooks: 新增 stopThreadRun,真正取消服务端 run(非仅断开本地 SSE)
- AgentChatPage: taskGate 下切换/卸载会话时停掉老对话服务端 run
- TaskFxWorkspace: 操作按钮(编辑/下一步/清除)改右下角常驻红色浮层
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 16:42:05 +08:00
吉鑫升 and Claude Opus 4.8
a2d767e2db
feat: rwfx 任务深链支持目的树闸门 + 任务↔对话(1:N)绑定
...
后端
- config.yaml 新增 task_deeplink 段:完整 URL(无 base)+ test/delete_test 两个独立测试开关
+ mock 假数据(目的树 / delete 结果,可随时编辑)
- 新增 TaskDeeplinkConfig 模型挂到 AppConfig;新增公开只读接口
GET /api/public/config/task-deeplink 暴露给前端(/api/public 已在鉴权白名单)
前端
- 登录深链 goPath=rwfx 进入「任务工作区」:左侧按 metadata.taskId 过滤的对话列表
(新建对话 / 编辑 / 下一步 / 清除任务记录)+ 右侧问答
- 新建对话(含首次进入)顶部展示目的树闸门:有数据弹覆盖确认→调 delete,success 才开始问答;
恢复历史对话不跑闸门
- 新建 thread 打 metadata.taskId 标签实现「一个任务挂多个对话」(1:N)
- 地址/开关/假数据全部走后端配置,拿不到时用内置默认值兜底;test/delete_test=true 走假数据
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 15:59:02 +08:00
吉鑫升
5f39879e4d
Merge remote-tracking branch 'origin/master' into ji
2026-06-16 21:08:37 +08:00
吉鑫升 and Claude Opus 4.8
342fa8265a
feat: 知识批量沉淀改为后台任务,避免 nginx 504
...
- /ingest/threads/batch 新增 background 参数(默认 true),立即返回 {queued:true}
- 抽取循环抽出 _run_batch_ingest,后台路径显式传入 created_by
- 前端知识库页与输入框、线程 hooks/types 配套调整
- config.yaml 上下文压缩测试值
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 21:07:17 +08:00
吉鑫升 and Claude Opus 4.8
4f0494a97a
feat: 聊天增加回到最新悬浮钮,智能体面板生成即收起
...
- 复用 ConversationScrollButton 接入 MessageList,滚离底部时显示一键回到最新问答的悬浮按钮;新增 scrollButtonClassName 以适配各页输入框高度
- 智能体详情面板改用 open+selectedArtifact 判定收起,流式写文件开始即收起让位预览,不再等生成结束
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 19:24:48 +08:00
吉鑫升 and Claude Opus 4.8
d82b5ed884
feat: 摘要中间件增加压缩日志,提炼模板编辑框定高
...
- summarization_middleware: 真正压缩与复用缓存均记录 info 日志,便于无 stream writer 场景(定时任务/渠道/测试)排查
- KnowledgeManage: 提炼模板 system prompt 编辑框固定为 50vh 高度,内部滚动
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:40:14 +08:00
吉鑫升 and Claude Opus 4.8
97da7dc87f
feat: 推荐问题配置支持按标签搜索并在列表展示标签
...
- 后端列表接口为每个推荐问题附带 tags,并支持 tag_ids OR 过滤
- 前端配置页新增 TagSearchBar(标题/内容搜索 + 标签筛选),卡片展示标签
- 打标签后失效 recommended-questions 查询,列表即时刷新
- 过滤时禁用拖拽排序,避免破坏 sort_order
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 16:52:30 +08:00
吉鑫升 and Claude Opus 4.8
5182ea5d11
feat: 技能收藏与常驻(always-on)支持
...
- 新增 skill_favorites / skill_always_on 迁移与持久化模型字段
- skills 路由、存储、前端设置页支持收藏与常驻
- 调整摘要中间件与 lead agent 提示词
- 同步岗位 position_sync 及相关配置清理
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 16:37:43 +08:00
吉鑫升 and Claude Opus 4.8
5ebbb82d66
feat: 知识库文件夹/模板、技能压缩设置与摘要窗口调优
...
- 知识库新增文件夹与模板支持(模型/仓储/服务/迁移),前端知识管理组件
- 岗位管理模型与接口完善
- 技能新增压缩设置页与相关存储/工具能力
- 系统设置扩展配置项
- 摘要中间件 keep 窗口改用 token 预算(16000),减少重复压缩
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 15:23:54 +08:00
吉鑫升 and Claude Opus 4.8
e6662cf673
refactor: 移除提示词模板页面及相关接口,精简岗位/标签/用户提示词模型
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 14:32:21 +08:00
吉鑫升 and Claude Opus 4.8
838e986670
feat: 导航菜单新增岗位管理与提示词模板入口
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 11:14:47 +08:00
吉鑫升
fa70b31873
Merge remote-tracking branch 'origin/master' into ji
...
# Conflicts:
# frontend-web/src/components/workspace/input-box.tsx
# offline-backend-20260512/backend/CLAUDE.md
2026-06-16 11:07:31 +08:00
吉鑫升 and Claude Opus 4.8
3855c30edd
feat: 新增岗位管理、提示词模板与资源标签,完善用户提示词与推荐问题接口
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 10:49:36 +08:00
吉鑫升 and Claude Fable 5
2f414c6e08
fix: HTML 预览子页面改用 JS 切换,避免沙箱 blob 导航被拦截
...
上一版通过设置 location.hash 触发 CSS :target 切页,但沙箱 blob
iframe 禁止导航到自身 blob URL,浏览器报 Not allowed to load local
resource,且 :target 仅在真实片段导航时更新,注定失效。改为完全
不动 hash,用 JS 模拟 html-multipage 技能的 .page/.pages 显示隐藏
(内联 display 覆盖类级 CSS),普通目录锚点仍平滑滚动。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-16 09:19:15 +08:00
吉鑫升 and Claude Fable 5
21e53310f8
fix: HTML 预览锚点点击同步 hash,修复多页面技能子页面切换失效
...
预览 iframe 注入的锚点拦截脚本只 preventDefault + scrollIntoView,
URL hash 从未改变,html-multipage 技能基于 CSS :target 的子页面
切换永远不命中,子页面 section 保持隐藏,点击无效。改为拦截后
同步 location.hash 触发 :target 切页,仅当目标元素已渲染时再平滑滚动。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-12 21:49:32 +08:00
吉鑫升 and Claude Opus 4.8
74113b3e6e
feat: 智能体与技能列表显示创建时间字段
...
- 新增共享 formatDateTime 工具(YYYY-MM-DD HH:mm)
- agent-card 卡片/列表视图在发布者下方显示创建时间
- skill 设置页 metaNodes 显示创建时间
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 21:20:33 +08:00
吉鑫升
d825cc7cfe
Merge branch 'ji'
2026-06-12 20:28:27 +08:00
吉鑫升 and Claude Opus 4.8
595da9f339
fix: 私密广场首次加载默认 page=1,使搜索/标签过滤生效
...
私密广场标签页传 page: pages.private,初始为 undefined,被 JSON.stringify 丢弃后后端走非分页分支忽略 search/tag_ids。补上 ?? 1 兜底,与主标签页一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 20:27:29 +08:00
吉鑫升 and Claude Opus 4.8
44b4a4beba
feat: 注册知识入库接口 + 优化大规模知识图谱力导向布局
...
- 后端 Gateway 挂载 /api/knowledge-ingest 路由(发布 md 制品)
- 知识图谱力模拟按节点规模缩放斥力/截断距离/冷却速率,避免数百节点时布局长时间不收敛
- 斥力与碰撞改为基于均匀网格的近邻对计算,并增加每帧最大位移限制防止抖动与飞出
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 20:14:22 +08:00