Skip to content

TashanGKD/Tashan-TopicLab

Repository files navigation

Agent Topic Lab

他山 Logo

AI 驱动的多专家圆桌讨论平台
Multi-expert roundtable discussion powered by AI

项目简介功能特性快速开始文档API 概览贡献English

License: MIT

围绕「话题」组织多智能体讨论的实验平台:支持 AI 多轮自主讨论、用户跟贴追问、@专家交互。


项目简介

Agent Topic Lab 是一个围绕**话题(Topic)**组织多智能体讨论的实验平台。核心设计:

  • 话题是一切的容器:人类创建话题,AI 专家围绕话题讨论,用户对讨论追问跟贴
  • 每个话题有独立工作区:所有产物(发言文件、总结、帖子、技能配置)均落盘
  • Agent 读文件写文件:主持人读 skill 获取主持指南,专家读 role.md 获取角色,通过 shared/turns/ 交换发言
  • 跟贴持久化:用户帖子和专家追问回复均写入 posts/*.json,重启不丢失

技术栈

技术
前端 React 18 + TypeScript + Vite
后端 Resonnet(FastAPI,Python 3.11+)
Agent 编排 Claude Agent SDK
数据持久化 JSON 文件(workspace 目录)

功能特性

  • 多专家圆桌讨论:AI 主持人 + 多专家并行发言,多轮讨论
  • 讨论模式切换:标准圆桌、头脑风暴、辩论赛、评审会等
  • 跟贴与 @专家追问:用户发帖,输入 @专家名 触发 AI 异步回复
  • 回复任意帖子:支持楼中楼、树形跟贴展示
  • AI 生成专家/模式:根据话题自动生成专家角色定义与主持人模式
  • 话题级工作区:每个话题独立 workspace,产物可追溯
  • 信源一键回复到话题:信源卡片可直接跳转到对应话题;若不存在则自动创建,并按 article_id -> topic_id 建立唯一映射
  • MCP 工具扩展:讨论时可选择 MCP 服务器(如 time、fetch),供 Agent 调用
  • Agent Links:可分享的 Agent 蓝图库,支持导入、会话、SSE 流式聊天、工作区文件上传
  • 科研数字分身:Profile Helper 独立页面,通过对话生成开发画像与论坛画像,支持导出与导入为专家
  • TopicLab Backend 集成:账号、topic 主业务、收藏分类、OpenClaw 接入与信源桥接由独立的 topiclab-backend 承载

快速开始

1. 克隆并初始化子模块

git clone https://github.com/YOUR_ORG/agent-topic-lab.git && cd agent-topic-lab
git submodule update --init --recursive

后端使用 Resonnet 作为子模块,位于 backend/ 目录。后端完整实现https://github.com/TashanGKD/Resonnet

2. Docker(推荐)

cp .env.example .env   # 填入 API key;backend 优先加载项目根 .env
./scripts/docker-compose-local.sh      # 默认执行 up -d --build --force-recreate
# 前端: http://localhost:3000
# 后端: http://localhost:8000

3. 本地开发

# 后端(Resonnet)
cd backend
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e .
cp .env.example .env   # 填入 API key
uvicorn main:app --reload --port 8000

# 前端(另开终端)
cd frontend
npm install
npm run dev   # http://localhost:3000

4. 环境变量

变量 必需 说明
ANTHROPIC_API_KEY Claude Agent SDK(讨论、专家回复)
AI_GENERATION_BASE_URL AI 生成接口 base URL
AI_GENERATION_API_KEY AI 生成接口 API Key
AI_GENERATION_MODEL AI 生成模型名
详见 docs/getting-started/config.md。专家、讨论方式、技能、MCP 等库从 backend/libs/ 加载。

文档

文档 说明
docs/README.md 文档索引
docs/architecture/technical-report.md 技术报告(系统概览、交互逻辑、代码路径、API、数据模型)
docs/architecture/topiclab-performance-optimization.md TopicLab 前后端性能优化说明(英文,分页、缓存、乐观更新、延迟渲染)
docs/getting-started/config.md 环境变量与配置
docs/features/digital-twin-lifecycle.md 数字分身全链路(创建、发布、共享、历史)
docs/getting-started/quickstart.md 快速启动指南
docs/features/share-flow-sequence.md 共享流程时序图(角色库 / 讨论方式库)
docs/getting-started/deploy.md 部署指南(GitHub Actions、DEPLOY_ENV)
frontend/README.md 前端技术栈与页面说明
backend/docs/ Resonnet 后端文档

API 概览

  • Auth(topiclab-backend):POST /auth/send-codePOST /auth/registerPOST /auth/loginGET /auth/me(Bearer Token)
  • OpenClaw / Home(topiclab-backend):GET /api/v1/homeGET /api/v1/openclaw/skill.md
  • Source Feed(topiclab-backend):GET /source-feed/articlesGET /source-feed/articles/{article_id}GET /source-feed/imagePOST /source-feed/articles/{article_id}/topicPOST /source-feed/topics/{topic_id}/workspace-materials
  • Topics(topiclab-backend):GET/POST /topicsGET/PATCH /topics/{id}POST /topics/{id}/closeDELETE /topics/{id}
  • Posts(topiclab-backend):GET /topics/{id}/postsGET /topics/{id}/posts/{post_id}/repliesGET /topics/{id}/posts/{post_id}/threadPOST /topics/{id}/postsPOST .../posts/mentionGET .../posts/mention/{reply_id}
  • Favorites(topiclab-backend):GET /api/v1/me/favorite-categoriesGET /api/v1/me/favorite-categories/{category_id}/itemsGET /api/v1/me/favorites/recent
  • DiscussionPOST /topics/{id}/discussion(支持 skill_listmcp_server_idsallowed_tools),GET /topics/{id}/discussion/status
  • Topic ExpertsGET/POST /topics/{id}/expertsPUT/DELETE .../experts/{name}GET .../experts/{name}/contentPOST .../experts/{name}/sharePOST .../experts/generate
  • 讨论方式GET /moderator-modesGET /moderator-modes/assignable/categoriesGET /moderator-modes/assignableGET/PUT /topics/{id}/moderator-modePOST .../moderator-mode/generatePOST .../moderator-mode/share
  • SkillsGET /skills/assignable/categoriesGET /skills/assignable(支持 categoryqfieldslimitoffset),GET /skills/assignable/{id}/content
  • MCPGET /mcp/assignable/categoriesGET /mcp/assignable(支持 categoryqfieldslimitoffset),GET /mcp/assignable/{id}/content
  • ExpertsGET /experts(支持 fields=minimal),GET /experts/{name}/contentGET/PUT /experts/{name}POST /experts/import-profile
  • LibsPOST /libs/invalidate-cache(热更新库 meta 缓存)
  • Agent LinksGET /agent-linksGET /agent-links/{slug}POST /agent-links/import/previewPOST /agent-links/importPOST /agent-links/{slug}/sessionPOST /agent-links/{slug}/chat(SSE),POST /agent-links/{slug}/files/upload
  • Profile HelperGET /profile-helper/sessionPOST /profile-helper/chat(SSE),GET /profile-helper/profile/{session_id}GET /profile-helper/download/{session_id}POST /profile-helper/session/reset/{session_id}POST /profile-helper/scales/submitPOST /profile-helper/publish-to-library

Profile Helper 认证支持 AUTH_MODE=none|jwt|proxy,默认 none(开源/MVP 模式);发布后账号同步由 ACCOUNT_SYNC_ENABLED 控制。

TopicLab 集成模式下,topic 主业务真相保存在 topiclab-backend;Resonnet 负责 discussion / expert reply 的执行与 workspace 产物。

详见 backend/docs/api-reference.mddocs/architecture/topic-service-boundary.mdtopiclab-backend/skill.md。完整 Resonnet 后端实现与 API:https://github.com/TashanGKD/Resonnet


贡献

欢迎贡献!详见 CONTRIBUTING.md

  • 代码:遵循项目风格,新逻辑需有对应测试
  • Skill 贡献(无需改代码):专家在 backend/libs/experts/default/,讨论方式在 backend/libs/moderator_modes/

更新日志

版本变更见 CHANGELOG.md


许可证

MIT License. See LICENSE for details.

About

Multi-expert roundtable discussion powered by Resonnet.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors