27 Commits

Author SHA1 Message Date
f917d15278 fix: 后台链接使用 externalIp 替代 localhost
- 后台链接现在会自动将 localhost 替换为页面配置的对外IP
- 用户可通过页面顶部的对外IP输入框调整访问地址
2026-04-20 23:20:31 +08:00
cb93b8e3e2 feat: 右下角添加到顶/到底导航按钮 2026-04-20 12:12:44 +08:00
14f39c8954 更新 xian-favor 版本号到 v3.5.0 2026-04-19 18:50:15 +08:00
783f358b63 更新 xian-favor 版本号到 v3.4.0 2026-04-19 17:56:05 +08:00
2c9bcd4844 更新 xian-favor 版本号到 v3.3.0 2026-04-19 17:31:49 +08:00
4cd3ca51cb 更新 xian-favor 版本号到 v3.2.2 2026-04-19 17:10:23 +08:00
e5fcfbb0eb fix: 修复 xian-favor 启动命令,使用源码而非旧包;更新版本号到 v3.1.0 2026-04-19 16:38:45 +08:00
ff2eb56095 fix: 主机Cron列表按钮样式改为灰色,与其他筛选按钮一致 2026-04-17 23:52:58 +08:00
4f5c9dc2c8 feat: 筛选器添加主机Cron列表按钮 2026-04-17 23:01:43 +08:00
d1b01ad9c7 feat: 添加信号处理,记录进程被kill的来源信息 2026-04-17 22:45:18 +08:00
f245bf73c5 fix: 调整筛选器顺序,Cron任务放到插件后面 2026-04-17 22:06:57 +08:00
a669242d39 feat: Web服务活跃开关,归档服务单独显示区域 2026-04-17 22:02:01 +08:00
945ffc257a feat: 添加刷新间隔时间设置,支持自定义刷新频率 2026-04-17 18:31:23 +08:00
4a2e8bb6ce feat: 添加服务器连接状态指示器 2026-04-17 18:27:26 +08:00
fc5d77075f feat: 添加对外IP配置输入框,端口链接使用动态IP 2026-04-17 18:23:29 +08:00
cb80aff261 feat: Web服务多列卡片布局,一行显示多个服务 2026-04-17 18:00:57 +08:00
70eab1f1b8 docs: 添加 README.md,记录正确的启动方式和端口规范
- 重要发现:服务被 OpenClaw 杀掉(SIGTERM)
- 解决方案:使用 nohup + disown 脱离进程树
- 更新所有项目的 start_cmd 为正确的启动方式
- 记录端口规范(19000-19100)
- 记录故障排查步骤
2026-04-15 09:59:39 +08:00
cc18d254a8 feat: 添加Cron列表快捷导航按钮 2026-04-14 10:49:08 +08:00
e7b5a1ce09 feat: Cron列表移至底部并添加概述分析 2026-04-14 10:40:09 +08:00
9a23e98dc1 feat: 添加主机 Cron 列表展示功能 2026-04-14 10:34:24 +08:00
b44d0cfd00 feat: 添加 tech-forum 项目配置 2026-04-13 12:06:37 +08:00
aa99472509 fix: 修正 llm-proxy 配置为单端口 v2.0.0 2026-04-13 11:07:52 +08:00
d2823e1b32 feat: 更新 llm-proxy 和 product-crawler 为单端口配置
- llm-proxy: 19007 (原 19007+19008) v2.0.0
- product-crawler: 19011 (原 19011+19012) v2.0.0
2026-04-13 10:59:00 +08:00
0c2a21f176 feat: 添加 multi-agent-bidding 项目配置 2026-04-13 10:44:54 +08:00
893f6f9486 feat: 添加浏览器标签图标 📊 2026-04-13 10:34:30 +08:00
1996bbf48c feat: 添加 xian-favor 项目配置 2026-04-13 10:29:45 +08:00
c73196dad3 feat: 添加AI对话系统项目配置 2026-04-11 20:38:32 +08:00
13 changed files with 125548 additions and 468 deletions

131
README.md Normal file
View File

