Skip to content

fix: kanban_update.py 相对路径导致多 Agent 数据孤岛问题#90

Open
luomeng119 wants to merge 1 commit intocft0808:mainfrom
luomeng119:fix/kanban-relative-path-data-silo
Open

fix: kanban_update.py 相对路径导致多 Agent 数据孤岛问题#90
luomeng119 wants to merge 1 commit intocft0808:mainfrom
luomeng119:fix/kanban-relative-path-data-silo

Conversation

@luomeng119
Copy link

问题描述

按官方 install.sh 标准流程部署后,启动多 Agent 实际协同时,子 Agent 无法将任务数据写入中央看板,导致 tasks_source.json 数据断连、看板全部瘫痪。

根本原因

sync_agent_config.py 中的 sync_scripts_to_workspaces() 函数会将 scripts/ 目录下所有脚本物理复制到 11 个 Agent 的私有 workspace(~/.openclaw/workspace-*/scripts/)。

kanban_update.py 第 27 行使用的是相对路径:

_BASE = pathlib.Path(__file__).resolve().parent.parent
  • 脚本在源仓库运行时:__file__ 上两级 = edict-sansheng/ ✅ 正确
  • 脚本被复制到 workspace-taizi/scripts/ 后:__file__ 上两级 = workspace-taizi/ ❌ 错误

结果:11 个 Agent 各自在私有目录里创建 data/tasks_source.json,形成数据孤岛,中央看板完全断连。任何按官方流程部署的用户都会遇到此问题。

修复方案

scripts/kanban_update.py

优先读取环境变量 EDICT_HOME 定位中央仓库,没有才 fallback 到相对路径(保持向后兼容):

_BASE = pathlib.Path(os.environ['EDICT_HOME']) if 'EDICT_HOME' in os.environ else pathlib.Path(__file__).resolve().parent.parent

scripts/run_loop.sh

启动时自动 export EDICT_HOME,所有子进程继承:

export EDICT_HOME="$(dirname "$SCRIPT_DIR")"

影响范围

  • 仅 2 个文件各增加 2-3 行,修改最小化
  • 完全向后兼容:未设置 EDICT_HOME 时行为与原版一致
  • 修复后 sync_agent_config.py 重新分发脚本时,分发的即为修复版本,永久生效

sync_scripts_to_workspaces() 将脚本物理复制到各 workspace 后,
kanban_update.py 的 __file__ 相对路径指向 workspace 私有目录,
导致 11 个 Agent 各自写入孤岛数据,中央看板断连。

修复:优先读取 EDICT_HOME 环境变量定位中央仓库,
run_loop.sh 启动时自动 export EDICT_HOME,向后兼容。
@mobieda
Copy link

mobieda commented Mar 10, 2026

利用scripts/run_loop.sh脚本去export的话,export的变量在脚本外获取不到,还是走入了else分支,没有真正解决问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants