Matt Van Horn
f4a019a88d
feat: add smooth animations to kanban dashboard ( #293 )
...
添加卡片加载渐入动画、主题切换平滑过渡、Tab 数字计数器动画,纯 CSS + vanilla JS,尊重 prefers-reduced-motion
2026-04-20 00:23:01 +08:00
cft0808
f41c981a19
fix(dashboard): 统一所有时间字段为本地时区展示 ( #277 )
...
将流转日志、会话详情、奏章时间线、巡检报告中的原始 substring
时间提取替换为 parseDateFlexible + 本地格式化,消除 UTC/本地混用。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-14 23:05:15 +08:00
cft0808
18c15209ca
feat: free-form edict input + task output viewer ( #92 , #29 )
...
- Add '自由下旨' textarea in templates tab for natural language edicts
- Add /api/task-output/<id> endpoint to read deliverable content
- Add '查看奏章' button in memorial modal to load output inline
Closes #92 , Closes #29
2026-03-26 22:14:01 +08:00
cft0808
f31d1a7843
feat: add feedback button '祈告上苍' to dashboard header ( #98 )
...
- Opens GitHub issue creation with bug/feature templates
- Pre-fills title prefix and body template based on type
- Auto-sets appropriate label (bug/enhancement)
Closes #98
2026-03-26 22:06:58 +08:00
cft0808
1b506312a2
feat: add light/dark theme toggle to dashboard ( #152 )
...
- Add light theme CSS variables (html.light)
- Add toggle button in header with localStorage persistence
- All existing elements auto-adapt via CSS custom properties
Closes #152
2026-03-26 22:04:59 +08:00
cft0808
7cb0a6ad12
feat: multi-workspace task data auto-detection + time parsing improvements
...
- Auto-detect task data dir from ~/.openclaw/workspace-*/data (#117 )
- Score and select best task source (non-demo tasks preferred)
- Update healthz and live-status to use detected data dir
- Add robust parseDateFlexible() for timestamp handling (#67 )
- Add UTF-8 encoding to file_lock reads for Windows compat (#96 )
- Use absolute path in install.sh hint (#107 )
Closes #117 , Closes #107
2026-03-26 21:59:35 +08:00
cft0808
332ef07fc9
feat: multi-channel notification push (Phase 3+4)
...
- Integrate channel adapters into dashboard server push_notification()
- Add migrate_notification_config() for backward compatibility
- Add /api/notification-channels endpoint
- Update dashboard UI with multi-channel select
- Rename env vars to generic NOTIFICATION_ENABLED/DEFAULT_DISPATCH_CHANNEL
- Add env var fallback in sync_agent_config.py
Closes #200 , Closes #201
2026-03-26 21:52:54 +08:00
Matt Van Horn
fb0a8fb0a7
fix(dashboard): stop auto-archiving Done/Cancelled tasks in UI filter ( #147 )
...
The isArchived() function treated all Done/Cancelled tasks as archived,
hiding them from the active view immediately on completion. This caused
tasks with incomplete progress to appear archived prematurely.
Change isArchived() to only check the explicit archived flag, matching
the server-side archival logic. Done tasks now stay visible until the
user explicitly archives them.
Fixed in both dashboard/dashboard.html and edict/frontend/src/store.ts.
Note: dashboard/dist/ needs a rebuild (npm run build) to pick up the
React source change.
Closes #54
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-25 22:19:27 +08:00
cft0808
689b1eafbf
fix: 流程一致性审计修复 + 文档更新
...
状态机:
- kanban_update.py 新增 _VALID_TRANSITIONS 校验, 非法状态跳转被拒绝
- _STATE_AGENT_MAP['Taizi'] 从旧 ID 'main' 修正为 'taizi'
数据一致性:
- zaochao emoji 前后端统一为 📰 (store.ts + dashboard.html)
- zaochao org '朝报司' 修正为 '钦天监' (sync_from_openclaw_runtime.py)
- server.py _MIN_TITLE_LEN 10→6, 与 kanban_update.py 保持一致
- schema.json 从 v2 重写为 v3, 对齐实际 11 状态 + 14 字段 + 11 角色
安装:
- install.sh first_sync 补充 sync_officials_stats.py 调用
文档:
- README 新增朝堂议政面板说明 + 状态机校验说明 + install 步骤更新
- CONTRIBUTING 更新测试断言数 + 新增 court_discuss.py 条目
2026-03-16 00:19:57 +08:00
cft0808
709e163932
feat: 添加远程 Skills 资源管理功能
...
新增远程 skill 管理系统,支持从 GitHub/HTTPS URL 获取:
- API 端点: add-remote-skill, remote-skills-list, update-remote-skill, remove-remote-skill
- CLI 工具: scripts/skill_manager.py (add-remote, list-remote, update-remote, remove-remote, import-official-hub)
- 文档: remote-skills-guide.md 和 remote-skills-quickstart.md
- 功能: 安全验证、YAML 校验、版本管理、多渠道操作
2026-03-02 06:21:28 +08:00
cft0808
5bf2aa6c62
fix: 天下要闻采集后自动刷新
...
根因: refreshNews() 用固定 setTimeout(45s) 等待采集完成,
期间无轮询反馈,用户看不到更新。loadAll() 5秒轮询
也不包含 loadMorning(),在要闻页面停留不会自动刷新。
修复:
- refreshNews: 采集前记录旧时间戳,采集后每5秒轮询API
检测 generated_at 是否变化,一旦检测到更新立即刷新
页面并提示成功(最长2分钟超时)
- loadAll: 在天下要闻 tab 且不在采集轮询中时,随5秒
周期自动刷新要闻数据
2026-03-01 15:47:45 +08:00
cft0808
1691ac1a2e
feat: 推进后自动派发Agent + Todo详情展开
...
1. 自动流转机制:
- 新增 dispatch_for_state() 函数,根据状态自动匹配并派发 Agent
- handle_advance_state() 手动推进后自动派发对应 Agent(不再只改状态)
- handle_review_action() 准奏/封驳后自动派发下一环节 Agent
- 每个状态对应针对性的派发消息(含任务ID+标题+上下文)
- 后台异步派发,带2次重试 + Gateway 存活检测
2. Todo 子任务详情功能:
- kanban_update.py cmd_todo() 新增 detail 参数(--detail 标志)
- 前端 todo-item 支持点击展开/收起详情
- 有详情的 todo 显示 ▶ 展开箭头,点击展开显示产出内容
3. Agent SOUL 文件更新:
- 中书省/尚书省/六部(工兵户礼刑)均添加 todo --detail 命令说明
- 指引Agent在完成子任务时上报具体产出详情
2026-03-01 14:58:22 +08:00
cft0808
df13cbdfd8
feat: Agent 在线状态检测 + 唤醒 + 前置校验
...
server.py:
- 新增 get_agents_status(): 检测 Gateway 进程/probe + 各 Agent 状态
- 读取 sessions.json 判断最后活跃时间 → running/idle/offline/unconfigured
- 检测 openclaw-agent 进程、workspace 是否存在
- Gateway HTTP probe (ws://127.0.0.1:18789)
- 新增 wake_agent(): 通过 openclaw agent --agent 发送唤醒消息
- 新增 /api/agents-status GET 端点
- 新增 /api/agent-wake POST 端点
- dispatch_to_agent 前置 Gateway 存活检查
dashboard.html:
- 省部调度 Tab 新增 Agent 状态面板
- 12个 Agent 卡片,实时显示在线状态 (绿/黄/灰/红)
- Gateway 状态指示器
- 单个唤醒按钮 + 全部唤醒按钮
- 运行中/待命/离线/未配置 汇总统计
- 切换到省部调度 Tab 自动加载状态
- 下旨前前置检测 Gateway 是否在线,不在线时警告
2026-03-01 13:40:57 +08:00
cft0808
3272b2639f
feat: 五项功能增强 — 数据补全/阶段耗时/Todos进度/Done回顾/资源上报
...
server.py:
- get_task_activity 返回 taskMeta (title/state/org/output/block/priority等)
- 新增 _compute_phase_durations: 各阶段停留时长 + 总耗时
- 新增 _compute_todos_summary: 完成率汇总 (total/completed/percent)
- 新增 _compute_todos_diff: 连续 todos 快照差异 (changed/added/removed)
- progress/todos 条目保留 state/org 快照
- resourceSummary 汇总 tokens/cost/elapsed
kanban_update.py:
- cmd_progress 新增 tokens/cost/elapsed 可选参数
- CLI 解析 --tokens/--cost/--elapsed 标志
- 资源数据有值才写入 progress_log
dashboard.html:
- Done/Cancelled 任务显示"执行回顾"(单次拉取不轮询)
- 阶段耗时时间线条形图 + 总耗时
- Todos 进度条 (百分比 + 三色条)
- 资源消耗汇总卡片 (tokens/cost/elapsed)
- Todos diff 高亮: 新增🆕 /完成✨ /变更↻/删除🗑
2026-03-01 13:15:21 +08:00
cft0808
5af9a581f4
fix: 修复get_task_activity逻辑问题 - agent归属判定优先状态映射
...
- agent_id不再被progress_log最后一条记录无条件覆盖
- 仅当状态映射无法确定agent时才降级使用最后上报者
- related_agents始终包含当前负责agent
- dashboard/kanban_update多处增量改进
2026-03-01 09:02:51 +08:00
cft0808
a5befd26c5
fix: 实时动态改为展示Agent自报进展,移除session日志抓取
...
- get_task_activity() 完全重写:只展示 flow_log + now(progress) + todos
- 不再从Agent session JSONL中抓对话日志(消除驴唇不对马嘴问题)
- 前端新增 flow/progress/todos 三种条目渲染
- 创建任务默认now改为'等待中书省接旨'(不再用套话'正在规划')
2026-02-27 23:09:50 +08:00
cft0808
5d3359dbf4
feat: 活跃任务展示 Agent 最新工作动态
...
当任务处于活跃状态(中书/门下/尚书/执行中等)但无精确匹配的活动
记录时,自动展示该 Agent 最新一轮对话段的实时动态。
- 新增 get_agent_latest_segment(): 读取 Agent 最新 session 的
最后一条 user 消息起的对话内容
- 三级匹配策略: task_id精确 → 关键词匹配 → Agent最新对话段
- API 返回 activitySource 字段标识来源
(task/keyword/agent_latest)
- Dashboard 显示黄色提示横幅区分 Agent 最新活动 vs 任务精确活动
2026-02-27 20:17:03 +08:00
cft0808
e1314fb2e5
fix: 看板综合修复 — Pipeline/标题/kanban脚本/实时动态
2026-02-27 19:58:32 +08:00
cft0808
11f15db16f
feat: 添加吏部(libu_hr) + 自动部署所有 SOUL.md
...
1. 吏部 agent:
- 新建 agents/libu_hr/SOUL.md (人事/培训/Agent管理)
- 注册到 openclaw.json (shangshu.allowAgents += libu_hr)
- 添加到 sync_agent_config/sync_officials_stats/server.py/dashboard.html
- 更新尚书省 dispatch SKILL.md 部门能力索引
- 所有六部 SOUL.md 中'吏部暂空'→'吏部(libu_hr)负责人事/培训'
2. 自动 SOUL.md 部署:
- sync_agent_config.py 新增 deploy_soul_files()
- 每次同步自动将项目 agents/xxx/SOUL.md → workspace soul.md
- 处理 taizi→main 名称映射
- 只在内容变更时写入,确保 sessions 目录存在
- 修复: xingbu 缺 sessions dir, main 缺 workspace
完整阵容 11 个: 🤴 太子 + 三省(📜 📍 📮 ) + 六部(📝 💰 ⚔️ ⚖️ 🔧 👔 ) + 📰 钦天监
2026-02-27 00:17:31 +08:00
cft0808
19886035d4
fix: 补全太子(main)+钦天监(zaochao) agent 配置
...
- 部署 agents/taizi/SOUL.md → ~/.openclaw/agents/main/SOUL.md
太子之前在裸跑,没有任何指令/人设
- sync_agent_config.py: ID_LABEL 新增 main, 补充 EXTRA_AGENTS 逻辑
处理不在 openclaw.json agents list 中的 agent (main=默认, zaochao=独立)
- sync_officials_stats.py: OFFICIALS 列表加入 main(太子)
- dashboard.html: _agentLabels 加入 zaochao
- agent_config.json: 8→10 agents, officials_stats: 9→10
2026-02-27 00:03:35 +08:00
cft0808
21ffb94335
fix: 活动面板按任务ID过滤 + 派发改走太子Agent
...
问题1: 实时动态面板显示所有对话,不是该任务的也在
- get_agent_activity() 新增 task_id 参数,过滤内容含任务ID的条目
- get_task_activity() 搜索所有相关Agent的session(从flow_log推断)
- 跨多个session文件搜索(最近3个),按时间排序
- 前端显示agent来源标签(中书省/门下省/太子等)
问题2: 模板旨意派发后依然卡住
- dispatch_to_agent 改为发送给 main agent(太子)而非zhongshu
- 太子是入口Agent,走正常流程: 太子→中书省→门下省→尚书省
- 消息明确标注'看板已有记录,请勿重复创建'避免重复建任务
2026-02-26 23:48:43 +08:00
cft0808
b6ad8d1646
feat: 实时动态面板 + 模板旨意自动派发
...
1. 自动派发: 模板创建旨意后自动发送给中书省 Agent 执行
- handle_create_task 添加 dispatch_to_agent() 后台线程
- 通过 openclaw agent CLI 触发 zhongshu agent
2. 实时动态 API:
- GET /api/task-activity/<task_id> 获取任务关联 Agent 活动
- GET /api/agent-activity/<agent_id> 获取 Agent 最新活动
- 从 ~/.openclaw/agents/<id>/sessions/*.jsonl 读取
- 解析 assistant/tool_use/toolResult/user 消息
3. Dashboard 实时动态面板:
- 任务详情模态框底部显示 Agent 实时活动日志
- 每 4 秒自动刷新, 类似 VS Code Copilot 实时输出
- 图标区分: 🤖 助手 💭 思考 🔧 工具 ✅ 结果 📥 用户
- 自动检测活跃状态(5分钟内有活动=绿灯)
- 关闭模态框自动停止轮询
2026-02-26 23:23:04 +08:00
cft0808
434ba2ebc0
fix: 任务创建时org应为中书省而非模板执行部门
...
- server.py: handle_create_task 创建时 org 固定为中书省
模板执行部门改存 targetDept 供尚书省派发参考
- kanban_update.py: cmd_create 根据 STATE_ORG_MAP 推导 org
cmd_state 更新状态时自动同步 org 字段
- dashboard.html: executeTemplate 传 org=中书省, targetDept=模板部门
- 修复已有任务 JJC-20260226-011 数据(兵部→中书省)
2026-02-26 23:05:30 +08:00
cft0808
8a639991f8
fix: 修复dashboard.html JS语法错误导致页面空白
...
模板字面量中 ${ } 表达式缺少闭合花括号,导致整个 script 块无法执行
2026-02-26 22:57:52 +08:00
cft0808
3b87c30efa
refactor: 严格三省六部制流程 - 新增太子分拣+门下回传中书
...
- 新增 agents/taizi/SOUL.md: 太子角色负责分拣飞书消息
- 重写 zhongshu SOUL.md: 接收太子需求起草方案送门下审议
- 重写 menxia SOUL.md: 审议后封驳结果回传中书省
- 重写 shangshu SOUL.md: 接收准奏方案分派六部汇总回太子
- 重写五部 SOUL.md: 全部改用 CLI 命令
- dashboard/server/kanban 新增 Taizi 状态支持
完整流程: 皇上-太子(分拣)-中书(起草)-门下(审议)-尚书(派发)-六部(执行)-尚书(汇总)-太子(回奏)-皇上
2026-02-26 22:48:47 +08:00
cft0808
f26127af75
fix: 修复任务流程卡住问题 — SOUL.md 全面改用 CLI 命令
...
根因:SOUL.md 中的内联 Python 用 pathlib.Path(__file__) 定位路径,
但 Agent 运行时 __file__ 不是 SOUL.md 路径,导致看板更新静默失败,
任务永远卡在 Zhongshu 状态。
修复:
- zhongshu/SOUL.md: 所有看板操作改用 kanban_update.py CLI 命令
- menxia/SOUL.md: 封驳/准奏操作改用 CLI 命令
- shangshu/SOUL.md: Doing/Review/Done 操作改用 CLI 命令
- 三个 SOUL.md 均加 ⚠️ 警告提示禁止自行读写 JSON
- server.py: 新增 /api/advance-state 手动推进接口
- dashboard.html: 新增「⏩ 推进到下一步」按钮(解卡用)
2026-02-26 22:10:24 +08:00
cft0808
b8d06a3972
feat: 完成全部剩余功能修复 (P0-P3)
...
P0:
- 圣旨模板下旨真正创建任务: 新增 POST /api/create-task
前端 executeTemplate 改为 API 调用(降级仍可剪贴板复制)
P1:
- morning-config POST 字段校验: 检查 categories/keywords/feishu_webhook 类型
- 早报幂等锁支持 --force 强制采集: 看板手动刷新默认 force=true
- sync_agent_config 补全 Copilot 模型列表(6个)
P2:
- utils.py 公共函数抽取: read_json/now_iso/validate_url/safe_name
- refresh_live_data.py 改用 utils.read_json 消除重复定义
- apply_model_changes 回滚标记: 失败时 rolledBack=true 写入日志+前端展示
- 早报日期 API 兼容 YYYY-MM-DD 自动转换 + 格式校验
- Request logging: log_message 改为只记录 4xx/5xx 错误请求
- 飞书 Webhook URL 校验: 限制 https + open.feishu.cn 域名
P3:
- 御批模式基础实现: Review/Menxia 状态显示准奏/封驳按钮
新增 POST /api/review-action(approve推进/reject退回中书省+轮次+1)
前端 reviewAction() + 变更日志回滚标记显示
2026-02-26 21:42:13 +08:00
cft0808
ff9ae7937f
fix: 批量修复 P0-P2 功能缺陷
...
P0 修复:
- server.py 使用 file_lock 原子读写 tasks_source.json,防止并发数据丢失
- todayDone 统计改为按日期过滤,不再统计所有 Done 任务
- save_tasks() 的 Popen 加异常捕获
P1 修复:
- 模型列表动态化:优先从后端 knownModels 获取,不再纯硬编码
- 省部调度 Tab 补充钦天监 (zaochao) 部门
- 小任务筛选补充 刑部/门下省/钦天监 按钮
- 官员数据在 loadLive 时提前加载,省部调度不再显示'待配置'
- Docker demo 数据补全 tasks_source.json + morning_brief.json
P2 修复:
- 奏折复制补充 开始/完成时间、总耗时、磋商轮次
- /healthz 增强:检查 data 目录可写、tasks 文件可读
- metrics 新增 totalDone 字段区分总完成数和今日完成数
2026-02-26 21:21:58 +08:00
cft0808
efd36ab729
feat: 添加 Copilot 模型配置 + 旨意看板归档功能
...
模型配置:
- 新增 Copilot 系列模型 (Claude Sonnet 4, Claude Opus 4.5, GPT-4o, Gemini 2.5 Pro, o3-mini)
- 新增 github-copilot/claude-opus-4.6 模型
旨意看板归档:
- 看板顶部新增筛选栏: 进行中 / 已归档 / 全部
- Done/Cancelled 状态自动归入归档视图
- 支持单条归档/取消归档操作
- 支持一键归档所有已完成任务
- 归档卡片虚线边框半透明展示
- Tab 徽章仅统计活跃旨意数
其他:
- agents SOUL.md 更新
- 脚本健壮性改进 (file_lock, refresh, sync)
2026-02-26 21:09:05 +08:00
cft0808
af59a09e30
feat: memorials + templates + ceremony + sessions + docs rewrite
2026-02-24 23:53:36 +08:00
cft0808
c6cf88b62d
rename: 项目正式更名为 Edict
...
- 仓库重命名: openclaw-sansheng-liubu → edict
- README.md/README_EN.md: 标题+描述更新为 Edict
- Docker 镜像: cft0808/sansheng-demo → cft0808/edict
- 所有链接/引用统一更新
2026-02-24 22:29:43 +08:00
cft0808
0007991061
feat: 看板优化(皇上本地改动同步)
...
- dashboard.html: 界面优化
- dashboard/server.py: 后端优化
- scripts/kanban_update.py: 逻辑优化
- agents/shangshu/SOUL.md + agents/zhongshu/SOUL.md: 省部配置更新
2026-02-24 22:19:32 +08:00
cft0808
1110886de2
fix: 可移植性修复 + server.py 路由修复
...
- SOUL.md: 硬编码路径替换为 __REPO_DIR__ 占位符,支持跨环境部署
- dashboard/server.py: 修复 morning-brief/refresh 路由
- 原错误:POST handler 混入 GET 分支导致永远 404
- 修复:将 POST /api/morning-brief/refresh 移至 do_POST 正确位置
- scripts/: 路径变量改用 __file__ 相对路径,提升可移植性
- install.sh / run_loop.sh: 同步修复
2026-02-24 21:53:01 +08:00
cft0808
88c1836f9c
feat: 早朝简报系统 - 每日6:00自动采集政治/军事/经济/AI新闻,图文并茂,中文翻译
2026-02-24 00:18:16 +08:00
cft0808
e5e428b02a
feat: 省部调度重设计+六部SOUL合规+中书省自动续流修复
2026-02-23 23:57:51 +08:00
cft0808
b5c28b48c4
feat: 官员总览重设计 - 左右分栏/品级排行/旨意参与/缓存费用准确计算
2026-02-23 23:45:41 +08:00
cft0808
7572044c1f
feat: 中书门下反复磋商机制 - review_round显示+双省SOUL更新
2026-02-23 23:24:33 +08:00
cft0808
b8c8d22702
feat: 官员总览 - Token消耗/实际费用/功绩统计/心跳监控
2026-02-23 23:12:41 +08:00
cft0808
008f3bacd0
feat: 重构为皇上视角 - 旨意看板+任务详情流程管线
2026-02-23 22:53:01 +08:00
cft0808
a072268a7a
feat: 流程管线显示三省六部名称
2026-02-23 22:43:35 +08:00
cft0808
93e4e75c80
fix: 修复任务卡片 JS 模板字符串语法错误
2026-02-23 22:40:09 +08:00
cft0808
5b46f67603
🏛️ init: 三省六部 OpenClaw Multi-Agent Orchestration System
...
Features:
- 9 specialized agents (中书省·门下省·尚书省 + 六部)
- Real-time dashboard with 6 tabs (Overview/Kanban/History/Timeline/Models/Skills)
- Model configuration with live-apply via local API server
- One-click install script
- Data sync pipeline (15s refresh loop)
- Full audit trail via flow_log
2026-02-23 22:34:55 +08:00