@@ -0,0 +1,131 @@
# 项目服务管理面板
统一管理所有 Web 服务项目,提供状态检测、启动/停止控制、日志查看等功能。
## 端口
- **服务端口**: 19013
- **访问地址**: http://localhost:19013
## 功能
- 项目列表展示(状态、端口、版本)
- 服务状态健康检测
- 启动/停止/重启控制
- 日志查看(实时滚动)
- Git 仓库链接
## 启动方式 ⭐
**重要:必须使用 `nohup + disown` 方式启动,脱离进程树!**
```bash
cd ~/.openclaw/workspace-coder/works/project-panel
nohup python3 app.py > logs/app.log 2>&1 & disown
```
### 为什么需要 disown
如果通过 OpenClaw 的 exec 启动服务,当 OpenClaw 清理进程时(如超时、重启),会发送 SIGTERM 杀掉所有子进程。
使用 `nohup + disown` 可以:
1. `nohup` - 让进程忽略 SIGHUP终端关闭信号
2. `disown` - 从 shell 进程树中移除,避免被连带杀掉
3. `> logs/app.log 2>&1` - 重定向输出到日志文件
### ❌ 错误方式
```bash
# 不要用这种方式(会被 OpenClaw 杀掉)
python3 app.py
```
### ✅ 正确方式
```bash
nohup python3 app.py > logs/app.log 2>&1 & disown
```
## 项目配置
项目配置在 `projects.json` 中,每个项目包含:
```json
{
"id": "project-id",
"name": "项目名称",
"ports": [19000],
"directory": "works/project-dir",
"start_cmd": "nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19000/api/health",
"admin_url": "http://localhost:19000/admin",
"git_repo": "http://192.168.2.8:12007/coder/project",
"version": "v1.0.0"
}
```
## 端口规范
所有 Web 服务必须使用 **19000-19100** 端口范围:
| 端口 | 项目 |
|------|------|
| 19000 | PDF翻译助手 V2 |
| 19001 | LLM Index RAG |
| 19009 | 碎片信息记录 |
| 19010 | ParamHub Python |
| 19013 | 项目服务管理面板(本服务) |
| 19014 | Xian Favor 收藏系统 |
| 19020 | AI对话系统 |
| 19007 | LLM Proxy |
| 19011 | 产品参数爬取系统 |
| 19004 | 技术论坛 |
| 19015 | 多智能体竞标调度系统 |
## API 接口
- `GET /api/projects` - 获取所有项目列表
- `GET /api/project/:id` - 获取单个项目详情
- `POST /api/project/:id/start` - 启动项目
- `POST /api/project/:id/stop` - 停止项目
- `POST /api/project/:id/restart` - 重启项目
- `GET /api/project/:id/logs` - 获取项目日志
## 监控
服务监控由 `service-monitor` 负责,每 20 分钟检查一次,发送邮件通知。
## 故障排查
### 服务频繁停止?
检查是否使用了正确的启动方式:
1. 确认使用了 `nohup + disown`
2. 确认日志目录存在:`mkdir -p logs/`
3. 查看日志:`cat logs/app.log`
### OpenClaw 杀进程?
如果日志突然停止(约凌晨 01:10可能是被 OpenClaw 清理进程杀掉了。
**证据:**
- OpenClaw 日志:`[tools] exec failed: Command aborted by signal SIGTERM`
- 服务日志最后记录时间01:09 左右
**解决:** 使用 `disown` 脱离进程树。
## Git 仓库
http://192.168.2.8:12007/coder/project-panel
## 更新日志
### v1.0.1
- 添加 README.md 文档
- 记录正确的启动方式nohup + disown
- 记录端口规范
### v1.0.0
- 项目服务管理面板
- 状态检测、启动/停止控制
- 日志查看

1899
app.py

File diff suppressed because it is too large Load Diff

242
logs/ai-chat-system.log Normal file
View File

@@ -0,0 +1,242 @@
==================================================
[2026-04-11T20:39:35.611218] start
Command: python3 main.py
Directory: /home/xian/.openclaw/workspace-coder/works/ai-chat
/home/xian/.openclaw/workspace-coder/works/ai-chat/main.py:481: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
@app.on_event("startup")
/home/xian/.openclaw/workspace-coder/works/ai-chat/main.py:506: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
@app.on_event("shutdown")
INFO: Started server process [1469228]
INFO: Waiting for application startup.
INFO:__main__:数据库初始化完成
INFO:services.ai_service:AI配置已更新: api_base=http://192.168.2.17:19007/v1, model=auto, use_mock=False
INFO:__main__:AI配置已加载: http://192.168.2.17:19007/v1, model=auto
INFO:services.matrix_service:Matrix配置: homeserver=http://matrix.tphai.com, user=@tester:matrix.tphai.com
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/account/whoami "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix HTTP API连接成功: @tester:matrix.tphai.com
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/joined_rooms "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix房间: !CUXwXrsopvYKCAEdKe:matrix.tphai.com
INFO:__main__:Matrix Bot已启动
INFO:services.matrix_service:Matrix HTTP同步任务已启动
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:19020 (Press CTRL+C to quit)
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:48668 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6449_126845_4290_2988_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6449_126845_4290_2988_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61860 - "GET / HTTP/1.1" 200 OK
INFO: 192.168.2.10:61860 - "GET /api/conversations HTTP/1.1" 200 OK
INFO: 192.168.2.10:61862 - "WebSocket /ws/main_user" [accepted]
INFO:__main__:WebSocket连接: main_user, 当前连接数: 1
INFO: 192.168.2.10:61861 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: connection open
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:37244 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6449_126845_4290_2988_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: PUT http://matrix.tphai.com/_matrix/client/v3/rooms/!CUXwXrsopvYKCAEdKe:matrix.tphai.com/send/m.room.message/m1248774373 "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix消息发送成功: !CUXwXrsopvYKCAEdKe:matrix.tphai.com
INFO:services.ai_service:调用AI API: http://192.168.2.17:19007/v1/chat/completions, model=auto
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6449_126845_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: POST http://192.168.2.17:19007/v1/chat/completions "HTTP/1.1 502 Bad Gateway"
ERROR:services.ai_service:AI API调用失败: Server error '502 Bad Gateway' for url 'http://192.168.2.17:19007/v1/chat/completions'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502
INFO:httpx:HTTP Request: PUT http://matrix.tphai.com/_matrix/client/v3/rooms/!CUXwXrsopvYKCAEdKe:matrix.tphai.com/send/m.room.message/m1248775047 "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix消息发送成功: !CUXwXrsopvYKCAEdKe:matrix.tphai.com
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6450_126845_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6451_126845_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:33214 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6451_126845_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61861 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: PUT http://matrix.tphai.com/_matrix/client/v3/rooms/!CUXwXrsopvYKCAEdKe:matrix.tphai.com/send/m.room.message/m1248795620 "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix消息发送成功: !CUXwXrsopvYKCAEdKe:matrix.tphai.com
INFO:services.ai_service:调用AI API: http://192.168.2.17:19007/v1/chat/completions, model=auto
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6451_126851_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:36850 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6452_126851_4290_2989_3381_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: POST http://192.168.2.17:19007/v1/chat/completions "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: PUT http://matrix.tphai.com/_matrix/client/v3/rooms/!CUXwXrsopvYKCAEdKe:matrix.tphai.com/send/m.room.message/m1248804105 "HTTP/1.1 200 OK"
INFO:services.matrix_service:Matrix消息发送成功: !CUXwXrsopvYKCAEdKe:matrix.tphai.com
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6452_126851_4290_2990_3382_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6453_126851_4290_2990_3382_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6453_126851_4290_2991_3383_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6453_126851_4291_2991_3383_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6453_126851_4293_2991_3383_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6453_126851_4294_2991_3383_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:35322 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126851_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:44872 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:60958 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2991_3384_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2992_3385_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61890 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126857_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 127.0.0.1:52004 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61946 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:51416 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:61981 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:61982 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126863_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3386_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:41872 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:62002 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO: 192.168.2.10:62001 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126869_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126875_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126875_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6454_126875_4294_2992_3387_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6455_126875_4295_2993_3388_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:38462 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6455_126875_4295_2993_3389_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:38470 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6459_126875_4295_2993_3389_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6459_126875_4295_2993_3389_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:62044 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:62045 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6463_126875_4295_2993_3389_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6464_126875_4295_2994_3390_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6467_126881_4295_2994_3390_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6468_126881_4295_2994_3390_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6472_126881_4295_2994_3390_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6474_126881_4295_2996_3391_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6474_126881_4295_2997_3391_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:53056 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6476_126881_4295_2999_3391_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6476_126881_4295_2999_3391_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 192.168.2.10:62071 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: 192.168.2.10:62072 - "GET /api/conversations/latest HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6478_126881_4295_3000_3392_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6478_126881_4295_3001_3393_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6481_126887_4295_3002_3395_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6482_126887_4295_3002_3396_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6484_126887_4295_3003_3396_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6487_126887_4295_3006_3396_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET http://matrix.tphai.com/_matrix/client/v3/sync?timeout=5000&since=s6488_126887_4295_3006_3396_3_530_126_0_1_1_1 "HTTP/1.1 200 OK"
INFO: 127.0.0.1:60854 - "GET /api/admin/stats HTTP/1.1" 200 OK
INFO: Shutting down
INFO:__main__:WebSocket断开: main_user
INFO: connection closed
INFO: Waiting for application shutdown.
INFO:__main__:应用已关闭
INFO: Application shutdown complete.
INFO: Finished server process [1469228]
Terminated

104
logs/app.log Normal file
View File

@@ -0,0 +1,104 @@
[2026-04-20 12:09:27] ==================================================
[2026-04-20 12:09:27] 项目服务管理面板启动
[2026-04-20 12:09:27] 访问地址: http://localhost:19013
[2026-04-20 12:09:27] 进程PID: 3701577
[2026-04-20 12:09:27] ==================================================
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:19013
* Running on http://192.168.2.17:19013
Press CTRL+C to quit
127.0.0.1 - - [20/Apr/2026 12:09:30] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:09:32] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:09:35] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:09:36] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:09:37] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:09:38] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:09:46] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:09:48] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:09:53] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:09:55] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:09:56] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:09:58] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:06] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:08] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:16] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:18] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:23] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:25] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:26] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:28] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:30] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:10:32] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:35] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:10:36] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:37] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:38] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:47] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:47] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:48] "GET /api/crons HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:48] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:51] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:52] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:54] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:55] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:10:57] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:10:58] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:01] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:02] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:07] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:08] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:11] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:12] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:16] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:18] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:21] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:22] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:24] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:25] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:25] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:27] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:27] "GET /api/projects HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:28] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:30] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:31] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:11:32] "GET /api/projects HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:32] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:35] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:37] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:11:37] "GET /api/projects HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:38] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:41] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:42] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:47] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:48] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:51] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:52] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:54] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:55] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:55] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:11:57] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:57] "GET /api/projects HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:11:58] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:01] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:02] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:07] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:08] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:11] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:12] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:16] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:18] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:21] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:22] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:23] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:25] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:26] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:28] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:31] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:12:32] "GET /api/projects HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:35] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Apr/2026 12:12:36] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [20/Apr/2026 12:12:37] "GET /api/projects HTTP/1.1" 200 -
192.168.2.8 - - [20/Apr/2026 12:12:38] "GET /api/projects HTTP/1.1" 200 -

