Octopus
e07d567f01
feat(skills): add MiniMax-AI/cli as default skill tap ( #287 )
...
将 MiniMax-AI/cli 的 SKILL.md 添加到 OFFICIAL_SKILLS_HUB,用户可通过 import-official-hub 命令安装 mmx_cli 技能
2026-04-20 00:23:18 +08:00
cft0808
3f2dfb5df2
fix: deploy SOUL.md with correct uppercase filename ( #294 )
...
OpenClaw only loads SOUL.md (uppercase), but deploy_soul_files() was
writing to soul.md (lowercase), causing the deployed SOUL to be ignored.
Fixes #294
2026-04-20 00:18:35 +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
9444cfecc6
feat(scripts): 添加 Windows PowerShell 数据刷新脚本 ( #245 )
...
run_loop.sh 的 Windows 等效版本,支持单实例保护、日志轮转、
超时控制和定时巡检。感谢 @Vip4pt 贡献。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-14 23:05:31 +08:00
狼哥
f92c54f371
fix: support OPENCLAW_HOME env var ( #275 )
...
fix: support OPENCLAW_HOME for non-standard OpenClaw paths\n\nAdds get_openclaw_home() helper in scripts/utils.py and updates all\ninstall/runtime scripts to resolve OpenClaw home from OPENCLAW_HOME\nenvironment variable with fallback to ~/.openclaw.\n\nCloses #271
2026-04-10 00:55:27 +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
0f1c24bd44
fix: 修复多个bug并合并社区贡献
...
Bug 修复:
- Fix #232 : court_discuss.py 添加 from __future__ import annotations 兼容 Python 3.9
- Fix #233 : Dockerfile 添加 channels 模块 COPY 解决 Docker 运行时 ModuleNotFoundError
- Fix #234 : sync_agent_config.py 将 dispatchChannel 默认值从 'feishu' 改为空字符串
- Fix #241 : sync_agent_config.py 收集 defaults.models 中的所有可用模型到看板选择器
社区贡献 (cherry-pick):
- PR #239 (@ElninoZhong): 添加 workflow state vs execution ownership 文档
- PR #237 (@ElninoZhong): 修复 feishu 默认值问题
- PR #212 (@YIOYIOIOI): Windows install.ps1 优先 python 命令 + UTF-8 编码修复
依赖更新 (Dependabot):
- actions/checkout v4 → v6
- docker/setup-buildx-action v3 → v4
- docker/build-push-action v5 → v7
- actions/labeler v5 → v6
- actions/stale v9 → v10
2026-03-30 21:48:55 +08:00
YueKang
385c8d2ddf
fix: prevent self-referential symlinks in sync_scripts_to_workspaces
...
When install.sh link_resources() creates workspace-*/scripts as a
directory-level symlink pointing to the project scripts/ dir, iterating
over it in sync_scripts_to_workspaces() produces dst_file paths that
resolve to the same real file as src_file.
The old idempotency check only skipped when dst_file itself was already a
symlink:
if dst_file.is_symlink() and dst_file.resolve() == src_resolved:
return False
For a workspace whose scripts/ directory is a symlink-to-directory,
dst_file appears as a regular file (is_symlink() == False), so the check
passes, the real source file is unlinked, and os.symlink() re-creates it
as a self-referential link (foo.py -> foo.py). Running run_loop.sh every
15 s makes the whole scripts/ directory unusable within one cycle.
Fix: resolve dst_file before any other check and bail out early when
dst_resolved == src_resolved, regardless of whether dst_file itself is
stored as a symlink entry.
2026-03-28 16:47:38 +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
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
YIOYIO
dbbd817fd6
fix: Windows 安装/同步/看板 Gateway 兼容性修复 ( #203 )
...
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-26 21:10:11 +08:00
cft0808
974ad32c30
fix: atomic_json_write 使用跨平台锁抽象 + UTF-8 编码
...
将 atomic_json_write() 中的 fcntl.flock 直接调用改为
_lock_exclusive()/_unlock() 跨平台抽象函数,同时为
os.fdopen 添加 encoding='utf-8' 参数。
Refs #204 , Fixes #188
2026-03-26 20:59: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
Sliverp
c8d9b9d7c4
fix: use symlinks for workspace script sync to fix data-path split ( #56 ) ( #176 )
...
sync_scripts_to_workspaces() previously used physical file copies. Scripts
that derive project root from __file__ (e.g. kanban_update.py) therefore
resolved to the workspace directory when run as a copied file, causing
tasks_source.json writes to land in the wrong location while the Dashboard
reads from the canonical data/ directory.
Replace write_bytes() with os.symlink() so __file__ always resolves back to
the project scripts/ directory. This ensures that all path-derived constants
(TASKS_FILE, DATA, etc.) point to the single canonical data/ folder regardless
of which agent workspace runs the script.
Added _sync_script_symlink() helper with:
- Idempotent re-runs (skip if link already correct)
- Automatic cleanup of stale physical copies and broken symlinks
- Full test suite (10 tests) covering creation, idempotency, replacement
of physical copies, broken symlinks, __file__ resolution, etc.
Closes #56
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-25 22:20:21 +08:00
cft0808
feae7c2faf
fix: file_lock.py 跨平台兼容,Windows 使用 msvcrt 替代 fcntl ( #180 )
...
在 Windows 平台上 fcntl 模块不存在,导致 ModuleNotFoundError。
改为平台条件分支:Unix 使用 fcntl.flock,Windows 使用 msvcrt.locking。
保持零外部依赖,完全向后兼容。
Fixes #180
2026-03-25 22:16:32 +08:00
maka
dcba308778
fix: dashboard 端口支持通过 --port/EDICT_DASHBOARD_PORT 配置 ( #173 )
...
run_loop.sh 中 scheduler-scan 的 curl 地址硬编码为 7891,与
server.py 的 --port 参数不一致,导致改变端口后 loop 无法调用
dashboard API。
- run_loop.sh:从 EDICT_DASHBOARD_PORT 环境变量读取端口(默认 7891)
- server.py:启动时根据 --port 动态更新 _DASHBOARD_PORT 和
_DEFAULT_ORIGINS,修正 CORS fallback 地址
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-25 00:28:04 +08:00
maka
c436aadc1a
fix: apply_model_changes 仅在配置变化时备份,修复 extend 类型错误 ( #170 )
...
**问题一:无效备份不断堆积**
当 pending_model_changes.json 中的变更与 openclaw.json 现有值相同时
(即 model 已经是目标值),脚本仍会创建备份文件并重写配置,
导致每 15 秒产生一个内容完全相同的 .bak.model-* 文件。
修复:先比较新旧配置的 JSON 内容,只有真正发生变化时才备份和写入。
**问题二:log_data.extend() AttributeError 导致 pending 永不清空**
CHANGE_LOG 文件损坏或内容为 dict 时,rj() 返回 dict 而非 list,
调用 .extend() 抛出 AttributeError,使函数在第 75 行中断。
后续的 atomic_json_write(PENDING, []) 永远不会执行,
pending_model_changes.json 始终非空,造成每次循环都重复处理。
修复:在 extend 前加 isinstance 检查,非 list 时重置为空列表。
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-25 00:27:24 +08:00
Matt Li
9f1626c4be
Refactor RSS fetching to use urllib instead of curl ( #151 )
...
Replaced subprocess curl command with urllib for fetching RSS feeds.
Docker environment doesn't support such un-installed package
Co-authored-by: cft0808 <41196455+cft0808@users.noreply.github.com >
2026-03-25 00:26:00 +08:00
Matt Van Horn
f5cbbb146a
fix(agents): swap gongbu and bingbu SOUL.md duty assignments ( #145 )
...
The Ministry of Works (gongbu) historically handled infrastructure and
public works, while the Ministry of War (bingbu) handled military
operations. The current SOUL.md files had these duties inverted.
- gongbu now handles infrastructure, deployment/ops, and monitoring
- bingbu now handles engineering, architecture, and feature development
- Updated duty labels in sync_agent_config.py to match
Closes #131
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 00:25:21 +08:00
Ailuntz
99d672b065
fix(config): accept allowAgents in agent list ( #108 )
2026-03-25 00:23:21 +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
02dfdcd8b0
fix: resolve open GitHub issues ( #142 #139 #136 #131 #127 #124 #132 #125 )
...
- install.sh: clean invalid binding 'pattern' field (Closes #142 )
- server.py: make dispatch channel configurable via agent_config.json (Closes #139 )
- server.py: add POST /api/set-dispatch-channel endpoint
- sync_agent_config.py: preserve dispatchChannel across syncs
- ModelConfig.tsx/api.ts: add dispatch channel selector UI
- install.ps1: add Windows PowerShell install script (Closes #136 )
- Verify gongbu/bingbu SOUL.md are correct and consistent (Closes #131 )
- Already fixed in prior commit: Closes #127 , Closes #124 , Closes #132 , Closes #125
2026-03-16 22:08:33 +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
b91675bc4c
feat: 朝堂议政功能 + GitHub issues 批量优化
...
新增功能:
- 朝堂议政(Court Discussion): 多官员围绕议题展开部门视角讨论
- 后端 court_discuss.py + 前端 CourtDiscussion.tsx
- 集成 GitHub Copilot API (gpt-4o)
- 各部门依据 SOUL.md 职责发表专业意见
GitHub Issues 修复:
- #127 : 模型下拉列表自动合并 openclaw.json 已配置模型
- #83 : install.sh 安装时设置 sessions.visibility all
- #88 : install.sh 用 symlink 统一各 workspace 的 data/scripts
- #80 : 调度器 stallThreshold 180s→600s, maxRetry 1→2
- #124 : skill_manager 增加镜像回退 + 自定义 Hub URL
- #132 : sync_from_openclaw_runtime 放宽过滤,保留 Review 状态任务
2026-03-14 23:57:24 +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
76e0c102ed
fix: 修复 4 个 P0 Issues ( #41 #36 #48 #43 ) - docs路径/Docker架构/超时/Skill下载
2026-03-05 23:10:43 +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
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
8574607c93
fix: 补全detect_official映射 + 自动同步scripts到workspace
2026-02-27 22:09:08 +08:00
cft0808
8ad2b512c3
fix: 对齐文档与OpenClaw实现链路(安装/同步/统计)
...
- install.sh: workspace与agent注册补齐太子/吏部/早朝
- sync_agent_config.py: 增加__main__入口,修正taizi映射,兼容model对象结构
- sync_officials_stats.py: 兼容model对象结构,修复TypeError,太子ID改为taizi并保留main兼容
- README_EN.md: 修正Quick Start里旧的9-workspace描述
2026-02-27 21:49:58 +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
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
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
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
a4417abb56
feat: killer README hooks, Demo GIF, ROADMAP.md, examples/ with 3 use cases
...
- Rewrite README/README_EN opening with cognitive conflict hook
- Add 门下省 review mechanism callout (collapsible)
- Record 30s Demo GIF (800px, 4.6MB) via Playwright
- Create standalone ROADMAP.md with Phase 1/2/3 structure
- Add examples/: competitive analysis, code review, weekly report
- Add Star History chart
- Restructure inline Roadmap into phases
- Add examples reference section in both READMEs
2026-02-25 00:29:39 +08:00