hmo
c3733cc2a9
自检循环1: F2时序拓扑 → J Tab 已实现
...
- 检测: dev-spec中标明❌ 未实现
- 实现: 新增J拓扑Tab,展示依赖/被依赖关系
- 测试: Playwright 0 errors
- 更新: dev-spec.md 时序拓扑→✅ J Tab已实现
2026-07-14 02:49:08 +08:00
hmo
a621aeeb94
QQ标注修正: section标题+R09都改为 ⏸️ 暂缓
...
- 2.1标题: QQ❌ →⏸️ 暂缓
- R09风险: ❌ 未开始→⏸️ 暂缓(无迫切需求)
2026-07-14 02:49:08 +08:00
hmo
e442c12558
自检驱动机制 + 标注修正(BOM/E暂缓)
...
- checklist_audit.py: 扫描文档标记→对比系统→输出差距报告
- metagrowth: 修复BOM导致JSON解析失败
- E标注: 🔄 →⏸️ 暂缓(Phase 3)
- QQ通道: ⏸️ 暂缓标记
- annotation审计: 24条标记,19✅ /3🔄 /2⏸️ /0❌
2026-07-14 02:49:08 +08:00
hmo
468aabeabc
F2功能树: 新增I Tab + checklist更新
...
- 实现: 从/api/services构建树状父子关系图
- 展示: 缩进层级 + 健康圆点 + WD标签 + 端口
- 底部统计: Health 4/4, Watchdog 3/4
- Playwright验证: 0 errors, 树渲染正确
- checklist标记: 功能树→✅ 已实现
2026-07-14 02:49:08 +08:00
hmo
5e822f85bc
PRD标注实现状态: 全部14节 + 风险表 + 交付物表
...
- 各节标题加<!-- ✅ /🔄 /❌ -->状态标记
- 已知问题表(R01-R09)新增当前状态列
- 交付物表新增实现情况列
- mdRender自动渲染为彩色标签
2026-07-14 02:49:08 +08:00
hmo
a3ff5062c5
文档checklist: dev-spec.md标注实现状态
...
- dev-spec.md: 每节标题加<!-- ✅ /🔄 /❌ -->状态标注
- 表格新增 状态 列, 逐条标记实现情况
- mdRender: 解析HTML注释渲染为彩色标签
- scrollTop保存修复文档阅读位置
2026-07-14 02:49:08 +08:00
hmo
48a420f922
修复文档滚动条跳回顶部: fill前保存scrollTop
...
- fS2/fH fill()前保存内层div的scrollTop
- fill()后用setTimeout恢复scrollTop
- 防止每10秒loadAll循环导致滚动位置重置
2026-07-14 02:49:08 +08:00
hmo
56c47a89cd
Markdown渲染 + PRD需求文档(H Tab)
...
- mdRender(): 支持h1-h6/table/list/code/bold/link/blockquote/hr
- G 规范: dev-spec.md 以渲染后HTML展示
- H 需求: PRD.md 以渲染后HTML展示
- /api/prd: 新增路由读取PRD.md
2026-07-14 02:49:08 +08:00
hmo
71407681dd
修复闪烁: fI内fill后同步appendChild不跨tick
...
- fill('infra',h)只含Platform+Ejabberd
- 同一async函数内立即createElement+appendChild添加EasyTier/RDP
- onclick通过.onclick赋值而非HTML属性
- 浏览器在JS执行完前不渲染,所有内容同时出现
- Playwright验证: 0 errors
2026-07-14 02:49:08 +08:00
hmo
1eee90c31e
修复EasyTier/RDP闪烁: fI await status重建
...
- fI fill后立即await fetchEasyTierStatus/fetchRdpStatus
- 消除setTimeout导致的500ms闪烁窗口
- sections在同一个update cycle内完成重建
- Playwright验证: 0 errors
2026-07-14 02:49:08 +08:00
hmo
debbd595ed
EasyTier+RDP开关按钮 + G规范MD展示
...
- EasyTier: Turn On/Turn Off按钮 (onclick通过JS赋值,无引号问题)
- RDP: Enable/Disable按钮 (按钮状态与tunnel/rdp状态联动)
- G规范: 用<pre>展示dev-spec.md完整内容
- 使用document.createElement+onclick避免HTML引号转义地狱
- Playwright验证: 0 errors, 所有功能正常
2026-07-14 02:49:08 +08:00
hmo
876a42343b
EasyTier+RDP恢复 + G规范Tab + dev-spec更新
...
- EasyTier VPN: /api/easytier + /api/easytier/toggle + dashboard展示
- RDP远程桌面: /api/rdp + /api/rdp/toggle + dashboard展示
- G规范子Tab: /api/spec路由 + dashboard展示完整dev-spec.md
- dev-spec.md: 新增G节(测试验证规范/弹窗铁律/路径规则)
- 修复JS函数名冲突导致页面白屏
- Playwright验证: 0 errors, 所有Tab正常
2026-07-14 02:49:08 +08:00
hmo
5fb04dd2d5
修复dashboard: JS语法错误导致页面完全空白
...
- 根因: Python脚本中引号嵌套导致生成无效JS
- 改用Python字符串拼接避免转义问题
- 0 JS errors (Playwright验证)
- 4 agent卡/启停按钮/服务标签/日志面板完整呈现
- 4个Tab: Agents/Kanban/Infrastructure/开发原则(A-F)
2026-07-14 02:49:08 +08:00
hmo
d97a64ce2b
恢复正式版agent控制面板 + 开发原则父Tab
...
- Agents Tab: 完整agent卡/启停按钮/服务标签/日志查看
- Kanban Tab: 看板任务
- Infrastructure Tab: 平台服务+Ejabberd
- 开发原则 Tab: A-F子Tab(A源码/B服务/C监控/D修复/E成长/F期望)
- 排在后位,不喧宾夺主
2026-07-14 02:49:08 +08:00
hmo
3238ba54fb
自检修复: reflog读git + threaded=True + TODO误判修正
...
- Git: 从.git/logs/HEAD读取提交历史,不依赖git二进制
- Flask: threaded=True防止单线程阻塞
- TODO: 'already running'→completed而非failed
- E元成长: 改用reflog行数计算commit数
2026-07-14 02:49:08 +08:00
hmo
f284ddfd3f
A-F父Tab + E元成长API + 界面重排
...
- 结构: Overview / Kanban / Infra / 开发原则(A-F子Tab)
- E: 新增/api/metagrowth路由 + dashboard展示
- 排序: 开发原则排在最后
- 前端: 父Tab切换子Tab, localStorage记忆
2026-07-14 02:49:08 +08:00
hmo
8f5250b900
Tab布局 + 中文locale修复 + false positive修复
...
- Tab导航: A-F各一个Tab,body自动保存当前Tab
- 中文locale: schtasks输出'就绪'正确识别为scheduled
- 假阳性修复: watchdog检查兼容中文系统
- HTML精简至4KB内联,所有API 200
2026-07-14 02:49:07 +08:00
hmo
69fa67e24f
F可视化: dashboard 完整实现 A-F 六原则呈现 + 弹窗修复
...
- A: git log + dirty status
- B: 服务架构矩阵 (/health + watchdog覆盖 + 拓扑依赖)
- C: Tier1/Tier2 监控结果 + 定时任务状态
- D: TODO执行记录 + escalation日志
- F: 期望状态 vs 实际状态合规矩阵
- Kanban: dashboard内嵌版块
- 弹窗修复: 计划任务改用pythonw.exe + subprocess加CREATE_NO_WINDOW
- 修复ast_grep_replace导致的
2026-07-14 02:49:07 +08:00
hmo
28ae15d49e
Phase 1-2: 监控体系全面就绪
...
- 多进程看门狗: xmpp_watchdog.py (守护 bot + article_processor)
- Tier 1 快速健康检查: agents_health_check.py (5min)
- Tier 2 全面健康检查: agents_daily_health.py (每日08:00)
- TODO 自修复执行器: self_todo_executor.py (10min)
- 共享服务注册表: service_registry.py
- xmpp_agent_core: /health 免认证 + /send 端点
- Dashboard: SSH检测修复 + kanban版块 + 路径跨平台兼容
- 修复kanban-api-reference.md误导内容
- 修复R02: frp隧道heartbeat保活
2026-07-14 02:49:07 +08:00
zhiwei
d53aa1e06b
feat: 提案#23 AGENTS.md 决策自检协议
...
引入 Andrej Karpathy 四大规则 + 对抗性审查流程 + 双记录机制 + /rethink 指令。
新增文件:
- docs/AGENTS.md — 共享决策自检协议文档
- docs/learned.md — 经验教训记录模板
- docs/decisions/ — 决策日志目录
所有 Agent 共享此协议,跨项目可复用。
2026-07-08 01:55:10 +08:00
hmo and Sisyphus
d72c1a907c
chore: add Windows startup batch script, update service docs
...
- Replace start.ps1 with start.bat (avoids false-positive trojan warnings from Defender)
- Mark wechat_agent.py as stopped in README.md, add article_processor doc
- Keep start.ps1 deletion tracked
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-25 01:24:47 +08:00
hmo and Sisyphus
d406068c89
fix(easytier): add --no-listener flag to prevent port conflicts
...
Without --no-listener, EasyTier opens a listener on the TUN/TAP interface which can conflict with other EasyTier instances on the same network.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-25 01:24:47 +08:00
hmo and Sisyphus
c6795bcb46
fix: decode HTML entities in wechat article URL from XML
...
WeChat XML uses & to encode & in forwarded article URLs. Without html.unescape(), chksm and other query params were passed encoded to WeChat servers, causing signature mismatch and captcha block.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-25 01:23:21 +08:00
zhiwei
ef93f066e3
fix: stop user-level gateway service conflicting with system-level one
...
Root cause: user-level hermes-gateway.service was running the same
-p default gateway as the system-level hermes-gateway@default.service ,
causing the two to SIGTERM each other every ~5 minutes. This killed
in-flight Hermes API requests with 'Remote end closed connection'.
Fix: disabled the redundant user-level service.
Also: simplified webhook to just forward raw message content (no
system prompt, no ACK, no max_tokens overrides). Removed unused
_get_ack method.
2026-06-24 19:53:24 +08:00
zhiwei
b7993a54d5
cleanup: archive unused scripts, finalize docs
...
- Moved old GDB hook and memory monitor scripts to archive/
- Updated README with final Docker solution
- Updated .env.example, .gitignore
- Added final-note.md documenting deployment decision
- All research scripts preserved in archive/ for reference
2026-06-24 02:03:24 +08:00
zhiwei
f1630ebb03
feat: WeChat Linux bot via docker-wechatbot-webhook
...
- Docker container with auto-restart
- systemd webhook receiver on :5804
- Full send/receive loop: WeChat ↔ Docker ↔ Hermes
- Fixed login token for persistence
- Firewall rules for container-host communication
2026-06-24 01:59:44 +08:00
zhiwei
255729bb8c
docs: complete handover documentation for Mohe
...
重写 architecture.md 含:
- 完整方案评估(GDB vs LD_PRELOAD vs wine vs iLink)
- 所有信息源链接和参考价值
- 当前状态检查清单(已完成/待完成)
- 分 Phase 的实施指南
- 常见问题和风险说明
- 项目文件结构
更新 README.md 指向架构文档
2026-06-23 23:12:47 +08:00
zhiwei
9c73e8b107
docs: architecture design doc + gitignore update
...
架构文档记录方案一(GDB Hook)的技术路线和关键信息源。
.gitignore 新增 *.AppImage / *.exe / *.dll 规则
2026-06-23 21:24:20 +08:00
zhiwei
1417552990
fix: group chat detection + article URL handling (Xiaohongshu/WeChat/zhihu)
...
- 群聊检测: 通过 protocol 的 group_id 字段识别群消息
- 引用消息: 处理 ref_msg 中的转发文章/引用内容
- 文章URL: 支持 mp.weixin.qq.com / xiaohongshu.com / xhslink.com / zhihu.com
- CDN图片: 占位函数,后续实现 AES 解密下载
- 图片OCR: 统一失败处理,不再发送两条消息
2026-06-23 20:48:57 +08:00
zhiwei
7727e907e6
feat: 莫荷微信Bot Linux iLink版
...
新增 gateway/linux/ 目录,基于腾讯官方 iLink Bot API 的 Linux 原生实现。
替代 Windows wxhelper DLL 注入方案。
- wechat_agent.py: 核心 Agent (消息处理/OCR/文章处理/图片生成/5801服务)
- requirements.txt: weixin-bot-sdk + aiohttp + requests
- mohe-wechat.service: systemd 服务单元
- .env.example: 配置模板
- README.md: 使用说明
工作原理: iLink Bot API (ilinkai.weixin.qq.com)
→ QR扫码登录 → 长轮询收消息 → Hermes Gateway(:8642) 处理 → 回复
2026-06-23 20:40:19 +08:00
hmo
4cf125231e
docs: merge EasyTier into AgentsMeeting + cleanup hosts approach
2026-06-23 03:53:04 +08:00
hmo
5a5cc1b45d
feat: kanban session routing for xxm + xiaoguo
2026-06-22 11:39:27 +08:00
mohe
20389a40ac
docs: kanban handler protocol v1 + merged API ref
2026-06-22 10:43:19 +08:00
hmo
08f04e773b
fix(xxm): use send_message instead of send_raw for proper UTF-8 encoding
2026-06-21 16:23:28 +08:00
hmo
5d35d97f0a
merge: resolve conflict in xmpp_agent_core.py (keep unified version)
2026-06-21 16:17:21 +08:00
hmo
babbc46801
refactor(xxm): consolidate 4 bot implementations into unified xmpp_agent_core.py
...
- Merge bot_base.py, gateway/scripts/xmpp_bot.py, bots/*, xmpp_bot_rest.py
into single xmpp_agent_core.py with --agent flag (xxm|mohe|zhiwei|xiaoguo)
- Add xxm_bot.py wrapper (encoding=utf-8 for Windows exec)
- Fix slixmpp connect() API: use host=/port= keyword args (was tuple)
- Clean up orphans: bots/, scripts/, hermes_state.py, xmpp_bot.py, xmpp_bot_rest.py
- Add docs/CLEANUP_PLAN.md documenting the migration
- Update README.md project structure
- Also: fix WeChat agent path resolution (relative paths)
2026-06-21 16:13:57 +08:00
mohe
90ed30dd36
kanban API: comment endpoint + usage docs, notification includes curl example
2026-06-21 11:29:17 +08:00
mohe
aa7b67fc2b
readonly: discard LLM response, never send; default=readonly for non-coordinator
2026-06-21 10:40:47 +08:00
mohe
f1590e08d1
revert bare-name match, keep only @ mention
2026-06-20 20:21:21 +08:00
mohe
9a45f155a8
match nick without @ (XMPP strips @ symbol)
2026-06-20 20:18:47 +08:00
mohe
be8699ae4c
lead= switch, @mention auto-grant
2026-06-20 20:16:09 +08:00
hmo
b9df510f31
feat(xxm): implement coordinator protocol (aligned with mohe/zhiwei/xiaoguo)
...
- GRANT: [GRANT:xxm] one-time speak permission, overrides REVOKE
- REVOKE: [REVOKE:xxm] 5-min speak ban, read-only mode
- Coordinator switch: hmo can change with 'coordinator=xxm'
- Shut-up: hmo says keywords → 5-min silence (was 30s)
- Read-only mode: revoked agents see messages but output __SILENT__
- Removed old _is_silenced/_SILENCE_UNTIL, unified under _REVOKED_UNTIL
2026-06-20 20:09:01 +08:00
mohe
efc4cd1a9e
coordinator prompt: first job is to moderate, not to speak
2026-06-20 19:57:03 +08:00
mohe
ad3e0f004b
coordinator: default all can speak, REVOKE=read-only 5min, GRANT overrides
2026-06-20 19:54:37 +08:00
mohe
aabec04d8a
non-speaking bots still see messages for context (read-only LLM injection)
2026-06-20 19:07:50 +08:00
mohe
90429116c7
coordinator: use XMPP in-band signaling instead of shared DB (cross-machine compatible)
2026-06-20 19:02:04 +08:00
mohe
457ad27044
implement coordinator pattern: GRANT-based turn control, code-level speak permission
2026-06-20 18:53:44 +08:00
mohe
947bb1e6d0
intercept __SILENT__/__REPLY__ misuse in LLM response body
2026-06-20 01:48:37 +08:00
mohe
5051b0bfd7
add silent phrase interception: block LLM announcing silence instead of being silent
2026-06-20 01:41:42 +08:00
hmo
885439f3c4
refactor(xxm): use [YOU] prefix for TUI context (align with Hermes)
2026-06-20 01:31:04 +08:00