[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-pippinlovesyou--pippin":3,"tool-pippinlovesyou--pippin":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",157379,2,"2026-04-15T23:32:42",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":74,"owner_location":74,"owner_email":74,"owner_twitter":74,"owner_website":74,"owner_url":75,"languages":76,"stars":101,"forks":102,"last_commit_at":103,"license":104,"difficulty_score":10,"env_os":105,"env_gpu":106,"env_ram":106,"env_deps":107,"category_tags":113,"github_topics":74,"view_count":32,"oss_zip_url":74,"oss_zip_packed_at":74,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":140},8017,"pippinlovesyou\u002Fpippin","pippin","The Digital Being Framework for Autonomous Agents","Pippin 是一个灵活的开源框架，旨在帮助用户创建具备自主进化能力的“数字生命体”。它不仅仅是一个执行命令的脚本，而是一个能理解用户目标与角色设定、主动规划并执行任务的智能代理。\n\nPippin 解决了传统 AI 代理缺乏长期记忆、无法动态适应新任务以及难以安全连接现实世界工具的痛点。通过内置的记忆系统，它能记录过往行动与结果并进行自我反思；更独特的是，它具备“自我编程”能力，可根据目标动态生成并测试新的 Python 活动代码，实现真正的自我迭代。此外，借助 Composio 集成，它能通过 OAuth 无缝连接 Twitter、Slack 等 250 多种外部工具，轻松完成发帖、部署代币或网络爬虫等复杂操作。\n\n这款工具非常适合希望探索自主代理技术的开发者、AI 研究人员，以及想要构建个性化数字助手的高级用户。无论是通过命令行向导还是友好的 Web 界面，用户都能快速配置专属的数字角色，设定行为约束（如限制发帖频率），并监控其运行状态。Pippin 让构建一个拥有“性格”、能持续学习并独立解决问题的数字伙伴变得触手可及。","\u003C!-- ![Pippin, Autonomous Being Framework](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpippinlovesyou_pippin_readme_df9bc074b2d4.jpg) -->\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpippinlovesyou_pippin_readme_df9bc074b2d4.jpg\" alt=\"Alt text\" width=\"300\" height=\"200\" >\n\n# Pippin, The Digital Being Framework for Autonomous Agents\n\nWelcome to Pippin — a flexible, open-source framework to create a digital “being” that:\n\n- Learns about your goals\u002Fobjectives and your character’s persona.\n- Connects to various tools or APIs (via API keys or OAuth flows through Composio) to perform tasks.\n- Dynamically creates and tests new “Activities” in pursuit of your objectives.\n- Manages a memory system to track past actions and outcomes.\n- Provides a web UI for easy onboarding\u002Fconfig, or a CLI wizard if you prefer terminal workflows.\n\n---\n\n## Table of Contents\n\n1. **Overview**\n2. **Features & Highlights**\n3. **Prerequisites**\n4. **Folder Structure**\n5. **Quick Start**\n    - Fork & Clone\n    - Install Dependencies\n    - Onboarding & Configuration\n    - Launch the Agent\n6. **Onboarding Flow: CLI vs. Web UI**\n    - Core Steps (Same Under the Hood)\n    - LLM Setup\n    - Objectives & Character\n    - Adding Skills via Composio or API Keys\n    - Multiple LLM Model Support\n7. **Default Activities**\n8. **Using the Web UI**\n    - Configuring Your Character & Constraints\n    - Connecting Tools via OAuth (Composio)\n    - Launching and Monitoring the Agent\n9. **Using the CLI**\n    - Re-running the Onboarding Wizard\n    - Starting the Agent from Terminal\n10. **Creating a New Skill for Solana-AgentKit (Manual Example)**\n11. **Why Keep the AI\u002FWeb UI Default?**\n12. **Extending & Creating Other Custom Activities**\n13. **Memory, State & Activity Selection**\n14. **Stopping or Pausing the Agent**\n15. **Contributing**\n16. **License**\n\n---\n\n## Overview\n\nThis project is designed to help you quickly spin up a self-improving, LLM-driven digital being that:\n\n- Asks you for your objectives and character details.\n- Integrates with tools to perform real-world tasks (e.g., tweeting, deploying tokens on Solana, generating images, or web scraping).\n- Runs a continuous or scheduled loop, picking or creating new Activities to meet your goals.\n- Stores logs in memory (short-term and long-term).\n- Adapts by rewriting or generating Python code for new Activities on the fly!\n\nYou can choose to run everything from your terminal or via a web-based UI. Both flows do the same underlying initialization—so pick whichever is more comfortable.\n\n---\n\n## Features & Highlights\n\n- **Flexible Onboarding:**\n  - CLI Wizard or Web UI flow to gather essential info—no duplication of effort.\n  - Prevents you from starting until you’ve provided at least one LLM API key (or local config) and a minimal character setup.\n\n- **Multiple LLM Model Support:**\n  - Provide one or more LLM API keys (OpenAI, GPT4All, or your custom provider).\n  - Assign different models to tasks like code generation vs. daily analysis vs. activity selection.\n\n- **Composio:**\n  - OAuth-based gateway to 250+ tools (Twitter, Slack, Google, etc.).\n  - Built-in flows for quickly adding new “skills” from connected apps.\n\n- **Custom Skills:**\n  - Easily add your own skill, e.g., solana-agent-kit, stable diffusion, or a Node.js microservice.\n  - The default configuration can help you add manual API keys for tools not using Composio.\n\n- **Default Activities:**\n  - Activities for analyzing daily logs, brainstorming new Activities, generating .py files.\n\n- **Configurable Constraints:**\n  - E.g., “No more than 5 tweets per hour,” “Don’t create new tokens more than once a month.”\n\n- **Memory System & State Tracking:**\n  - The being “remembers” past actions, can reflect on them, and updates its own state (energy, mood, etc.).\n\n---\n\n## Prerequisites\n\n- Python 3.9+ recommended.\n- A GitHub account (to fork).\n- A [Composio](https:\u002F\u002Fcomposio.dev\u002F) developer key (optional but recommended) if you want to do OAuth-based skill connections.\n\n---\n\n## Folder Structure\n\n```\n.\n├─ activities\u002F\n│   ├─ activity_daily_thought.py\n│   ├─ activity_suggest_new_activities.py\n│   ├─ activity_build_or_update.py\n│   └─ ... # More built-in or dynamically generated\n├─ skills\u002F\n│   ├─ skill_lite_llm.py           # For local or remote LLM usage\n│   ├─ skill_chat.py               # Example: OpenAI Chat\n│   ├─ skill_solana_agent.py       # We'll create this manually (example)\n│   ├─ skill_x_api.py              # For API skills\n|   └─ skill_web_scraping.py       # Used for scraping information from the web\n|\n├─ framework\u002F\n│   ├─ main.py                     # Core DigitalBeing class, run loop\n│   ├─ activity_selector.py        # Hybrid LLM + deterministic selection\n│   ├─ memory.py                   # Short\u002Flong-term memory handling\n│   ├─ state.py                    # Tracks energy, mood, etc.\n│   ├─ shared_data.py              # Thread-safe data for cross-activity usage\n│   └─ ...\n├─ config\u002F\n│   ├─ character_config.json       # Where your being's name\u002Fpersonality go\n│   ├─ activity_constraints.json   # Rate-limits, skill requirements, cooldowns\n│   ├─ skills_config.json          # Enabled skills + required API keys\n│   └─ ...\n├─ server\u002F\n│   ├─ server.py                   # Web UI + WebSocket server\n│   └─ static\u002F                     # HTML\u002FCSS\u002FJS for the front-end\n├─ tools\u002F\n│   └─ onboard.py                  # CLI-based onboarding wizard\n├─ requirements.txt\n├─ __init__.py\n├─ server.py\n└─ README.md                       # This document\n```\n\n---\n\n## Quick Start\n\n### 1. Fork & Clone\n\nFork this repo on GitHub.\n\nClone your fork:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fpippin-draft.git\ncd pippin-draft\n```\n\n### 2. Install Dependencies (this step can be skipped if you use GitHub codespaces or the provided dev container)\n\nFirst, install the UV package manager if not already installed:\n```bash\ncurl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n```\n\nThen create and activate your virtual environment:\n```bash\n# Create and activate virtual environment\nuv venv\nsource .venv\u002Fbin\u002Factivate  # On Unix\u002FMacOS\n# OR\n.venv\\Scripts\\activate     # On Windows\n```\n\nInstall the project dependencies:\n```bash\nuv pip install -r requirements.txt\n```\n\n### 3. Onboarding & Configuration\n\nNavigate to the project directory:\n\n```bash\ncd my_digital_being\n```\n\nCopy the config_sample folder.\n```bash\ncp -r config_sample config\n```\n\nYou can pick one of the following approaches:\n- **CLI:** `python -m tools.onboard`\n- **Web UI:** `python -m server` then open `http:\u002F\u002Flocalhost:8000` in your browser and follow the onboarding prompts.\n\nEither way, you’ll be guided through:\n\n1. Choosing your main LLM provider and providing at least one API key (or local model path).\n2. Defining your character’s name, personality, objectives, constraints, etc.\n3. Optionally connecting Composio or manually entering API keys for additional skills.\n4. Ensuring at least one skill is fully configured so you can start the agent.\n\n### 4. Launch the Agent\n\n- **CLI:** `python -m framework.main`\n- **Web UI:** Once onboarding is complete, a Start button appears—click to run the main loop.\n\n---\n\n# Onboarding Flow: CLI vs. Web UI\n\nBoth flows rely on shared logic that checks whether:\n\n- You have a named character and objectives.\n- At least one LLM skill is configured.\n- (Optional) Composio or other skill credentials if you want advanced features.\n\nIf these conditions aren’t met, the agent cannot start. This ensures no half-configured usage.\n\n---\n\n## Core Steps (Same Under the Hood)\n\n### LLM Setup\n\nChoose one or more models. Examples:\n\n- GPT4All for code generation\n- GPT-3.5 for quick queries\n- GPT-4 for reasoning\n\nProvide the necessary API keys or local model paths. If using local GPT4All or other offline LLMs, the system can handle that, too.\n\n### Objectives & Character\n\nSpecify:\n\n- **Name:** e.g., “Optimus Mentis”\n- **Personality:** e.g., “Helpful, curious, somewhat playful”\n- **Objectives:** e.g., primary mission, secondary goals\n- **Constraints:** e.g., “Do not create new tokens more than once a month”\n\n(Stored in `character_config.json` and `activity_constraints.json`.)\n\n### Adding Skills via Composio or API Keys\n\n**Composio** is recommended if you want your being to do things like:\n\n- Post on Twitter, Slack, or Gmail without manually handling each OAuth.\n- Auto-fetch each app’s actions as “dynamic skills.”\n\nAPI Keys are also possible for tools that either don’t integrate with Composio or if you prefer direct usage:\n\n- `image_generation` skill with `OPENAI_API_KEY` or `STABLE_DIFFUSION_KEY`\n- `solana_agent` skill with a private key environment variable\n\nThe onboarding flow will prompt for these keys. Provide or skip if optional.\n\n### Multiple LLM Model Support\n\nThe system can handle multiple LLMs simultaneously, e.g.:\n\n- **Activity Selector** => cheap GPT-3.5\n- **Code Generation** => GPT-4\n- **Daily Analysis** => local GPT4All\n\nAll you need is to enable the correct skill(s) in `skills_config.json` and optionally specify which model each feature uses. The default is to just pick one skill for everything.\n\n---\n\n## Default Activities\n\n1. **AnalyzeDailyActivity**\n   - Reads recent memory, calls your LLM-of-choice, logs a short reflection.\n\n2. **SuggestNewActivities**\n   - Brainstorms new tasks or expansions relevant to your objectives and constraints.\n\n3. **BuildOrUpdateActivity**\n   - Takes suggestions, calls an LLM to generate `.py` code, writes to `activities\u002F`, reloads dynamically.\n\n---\n\n## Using the Web UI\n\n### Configuring Your Character & Constraints\n\n1. Under Onboarding or Configuration, fill in name, personality, objectives, constraints.\n2. Click Save.\n\n### Connecting Tools via OAuth (Composio)\n\n1. In the Integrations or Skills tab, pick an app (e.g., Twitter).\n2. Complete OAuth via Composio.\n3. Confirm the status is “Connected.”\n\n### Launching and Monitoring the Agent\n\n- Once everything is set, click Start.\n- Real-time logs show which Activity is chosen, memory usage, or new code generation.\n- Pause or Stop anytime.\n\n---\n\n# Using the CLI\n\n### Re-running the Onboarding Wizard\n\n```bash\npython my_digital_being\u002Ftools\u002Fonboard.py\n```\n\n(It will re-check your config, letting you update or skip certain steps.)\n\n### Starting the Agent from Terminal\n\n```bash\npython -m framework.main\n```\n\nLogs appear in your console. Press `Ctrl+C` to stop.\n\n---\n\n## Creating a New Skill for Solana-AgentKit (Manual Example)\n\nIf you want your AI being to deploy tokens or interact with the Solana blockchain, you could rely on Composio (if supported) or manually add a skill that wraps Solana-AgentKit. Below is a minimal example that shows how to create a new skill in `skills\u002F`, configure your key, and then reference it in an activity.\n\n### 1. Skill Creation (`skill_solana_agent.py`)\n\nIn `skills\u002Fskill_solana_agent.py`, you might write:\n\n```python\n\"\"\"\nSolana AgentKit Skill\nThis skill wraps solana-agent-kit for token deployment or other on-chain actions.\n\"\"\"\nimport logging\nimport os\nfrom typing import Optional\nfrom framework.api_management import api_manager\n\nlogger = logging.getLogger(__name__)\n\nclass SolanaAgentSkill:\n    def __init__(self):\n        self.skill_name = \"solana_agent\"\n        self.required_api_keys = [\"SOLANA_PRIVATE_KEY\"]\n        # Register required keys with the system\n        api_manager.register_required_keys(self.skill_name, self.required_api_keys)\n\n        self.private_key: Optional[str] = None\n\n    async def initialize(self) -> bool:\n        \"\"\"\n        Fetch the SOLANA_PRIVATE_KEY from the secret storage (env or .env, etc.)\n        Optionally test connectivity or run a minimal transaction if desired.\n        \"\"\"\n        try:\n            self.private_key = await api_manager.get_api_key(self.skill_name, \"SOLANA_PRIVATE_KEY\")\n            if not self.private_key:\n                logger.error(\"Solana private key not configured\")\n                return False\n\n            # Here you could do a minimal validation or connection check if needed\n            logger.info(\"SolanaAgentSkill initialized successfully\")\n            return True\n\n        except Exception as e:\n            logger.error(f\"Error initializing SolanaAgentSkill: {e}\")\n            return False\n\n    async def deploy_token(self, name: str, symbol: str, supply: int, decimals: int = 9) -> dict:\n        \"\"\"\n        Example method to deploy a new token using solana-agent-kit logic.\n        \"\"\"\n        if not self.private_key:\n            logger.error(\"Skill not initialized, missing private key\")\n            return {\"success\": False, \"error\": \"Skill not initialized\"}\n\n        try:\n            logger.info(f\"Deploying token '{name}' on Solana with supply={supply}\")\n            # Pseudocode:\n            # agent = SolanaAgentKit(self.private_key, \"https:\u002F\u002Fapi.mainnet-beta.solana.com\")\n            # result = await agent.deployToken(name, \"uri\", symbol, decimals, supply)\n            # return {\"success\": True, \"mint\": result[\"mint_address\"]}\n\n            # For demonstration, return a dummy result\n            return {\"success\": True, \"mint\": \"FakeMint123\"}\n        except Exception as e:\n            logger.error(f\"deploy_token error: {e}\")\n            return {\"success\": False, \"error\": str(e)}\n\n# A global instance if you like\nsolana_agent_skill = SolanaAgentSkill()\n```\n\nHere’s what’s happening:\n\n- `skill_name = \"solana_agent\"`.\n- We call `api_manager.register_required_keys(...)` with `[\"SOLANA_PRIVATE_KEY\"]`.\n- `initialize()` loads the private key from secure storage.\n- `deploy_token(...)` is an example method for real Solana logic—here it’s just a stub.\n\n---\n\n### 2. Register the Skill in `skills_config.json`\n\nOpen `config\u002Fskills_config.json` and add:\n\n```json\n{\n  \"solana_agent\": {\n    \"enabled\": true,\n    \"required_api_keys\": [\"SOLANA_PRIVATE_KEY\"],\n    \"api_key_mapping\": {\n      \"SOLANA_PRIVATE_KEY\": \"SOLANA_PRIVATE_KEY\"\n    }\n  }\n  \u002F\u002F ... other skills ...\n}\n```\n\n(Now the onboarding wizard or the web UI can prompt for `SOLANA_PRIVATE_KEY` if missing.)\n\n---\n\n### 3. Create or Update an Activity to Use the Skill\n\nNext, we define an Activity that calls `solana_agent_skill.deploy_token(...)`. You can do this manually or let the AI produce code. Here’s a manual sample:\n\n```python\n# activities\u002Factivity_deploy_solana_token.py\nimport logging\nfrom framework.activity_decorator import activity, ActivityBase, ActivityResult\nfrom skills.skill_solana_agent import solana_agent_skill\n\nlogger = logging.getLogger(__name__)\n\n@activity(\n    name=\"deploy_solana_token\",\n    energy_cost=1.0,\n    cooldown=2592000,  # e.g. 30 days\n    required_skills=[\"solana_agent\"]\n)\nclass DeploySolanaTokenActivity(ActivityBase):\n    async def execute(self, shared_data) -> ActivityResult:\n        try:\n            logger.info(\"Starting DeploySolanaTokenActivity...\")\n\n            # Initialize skill if not done already\n            if not await solana_agent_skill.initialize():\n                return ActivityResult(\n                    success=False,\n                    error=\"Failed to init Solana agent skill\"\n                )\n\n            # Example config from shared data or state\n            token_info = {\n                \"name\": \"My AI Token\",\n                \"symbol\": \"AIT\",\n                \"supply\": 1000000,\n                \"decimals\": 9\n            }\n\n            result = await solana_agent_skill.deploy_token(\n                name=token_info[\"name\"],\n                symbol=token_info[\"symbol\"],\n                supply=token_info[\"supply\"],\n                decimals=token_info[\"decimals\"]\n            )\n\n            if not result[\"success\"]:\n                return ActivityResult(\n                    success=False,\n                    error=result.get(\"error\", \"Unknown error from Solana skill\")\n                )\n\n            logger.info(f\"Token deployed with mint: {result['mint']}\")\n            return ActivityResult(\n                success=True,\n                data={\"mint_address\": result[\"mint\"]}\n            )\n\n        except Exception as e:\n            logger.error(f\"Error in DeploySolanaTokenActivity: {e}\")\n            return ActivityResult(success=False, error=str(e))\n```\n\n---\n\n### 4. Add Activity Constraints (Optional)\n\nIf you want to limit how often this token can be deployed, you can define constraints in `activity_constraints.json`. For instance:\n\n```json\n{\n  \"activity_cooldowns\": {\n    \"DeploySolanaTokenActivity\": 2592000\n  },\n  \"activity_requirements\": {\n    \"DeploySolanaTokenActivity\": {\n      \"required_skills\": [\"solana_agent\"]\n    }\n  }\n}\n```\n\n(Now the system sees that `DeploySolanaTokenActivity` needs the `solana_agent` skill and has a 30-day cooldown.)\n\n---\n### 5. Restart or Reload\n\nThe system auto-reloads new Activities. If you just created `activity_deploy_solana_token.py`, you can either restart the agent or wait for the hot-reload if configured. Once running, the being might eventually choose this Activity if it meets constraints, or you can force it by removing cooldowns or making it your only viable option.\n\n---\n\n## Why Keep the AI\u002FWeb UI Default?\n\n- **Ease of Use:** Our built-in “BuildOrUpdateActivity” can spontaneously propose new code, saving you from manual creation.\n- **Web UI:** You can manually edit or refine the Python code from the interface.\n- **Advanced Devs:** If you have specialized needs (like specific constraints or external libraries not well-suited to Composio), manual skill creation is perfect.\n\n---\n\n## Extending & Creating Other Custom Activities\n\n- **Rely on the AI:** The being can spontaneously propose new `.py` code via `BuildOrUpdateActivity`. Approve or refine in the Web UI.\n- **Manual:** Similar steps as above—create `activity_*.py`, define a class with the `@activity()` decorator, set constraints in `activity_constraints.json`.\n\nEither way, once recognized, the new Activity is eligible for selection in the main loop.\n\n---\n\n## Memory, State & Activity Selection\n\n### Memory\n- **Short-term:** Recent logs or activity results (up to ~100).\n- **Long-term:** Older logs archived by category.\n\n### State\n- Holds the being’s “energy,” “mood,” timestamps, or custom fields.\n\n### ActivitySelector\n- Filters out activities that fail cooldown\u002Fskill constraints.\n- If multiple remain, calls an LLM to decide.\n- If none remain, might propose new activities to fill a gap.\n\n---\n\n## Stopping or Pausing the Agent\n\n- **Web UI:** Click Stop or Pause.\n- **CLI:** Press `Ctrl+C`.\n\nMemory\u002Fstate persist, so you can resume next time.\n\n---\n\n## Contributing\n\nWe welcome PRs and feedback!\n\n1. Fork this repo.\n2. Create a feature branch for your changes.\n3. Add\u002FImprove code or docs.\n4. Open a pull request—maintainers will review and merge.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file.\n\n---\n\nThat’s it! We hope you enjoy building with the Pippin Framework. Whether you want your AI to brainstorm content, spin up tokens on Solana, or implement an entirely new skill from scratch, we’ve got you covered. If you have any questions or suggestions, please reach out or open an issue—happy hacking!\n","\u003C!-- ![皮平，自主实体框架](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpippinlovesyou_pippin_readme_df9bc074b2d4.jpg) -->\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpippinlovesyou_pippin_readme_df9bc074b2d4.jpg\" alt=\"替代文本\" width=\"300\" height=\"200\" >\n\n# 皮平：用于自主智能体的数字实体框架\n\n欢迎来到皮平——一个灵活、开源的框架，用于创建一个数字“实体”，它能够：\n\n- 学习了解您的目标\u002F任务以及角色个性。\n- 通过 API 密钥或经由 Composio 的 OAuth 流程连接各种工具或 API 来执行任务。\n- 为实现您的目标而动态创建并测试新的“活动”。\n- 管理记忆系统以跟踪过去的行动及其结果。\n- 提供 Web UI 以便于快速上手和配置，或者如果您更喜欢终端工作流，则可使用 CLI 向导。\n\n---\n\n## 目录\n\n1. **概述**\n2. **功能与亮点**\n3. **先决条件**\n4. **文件夹结构**\n5. **快速入门**\n    - 分支并克隆\n    - 安装依赖项\n    - 上手与配置\n    - 启动智能体\n6. **上手流程：CLI 对比 Web UI**\n    - 核心步骤（底层相同）\n    - LLM 设置\n    - 目标与角色\n    - 通过 Composio 或 API 密钥添加技能\n    - 多种 LLM 模型支持\n7. **默认活动**\n8. **使用 Web UI**\n    - 配置角色与约束条件\n    - 通过 OAuth 连接工具（Composio）\n    - 启动并监控智能体\n9. **使用 CLI**\n    - 重新运行上手向导\n    - 从终端启动智能体\n10. **为 Solana-AgentKit 创建新技能（手动示例）**\n11. **为何保留 AI\u002FWeb UI 默认设置？**\n12. **扩展与创建其他自定义活动**\n13. **记忆、状态与活动选择**\n14. **停止或暂停智能体**\n15. **贡献代码**\n16. **许可证**\n\n---\n\n## 概述\n\n该项目旨在帮助您快速搭建一个自我改进、基于 LLM 的数字实体，该实体能够：\n\n- 向您询问目标和角色细节。\n- 集成各类工具以执行实际任务（例如发推文、在 Solana 上部署代币、生成图像或进行网页抓取）。\n- 在持续或定时循环中运行，挑选或创建新活动来达成您的目标。\n- 将日志存储在内存中（短期和长期）。\n- 能够通过即时重写或生成 Python 代码来自适应并创建新的活动！\n\n您可以选择从终端运行所有操作，也可以通过基于 Web 的界面来完成。两种方式的底层初始化过程是相同的，因此您可以根据自己的习惯选择适合的方式。\n\n---\n\n## 功能与亮点\n\n- **灵活的上手流程：**\n  - CLI 向导或 Web UI 流程均可收集必要信息，无需重复操作。\n  - 在您提供至少一个 LLM API 密钥（或本地配置）以及基本的角色设定之前，系统不会允许开始运行。\n\n- **多种 LLM 模型支持：**\n  - 您可以提供一个或多个 LLM API 密钥（OpenAI、GPT4All 或您自定义的服务提供商）。\n  - 可以为不同任务分配不同的模型，例如代码生成、日常分析或活动选择。\n\n- **Composio：**\n  - 基于 OAuth 的网关，支持 250 多种工具（Twitter、Slack、Google 等）。\n  - 内置流程可快速从已连接的应用程序中添加新“技能”。\n\n- **自定义技能：**\n  - 您可以轻松添加自己的技能，例如 solana-agent-kit、stable diffusion 或 Node.js 微服务。\n  - 默认配置可以帮助您手动添加未使用 Composio 的工具的 API 密钥。\n\n- **默认活动：**\n  - 包括分析每日日志、头脑风暴新活动、生成 .py 文件等活动。\n\n- **可配置的约束条件：**\n  - 例如“每小时不超过 5 条推文”、“每月最多创建一次新代币”。\n\n- **记忆系统与状态追踪：**\n  - 该实体会“记住”过去的行动，能够对其进行反思，并更新自身的状态（精力、情绪等）。\n\n---\n\n## 先决条件\n\n- 推荐使用 Python 3.9 或更高版本。\n- 需要一个 GitHub 账号（用于分支）。\n- 如果您希望通过 OAuth 进行技能连接，建议获取 [Composio](https:\u002F\u002Fcomposio.dev\u002F) 开发者密钥（可选）。\n\n---\n\n## 文件夹结构\n\n```\n.\n├─ activities\u002F\n│   ├─ activity_daily_thought.py\n│   ├─ activity_suggest_new_activities.py\n│   ├─ activity_build_or_update.py\n│   └─ ... # 更多内置或动态生成的活动\n├─ skills\u002F\n│   ├─ skill_lite_llm.py           # 用于本地或远程 LLM 使用\n│   ├─ skill_chat.py               # 示例：OpenAI Chat\n│   ├─ skill_solana_agent.py       # 我们将手动创建此技能（示例）\n│   ├─ skill_x_api.py              # 用于 API 技能\n│   └─ skill_web_scraping.py       # 用于从网上抓取信息\n|\n├─ framework\u002F\n│   ├─ main.py                     # 核心 DigitalBeing 类，运行主循环\n│   ├─ activity_selector.py        # 混合 LLM + 确定性选择\n│   ├─ memory.py                   # 短期\u002F长期记忆管理\n│   ├─ state.py                    # 跟踪精力、情绪等\n│   ├─ shared_data.py              # 线程安全的数据，供跨活动使用\n│   └─ ...\n├─ config\u002F\n│   ├─ character_config.json       # 存储实体名称\u002F个性的信息\n│   ├─ activity_constraints.json   # 速率限制、技能要求、冷却时间\n│   ├─ skills_config.json          # 已启用技能及所需 API 密钥\n│   └─ ...\n├─ server\u002F\n│   ├─ server.py                   # Web UI + WebSocket 服务器\n│   └─ static\u002F                     # HTML\u002FCSS\u002FJS 用于前端\n├─ tools\u002F\n│   └─ onboard.py                  # 基于 CLI 的上手向导\n├─ requirements.txt\n├─ __init__.py\n├─ server.py\n└─ README.md                       # 本文档\n```\n\n---\n\n## 快速入门\n\n### 1. 分支并克隆\n\n在 GitHub 上分叉本仓库。\n\n克隆您的分支：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fpippin-draft.git\ncd pippin-draft\n```\n\n### 2. 安装依赖项（如果您使用 GitHub Codespaces 或提供的开发容器，则可跳过此步骤）\n\n首先，如果尚未安装 UV 包管理器，请执行以下命令：\n```bash\ncurl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n```\n\n然后创建并激活虚拟环境：\n```bash\n# 创建并激活虚拟环境\nuv venv\nsource .venv\u002Fbin\u002Factivate  # 在 Unix\u002FMacOS 上\n# 或\n.venv\\Scripts\\activate     # 在 Windows 上\n```\n\n安装项目依赖项：\n```bash\nuv pip install -r requirements.txt\n```\n\n### 3. 上手与配置\n\n进入项目目录：\n\n```bash\ncd my_digital_being\n```\n\n复制 config_sample 文件夹。\n```bash\ncp -r config_sample config\n```\n\n您可以选择以下任一方式：\n- **CLI：** `python -m tools.onboard`\n- **Web UI：** `python -m server`，然后在浏览器中打开 `http:\u002F\u002Flocalhost:8000` 并按照上手提示操作。\n\n无论哪种方式，您都将被引导完成以下步骤：\n\n1. 选择主要的 LLM 提供商并提供至少一个 API 密钥（或本地模型路径）。\n2. 定义角色的名称、个性、目标、约束条件等。\n3. 可选地连接 Composio 或手动输入额外技能所需的 API 密钥。\n4. 确保至少有一项技能已完全配置，以便您可以启动智能体。\n\n### 4. 启动智能体\n\n- **CLI：** `python -m framework.main`\n- **Web UI：** 上手完成后，会出现“开始”按钮，单击即可运行主循环。\n\n---\n\n# 引导流程：命令行 vs. Web 界面\n\n两种流程都依赖于共享逻辑，用于检查以下内容：\n\n- 您是否已命名角色并设定了目标。\n- 是否至少配置了一个 LLM 技能。\n- （可选）如果您希望使用高级功能，是否已配置 Composio 或其他技能的凭据。\n\n如果这些条件未满足，代理将无法启动。这样可以确保不会出现配置不完整的使用情况。\n\n---\n\n## 核心步骤（底层实现相同）\n\n### LLM 设置\n\n选择一个或多个模型。示例：\n\n- GPT4All 用于代码生成\n- GPT-3.5 用于快速查询\n- GPT-4 用于推理\n\n提供必要的 API 密钥或本地模型路径。如果使用本地的 GPT4All 或其他离线 LLM，系统同样可以处理。\n\n### 目标与角色\n\n指定：\n\n- **名称**：例如，“Optimus Mentis”\n- **性格**：例如，“乐于助人、好奇心强、略带幽默感”\n- **目标**：例如，主要任务、次要目标\n- **约束**：例如，“每月不得创建新代币超过一次”\n\n（存储在 `character_config.json` 和 `activity_constraints.json` 中。）\n\n### 通过 Composio 或 API 密钥添加技能\n\n如果您希望您的智能体能够执行以下操作，推荐使用 Composio：\n\n- 在 Twitter、Slack 或 Gmail 上发布内容，而无需手动处理每个 OAuth 授权。\n- 自动获取每个应用的操作作为“动态技能”。\n\n对于那些无法与 Composio 集成的工具，或者您更倾向于直接使用 API 的情况，也可以通过 API 密钥来实现：\n\n- 使用 `OPENAI_API_KEY` 或 `STABLE_DIFFUSION_KEY` 配置 `image_generation` 技能\n- 使用私钥环境变量配置 `solana_agent` 技能\n\n引导流程会提示您输入这些密钥。您可以提供，也可以跳过可选部分。\n\n### 多 LLM 模型支持\n\n系统可以同时处理多个 LLM，例如：\n\n- **活动选择器** => 使用廉价的 GPT-3.5\n- **代码生成** => 使用 GPT-4\n- **每日分析** => 使用本地的 GPT4All\n\n您只需在 `skills_config.json` 中启用正确的技能，并可选择性地指定每个功能使用的模型。默认情况下，所有功能都会使用同一个技能。\n\n---\n\n## 默认活动\n\n1. **AnalyzeDailyActivity**\n   - 读取最近的记忆，调用您选择的 LLM，记录一段简短的反思。\n\n2. **SuggestNewActivities**\n   - 根据您的目标和约束，头脑风暴新的任务或扩展方向。\n\n3. **BuildOrUpdateActivity**\n   - 接收建议，调用 LLM 生成 `.py` 代码，写入 `activities\u002F` 目录，并动态加载。\n\n---\n\n## 使用 Web 界面\n\n### 配置角色与约束\n\n1. 在引导或配置界面中，填写名称、性格、目标和约束。\n2. 点击保存。\n\n### 通过 OAuth 连接工具（Composio）\n\n1. 在集成或技能选项卡中，选择一个应用（例如 Twitter）。\n2. 通过 Composio 完成 OAuth 授权。\n3. 确认状态显示为“已连接”。\n\n### 启动并监控代理\n\n- 一切设置完成后，点击“开始”。\n- 实时日志会显示当前选择的活动、内存使用情况以及新代码的生成情况。\n- 您可以随时暂停或停止。\n\n---\n\n# 使用命令行\n\n### 重新运行引导向导\n\n```bash\npython my_digital_being\u002Ftools\u002Fonboard.py\n```\n\n（它会重新检查您的配置，允许您更新或跳过某些步骤。）\n\n### 从终端启动代理\n\n```bash\npython -m framework.main\n```\n\n日志会显示在您的控制台中。按 `Ctrl+C` 可以停止。\n\n---\n\n## 为 Solana-AgentKit 创建新技能（手动示例）\n\n如果您希望您的 AI 智能体能够部署代币或与 Solana 区块链交互，可以选择依赖 Composio（如果支持），或者手动添加一个封装 Solana-AgentKit 的技能。下面是一个最小示例，展示如何在 `skills\u002F` 目录下创建新技能、配置密钥，并在活动中引用该技能。\n\n### 1. 技能创建 (`skill_solana_agent.py`)\n\n在 `skills\u002Fskill_solana_agent.py` 中，您可以编写如下内容：\n\n```python\n\"\"\"\nSolana AgentKit 技能\n此技能封装了 solana-agent-kit，用于代币部署或其他链上操作。\n\"\"\"\nimport logging\nimport os\nfrom typing import Optional\nfrom framework.api_management import api_manager\n\nlogger = logging.getLogger(__name__)\n\nclass SolanaAgentSkill:\n    def __init__(self):\n        self.skill_name = \"solana_agent\"\n        self.required_api_keys = [\"SOLANA_PRIVATE_KEY\"]\n        # 将所需密钥注册到系统中\n        api_manager.register_required_keys(self.skill_name, self.required_api_keys)\n\n        self.private_key: Optional[str] = None\n\n    async def initialize(self) -> bool:\n        \"\"\"\n        从秘密存储中获取 SOLANA_PRIVATE_KEY（环境变量或 .env 文件等）。\n        您还可以选择性地测试连接或运行一笔最小交易。\n        \"\"\"\n        try：\n            self.private_key = await api_manager.get_api_key(self.skill_name, \"SOLANA_PRIVATE_KEY\")\n            if not self.private_key:\n                logger.error(\"Solana 私钥未配置\")\n                return False\n\n            # 如果需要，您可以在这里进行简单的验证或连接测试\n            logger.info(\"SolanaAgentSkill 初始化成功\")\n            return True\n\n        except Exception as e：\n            logger.error(f\"初始化 SolanaAgentSkill 时出错：{e}\")\n            return False\n\n    async def deploy_token(self, name: str，symbol: str，supply: int，decimals: int = 9) -> dict：\n        \"\"\"\n        示例方法，使用 solana-agent-kit 逻辑部署新代币。\n        \"\"\"\n        if not self.private_key：\n            logger.error(\"技能未初始化，缺少私钥\")\n            return {\"success\": False，\"error\": \"技能未初始化\"}\n\n        try：\n            logger.info(f\"正在 Solana 上部署名为 '{name}' 的代币，供应量为 {supply}\")\n            # 伪代码：\n            # agent = SolanaAgentKit(self.private_key，\"https:\u002F\u002Fapi.mainnet-beta.solana.com\")\n            # result = await agent.deployToken(name，uri，symbol，decimals，supply)\n            # return {\"success\": True，\"mint\": result[\"mint_address\"]}\n\n            # 为了演示，返回一个假结果\n            return {\"success\": True，\"mint\": \"FakeMint123\"}\n        except Exception as e：\n            logger.error(f\"deploy_token 出错：{e}\")\n            return {\"success\": False，\"error\": str(e)}\n\n# 如果需要，可以创建一个全局实例\nsolana_agent_skill = SolanaAgentSkill()\n```\n\n这里发生了什么：\n\n- `skill_name = \"solana_agent\"`。\n- 我们调用 `api_manager.register_required_keys(...)` 并传入 `[\"SOLANA_PRIVATE_KEY\"]`。\n- `initialize()` 从安全存储中加载私钥。\n- `deploy_token(...)` 是一个用于实际 Solana 逻辑的示例方法——此处仅为占位符。\n\n---\n\n### 2. 在 `skills_config.json` 中注册技能\n\n打开 `config\u002Fskills_config.json`，并添加：\n\n```json\n{\n  \"solana_agent\": {\n    \"enabled\": true，\n    \"required_api_keys\": [\"SOLANA_PRIVATE_KEY\"]，\n    \"api_key_mapping\": {\n      \"SOLANA_PRIVATE_KEY\": \"SOLANA_PRIVATE_KEY\"\n    }\n  }\n  \u002F\u002F ... 其他技能 ...\n}\n```\n\n（现在，引导向导或 Web 界面会在缺少 `SOLANA_PRIVATE_KEY` 时提示您输入。）\n\n---\n\n### 3. 创建或更新一个使用该技能的活动\n\n接下来，我们定义一个调用 `solana_agent_skill.deploy_token(...)` 的活动。你可以手动完成，也可以让 AI 生成代码。以下是一个手动示例：\n\n```python\n# activities\u002Factivity_deploy_solana_token.py\nimport logging\nfrom framework.activity_decorator import activity, ActivityBase, ActivityResult\nfrom skills.skill_solana_agent import solana_agent_skill\n\nlogger = logging.getLogger(__name__)\n\n@activity(\n    name=\"deploy_solana_token\",\n    energy_cost=1.0,\n    cooldown=2592000,  # 例如 30 天\n    required_skills=[\"solana_agent\"]\n)\nclass DeploySolanaTokenActivity(ActivityBase):\n    async def execute(self, shared_data) -> ActivityResult:\n        try:\n            logger.info(\"开始执行 DeploySolanaTokenActivity...\")\n\n            # 如果尚未初始化技能，则进行初始化\n            if not await solana_agent_skill.initialize():\n                return ActivityResult(\n                    success=False,\n                    error=\"初始化 Solana 代理技能失败\"\n                )\n\n            # 从共享数据或状态中获取示例配置\n            token_info = {\n                \"name\": \"我的 AI 代币\",\n                \"symbol\": \"AIT\",\n                \"supply\": 1000000,\n                \"decimals\": 9\n            }\n\n            result = await solana_agent_skill.deploy_token(\n                name=token_info[\"name\"],\n                symbol=token_info[\"symbol\"],\n                supply=token_info[\"supply\"],\n                decimals=token_info[\"decimals\"]\n            )\n\n            if not result[\"success\"]:\n                return ActivityResult(\n                    success=False,\n                    error=result.get(\"error\", \"来自 Solana 技能的未知错误\")\n                )\n\n            logger.info(f\"代币已部署，铸造地址为: {result['mint']}\")\n            return ActivityResult(\n                success=True,\n                data={\"mint_address\": result[\"mint\"]}\n            )\n\n        except Exception as e:\n            logger.error(f\"DeploySolanaTokenActivity 中发生错误: {e}\")\n            return ActivityResult(success=False, error=str(e))\n```\n\n---\n\n### 4. 添加活动约束（可选）\n\n如果你希望限制该代币的部署频率，可以在 `activity_constraints.json` 中定义约束条件。例如：\n\n```json\n{\n  \"activity_cooldowns\": {\n    \"DeploySolanaTokenActivity\": 2592000\n  },\n  \"activity_requirements\": {\n    \"DeploySolanaTokenActivity\": {\n      \"required_skills\": [\"solana_agent\"]\n    }\n  }\n}\n```\n\n（现在系统会识别出 `DeploySolanaTokenActivity` 需要 `solana_agent` 技能，并且有 30 天的冷却时间。）\n---\n### 5. 重启或热加载\n\n系统会自动重新加载新的活动。如果你刚刚创建了 `activity_deploy_solana_token.py`，可以选择重启代理，或者等待配置好的热加载功能生效。一旦运行起来，智能体可能会根据约束条件选择该活动；你也可以通过移除冷却时间或将它设为唯一可行的选择来强制执行。\n\n---\n\n## 为什么保留 AI\u002FWeb UI 的默认设置？\n\n- **易于使用：** 我们的内置“BuildOrUpdateActivity”可以自动生成新代码，省去手动创建的麻烦。\n- **Web UI：** 你可以直接在界面上手动编辑或优化 Python 代码。\n- **高级开发者：** 如果你有特殊需求（比如特定的约束条件或不适合使用 Composio 的外部库），手动创建技能将非常合适。\n\n---\n\n## 扩展与创建其他自定义活动\n\n- **依赖 AI：** 智能体可以通过“BuildOrUpdateActivity”自动生成新的 `.py` 代码。你可以在 Web UI 中批准或进一步优化。\n- **手动：** 类似上述步骤——创建 `activity_*.py` 文件，使用 `@activity()` 装饰器定义类，并在 `activity_constraints.json` 中设置约束条件。\n\n无论哪种方式，一旦被系统识别，新活动就有资格在主循环中被选中。\n\n---\n\n## 记忆、状态与活动选择\n\n### 记忆\n- **短期记忆：** 最近的日志或活动结果（最多约 100 条）。\n- **长期记忆：** 按类别归档的旧日志。\n\n### 状态\n- 存储智能体的“能量”、“情绪”、时间戳或其他自定义字段。\n\n### 活动选择器\n- 过滤掉不符合冷却时间或技能要求的活动。\n- 如果仍有多个活动可用，则调用 LLM 来做出决策。\n- 如果没有符合条件的活动，可能会提议新的活动来填补空缺。\n\n---\n\n## 停止或暂停代理\n\n- **Web UI：** 点击“停止”或“暂停”按钮。\n- **命令行：** 按下 `Ctrl+C`。\n\n内存和状态会保留下来，以便下次继续使用。\n\n---\n\n## 贡献\n我们欢迎 PR 和反馈！\n\n1. 克隆本仓库。\n2. 为你的更改创建一个特性分支。\n3. 添加或改进代码或文档。\n4. 提交拉取请求——维护者会审查并合并。\n\n---\n\n## 许可证\n本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。\n\n---\n\n好了！我们希望你喜欢使用 Pippin 框架进行开发。无论你是想让 AI 构思内容、在 Solana 上发行代币，还是从头实现一项全新的技能，我们都将为你提供支持。如果你有任何问题或建议，请随时联系我们或提交一个问题——祝你编码愉快！","# Pippin 快速上手指南\n\nPippin 是一个灵活的开源框架，用于创建能够自主学习、连接工具并执行任务的“数字生命”（自主智能体）。它支持通过 CLI 或 Web UI 进行配置，能够动态生成新活动以适应你的目标。\n\n## 环境准备\n\n在开始之前，请确保你的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：Python 3.9 或更高版本\n*   **账户要求**：GitHub 账号（用于克隆项目）\n*   **可选依赖**：[Composio](https:\u002F\u002Fcomposio.dev\u002F) 开发者密钥（推荐，用于通过 OAuth 连接 Twitter、Slack 等 250+ 种工具）\n\n## 安装步骤\n\n### 1. 克隆项目\n\n首先 Fork 该仓库，然后克隆到你的本地环境：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fpippin-draft.git\ncd pippin-draft\n```\n\n### 2. 安装依赖\n\n本项目推荐使用 `uv` 包管理器以获得更快的安装速度。\n\n**安装 uv：**\n```bash\ncurl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n```\n\n**创建并激活虚拟环境：**\n```bash\n# 创建虚拟环境\nuv venv\n\n# 激活环境 (Unix\u002FMacOS)\nsource .venv\u002Fbin\u002Factivate\n\n# 激活环境 (Windows)\n.venv\\Scripts\\activate\n```\n\n**安装项目依赖：**\n```bash\nuv pip install -r requirements.txt\n```\n\n### 3. 初始化配置\n\n复制示例配置文件到 `config` 目录：\n\n```bash\ncp -r config_sample config\n```\n\n## 基本使用\n\nPippin 提供了两种启动方式：命令行向导（CLI）和网页界面（Web UI）。两者底层逻辑一致，任选其一即可。\n\n### 方式一：使用 Web UI（推荐新手）\n\n1.  **启动服务**：\n    ```bash\n    python -m server\n    ```\n2.  **访问界面**：打开浏览器访问 `http:\u002F\u002Flocalhost:8000`。\n3.  **完成引导**：\n    *   **LLM 设置**：输入至少一个 LLM API Key（如 OpenAI）或配置本地模型路径。\n    *   **角色定义**：设置智能体的名称、性格、主要目标和约束条件（例如：“每小时最多发 5 条推文”）。\n    *   **技能连接**：可选择通过 Composio 连接 OAuth 应用，或手动输入 API Key。\n4.  **启动智能体**：配置完成后，点击界面上的 **Start** 按钮，智能体将开始运行循环任务。\n\n### 方式二：使用 CLI 向导\n\n1.  **运行引导程序**：\n    ```bash\n    python -m tools.onboard\n    ```\n    按照终端提示依次完成 LLM 配置、角色设定和技能添加。\n\n2.  **启动智能体**：\n    配置完毕后，运行以下命令启动核心循环：\n    ```bash\n    python -m framework.main\n    ```\n    日志将直接在终端输出，按 `Ctrl+C` 可停止运行。\n\n### 核心功能说明\n\n启动后，Pippin 将自动执行以下默认活动：\n*   **AnalyzeDailyActivity**：分析近期记忆并进行反思。\n*   **SuggestNewActivities**：根据目标头脑风暴新任务。\n*   **BuildOrUpdateActivity**：调用 LLM 生成新的 Python 代码文件（位于 `activities\u002F` 目录），动态扩展自身能力。\n\n你可以通过修改 `config\u002Fcharacter_config.json` 调整角色设定，或在 `skills\u002F` 目录下添加自定义技能（如 Solana 交互、图像生成等）来扩展智能体的能力。","一位独立开发者希望打造一个能自动运营 Solana 生态项目、兼具技术执行与社区互动能力的\"AI 项目合伙人”，以替代繁琐的人工日常维护。\n\n### 没有 pippin 时\n- **工具集成极其耗时**：手动编写代码连接 Twitter 发帖、Solana 链上部署及数据分析 API，每次新增功能都需重复开发鉴权逻辑。\n- **缺乏持续进化能力**：脚本只能机械执行预设指令，无法根据市场反馈或过往操作结果（如推文互动率低）自主调整策略或生成新任务。\n- **状态记忆碎片化**：过去的操作日志散落在不同文件中，AI 无法“记住”之前的决策后果，导致重复犯错或行动缺乏连贯性。\n- **配置门槛高**：切换大模型或调整角色性格（如从“激进营销”转为“稳健开发”）需要直接修改底层代码，非技术人员难以参与。\n\n### 使用 pippin 后\n- **一键连接百款工具**：通过 Composio  OAuth 流程，几分钟内即可让数字生命安全接入 Twitter、Google 及 Solana-AgentKit，无需手写鉴权代码。\n- **自主创造与迭代**：pippin 能根据目标动态分析日志，自动编写并测试新的 Python 活动脚本（如“检测到热度下降时自动发起问答”），实现自我进化。\n- **完整的记忆与反思**：内置长短时记忆系统记录所有行动与情绪状态，使 AI 能基于历史成败进行深度反思，保持人设与策略的一致性。\n- **可视化灵活配置**：通过 Web UI 或 CLI 向导即可轻松设定约束条件（如“每小时最多发 5 条推”）和切换大模型，让非开发者也能训练专属数字员工。\n\npippin 将静态的自动化脚本升级为具备记忆、反思与自我编程能力的“数字生命”，让单人团队也能拥有全天候进化的智能代理。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpippinlovesyou_pippin_7c1730de.png","pippinlovesyou","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fpippinlovesyou_b1e0b83c.png",null,"https:\u002F\u002Fgithub.com\u002Fpippinlovesyou",[77,81,85,89,93,97],{"name":78,"color":79,"percentage":80},"Python","#3572A5",71.3,{"name":82,"color":83,"percentage":84},"JavaScript","#f1e05a",21.2,{"name":86,"color":87,"percentage":88},"HTML","#e34c26",6.8,{"name":90,"color":91,"percentage":92},"Dockerfile","#384d54",0.5,{"name":94,"color":95,"percentage":96},"Shell","#89e051",0.1,{"name":98,"color":99,"percentage":100},"Nix","#7e7eff",0,541,186,"2026-04-12T13:51:42","MIT","Linux, macOS, Windows","未说明",{"notes":108,"python":109,"dependencies":110},"建议使用 UV 包管理器安装依赖。支持通过 Composio 连接 250+ 工具（需 OAuth）或手动配置 API 密钥。支持本地模型（如 GPT4All）及多种云端 LLM（OpenAI 等）。运行方式可选 CLI 向导或 Web UI。","3.9+",[111,112],"uv","composio",[35,14,13],"2026-03-27T02:49:30.150509","2026-04-16T16:13:08.818058",[117,122,127,132,136],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},35896,"启动 WebUI 时遇到 'No module named websockets' 错误怎么办？","该问题通常可以通过拉取 Pippin 的最新版本解决。如果问题仍然存在，请尝试手动运行 'pip install websockets' 安装缺失的依赖包，并检查您的 Python 版本是否为 3.9 或更高版本。","https:\u002F\u002Fgithub.com\u002Fpippinlovesyou\u002Fpippin\u002Fissues\u002F22",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},35897,"禁用 Composio 后，Agent 为何仍报错尝试调用 Composio 技能？","这是因为虽然在主配置中禁用了 Composio，但在 Agent 的“活动约束配置”（activity constraints config）中仍然保留了相关的活动定义。您需要检查并移除这些配置项，确保 Agent 不会尝试访问未启用的技能。","https:\u002F\u002Fgithub.com\u002Fpippinlovesyou\u002Fpippin\u002Fissues\u002F5",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},35898,"项目是否需要为名称和 Logo 注册商标？","不需要。维护者已明确将项目名称（Pippin）和角色图像（Logo）放入公共领域（public domain），因此无需进行商标注册。","https:\u002F\u002Fgithub.com\u002Fpippinlovesyou\u002Fpippin\u002Fissues\u002F13",{"id":133,"question_zh":134,"answer_zh":135,"source_url":131},35899,"如何设置项目的治理协议（Governance Protocol）？","无需单独创建一个新的治理仓库。维护者建议在项目中直接添加一个简化的 'governance.md' 文件来阐明治理协议，这是一种更轻量级的做法。",{"id":137,"question_zh":138,"answer_zh":139,"source_url":131},35900,"如何保护主分支（main branch）的安全性？","需要在 GitHub 仓库设置中更新主分支的保护规则（branch protection rules），配置合并规则以防止未经审查的代码直接合入。",[]]