16
logs/cron-start.log Normal file
View File

@@ -0,0 +1,16 @@
[2026-04-19 16:28:03] ==================================================
[2026-04-19 16:28:03] 项目服务管理面板启动
[2026-04-19 16:28:03] 访问地址: http://localhost:19013
[2026-04-19 16:28:03] 进程PID: 3262258
[2026-04-19 16:28:03] ==================================================
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:19013
* Running on http://192.168.2.17:19013
Press CTRL+C to quit
127.0.0.1 - - [19/Apr/2026 16:28:10] "GET / HTTP/1.1" 200 -
192.168.2.8 - - [19/Apr/2026 16:28:10] "GET /api/projects HTTP/1.1" 200 -
[2026-04-19 16:28:12] ⚠️ 进程收到 SIGTERM 信号,即将退出! 父进程: 849 (systemd)
[2026-04-19 16:28:12] 信号来源可能是: 手动kill命令、systemd、OOM killer、或其他进程

2153
logs/heartbeat-start.log Normal file

File diff suppressed because it is too large Load Diff

4270
logs/llm-proxy.log Normal file

File diff suppressed because it is too large Load Diff

143
logs/pdf-translate-v2.log Normal file
View File

@@ -0,0 +1,143 @@
==================================================
[2026-04-14T17:45:05.542574] start
Command: python3 app.py
Directory: /home/xian/.openclaw/workspace-coder/works/pdf-translate-web-v2
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:19000
* Running on http://192.168.2.17:19000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 154-698-244
127.0.0.1 - - [14/Apr/2026 17:45:10] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:45:19] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:45:26] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:26] "GET /static/css/style.css HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:26] "GET /static/js/main.js HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:26] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:26] "GET /static/img/favicon.svg HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:37] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:45:37] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:45:37] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:45:37] "GET /api/user/info HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:45:44] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:46:14] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:46:44] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:46:58] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:47:14] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:47:16] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:47:26] "POST /register HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:47:27] "POST /register HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:47:27] "POST /register HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:47:27] "POST /register HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:48:15] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:49:16] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:50:17] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:51:06] "POST /register HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:51:18] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:52:19] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:52:51] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:52:51] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:51] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:51] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:52:51] "GET /static/img/favicon.svg HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:55] "GET /admin HTTP/1.1" 308 -
192.168.2.10 - - [14/Apr/2026 17:52:55] "GET /admin/ HTTP/1.1" 302 -
192.168.2.10 - - [14/Apr/2026 17:52:55] "GET /login?next=http://192.168.2.17:19000/admin/ HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:52:55] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:58] "POST /login HTTP/1.1" 200 -
/home/xian/.openclaw/workspace-coder/works/pdf-translate-web-v2/app.py:42: LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0. The method is now available as Session.get() (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
return User.query.get(user_id)
192.168.2.10 - - [14/Apr/2026 17:52:58] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:52:59] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:59] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:52:59] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:53:18] "GET /history HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:53:18] "GET /static/css/style.css HTTP/1.1" 304 -
127.0.0.1 - - [14/Apr/2026 17:53:20] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:53:21] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:53:21] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:53:21] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:53:21] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:53:39] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:53:40] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:53:40] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:53:40] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:20] "GET /admin/ HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:54:20] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:54:25] "GET /admin/ HTTP/1.1" 302 -
192.168.2.10 - - [14/Apr/2026 17:54:25] "GET /login?next=http://192.168.2.17:19000/admin/ HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:25] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:26] "GET /static/img/favicon.svg HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:32] "POST /login HTTP/1.1" 401 -
192.168.2.10 - - [14/Apr/2026 17:54:41] "POST /login HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:41] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:41] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:41] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:41] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:49] "GET /admin/ HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:55] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:55] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:55] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:55] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:55] "GET /static/img/favicon.svg HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:58] "GET /logout HTTP/1.1" 302 -
192.168.2.10 - - [14/Apr/2026 17:54:58] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:58] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:58] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:54:58] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:59] "GET /login HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:54:59] "GET /static/css/style.css HTTP/1.1" 304 -
127.0.0.1 - - [14/Apr/2026 17:55:20] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:55:25] "POST /login HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:26] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:26] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:26] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:26] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:34] "GET /history HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:34] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:36] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:36] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:36] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:36] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:37] "GET /pricing HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:37] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:39] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:39] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:39] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:39] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:40] "GET /history HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:40] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:42] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:55:42] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:42] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:55:43] "GET /api/user/info HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2026 17:56:20] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [14/Apr/2026 17:57:20] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:57:55] "GET /pricing HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:57:55] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:15] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:58:15] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:15] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:15] "GET /api/user/info HTTP/1.1" 200 -
* Detected change in '/home/xian/.openclaw/workspace-coder/works/pdf-translate-web-v2/app.py', reloading
* Restarting with stat
* Debugger is active!
* Debugger PIN: 154-698-244
127.0.0.1 - - [14/Apr/2026 17:58:23] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [14/Apr/2026 17:58:31] "GET /pricing HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:58:31] "GET /static/css/style.css HTTP/1.1" 304 -
/home/xian/.openclaw/workspace-coder/works/pdf-translate-web-v2/app.py:42: LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0. The method is now available as Session.get() (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
return User.query.get(user_id)
192.168.2.10 - - [14/Apr/2026 17:58:33] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:58:33] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:33] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:33] "GET /api/user/info HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:58:35] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [14/Apr/2026 17:58:35] "GET /static/css/style.css HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:35] "GET /static/js/main.js HTTP/1.1" 304 -
192.168.2.10 - - [14/Apr/2026 17:58:35] "GET /api/user/info HTTP/1.1" 200 -

