-
排查「前端刷新不及时/没有打字机效果」发现现状已是 SSE,不需要换 WebSocket, 真正缺的是三件独立的事: - 打字机平滑:后端把 ACP chunk 按 10 字符切片再发 SSE,前端用定时器队列 (agentChatEvents.js 的 createTypewriterQueue)匀速吐出,抹平网络突发。 - 打断并发送:执行中解锁输入框,新增 ⤴ 按钮与 ⏹ Stop 视觉区分;stop 端点 改为轮询确认 agentChatLocks 真正释放(3 秒预算)再返回 cleaned 字段, 前端据此决定直接发送还是走"强制发送"兜底。顺手修了一个真实并发漏洞: 同一 agentId + 同一 convId 的并发请求过去完全没有闸门,只是一直靠前端 textarea 的 disabled 属性侥幸没被触发。 - 串台加固:把 handleEvent 分发逻辑抽成不依赖组件实例的纯函数 (agentChatEvents.js),补上 9b1c3f1 那条不变式的回归测试。 已用真实 Claude CLI 会话(非 mock)在浏览器里验证打字机效果、打断并发送 全流程、以及纯 Stop 无回归。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HDtmdnE6pay9BhwZDAKK6M
-
Master Agent 固定置顶,其余 agent 可通过卡片右侧"⋯"菜单手动置顶/取消置顶 (状态存 localStorage)。置顶的 agent 渲染成独立的框,跟下方可滚动列表分开, 避免了 sticky 定位下其他条目从底下滑过的观感问题。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CRNPSJBNTPa77fzM1mZo9z
-
AgentChat.vue 之前把 sending/streaming/streamContent/thinkingText/ thinkingContent/subAgents/acpLog/messages/activeConvId 全部做成页面级单例 ref, 不区分是哪个 agent 的。切 agent 时既不取消上一个还在跑的读流循环,也不重置这些 状态,导致三个连环症状:①思考中/等待回复横幅带着切过去;②只要有任意一个 agent 在跑,所有 agent 的输入框都被同一个 sending 锁成"等待回复中";③A 流式输出时切去 看 B,A 的内容被当成 B 的渲染,A 说完那句话直接被 push 进 B 的消息列表。 改为按 agentId 存一份 reactive Map(chatStates),模板读"当前选中 agent"那一份 slice;handleSend/handleEvent 认发起时捕获的 requestAgentId 写自己的 slice,不认 "用户现在选中的是谁"。switchAgent 不再无条件清空目标 agent 状态——只有它空闲时 才去刷新/定位会话,正在生成就原样展示缓存,回切能看到完整后台进度。真机验证: 向 Master 发消息流式生成期间切到另一个 agent,输入框未被锁定、无状态污染,切 回 Master 能看到完整正确的输出。 顺带把已经在这个文件里的一处未提交小改动(agent 列表排序:Master 置顶)一并 收进这次提交,不是本次改动的一部分。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
侧栏 170px 太窄看不全 agent 名字,改成 260px 并把名字从省略号截断 改成允许换行;顶部加搜索框按 name/id 过滤列表,点击过滤结果复用 已有的 switchAgent() 跳转逻辑,不用额外写定位/滚动代码。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
config.json 的 name 字段是工位显示名(如 org-coder 显示成"实现节点"、 coder 显示成"实现"),Overview 页 Agent 表格和 System Agents 侧边栏此前 只渲染 name、不带 id,导致界面上看不出某个显示名对应哪个 work graph 节点绑定的 system_agent_id。后端接口本就返回 id 字段,这里只是补上前端展示。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
…aruncreate skill paths - Upload skill files to .claude/skills/ (Claude Code ACP reads from here) - Add conversation type filter (user/callback/task/train) to AgentChat - Parse messages.log for richer conversation history display - Fix idearuncreate template & company agent skill directory structure - Add adm-zip dependency for ZIP extraction - Add fs/path top-level requires in company.js
-
- Updated `GET /api/agent/:agentId/info` to include heartbeat and cron configurations. - Added `PUT /api/agent/:agentId/heartbeat` to update config.json and toggle service heartbeat on the fly. - Added `PUT /api/agent/:agentId/cron` to update cron.json list. - Updated AgentChat.vue detail panel UI to include interactive heartbeat toggles and a cron job management list.
-
- Updated `POST /api/company/create` to create an empty shell without bootstrapping CXO/HR automatically. - Updated `master/agent.md` instructions so Master Agent handles all Template library hirings. - Renamed 'MasterBot' navigation link to 'System Agents'. - Updated AgentChat sidebar to only show System Agents when accessed via the System Agents link.
-
- Chat list: added 🗑 delete button per conversation (hover to reveal) - Calls DELETE /api/agent/:agentId/conversations/:convId - Backend also cleans up associated log files - Detail file tree: added 🗑 delete button per file/folder (hover to reveal) - Backend: DELETE /api/agent/:agentId/file/* with path traversal protection - Detail preview: upgraded from readonly <pre> to editable <textarea> - Backend: PUT /api/agent/:agentId/file/* for saving - Shows 'unsaved' badge + save/reset buttons when dirty - Tab key support, monospace font, auto-fill height
-
- ClaudeCliProtocol: stderr 检测 rate_limit/429/401 等致命错误时自动 reject sendPrompt Promise - agent-chat.js: 监听 stderr/disconnected 事件并通过 SSE 推送到前端 - AgentChat.vue: error 事件停止 thinking 状态 + ACP 日志面板显示错误
-
- System agents: 只保留 master (data/system/agents/master) - Templates: 所有可复用 agent 模板 (data/system/templates/) - Companies: 公司创建时自动部署 5 个元 Agent (innovator/hunter/digester/evolver/agent-creator) 路径修复: - agent-chat.js: /list 扫描路径修正 (system/agents + companies/*/agents) - agent-manager.js: 动态 agent 查找路径修正 - skill-config-loader.js: 修正 agents root - pipeline-service.js: pipelines 输出到 companies/{id}/pipelines/ - billing.log: 移至 companies/{id}/logs/ 下 Skills 标准化: - 所有 template agent 建立 .claude/skills/main_skill/SKILL.md - company-service._copyTemplate() 新增 .claude/ 目录复制 - innovator SKILL.md v3.0: 移除旧 l3-hunt/l2-digest 命名 - 清理重复 agent_creator, 统一为 agent-creator 清理: - 移除 data/agents, data/workspace, data/logs, data/goals 旧目录 - 清除所有未使用的 DATA_DIR 声明 - 清除 template 中的 conversations/logs/memory 运行态数据
-
…ter Agent cognitive auto-recovery loop - Refactored CompanyDashboard into read-only Observer UI - Enforced strict companyId:roleId namespacing across Node APIs and AgentManager - Added dynamic <env_status> injection to PromptBuilder for robust context - Introduced bin/lemon.js CLI for structured LLM tool execution - Implemented in-stream error interceptors for implicit silent retry loop
-
- Implement OKR GoalsService with hierarchical node tracking - Add /api/goals routes and integrate with dispatch/report APIs - Create Innovator agent with Hunt→Digest→Evolving pipeline - Create Hunter (l3-hunt), Digester (l2-digest), Evolver (evolving) meta agents - Copy L1/L2 dependency skills into each agent's .claude/skills/ - Fix buildSystemPrompt to scan ALL skill subdirectories (critical) - Fix agent list sorting: master pinned top, rest by lastActiveAt - Rename master-001→master, innovator-001→innovator - Establish meta agent output convention: write to target agent dir - Add CXO agent base class for management agents - Update CEO agent with delegation-first management model
-
- Agent as Micro-Container: each agent lives in data/agents/{id}/ with full encapsulation - Persona vs Capability split: agent.md (identity) + .claude/skills/main_skill/SKILL.md (workflow) - Conversations co-located: data/agents/{id}/conversations/ replaces global dir - Meta Skills renamed: meta_hunt, meta_digest, meta_creator, meta_evolving, meta_benchmark, meta_research - Dynamic Hot-Reload: AgentManager.getAgentConfig() falls back to filesystem scan - Parallel Sub-Agent orchestration via Promise.all with multi-terminal UI - Removed SQLite dependency, global skills/ directory, and legacy conversations/ - Full architecture docs: 18-local-filesystem-first-agent-encapsulation.md