|
|
c2d460a706
|
feat: 宿主机模式网络沙箱
- macOS sandbox-exec profile 支持 network_permission 参数 (restricted/full/none)
- backend: 透传网络权限至 run_command / terminal_session / sub_agent / background_command
- 后台 run_command 接入沙箱执行
- 自动审核模式兼容网络权限报错 markers
- 运行时切换网络权限通过 pending 机制 + user 消息通知
- 提示词注入网络状态 (仅沙箱模式)
- 前端权限菜单新增网络权限组 (受限/完全开放)
- direct 模式下网络权限组变灰禁用
- settings.json 默认 HOST_SANDBOX_NETWORK_PERMISSION=restricted
|
2026-06-19 00:22:30 +08:00 |
|
|
|
f75e2f07a3
|
refactor(deep_compression): 改造深度压缩消息结构、提示词加载与前端展示
- 删除 compact 文件和 inject guide 中的最近工具记录
- 新结构:用户所有输入(按压缩轮次分段)+ 历次压缩总结 + 最近一次输入
- 用户输入分段标记改为 <第N次压缩> 和 <当前触发的第X次压缩>
- 压缩总结提示词迁移到 prompts/deep_compression_summary.txt
- deep_compression_records 增加 user_inputs_before 和 summary 字段
- 压缩后清空全部 frozen prompt 缓存
- 修复 wait 模式 in-place 压缩前端不刷新问题
- 更新手动压缩确认弹窗文案
- 修复 _apply_workspace_personalization_preferences 测试 mock 签名
- 清理 context.py 中误导性的主提示词构建参数
|
2026-06-18 14:50:16 +08:00 |
|
|
|
c5dde27faa
|
fix(frontend): terminal_input 显示参数从 timeout 改为 output_wait,标签改为等待时间
|
2026-06-17 22:02:06 +08:00 |
|
|
|
f43b5ea73b
|
fix(chat): 运行期间恢复旧滚动逻辑,堆叠块更多按钮也接入锚定
|
2026-06-17 16:25:02 +08:00 |
|
|
|
edb557bdd3
|
feat(chat): 优化块展开/折叠滚动锚定,避免 stick-to-bottom 弹簧追底顿挫
|
2026-06-17 15:24:15 +08:00 |
|
|
|
55b7b7deea
|
fix(web): _resolve_workspace_id 未匹配时兜底返回 default 而非 None
host_workspaces.json 存在但不匹配时,不应返回 None 导致
对话目录指向 conversations_root 而丢失 conversations_root/default/
下的所有对话。
|
2026-06-16 22:54:12 +08:00 |
|
|
|
f31f8d6fd7
|
feat(host): host 模式同时加载 host/ 和 web/ 用户数据
- paths.py: 新增 IS_HOST_MODE / WEB_DATA_DIR / WEB_USER_SPACE_DIR
- user_manager.py: host 模式合并两处用户列表与工作区
- 已有 web 工作区直接复用,新数据写入 host/
- 更新 AGENTS.md / CLAUDE.md 文档
|
2026-06-16 22:39:32 +08:00 |
|
|
|
ad1e9e1475
|
fix(easyagent): 移动 tools.json 到 src/tools/,修复被 .gitignore 中 doc/ 规则误排除的问题
tools.json 是子智能体运行时工具定义 Schema(OpenAI function calling),
不是文档,不应该放在 doc/ 下。doc/ 被 .gitignore 忽略导致部署后文件缺失。
- 移动 easyagent/doc/tools.json → easyagent/src/tools/tools.json
- 更新 batch/index.js 和 cli/index.js 中的引用路径
|
2026-06-16 20:18:45 +08:00 |
|
|
|
1da269e2aa
|
fix(前端): 目标模式刷新/切换对话稳定性修复
- 切换/停止任务后立即 stopPolling,防止旧任务目标事件污染新对话
- 目标进度/完成/停止回调增加 conversation_id 归属校验
- 刷新恢复改为复用现有 assistant 容器+增量追加事件,去掉无条件强制重建,避免视觉闪回与同步重放卡死
- 压缩消息不再另起 work segment,继续前一段
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-16 19:46:19 +08:00 |
|
|
|
ea4e5dc14b
|
fix: recall_project_memory 工具返回实际内容而非仅行号范围
复用 read_file 的格式化逻辑,修复只返回"行 X~Y"摘要、丢失 content 的问题
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-16 19:43:11 +08:00 |
|
|
|
f43025047e
|
refactor(config): 统一配置源,迁移数据到 ~/.agents/agents/
- config/paths.py: data_root 改为 ~/.agents/agents,config/ 提至根目录共享
- config/__init__.py: 统一加载 .env + settings.json,注入 legacy 环境变量
- 移除 4 处独立 .env 读取 (auth/model_profiles/api_client/chat_flow/balance)
- 新增 docs/config_refactor_plan.md 完整改造计划
- 数据已从 ~/.agents/host/ 迁移至 ~/.agents/agents/
|
2026-06-13 21:37:02 +08:00 |
|
|
|
50e49d60ec
|
fix: /菜单手动滚动后高亮条切换为鼠标hover模式
|
2026-06-12 01:17:51 +08:00 |
|
|
|
095e0631c1
|
feat(sidebar): 统一Git和终端侧边栏空状态样式
- Git空状态改为图标+大字,与终端风格一致
- 终端空状态去掉小字,文字改为当前没有开启的终端
- 统一头部栏高度为38px
- 统一空状态图标颜色为var(--text-tertiary) + 整体opacity
- 统一空tab文字为13px/600字重/左对齐
- 新增folder-git-2.svg图标
|
2026-06-12 01:04:40 +08:00 |
|
|
|
55097cb3fc
|
fix: 消息队列自动发送消息metadata错误标记为guidance
|
2026-06-12 00:34:31 +08:00 |
|
|
|
7d716b8b90
|
fix(ui): 终端侧边栏自动开关改为仅数量变化时触发一次
- 旧逻辑每次轮询都执行开关,导致面板关不掉/瞬间关闭
- 新增 previousTerminalCount 追踪,仅 0→>0 时开、>0→0 时关
|
2026-06-12 00:26:15 +08:00 |
|
|
|
2e54f2c343
|
feat(terminal): 实时终端改造为侧边栏面板,支持拖拽分割与自动开关
- 将实时终端从独立页面改造为 Vue3 侧边栏面板,与 Git 面板上下排列
- 使用 xterm.js + Grid 布局,支持三主题配色适配
- 上下拖拽分割条,动态调整终端/Git 面板比例
- 输入栏上方新增终端数量按钮,点击快捷打开
- 个人空间新增「自动打开终端面板」开关(外观与显示分类)
- REST API /api/terminals 获取终端列表,多时机自动刷新
- 有终端自动打开面板,无终端自动关闭
|
2026-06-12 00:18:27 +08:00 |
|
|
|
788753f6fd
|
feat(slash-menu): 扩展 / 菜单至19项,可见行数5→7,等比缩放样式,优化间距
|
2026-06-11 11:47:41 +08:00 |
|
|
|
af4ec5c1a8
|
feat(composer): / 菜单选中切换添加流畅动画
- 提取 skill-slash-menu-wrapper 外壳层,高亮条脱离滚动容器独立定位
- 一个 rAF 循环同时驱动 scrollTop 和高亮条 top,帧帧精确同步
- 中间区域:高亮条视觉上钉在正中,列表平滑滚动
- 两端边界:高亮条平滑跟随,无偏差
|
2026-06-11 01:29:03 +08:00 |
|
|
|
f9d194f100
|
fix(ui): 块模式展开箭头改用SVG mask,修复偏位和非中心旋转
|
2026-06-11 00:24:56 +08:00 |
|
|
|
04128fac14
|
fix(frontend): 修复 read_file 搜索结果显示"行??"的问题
后端 search_text 返回 line_start/line_end,前端错误地读取了不存在的 line_number 字段。
改为正确读取 line_start 和 line_end,且当上下文窗口合并时显示完整行范围。
|
2026-06-10 19:49:06 +08:00 |
|
|
|
76e4c5144e
|
feat(personalization): 去掉保存按钮,所有选项改为实时自动保存
- personalization store 新增 scheduleAutoSave/autoSave 防抖方法(500ms)
- updateField 及所有 mutation 方法修改后自动触发保存
- PersonalizationDrawer 删除保存按钮和 settings-save-bar
- handleStackedHideBordersChange 移除显式 save 调用
|
2026-06-10 19:44:33 +08:00 |
|
|
|
0ed262c87b
|
fix(ui): 深色模式块底部运行指示线太亮,改用 accent 灰色系
|
2026-06-10 19:27:28 +08:00 |
|
|
|
ee9ac28f26
|
feat(compression): 对话压缩提示词新增当前任务进度与下一步行动条目
|
2026-06-10 19:24:18 +08:00 |
|
|
|
dcb25dfe89
|
fix: 堆叠块深色hover不可见 & 底部块高度偏差 & 新增隐藏边线开关
- 深色模式 hover 修复:用 !important 覆盖 _overlays 中的 surface-panel 规则,使用 --hover-bg(6%白) 对齐对话列表 hover
- 底部块高度修正:shellHeight = targetShell + 2 补偿 border-box 下内容区裁剪
- 深色模式运行横条改为白色(var(--text-primary))
- 新增隐藏边线开关:后端 PersonalForm 持久化 stacked_hide_borders,前端条件渲染开关(仅堆叠模式可见)
|
2026-06-10 19:18:29 +08:00 |
|
|
|
3abbf30422
|
feat(admin): 管理员密码管理功能,支持搜索用户名/邮箱重置密码
|
2026-06-10 17:41:21 +08:00 |
|
|
|
4004bceb0c
|
feat(config): 新用户默认deep模式+自动深压缩开启
|
2026-06-10 16:41:45 +08:00 |
|
|
|
820ec69354
|
feat(memory): 新增项目记忆系统,整合总体+项目记忆注入
- 新建 .agents/memory/ 项目记忆目录,支持 YAML frontmatter + Markdown
- 新增 update_project_memory / recall_project_memory 工具(复用 write_file/read_file)
- 新建 memory_system.txt prompt,总体长期记忆 + 项目记忆统一注入
- 记忆从 workspace_system.txt 中移出,独立为 memory_prompt 注入
- 重排 system prompt 注入顺序:主→权限→环境→对话→个性化→工作区→AGENTS.md→skills→记忆→禁用
- 压缩后选择性 invalidate 4 个 frozen keys(skills/workspace/personalization/memory)
- 前端:notebook/notebook-pen 图标、动画、状态文案、展开内容渲染
- 优化三个记忆工具的 description 和 memory_system prompt,引导模型主动调用
|
2026-06-10 15:14:01 +08:00 |
|
|
|
5d2da692b0
|
chore: remove easyagent/models.json with plaintext keys, add to gitignore
|
2026-06-10 03:26:35 +08:00 |
|
|
|
960d087db0
|
fix(sub-agent): stdout output, real-time progress, config externalization
- config/sub_agent: 子智能体模型配置走 deploy_config_path 直指,无回退
- easyagent/config: ensureConfig 文件不存在时 throw 而非自动创建
- easyagent/batch: 所有输出走 stdout JSONL (emit),不写文件;conversation 走 emit 不写工作区
- sub_agent_manager: 新增 conversation_file;运行期间 select 非阻塞 drain stdout 即时写 progress
|
2026-06-10 03:09:31 +08:00 |
|
|
|
6255efc594
|
perf: CSS content-visibility + containment 优化长对话渲染性能
- .message-block 添加 content-visibility: auto 跳过屏幕外消息渲染
- .messages-flow / .messages-area 添加 contain: layout style 隔离布局
- 减少长对话 DOM 重排开销,解决横向 resize 时的级联卡顿
|
2026-06-10 01:08:47 +08:00 |
|
|
|
d24e00b9b3
|
feat(voice): Android 端侧离线语音识别集成
基于 Sherpa-ONNX + SenseVoice int8 实现 APK 端侧语音识别:
- VoiceBridge: AudioRecord 录音 + 整段识别 + JS Bridge 回调
- ModelManager: 模型下载管理(自有服务器),支持断点续传/校验/删除
- 前端:语音按钮仅 APK 环境显示,识别结果回填 ProseMirror 编辑器
- 调试:文件日志 + /api/voice_debug 接收路由
- demo/sense_voice_demo.py: Python 端测 Demo
versionCode 24→36, versionName 1.0.22→1.0.34
|
2026-06-10 00:50:16 +08:00 |
|
|
|
62e2c08f5a
|
fix(style): 统一三主题 token 圆环绿黄红状态颜色为夜间模式值
|
2026-06-09 15:01:58 +08:00 |
|
|
|
644b609d85
|
fix(ui): 修复Git侧边栏刷新时loading文字闪烁 - 只在首次加载显示loading,刷新时保持现有文字避免闪烁
|
2026-06-09 12:21:40 +08:00 |
|
|
|
ca4bf17639
|
fix(chat): 运行期间权限切换使用pending机制,避免来回切换插入多余消息
- update_permission_mode / update_execution_mode 运行期间改用 queue 机制
- pending 值可被覆盖,最终若与当前相同则不通知
- 返回值直接返回 target_mode,前端立即更新 UI
|
2026-06-09 12:13:15 +08:00 |
|
|
|
ff7108738e
|
fix(style): 去除审批面板边缘光晕
desktop-approval-sheet 的 box-shadow 从大范围彩色扩散光晕
替换为项目既有的 var(--shadow-strong) 中性克制投影。
|
2026-06-09 11:46:20 +08:00 |
|
|
|
d5bf110b88
|
fix(style): 修复弹窗和审批面板文字颜色在深色模式下的异常显示
- confirm-title 添加 color: var(--text-primary)
- confirm-button--primary 使用 var(--on-accent) 替代 var(--text-primary),
修复浅色模式下黑底黑字不可读
- 审批面板 auto-approval-block 标题/内容/决策/原因 补充显式颜色
- 审批面板 approval-lines/approval-diff/approval-kv strong/approval-value
补充显式颜色,避免深色模式下继承为浅金色
|
2026-06-09 11:45:51 +08:00 |
|
|
|
033bea236c
|
feat(ui): 预输入/引导消息队列存在时自动隐藏Git状态栏
与 / 菜单出现时隐藏逻辑相同,在 floatingStatusVisible 中新增
runtimeQueuedMessages 和 hasPendingRuntimeGuidance 两项检查。
|
2026-06-09 11:42:37 +08:00 |
|
|
|
59b81c4551
|
fix(git): 修复Git变更面板中文文件名八进制转义显示
_run_project_git / _run_project_git_raw 添加 -c core.quotePath=false,
让 git 直接输出 UTF-8 原始路径名而非八进制转义形式。
|
2026-06-09 11:42:20 +08:00 |
|
|
|
a2a04b9529
|
fix(permission): 新建对话时优先加载个人空间偏好的默认权限模式
- core/web_terminal.py: create_new_conversation 中反转权限模式优先级,
优先使用 prefs.default_permission_mode,无效时再 fallback 到终端当前模式
- server/conversation.py: active_task 分支创建视图对话时同样使用用户偏好
|
2026-06-09 11:42:08 +08:00 |
|
|
|
bd338f7ad4
|
fix(runtime): 任务完成时不再注入权限/审核方式通知
模型准备结束工作时,队列中残留的权限/审核方式变更通知不应再
插入对话。改用 consume_runtime_guidance_for_injection 保留 source
信息,过滤掉 source 为'权限变更/执行环境变更/notify'的消息。
|
2026-06-09 11:41:55 +08:00 |
|
|
|
8d87068ba7
|
fix(chat): 修复内容大幅增长时滚动锁定不及时的问题
- 调整 vue-stick-to-bottom resize spring 参数,加快动画响应
(damping 0.68→0.5, stiffness 0.11→0.28, mass 1.05→0.75)
- 在 scrollListener 中添加高度突变检测,当 scrollHeight 大幅增长
(超过 200px 或 viewport 35%)且用户未脱离锁定时,用 instant
瞬间追底,绕过 spring 动画延迟和去重机制
修复场景:思考块展开、Markdown 表格渲染等造成大幅度垂直距离增加时
滚动锁定失效或锁住不及时的问题
|
2026-06-09 10:47:22 +08:00 |
|
|
|
2fcd241d94
|
fix(frontend): 移除历史消息加载时action-item的入场动画,仅流式输出时保留动画
|
2026-06-09 10:27:48 +08:00 |
|
|
|
4807c0b9f1
|
fix(frontend): 重构堆叠块高度引擎,根治鬼畜抖动并统一动画
StackedBlocks 旧实现每帧用 getBoundingClientRect 读正在过渡的块高度,
叠加 360ms runSync 轮询 + ResizeObserver + animateMoreToggle 三个驱动源
互相触发,形成不收敛的测量-回写反馈环 = 高频上下抽搐;且新块出现/展开
收起无外框动画(瞬间赋值且无 transition)。
高度引擎重构:
- 改测真实 DOM 稳定值(header.offsetHeight + content-inner.offsetHeight
+ border)算每块高度。content-inner 自身高度不受父级 collapsible-content
的 max-height 过渡/overflow 裁切影响,是稳定目标态值,杜绝读动画中间帧。
- 删除 runSync 轮询、animateMoreToggle JS lerp、逐帧 getBoundingClientRect。
measureAndCompute 仅在状态变化时测一次。
- ResizeObserver 只观察 content-inner(流式增长源),不观察被 transition 的
元素,断开写→RO→写回环。
- shell/viewport/inner 三者同一条 height/transform 260ms transition 同步过渡,
外框增高、传送带上移、展开收起、收起裁切全平滑。
单块路径统一(修 1→2 块重建鬼畜):
- splitActionGroups 阈值 >=2 改 >=1,单个 thinking/tool 也走 StackedBlocks,
消除 single↔stack 路径整体切换导致的组件重新挂载(表现为外框瞬间塌扁再展开)。
- 单块用 isSingle + .stacked-shell--single 还原原 single 外观(12px 圆角+透明底)。
首次/后续进场动画区分:
- ChatArea 传 conversation-running + is-latest-message。
- animated(运行中+最新) 控 TransitionGroup :appear/:css(块进场动画);
ready(首次 measure 后一次性) 控 shell/viewport/inner/collapsible-content
的 transition:初始挂载/历史批量加载高度直接到位不跳动,之后启用使展开/
收起在历史对话里也平滑。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-09 10:05:28 +08:00 |
|
|
|
0d4f6c9e56
|
fix(frontend): 修复对话压缩后页面抽搐、重复显示与滚动重置
三管齐下,消除 in-place 压缩触发的多余重载:
1. handleTaskEvent: _rebuildingFromScratch 重放时跳过
compression_finished/compression_state/shallow_compression,
打破 restoreTaskState 重放 → 再次触发压缩完成的无限循环。
2. handleCompressionFinished + compressConversation:
in-place 压缩(对话 id 不变)跳过 loadConversation +
restoreTaskState + loadConversationsList,
避免 resetAllStates 重置滚动状态和清空消息列表。
3. useLegacySocket conversation_loaded:
同对话 clear_ui 跳过 resetAllStates + fetchAndDisplayHistory,
避免后端 Socket.IO 推送触发二次重置。
|
2026-06-08 14:14:19 +08:00 |
|
|
|
66261e91c6
|
feat: 添加语音输入按钮,位于发送按钮左侧
- SVG线条图标风格,只用hover交互,不做边框
- 图标路径:static/icons/mic.svg
- 测试页面:static/voice_test.html
|
2026-06-08 14:14:19 +08:00 |
|
|
|
b6818bc0d0
|
fix: edit_file diff 显示修复 — 多行替换排序 & 行间间隙
|
2026-06-07 23:48:08 +08:00 |
|
|
|
84336b1802
|
fix(input): 重构消息队列动画 — 去掉容器外框、纯位移FLIP同步动画
|
2026-06-07 23:20:57 +08:00 |
|
|
|
d639278182
|
fix(overlay): 修复手机端图片/视频本地选择兼容性问题
- 将 local-files 事件类型由 FileList 改为 File[],避免 WebView 中 FileList 在 input 清空后失效
- 屏蔽文件选择器关闭后 500ms 内的 backdrop click,防止 touch 穿透误关 overlay
- 延迟 200ms 清空 input value,避免国产手机 WebView 异步填充 files 被截断
|
2026-06-07 17:19:53 +08:00 |
|
|
|
7c08031413
|
fix(android): 修复国产手机 WebView 中本地图片/视频选择无效的问题
- 将 .file-input-hidden 从 display:none 改为 opacity:0 + position:absolute
国产手机(华为/小米/OPPO/vivo)WebView 对 display:none 的 input[type=file]
选择后不会填充 files 属性,导致 change 事件触发但 files 为空
- 在 ImagePicker/VideoPicker 的 change 事件中增加空文件警告日志
- 在 upload.ts handleLocalImageFiles/handleLocalVideoFiles 中增加空文件
时的 Toast 提示,避免静默失败
|
2026-06-07 16:56:55 +08:00 |
|
|
|
5723da8eb1
|
fix(android): 修复 App 内本地图片/视频选择无效的问题
- AndroidManifest.xml 补充 READ_MEDIA_IMAGES / READ_MEDIA_VIDEO 权限(Android 13+ 必需)
- 将已废弃的 startActivityForResult 替换为 registerForActivityResult(Activity Result API),解决 Android 13+ 文件选择器回调丢失
- 同步更新 versionCode 24 / versionName 1.0.22
|
2026-06-07 16:34:26 +08:00 |
|