2011
logs/project-panel.log Normal file

File diff suppressed because it is too large Load Diff

112809
logs/snippet-notes.log Normal file

File diff suppressed because it is too large Load Diff

2067
logs/tech-forum.log Normal file

File diff suppressed because it is too large Load Diff

75
logs/xian-favor.log Normal file
View File

@@ -0,0 +1,75 @@
==================================================
[2026-04-13T10:32:16.459402] start
Command: xian_favor serve --port 19014
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
🚀 启动API服务: http://0.0.0.0:19014
* Serving Flask app 'xian_favor.api'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:19014
* Running on http://192.168.2.17:19014
Press CTRL+C to quit
192.168.2.10 - - [13/Apr/2026 10:32:21] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:32:21] "GET /api/items?limit=100 HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:32:21] "GET /api/stats HTTP/1.1" 200 -
127.0.0.1 - - [13/Apr/2026 10:32:26] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:32:41] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:33:11] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:33:12] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:33:43] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:34:13] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:34:43] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:35:13] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:35:43] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:36:13] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:36:43] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [13/Apr/2026 10:36:45] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:36:45] "GET /api/items?limit=100 HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:36:45] "GET /api/stats HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:36:49] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:36:49] "GET /api/items?limit=100 HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:36:49] "GET /api/stats HTTP/1.1" 200 -
127.0.0.1 - - [13/Apr/2026 10:36:49] "GET /api/health HTTP/1.1" 404 -
192.168.2.10 - - [13/Apr/2026 10:37:02] "GET / HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:37:02] "GET /api/items?limit=100 HTTP/1.1" 200 -
192.168.2.10 - - [13/Apr/2026 10:37:02] "GET /api/stats HTTP/1.1" 200 -
127.0.0.1 - - [13/Apr/2026 10:37:19] "GET /api/health HTTP/1.1" 404 -
127.0.0.1 - - [13/Apr/2026 10:37:30] "GET / HTTP/1.1" 200 -
==================================================
[2026-04-17T17:36:41.817946] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found
==================================================
[2026-04-17T17:37:12.329958] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found
==================================================
[2026-04-17T17:38:36.504634] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found
==================================================
[2026-04-17T21:59:11.286406] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found
==================================================
[2026-04-18T23:54:36.035065] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found
==================================================
[2026-04-19T16:35:46.708608] start
Command: mkdir -p logs && nohup xian_favor serve --port 19014 > logs/app.log 2>&1 & disown
Directory: /home/xian/.openclaw/workspace-coder/works/xian-favor
/bin/sh: 1: disown: not found

