这是一个只包含林黛玉智能体相关内容的 GenericAgent 开发包:
Public release note: this repository contains only reusable core code and seed memory. Dynamic interaction memories, experiment outputs, trajectories, and private acceptance materials are intentionally excluded.
- 不复制原始 GenericAgent 的其他 memory;
- 不复制 qingpu、政务写作、校对和其他对话沉淀的 SOP;
- 只运行 GenericAgent 核心和
ga_httpapp.py; - 记忆目录可写,支持 Markdown 记忆动态调整;
- API Key 通过宿主机文件挂载,不进入镜像。
cd /path/to/lin-daiyu-agent
cp .env.example .env
# 编辑 .env,设置 GA_HTTP_KEY 和 MYKEY_FILE
./prepare_context.sh
docker compose build
docker compose up -d浏览器打开:
http://127.0.0.1:18080/?key=你的GA_HTTP_KEY
然后输入:
进入林黛玉模式
查看日志:
docker compose logs -f lin-daiyu停止服务:
docker compose down先安装 Python 依赖:
cd /path/to/lin-daiyu-agent/build-context
python3 -m pip install \
requests beautifulsoup4 bottle simple-websocket-server \
aiohttp fastapi uvicorn启动 HTTP 前端:
export PYTHONPATH="/path/to/GenericAgent:$PWD"
export GA_HTTP_KEY="replace-with-a-local-ui-key"
python3 assets/ga_httpapp.py 8080 "$GA_HTTP_KEY"浏览器打开:
http://127.0.0.1:8080/?key=你的GA_HTTP_KEY
终端按 Ctrl+C 停止。
可选:启动后切换到 DeepSeek:
curl "http://127.0.0.1:8080/llm?llm_no=2&key=$GA_HTTP_KEY"cd /path/to/lin-daiyu-agent/build-context
export PYTHONPATH="/path/to/GenericAgent:$PWD"
python3 agentmain.py --llm-no 2然后在终端输入:
进入林黛玉模式
按 Ctrl+C 停止。
| 方式 | 入口 | 前端 | 默认端口 | 使用的 memory |
|---|---|---|---|---|
| Docker Web | docker compose up |
有 | 18080 |
lin-daiyu-agent/memory/ 挂载到 /app/memory/ |
| 本地 Web | python3 assets/ga_httpapp.py |
有 | 8080 |
build-context/memory/ |
| 本地 CLI | python3 agentmain.py |
无 | 无 | build-context/memory/ |
本仓库是 GenericAgent 的林黛玉专用轻量部署包,不复制完整的 GenericAgent checkout。项目由“外部核心源码 + 本仓库配置与公开 seed memory + 生成的 Docker 构建上下文”组成:
GenericAgent checkout
│ GENERIC_AGENT_ROOT
▼
prepare_context.sh ───────┐
│ │
▼ ▼
build-context/ 本仓库 memory/、Dockerfile、
(白名单运行时) assets/ga_httpapp.py、配置文件
│
▼
Docker 容器
│
├── assets/ga_httpapp.py
│ └── FastAPI HTTP API + 内置 Web UI
│
├── agentmain.py
│ └── GenericAgent 任务队列、会话与历史
│
├── agent_loop.py / ga.py / llmcore.py
│ └── Agent 循环、工具调用、LLM 会话
│
└── memory/
├── global_mem.txt
└── lin_daiyu.md + lin_daiyu/
目录职责:
| 目录/文件 | 职责 |
|---|---|
prepare_context.sh |
从 GENERIC_AGENT_ROOT 读取核心源码和林黛玉 memory,生成干净的 build-context/ |
build-context/ |
Docker 的白名单构建上下文;可删除并由脚本重新生成,不是另一套源码 |
assets/ga_httpapp.py |
Web/HTTP 适配层,提供对话、输出查询、中止、模型切换和系统提示接口 |
memory/ |
本项目唯一的可写记忆目录;容器通过 volume 使用 |
Dockerfile / compose.yaml |
安装依赖、构建无桌面容器,并挂载 memory、临时数据和只读 API Key |
.env.example |
本地启动所需的端口、HTTP Key 和宿主机 mykey.py 路径示例 |
运行时有两条入口,但共用同一套 GenericAgent 核心:
- Web/HTTP:浏览器或 API →
assets/ga_httpapp.py→GenericAgent→ Agent loop/LLM →memory/ - CLI:
agentmain.py→GenericAgent→ Agent loop/LLM →memory/
安全边界:
- API Key 通过宿主机文件挂载,不写入镜像;
- 容器只挂载本仓库的
memory/、data/temp/和指定的mykey.py; - 完整 GenericAgent checkout 不进入 Docker,
prepare_context.sh只复制运行所需的白名单文件。
非 Docker 方式直接运行 build-context,不会自动使用 Docker 的宿主机 volume。若修改了核心代码,重新生成构建上下文:
cd /path/to/lin-daiyu-agent
./prepare_context.sh容器使用本目录的 memory/ 作为唯一可写记忆目录。动态写回会直接落到:
memory/lin_daiyu/
build-context/ 是构建时生成的白名单上下文,不包含 API Key,也不包含其他项目 memory。
如需重新从 GenericAgent checkout 的 memory/lin_daiyu 生成干净上下文:
./prepare_context.sh
docker compose build --no-cache当前容器是无桌面版。GenericAgent Desktop 依赖 macOS 的 pywebview、窗口和 ScreenCaptureKit,不放进 Docker;容器通过本地 HTTP 入口提供对话能力。
容器不挂载完整的 GenericAgent checkout,只挂载本目录的 memory/、data/temp/ 和指定的 mykey.py。