cft0808
ae3942bc87
fix: 兼容 Windows 系统的 Python 解释器路径查找
...
在 Windows 上不存在 python3 命令,subprocess 调用会抛出 [WinError 2]。
在 utils.py 中新增 python_bin() 函数,优先使用 sys.executable(当前解释器路径),
回退到 shutil.which('python3') / shutil.which('python'),确保全平台兼容。
server.py 和 kanban_update.py 中所有硬编码的 'python3' 替换为 python_bin()。
Closes #289
2026-04-27 22:42:06 +08:00
狼哥
c958d06cb4
fix(flow): prevent premature task completion before review ( #280 )
...
cmd_done() 不再直接写 Done,改为校验 todos 完成度后路由到 Review;dashboard 准奏也增加 todo 完成度门控,防止子任务未完成就关闭任务
2026-04-20 00:17:01 +08:00
cft0808
74d8130391
feat: Week 0-4 optimizations - event bus, state machine, dispatch, outbox relay
...
- EventBus: Redis Streams pub/sub for decoupled service communication
- State machine: strict lifecycle transitions with audit logging
- Dispatch worker: parallel execution, retry with backoff, resource locking
- Orchestrator: DAG-based task decomposition and dependency resolution
- Outbox relay: transactional outbox pattern for reliable event delivery
- Auth: dashboard authentication module
- Agent groups: sansheng/liubu agent configuration
- CI/CD: Docker publish workflow, systemd service, start script
- Frontend: dashboard build assets
- Tests: state machine consistency tests
2026-04-04 12:16:32 +08:00
cft0808
66c7407d0f
fix: kanban EDICT_HOME 环境变量支持 + 卸载脚本
...
- kanban_update.py: 优先读取 EDICT_HOME 定位中央仓库,
解决脚本被复制到 workspace 后数据孤岛问题 (Fixes #90 )
- run_loop.sh: 自动 export EDICT_HOME
- uninstall.sh: 一键卸载脚本 (Fixes #114 , Refs #118 )
- 停止相关进程
- 清理 openclaw.json 注册
- 删除 workspace 目录
- 可选删除 data 缓存
2026-03-26 21:29:09 +08:00
cft0808
362e1ae6b8
fix: cmd_flow 同步 org + cmd_done 写入 outputMeta + STATE_ORG_MAP 补全 Next + 心跳阈值调整
...
1. cmd_flow 流转时同步更新 org=to_dept 并记录 agent 归属,修复看板流转
后仍显示旧部门的问题(#149 根因之一)
2. cmd_done 完成时立即写入 outputMeta,不再依赖异步补充
3. STATE_ORG_MAP 补全 'Next': '尚书省',修复 Next 状态 org 字段为空
4. 心跳阈值从 3/10min 调整为 5/15min,减少误报
Refs #162 , Fixes #149
2026-03-25 22:26:33 +08:00
cft0808
72eafc8f33
fix: resolve issues #158 #157 #156 #155
...
- task.py/task_service.py/orchestrator_worker.py/migrate_json_to_pg.py:
fix TaskState enum casing — PascalCase members referenced as UPPER_CASE
causing AttributeError at import time (Closes #158 )
- db.py: remove auto-commit from get_db(), let service layer control
commit explicitly to avoid double-commit conflicts (Closes #157 )
- kanban_update.py: add docstring clarifying JSON mode vs Postgres+Redis
mode are independent deployment options with migration path (Closes #156 )
- Dockerfile + docker/demo_data/openclaw.json: create skeleton openclaw.json
in Docker image so sync_agent_config.py works in demo mode (Closes #155 )
2026-03-18 07:01:53 +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
6b3ab88128
refactor: 消除冗余I/O、去重复定义、补全测试覆盖
...
- kanban_update.py: 提取 _trigger_refresh(),消除 save(load()) 双重 I/O
每次任务操作节省一次 fcntl 锁 + 读文件 + 写文件的冗余开销
- kanban_update.py + server.py: now_iso/read_json 统一从 utils 导入,
删除本地重复实现,移除未使用的 datetime/atomic_json_write 导入
- server.py: 修复 yaml import 静默失败——分离 ImportError 与 YAML 语法错误,
先做字符串结构校验(无需 PyYAML),再严格验证语法
- tests/test_kanban.py: 测试数从 3 增至 8,补全 cmd_flow/cmd_done/
cmd_progress/cmd_todo/progress_log_capped 覆盖
- run_loop.sh: 补充第二参数(巡检间隔)文档注释
- install.sh: 删除 Python heredoc 中无效的 __file__ 判断死代码
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-07 22:18:11 +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
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
b7bf616f06
refactor: 全面安全加固与代码优化 - TOCTOU竞态修复/CORS/XXE/SSRF/路径遍历/Docker加固
2026-03-01 12:59:24 +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
f6191381b4
fix: 中书省SOUL增加项目路径+角色定位,修复flow覆盖now字段的bug
...
1. zhongshu SOUL.md: 增加项目仓库路径说明(agent workspace无.git)
2. zhongshu SOUL.md: 明确中书省只负责'规划'不负责'执行'
3. kanban_update.py: cmd_flow()不再覆盖now字段(now由progress/state/done管理)
2026-02-27 23:32:22 +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
88ef18076b
feat: Agent自主进展上报 - progress命令 + 移除被动日志抓取
...
核心变更:
- kanban_update.py: 新增 progress 命令,Agent可主动上报当前思考/计划/进展
- now_text 更新看板动态,todos_pipe 解析为计划清单
- 支持 ✅ (completed) / 🔄 (in-progress) 状态标记
- sync_from_openclaw_runtime.py: 移除 agent_activity_map 被动抓取逻辑
- JJC任务的now字段不再从会话日志中抓取,改由Agent主动上报
- 仅保留JJC任务合并逻辑,不做activity映射
- 10个Agent SOUL.md: 全部新增「📡 实时进展上报」章节
- 每个Agent都有具体的上报时机和命令示例
- 中书省最详尽(6个步骤的完整progress示例)
- 六部各有领域特定的上报示例
架构转变: 被动日志抓取 → Agent主动self-report
2026-02-27 22:57:23 +08:00
cft0808
a95eec05fe
fix: remark也剥离下旨前缀 + 添加端到端测试(17/17)
2026-02-27 21:01:08 +08:00
cft0808
64c53829c5
fix: 根治旨意脏标题问题 — 太子SOUL严格化+kanban深度清洗
...
根因:太子Agent把飞书原始消息(含文件路径/Conversation元数据)直接
粘贴为任务标题/备注,还会自造术语如'自动预建'
修复:
1. 太子 SOUL.md — 加入严格标题规则(6条禁令+正反例),强制自己用
中文概括而不是粘贴原文
2. kanban_update.py — _sanitize_title() 增加文件路径剥离、URL剥离、
全角括号前缀匹配、系统元数据清洗;新增 _sanitize_remark() 对
flow_log remark 同样清洗;_is_valid_task_title() 增加文件路径
检测拒绝;_MIN_TITLE_LEN 10→6
3. 中书省 SOUL.md — 补充反脏数据规则
数据清理:
- 删除 JJC-20260227-004(文件路径标题)
- 修正 JJC-20260227-002 Zhongshu→Cancelled(已有取消流但状态未同步)
2026-02-27 20:58:21 +08:00
cft0808
81bb9c771f
fix: 防止重复创建旨意任务 + 清理脏标题
...
问题:太子和中书省各调 kanban create 创建了两个相同任务
(JJC-002 和 JJC-004),且标题带'传旨:'前缀和元数据。
修复:
- zhongshu SOUL: 如果太子已提供任务ID,直接用 state 更新,
不重复 create
- kanban_update.py: create 禁止覆盖 Done/Cancelled 状态的
任务,提示用新ID
- _sanitize_title(): 新增剥离'传旨:'/'下旨:'前缀
- server.py: handle_create_task 同步添加前缀清理
- 清理了重复的 JJC-004 和垃圾 JJC-005
2026-02-27 20:28:42 +08:00
cft0808
e1314fb2e5
fix: 看板综合修复 — Pipeline/标题/kanban脚本/实时动态
2026-02-27 19:58:32 +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
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
d8a935196c
fix: 防止闲聊被误建为旨意任务
...
- SOUL.md 增加旨意vs闲聊判定规则(最高优先级)
- kanban_update.py 增加标题质量校验(最短10字、垃圾词过滤、纯标点拒绝)
- server.py create-task API 增加同样校验
- 清理21条垃圾/重复JJC任务(否/?/开启了么/11条重复传旨调研等)
2026-02-26 21:57:36 +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
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
f78e596f62
feat: 收旨即入看板 - 各省部SOUL.md+kanban_update工具
2026-02-23 22:59:17 +08:00