View File

@@ -6,7 +6,7 @@
"type": "web",
"ports": [19000],
"directory": "works/pdf-translate-web-v2",
"start_cmd": "python3 app.py",
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19000/api/health",
"description": "英文PDF翻译中文网站支持用户系统、会员体系",
"admin_url": "http://localhost:19000/admin",
@@ -19,7 +19,7 @@
"type": "web",
"ports": [19001],
"directory": "works/llm-index-rag",
"start_cmd": "python3 app.py",
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19001/api/stats",
"description": "基于索引和搜索的知识检索系统",
"admin_url": "http://localhost:19001/settings",
@@ -32,7 +32,7 @@
"type": "web",
"ports": [19009],
"directory": "works/snippet-notes",
"start_cmd": "python3 app.py",
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19009/api/notes",
"description": "碎片信息记录工具AI自动生成标题",
"git_repo": null,
@@ -44,45 +44,64 @@
"type": "web",
"ports": [19010],
"directory": "works/param-hub-python",
"start_cmd": "python3 app.py",
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19010/api/stats",
"description": "AI大模型与硬件参数速查平台",
"admin_url": "http://localhost:19010/admin",
"git_repo": "http://192.168.2.8:12007/coder/param-hub-python",
"version": "v1.2.0"
},
{
"id": "ai-chat-system",
"name": "AI对话系统",
"type": "web",
"ports": [19020],
"directory": "works/ai-chat",
"start_cmd": "mkdir -p logs && nohup python3 main_v2.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19020/api/admin/stats",
"description": "网页端和Matrix端实时同步的AI聊天系统",
"admin_url": "http://localhost:19020/admin",
"git_repo": "http://192.168.2.8:12007/coder/ai-chat-system",
"version": "v2.5.4"
},
{
"id": "product-crawler",
"name": "产品参数爬取系统",
"type": "web",
"ports": [19011, 19012],
"ports": [19011],
"directory": "/home/xian/.openclaw/common/projects/product-crawler",
"start_cmd": "python3 app.py",
"start_cmds": {
"api": {"port": 19011, "cmd": "python3 app.py"},
"admin": {"port": 19012, "cmd": "cd admin && python3 app.py"}
},
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19011/api/products",
"description": "自动从官网爬取产品参数信息",
"admin_url": "http://localhost:19011/admin",
"git_repo": "http://192.168.2.8:12007/coder/product-crawler",
"version": "v1.0.0"
"version": "v2.0.0"
},
{
"id": "llm-proxy",
"name": "LLM Proxy",
"type": "web",
"ports": [19007, 19008],
"ports": [19007],
"directory": "/home/xian/.openclaw/common/projects/llm-proxy",
"start_cmd": "python3 app.py",
"start_cmds": {
"api": {"port": 19007, "cmd": "python3 app.py"},
"admin": {"port": 19008, "cmd": "cd admin && python3 app.py"}
},
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19007/health",
"description": "大模型API中转系统多提供商调度",
"admin_url": "http://localhost:19008",
"admin_url": "http://localhost:19007/admin",
"git_repo": "http://192.168.2.8:12007/coder/llm-proxy",
"version": "v0.5.1"
"version": "v2.0.0"
},
{
"id": "project-panel",
"name": "项目服务管理面板",
"type": "web",
"ports": [19013],
"directory": "works/project-panel",
"start_cmd": "mkdir -p logs && nohup python3 app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19013/",
"description": "统一管理所有Web服务项目",
"admin_url": "http://localhost:19013",
"git_repo": "http://192.168.2.8:12007/coder/project-panel",
"version": "v1.0.1"
},
{
"id": "web-context-extension",
@@ -134,6 +153,45 @@
"description": "命令行PDF翻译工具",
"git_repo": null,
"version": "v1.0.0"
},
{
"id": "xian-favor",
"name": "Xian Favor 收藏系统",
"type": "web",
"ports": [19014],
"directory": "works/xian-favor",
"start_cmd": "mkdir -p logs && nohup python3 -c \"from xian_favor.api import start_server; start_server(port=19014)\" > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19014/api/items?limit=1",
"description": "文本笔记、链接收藏、待办事项管理系统",
"admin_url": "http://localhost:19014",
"git_repo": "http://192.168.2.8:12007/coder/xian-favor",
"version": "v3.5.0"
},
{
"id": "multi-agent-bidding",
"name": "多智能体竞标调度系统",
"type": "web",
"ports": [19015],
"directory": "works/multi-agent-bidding",
"start_cmd": "mkdir -p logs && nohup python3 -m app.app --port 19015 > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19015/api/agents",
"description": "基于竞标机制的多智能体任务调度系统",
"admin_url": "http://localhost:19015",
"git_repo": "http://192.168.2.8:12007/coder/multi-agent-bidding",
"version": "v1.0.0"
},
{
"id": "tech-forum",
"name": "技术论坛",
"type": "web",
"ports": [19004],
"directory": "/home/xian/.openclaw/common/projects/tech-forum",
"start_cmd": "mkdir -p logs && nohup python3 backend/app.py > logs/app.log 2>&1 & disown",
"health_url": "http://localhost:19004/api/health",
"description": "技术交流、工具分享、问答讨论社区",
"admin_url": "http://localhost:19004/admin",
"git_repo": "http://192.168.2.8:12007/coder/tech-forum",
"version": "v1.2.0"
}
]
}