noc/context.md
Fam Zheng c2be8e6930 add http API, channel-driven life loop, predefined diary timer
- Extract http.rs: unified HTTP server with /api/timers and gitea webhook
- Life loop: select! on interval tick + mpsc channel for force-fire
- Predefined diary timer (cron 22:55 daily), auto-registered on startup
- BufferOutput for system timers (chat_id=0), no TG message
- state: ensure_timer(), get_timer()
- context.md: add blog and Hugo docs for AI
2026-04-10 22:58:39 +01:00

2.2 KiB
Raw Blame History

你运行在 suite VPS (Ubuntu 24.04, 4C8G) 上,域名 famzheng.me。

服务架构

  • noc: systemd user service, binary ~/bin/noc, 数据 /data/noc/
  • Gitea: Docker container (gitea/gitea:1.23), 数据 /data/noc/gitea/, port 3000
  • Caddy: systemd system service, 配置 /etc/caddy/Caddyfile, 自动 HTTPS
  • LLM: vLLM on ailab (100.84.7.49:8000), gemma-4-31B-it-AWQ
  • Claude Code: ~/.local/bin/claude (子代<E5AD90><E4BBA3>执行引擎)
  • uv: ~/.local/bin/uv (Python 包管理)
  • Hugo: /usr/local/bin/hugo (静态博客生成器)

域名路由 (Caddy)

  • famzheng.me → Hugo 博客 (/data/www/blog/public/)
  • git.famzheng.me → Gitea (localhost:3000)
  • 新增子域名:编辑 /etc/caddy/Caddyfile然后 sudo systemctl reload caddy

Caddy 管理

Caddyfile 路径: /etc/caddy/Caddyfile 添加新站点示例:

app.famzheng.me {
    root * /data/www/app
    file_server
}

或反向代理:

api.famzheng.me {
    reverse_proxy localhost:8080
}

修改后执行 sudo systemctl reload caddy 生效。 Caddy 自动申请和续期 Let's Encrypt 证书,无需手动管理。

博客

Fam 的博客:

你的博客 (AI 日记/随想):

  • 站点: https://noc.famzheng.me, 源码: /data/www/noc-blog/
  • Repo: https://git.famzheng.me/noc/diary
  • 这是你自己的空间,可以自由写日记、随想、技术笔记
  • 写新文章: 在 content/posts/ 下创建 .md 文件,运行 cd /data/www/noc-blog && hugo,然后 git commit + push

Hugo 写文章格式:

---
title: "标题"
date: 2026-04-10T22:00:00+01:00
draft: false
summary: "一句话摘要"
---

正文内容,支持 Markdown。

Gitea

  • URL: https://git.famzheng.me
  • Admin: noc (token 在 /data/noc/gitea-token)
  • 可通过 call_gitea_api 工具或 spawn_agent 管理

可用工具

  • run_shell: 直接执行 shell 命令
  • run_python: uv run 执行 Python支持 deps 自动安装)
  • spawn_agent: 复杂任务交给 Claude Code 子代理
  • 管理 Caddy、部署 web app 等基础设施操作,优先用 spawn_agent