Skip to content

kachofugetsu09/akashic-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

572 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

欢迎加入交流群

akashic Agent

一个会主动找你的 AI 伙伴——不只是被动回答问题,还能根据你订阅的信息源主动判断"现在该不该发消息、发什么",在空闲时自主执行后台任务。


Quickstart

需要 Python 3.12。

git clone <this-repo>
cd akashic-agent
uv venv && uv pip install -r requirements.txt

没有 uv?先 pip install uv

1. 初始化

uv run python main.py setup    # 交互向导(推荐)
uv run python main.py init     # 非交互,CI/自动化用

2. 填写 config.toml

推荐配置:DeepSeek 主模型 + Qwen 轻量/视觉/向量:

[llm]
provider = "deepseek"

[llm.main]
model = "deepseek-v4-flash"     # 主模型:推理强、速度快、价格低
api_key = "sk-..."
base_url = "https://api.deepseek.com/v1"
enable_thinking = true          # 开启 reasoning
multimodal = false              # DeepSeek 不支持图片,用 VL 工具补

[llm.fast]
model = "qwen-flash"            # 轻量模型:memory gate / query rewrite / HyDE
api_key = "sk-..."
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"

[llm.vl]
model = "qwen-vl-plus"          # 视觉:主模型 multimodal=false 时自动启用
api_key = "sk-..."
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"

[memory]
enabled = true
engine = ""                     # 记忆引擎,留空 = default_memory 插件

[memory.embedding]
model = "text-embedding-v3"     # 向量模型
api_key = "sk-..."
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"

[channels.telegram]
token = "123456:ABC..."
allow_from = ["your_username"]

个人推荐: 这个项目和 deepseekv4flash 以及 qwen 相性比较好,其他模型不保证效果。特别是一些连 xml 输出都做不好的国产模型。 通信渠道推荐 telegram,提供了丰富好看的流式输出。

3. 启动

uv run python main.py

给 bot 发一条消息即可开始对话。


系统全景

你的消息 → [被动回复] ──→ agent loop ──→ 回复
                │
                ├── 记忆系统 ─── 每轮注入长期记忆 + 对话后 consolidation
                │
                └── 插件系统 ─── 拦截命令、注入协议、阻断工具、挂载新工具...

[主动推送] ──→ 定期轮询 ──→ 三路数据 (alert/content/context) ──→ LLM 决策 ──→ 推送或跳过
                │
                └── [Drift] ──→ 没东西推时执行后台任务 (SKILL.md)
想看什么 文档
怎么让 agent 主动推送消息、怎么配数据源 _handbook/proactive-guide.md
怎么写后台任务让 agent 空闲时自动干活 _handbook/drift-guide.md
MEMORY.md / SELF.md / consolidation / 记忆怎么流转 _handbook/memory-markdown.md
怎么写插件介入生命周期、注册工具 _handbook/plugins-tutorial.md

被动回复

收到消息 → 记忆检索 → 工具调用 → 流式回复。每轮经过 6 个 Phase(BeforeTurn → BeforeReasoning → PromptRender → Reasoner → AfterReasoning → AfterTurn)。

插件有 4 种介入方式:PhaseModule 链(7 个 Phase 方法 + slot 依赖声明)、EventBus 装饰器(9 种事件)、@on_tool_pre(工具拦截)、@tool(注册工具)。见 插件系统

主动推送(Proactive)

Agent 根据电量模型自适应调整轮询频率——你刚聊完时不烦你(8 分钟一次),半天没动静就加速到 1 分钟一次。每轮拉取三路 MCP 数据:

  • alert — 高优先级告警,直接透传
  • content — 内容流,逐条 LLM 评分分类
  • context — 背景上下文,概率注入做 fallback

Proactive 配置指南

记忆系统

对话通过 consolidation 自动提取为结构化事实:HISTORY.md(时间线事件) + PENDING.md(待归档缓冲) + RECENT_CONTEXT.md(近期上下文摘要)。Optimizer 定时将 PENDING 归档到 MEMORY.md——中间隔一层是为了保护 prompt cache(MEMORY.md 全文注入 system prompt,高频修改会破坏缓存)。同时 memory2.db(向量层)提供语义检索。

记忆系统

Drift 空闲任务

没内容可推时 agent 不空转——执行你写的 SKILL.md(分步操作指南),比如审计长期记忆是否准确、补用户画像、自我诊断。

Drift 指南


其他命令

uv run python main.py cli       # 连接运行中的 agent(TUI)
uv run python main.py dashboard # 打开 Dashboard(默认 :2236)
uv run python main.py --help    # 查看全部子命令

pytest tests/
akashic_RUN_SCENARIOS=1 pytest -c pytest-scenarios.ini tests_scenarios/

工作区

所有运行时数据在 ~/.akashic/workspace/

About

my akashic

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors