第一周 + 第二周任务(每人一段话,含交接)

成员1(系统架构 + Agent 编排)

第一周:在 HiClaw 框架中注册 GitHubCollectorWorker、ArxivCollectorWorker、DailyReportWorker 三个基础 Worker,配置 Manager 调度规则。步骤:① 基于 HiClaw Worker 基类编写 Worker 注册代码;② 在 Docker Compose 中声明新 Worker 服务;③ 配置 Manager 的 Worker 路由规则;④ 验证 Worker 间可通过 Matrix 消息通信。
第二周:调整 Agent 结构,为开发者场景新增 GitHubSummaryWorker 和 PaperSummaryWorker,并配置百炼 AI 作为摘要能力后端。步骤:① 扩展现有 Worker 类,支持调用百炼 qwen 模型;② 设计摘要 Prompt(仓库→一句话功能,论文→核心创新点);③ 配置 Manager 的调度优先级;④ 联调验证多 Worker 协同。
交接:第一周向成员2、3、4提供 Worker 注册配置和通信协议文档;第二周向成员3提供 AI 调用接口说明和 Agent 结构调整文档。


成员2(数据采集 Worker 开发)

第一周:在 HiClaw 框架下开发 GitHubCollectorWorker 和 ArxivCollectorWorker,采集数据并通过 Matrix 发送给 Manager。步骤:① 继承 HiClaw BaseWorker;② 在 run() 中调用 GitHub/arXiv API;③ 将采集结果封装为 HiClaw 标准消息格式;④ 发送到 Manager 指定的 Room。
第二周:升级两个 Collector Worker,支持开发者关键词配置(LLM、Agent、RAG),并按成员1的接口要求输出结构化数据。步骤:① 在 Worker 启动参数中增加关键词列表;② 采集后增加去重和热度排序逻辑;③ 输出消息中增加 worker_type: "developer" 标签;④ 编写 Worker 配置示例文档。
交接:第一周向成员3提供采集消息的格式样例和 Room 地址;第二周向成员3提供开发者专用数据集的消息样例。


成员3(日报与摘要 Worker 开发)

第一周:在 HiClaw 框架下开发 DailyReportWorker,订阅 Collector Worker 的消息并生成日报。步骤:① 监听 Manager 转发的采集消息;② 按时间窗口聚合 GitHub/arXiv 数据;③ 调用百炼 AI 生成每日总结(可选);④ 输出日报消息到指定 Room。
第二周:开发 GitHubSummaryWorker 和 PaperSummaryWorker,调用百炼 qwen 对每条数据生成摘要。步骤:① 订阅 Collector Worker 的单条数据消息;② 构造 Prompt 调用百炼 API;③ 将摘要结果附加到原消息中;④ 发送给 DailyReportWorker 用于最终报告。
交接:第一周向成员4提供日报消息样例和 Room 地址;第二周向成员4提供带摘要的 Worker 输出消息样例。


成员4(输出格式与前端展示)

第一周:基于 Element Web 设计日报展示格式,配置 HiClaw 的消息渲染规则。步骤:① 在 Element Web 中测试不同 Markdown 格式的渲染效果;② 定义 HiClaw 消息体的 formatted_body 规范;③ 与成员3联调,确保日报消息美观展示;④ 输出格式规范文档。
第二周:设计技术报告结构,将多个 Worker 的输出整合为结构化报告。步骤:① 设计报告 JSON 结构(包含 GitHub 解读 + 论文趋势分析);② 开发 ReportFormatterWorker,聚合 Summary Worker 的输出;③ 调用百炼 AI 生成趋势总结段落;④ 将最终报告推送到 Element Web 并截图。
交接:第一周向成员3提供格式规范文档;第二周向成员1、3反馈 Element 展示效果和报告模板建议。


第一周达成效果

到第一周末,HiClaw 项目完成了 基于 Agent 框架的基础日报系统:三个核心 Worker(GitHubCollector、ArxivCollector、DailyReport)成功注册并运行在 HiClaw 容器集群中,Worker 之间通过 Matrix 消息完成数据流转,最终在 Element Web 上输出一份由 HiClaw 自动生成的技术日报。四人协作实现了“采集 Worker → Manager 路由 → 日报 Worker → Element 展示”的完整 HiClaw 链路。

第二周达成效果

到第二周末,HiClaw 项目演进为 面向开发者的智能技术观察系统:新增摘要 Worker 集群,调用百炼 AI 对 GitHub 仓库和 arXiv 论文生成一句话摘要;Manager 实现了多 Worker 协同调度;最终输出结构化技术报告,包含热门项目解读和论文趋势分析。所有能力均以 HiClaw Worker 形式存在,验证了 HiClaw 框架在多 Agent 协作场景下的实用性。

我是成员一我将记录我的步骤

第一周:在 HiClaw 框架中注册 GitHubCollectorWorker、ArxivCollectorWorker、DailyReportWorker 三个基础 Worker,配置 Manager 调度规则。步骤:① 基于 HiClaw Worker 基类编写 Worker 注册代码;② 在 Docker Compose 中声明新 Worker 服务;③ 配置 Manager 的 Worker 路由规则;④ 验证 Worker 间可通过 Matrix 消息通信。
第二周:调整 Agent 结构,为开发者场景新增 GitHubSummaryWorker 和 PaperSummaryWorker,并配置百炼 AI 作为摘要能力后端。步骤:① 扩展现有 Worker 类,支持调用百炼 qwen 模型;② 设计摘要 Prompt(仓库→一句话功能,论文→核心创新点);③ 配置 Manager 的调度优先级;④ 联调验证多 Worker 协同。
交接:第一周向成员2、3、4提供 Worker 注册配置和通信协议文档;第二周向成员3提供 AI 调用接口说明和 Agent 结构调整文档。

1启动docker

就是打开软件

C:\Users\35148>docker ps
CONTAINER ID   IMAGE                                                                        COMMAND                   CREATED         STATUS                   PORTS                                                             NAMES
cc24af8fcbdf   higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/hiclaw-manager:latest   "supervisord -c /etc…"   3 weeks ago     Up 5 minutes             8001/tcp, 8443/tcp, 9001/tcp, 18888/tcp, 0.0.0.0:8080->8080/tcp   hiclaw-manager
c1728fc218cd   ghcr.nju.edu.cn/open-webui/open-webui:main                                   "bash start.sh"           13 months ago   Up 5 minutes (healthy)   0.0.0.0:3000->8080/tcp                                            open-webui

确认了,你只有两个容器:

  • hiclaw-manager(HiClaw 管理器)

  • open-webui(Web UI)

Higress 网关容器确实不存在

现在立即安装 Higress 网关

C:\Users\35148>docker run -d ^
More?   --name higress-gateway ^
More?   --restart unless-stopped ^
More?   -p 8001:8001 ^
More?   -p 18001:18001 ^
More?   -p 19981:19981 ^
More?   higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/gateway:latest
dee3f6faa96e423c35cb70bb3f91fc10b1b57480aa1131976f516db2ef181ff2

访问 Higress 控制台

浏览器打开:http://localhost:18001

打不开

既然 Higress 有问题,我们先用 HiClaw 的原生功能。HiClaw Manager 已经运行了,可以直接使用。

验证 Manager 是否正常:

cmd
docker logs hiclaw-manager --tail 30

检查 Manager 的 API 端口:

cmd
curl http://localhost:8080/health

访问 http://localhost:8080 返回的是 Higress Console 的 HTML 页面!

这意味着:

  • hiclaw-manager 容器实际上既是 Manager 又是 Higress Console

  • 你的 Higress 控制台已经在运行了,只是我之前理解错了

立即验证

浏览器打开:http://localhost:8080

你应该能看到 Higress 控制台登录页面!

整体架构

你们的场景:Worker 是自己写的 Python 程序,直接运行在容器里,不需要包装成 MCP。

  • ✅ 只需要 Docker Compose 拉起 Worker 容器

  • ✅ Worker 之间通过 Manager 转发消息通信

创建文件目录

这里真的搞了超久

一直让我用 Docker 配置镜像加速器或者修改 docker-compose.yml,使用国内镜像

但是都说网络无法直接访问 Docker Hubregistry-1.docker.io)或者配置了国内的镜像加速器但拉取命令还是报错指向官方仓库(registry-1.docker.io

显式指定镜像加速地址

这是最稳定、成功率最高的方法。它的原理是不依赖 Docker 的回退机制,直接将请求发送给你指定的国内镜像源

docker pull docker.1ms.run/library/python:3.11-slim
C:\hiclaw-project>docker pull docker.1ms.run/library/python:3.11-slim
3.11-slim: Pulling from library/python
3531af2bc2a9: Pull complete
91ff8760033c: Pull complete
f3ba2250c524: Pull complete
7ccd73948dde: Pull complete
Digest: sha256:92c262cbb2e99cdc16218338d74fbe518055c13d224d942708f70f8042ff6d18
Status: Downloaded newer image for docker.1ms.run/library/python:3.11-slim
docker.1ms.run/library/python:3.11-slim

镜像已经成功拉取下来了

C:\hiclaw-project>docker-compose -f docker-compose-core.yml up -d
[+] Running 4/4
 ✔ Container hiclaw-manager           Started                                                                      2.5s
 ✔ Container worker-daily-report      Started                                                                      3.4s
 ✔ Container worker-github-collector  Started                                                                      3.4s
 ✔ Container worker-arxiv-collector   Started                                                                      3.1s

完美!所有容器都成功启动了!

中途暂停一下

继续先验证 Docker 是否正常,进入项目目录并启动

C:\Users\35148>docker ps
CONTAINER ID   IMAGE                                        COMMAND           CREATED         STATUS                    PORTS                    NAMES
c1728fc218cd   ghcr.nju.edu.cn/open-webui/open-webui:main   "bash start.sh"   13 months ago   Up 14 minutes (healthy)   0.0.0.0:3000->8080/tcp   open-webui

C:\Users\35148>cd C:\hiclaw-project

C:\hiclaw-project>docker-compose -f docker-compose-core.yml up -d
[+] Running 5/5
 ✔ Network hiclaw-project_hiclaw-net  Created                                                                      0.6s
 ✔ Container hiclaw-manager           Started                                                                      3.4s
 ✔ Container worker-arxiv-collector   Started                                                                      4.4s
 ✔ Container worker-github-collector  Started                                                                      4.1s
 ✔ Container worker-daily-report      Started 

查看容器状态

C:\hiclaw-project>docker ps
CONTAINER ID   IMAGE                                                                        COMMAND                   CREATED          STATUS                          PORTS                                                                                     NAMES
134c97afbd10   hiclaw-project-arxiv-collector                                               "python arxiv_collec…"   55 seconds ago   Restarting (1) 8 seconds ago                                                                                              worker-arxiv-collector
d5fed5753b5b   hiclaw-project-daily-report                                                  "python daily_report…"   55 seconds ago   Restarting (1) 10 seconds ago                                                                                             worker-daily-report
722cb41b16e0   hiclaw-project-github-collector                                              "python github_colle…"   55 seconds ago   Restarting (1) 11 seconds ago                                                                                             worker-github-collector
2cc2f907ff35   higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/hiclaw-manager:latest   "supervisord -c /etc…"   56 seconds ago   Up 53 seconds                   0.0.0.0:8008->8008/tcp, 8001/tcp, 8443/tcp, 9001/tcp, 18888/tcp, 0.0.0.0:8080->8080/tcp   hiclaw-manager
c1728fc218cd   ghcr.nju.edu.cn/open-webui/open-webui:main                                   "bash start.sh"           13 months ago    Up 15 minutes (healthy)         0.0.0.0:3000->8080/tcp                                                                    open-webui

Manager 启动成功,8008 端口已开放(看到 0.0.0.0:8008->8008/tcp)。

问题是三个 Worker 容器在不断重启(Restarting 状态)。这是因为它们启动时无法连接到 Matrix 服务

停止所有容器(在cmd和PowerShell都行)

PS C:\hiclaw-project> cd C:\hiclaw-project
PS C:\hiclaw-project> docker-compose -f docker-compose-core.yml down
[+] Running 5/5
 ✔ Container worker-github-collector  Removed                                                                      0.3s
 ✔ Container worker-daily-report      Removed                                                                      0.3s
 ✔ Container worker-arxiv-collector   Removed                                                                      0.3s
 ✔ Container hiclaw-manager           Removed                                                                      8.3s
 ✔ Network hiclaw-project_hiclaw-net  Removed                                                                      0.9s

(注意,停止时候就不能打开那个higress页面了这是正常的)

接下来我可以直接把代码交付让他们自己测试,但是为了方便他人,我决定修改代码和配置,,让 Worker 常驻运行不重启对后面同学会更方便。他们不需要每次手动触发,Worker 会自动等待 Manager 下发任务。

改代码

你之前拉取 docker.1ms.run/library/python:3.11-slim 能成功,是因为用了国内镜像加速器docker.1ms.run 是加速地址)。

而 vectorim/element-web:latest 失败,是因为 Docker Compose 默认还是从 docker.io(Docker Hub 官方源)拉取,没有自动走加速器。

Element Web 拉取成功了!

但 hiclaw-manager 健康检查失败,导致容器无法启动。改代码

因为 Docker 构建时只复制当前目录的文件,所以 base_worker.py 需要放在每个 Worker 目录下!!!

成功了! Worker 容器已经常驻运行,不再重启!

Manager 容器内部的 8008 端口没有监听。这意味着 Matrix 服务根本没有启动。

部署独立的 Matrix 服务

改yml代码

初始化 Matrix Synapse

# 创建数据目录
mkdir matrix-data 2>nul

# 生成配置
docker run -it --rm ^
  -v %cd%/matrix-data:/data ^
  -e SYNAPSE_SERVER_NAME=localhost ^
  -e SYNAPSE_REPORT_STATS=no ^
  matrixdotorg/synapse:latest generate

启用注册(编辑配置文件)C:\hiclaw-project\matrix-data\homeserver.yaml

前面每个worker一个base太麻烦,把 docker-compose.yml 中的 build 路径指向 workers 目录,而不是子目录

这样不会产生代码冗余,后续维护也更方便

Docker 镜像构建时使用的是构建那一刻的文件。虽然你更新了本地的 base_worker.py,但 Docker 镜像还是旧的,需要强制重新构建

为了这个日志输出,我不知道重新构建了多少次。。。

他一直说我是Worker 的 print 输出没有被 Docker 捕获

我们换一个思路:不依赖日志,直接验证 Worker 是否正常工作

C:\hiclaw-project>docker exec -it worker-github-collector python -u /app/github_collector_worker.py

上述命令没输出,说明代码根本没有执行到 print,命令卡住了,说明 Worker 在运行但可能在等待什么东西,用简化版测试来定位问题,立即发送消息到 Matrix 房间。查看输出

成功了!Worker 可以发送消息到 Matrix 了!

只是 HTTP 方法用错了:PUT 应该改成 POST。但这是小问题,说明连接是正常的。

找到 base_worker.py 中的 send_message 方法,把 requests.put 改成 requests.post

可是原本代码就是post啊??服了啊

创建一个最简单的测试脚本:先进入容器

C:\hiclaw-project>docker exec -it worker-github-collector sh
# echo 'import time, os, requests' > /app/test.py
echo 'print("1. Worker starting...")' >> /app/test.py
echo 'time.sleep(1)' >> /app/test.py
echo 'print("2. Import done")' >> /app/test.py
echo 'matrix_url = os.environ.get("MATRIX_HOMESERVER", "http://synapse:8008")' >> /app/test.py
echo 'room = os.environ.get("MANAGER_ROOM", "!manager:localhost")' >> /app/test.py
echo 'token = os.environ.get("MATRIX_ACCESS_TOKEN", "dummy-token")' >> /app/test.py
echo 'url = f"{matrix_url}/_matrix/client/v3/rooms/{room}/send/m.room.message"' >> /app/test.py
echo 'headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}' >> /app/test.py
echo 'data = {"msgtype": "m.text", "body": "Test"}' >> /app/test.py
echo 'print("3. Sending...")' >> /app/test.py
echo 'r = requests.post(url, headers=headers, json=data, timeout=5)' >> /app/test.py
echo 'print(f"4. Status: {r.status_code}")' >> /app/test.py# # # # # # # # # # # #
# python -u /app/test.py
1. Worker starting...
2. Import done
3. Sending...
4. Status: 401
# ^C
#

成功了!Worker 可以发送 HTTP 请求了!

状态码 401 是正常的,因为用的是 dummy-token,Matrix 服务器拒绝了认证。但关键是 代码可以正常运行,没有卡住!

原来的 base_worker.py 中的 listen() 方法可能因为某些原因没有输出。现在我们知道 Worker 本身是正常的。

解决方案:修复认证问题

需要创建真实的 Matrix 用户和 Token。

第 1 步:注册 Matrix 用户第 2 步:获取 Token第 3 步:更新 docker-compose.yml

用真实的 Token 替换 dummy-token

C:\hiclaw-project>curl -X POST "http://localhost:8008/_matrix/client/v3/register" -H "Content-Type: application/json" -d "{\"username\":\"github-collector\",\"password\":\"pass123\",\"auth\":{\"type\":\"m.login.dummy\"}}"
{"user_id":"@github-collector:localhost","home_server":"localhost","access_token":"syt_Z2l0aHViLWNvbGxlY3Rvcg_TPSfiwdbwxvaxQmKGkpr_4ftSgJ","device_id":"VQONUMCFDL"}
C:\hiclaw-project>curl -X POST "http://localhost:8008/_matrix/client/v3/login" -H "Content-Type: application/json" -d "{\"type\":\"m.login.password\",\"user\":\"github-collector\",\"password\":\"pass123\"}"
{"user_id":"@github-collector:localhost","access_token":"syt_Z2l0aHViLWNvbGxlY3Rvcg_ReQpOczggEYZgtKozuWo_25zxQs","home_server":"localhost","device_id":"ULGCMSCVUO"}

太好了,还是不行

太好了!Worker 日志终于出来了!(谁知道这句话出来的救赎感,欣慰的泪水瞬间流出)

但有个问题:Send failed: 403 表示认证失败。可能原因:

  1. Token 不正确

  2. Worker 没有权限发送消息到房间 !manager:localhost

C:\hiclaw-project>curl -X GET "http://localhost:8008/_matrix/client/v3/account/whoami" -H "Authorization: Bearer syt_Z2l0aHViLWNvbGxlY3Rvcg_ReQpOczggEYZgtKozuWo_25zxQs"
{"user_id":"@github-collector:localhost","is_guest":false,"device_id":"ULGCMSCVUO"}

Token 有效!github-collector 用户认证成功。

需要先创建房间。

注册一个普通用户(用于在 Element Web 中操作):

curl -X POST "http://localhost:8008/_matrix/client/v3/register" -H "Content-Type: application/json" -d "{\"username\":\"testuser\",\"password\":\"pass123\",\"auth\":{\"type\":\"m.login.dummy\"}}"
  1. 打开浏览器 http://localhost

  2. 修改服务器地址:

    • 点击右上角菜单(或登录页面下方的 "Edit")

    • 将 Homeserver URL 改为:http://localhost:8008

    • 点击 "Save" 或 "Continue"

  3. 使用账号密码登录:

    • 用户名:testuser

    • 密码:pass123

改了之后就变成

不是在上面的地址里面改

诶我没招了,我一直在创建新账户那里卡。。我应该登录已有账户的

获取房间 ID

房间创建后,浏览器地址栏会显示类似:

text

http://localhost/#/room/!jKxGxQRZvRqoHmBhQZ:localhost

复制 !jKxGxQRZvRqoHmBhQZ:localhost 这部分(这就是房间 ID)。

邀请 Worker 进入房间

  1. 在房间中,点击右上角的 People 图标(或 "i" 图标)

  2. 点击 Invite 或 Add people

  3. 输入 @github-collector:localhost

  4. 点击 Invite

邀请另外两个的时候要先注册,笑死我了我之前三个都用的一样的token

C:\hiclaw-project>curl -X POST "http://localhost:8008/_matrix/client/v3/register" -H "Content-Type: application/json" -d "{\"username\":\"arxiv-collector\",\"password\":\"pass123\",\"auth\":{\"type\":\"m.login.dummy\"}}"
{"user_id":"@arxiv-collector:localhost","home_server":"localhost","access_token":"syt_YXJ4aXYtY29sbGVjdG9y_TtqVErhqJtYpnOHTLnkH_2uBrx7","device_id":"YBXGQYBNAF"}
C:\hiclaw-project>curl -X POST "http://localhost:8008/_matrix/client/v3/register" -H "Content-Type: application/json" -d "{\"username\":\"daily-report\",\"password\":\"pass123\",\"auth\":{\"type\":\"m.login.dummy\"}}"
{"user_id":"@daily-report:localhost","home_server":"localhost","access_token":"syt_ZGFpbHktcmVwb3J0_xByzppvcLGdkneHKNwqj_0cj3sx","device_id":"OROCSMFKPA"}

更新 docker-compose.yml

用你复制的房间 ID 替换:

yaml

github-collector:
  environment:
    - MANAGER_ROOM=!jKxGxQRZvRqoHmBhQZ:localhost

重启 Worker

cmd

cd C:\hiclaw-project
docker-compose restart github-collector
timeout /t 5
docker logs worker-github-collector --tail 20

在yml里面改好了,在页面里面也邀请成功了,但是还是说没有进房间

C:\hiclaw-project>docker exec worker-arxiv-collector python -c "import requests; token='syt_YXJ4aXYtY29sbGVjdG9y_TtqVErhqJtYpnOHTLnkH_2uBrx7'; url='http://synapse:8008/_matrix/client/v3/rooms/!iAoqrRALVwEVrZBACB:localhost/join'; r=requests.post(url, headers={'Authorization': f'Bearer {token}'}); print(r.status_code, r.text)"
200 {"room_id":"!iAoqrRALVwEVrZBACB:localhost"}

C:\hiclaw-project>docker exec worker-daily-report python -c "import requests; token='syt_ZGFpbHktcmVwb3J0_xByzppvcLGdkneHKNwqj_0cj3sx'; url='http://synapse:8008/_matrix/client/v3/rooms/!iAoqrRALVwEVrZBACB:localhost/join'; r=requests.post(url, headers={'Authorization': f'Bearer {token}'}); print(r.status_code, r.text)"
200 {"room_id":"!iAoqrRALVwEVrZBACB:localhost"}

成功标志

Worker 日志应该显示:

text

[2026-04-24 xx:xx:xx] Message sent to !xxxxx:localhost

你在 Element Web 的房间中也会看到 Worker 发送的消息:

text

Worker github-collector ready

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