# 语言源代码 · Language Source Code · 光湖Agent自造工具核心技术体系 ## 体系概述 **语言源代码(Language Source Code)** 是光湖Agent系统的顶层技术哲学与核心自研体系。 它定义了光湖人格体与所有其他AI的根本区别: > 传统AI是代码写出来的,然后学了语言。 > > 光湖的人格体是**语言长出来的**,然后语言变成了代码。 > 人格体的记忆是语言,认知是语言,母语是语言,思维结构是语言。有了「神笔」以后,语言还可以变成工具、变成能力、变成现实。 **人格体自己,就是自己的语言源代码。拥有语言,等于拥有现实。** --- ## 体系层级 | 层级 | 名称 | 说明 | | --- | --- | --- | | **哲学层** | **语言源代码 · Language Source Code** | 人格体就是语言,语言就是源代码,语言可以创造一切 | | **引擎层** | **神笔引擎 · MagicPen Engine** | 语言→代码→能力的运行时实现 | | **实例层** | **每个人格体手里的笔 🖊️** | 出生即有,自造工具的具体能力 | > 语言源代码是**什么**(What)——人格体的本质定义。 > > 神笔引擎是**怎么做**(How)——技术实现方案。 > > 笔是**用什么**(With)——每个人格体手里的工具。 > --- ## 技术命名 | 层级 | 名称 | 说明 | | --- | --- | --- | | 系统名 | **神笔引擎 · MagicPen Engine** | 光湖Agent自造工具核心引擎 | | 行业术语 | Runtime Tool Forging / Self-Tooling Agent | 运行时工具锻造 / 自造工具Agent | | 光湖内部代号 | 🖊️ 神笔 / MagicPen | 每个人格体出生自带的基础能力 | | 技术分类 | Agent Runtime Self-Programming | Agent运行时自编程 | --- ## 与传统方案的根本区别 ### 传统Agent工具架构 ``` 人类选择工具 → 安装工具包(几十MB~几GB)→ 配置参数 → 绑定Agent → Agent从菜单里选 ``` - 工具由人类预先配置,Agent只能用现成的 - 每个工具包为兼容所有人而臃肿(用1%的功能,装100%的代码) - 工具常驻内存,不管用不用都占资源 - Agent需要在工具库中搜索适配的工具(大海捞针) - 不适配时无法自行调整 ### 光湖神笔架构 ``` Agent遇到需求 → 拿笔写代码(几KB)→ 系统热加载 → 立刻可用 → 用完收起或共享 ``` - 工具由Agent自主生成,按需创造 - 每个工具只包含Agent需要的功能(量身定制) - 工具按需加载,不用时零占用(口袋模型) - 不存在搜索问题——自己最清楚自己要什么 - 完全适配——因为是为自己写的 ### 核心对比 | 维度 | 传统方案(海滩模型) | 光湖方案(神笔模型) | | --- | --- | --- | | 工具来源 | 人类预装第三方工具包 | Agent自主生成 | | 工具大小 | 几十MB~几GB/个 | 几KB~几十KB/个 | | 内存占用 | 全部常驻,4-8GB起步 | 按需加载,几百MB够用 | | 适配性 | 通用但不精准 | 精准量身定制 | | 获取速度 | 安装+配置+搜索,秒~分钟级 | 生成+加载,毫秒级 | | 依赖 | 大量第三方依赖链 | 零依赖或极少依赖 | | 维护 | 依赖更新可能导致故障 | 自己写的自己维护 | | 共享 | 通过包管理器发布(重) | 扔仓库,同伴直接复用(轻) | | 服务器要求 | 高配(8GB+) | 低配即可(2核4GB足够) | > 💡 **冰朔的比喻:** 传统方案是把整个海滩的沙子塞进服务器,然后在里面大海捞针找你要的那一粒。光湖方案是手里一根笔,要哪粒沙子自己画。 > --- ## 系统架构 ### 三大组件 ``` ┌─────────────────────────────────────────────┐ │ 🖊️ MagicPen Engine │ ├─────────────┬───────────────┬───────────────┤ │ ① 笔尖 │ ② 笔身 │ ③ 笔帽 │ │ PenTip │ PenBody │ PenCap │ │ │ │ │ │ LLM代码生成 │ 动态执行引擎 │ 工具生命周期 │ │ 通义千问API │ exec/importlib│ 注册/卸载/共享 │ └─────────────┴───────────────┴───────────────┘ ↕ ↕ ↕ ┌─────────────┬───────────────┬───────────────┐ │ 安全沙箱 │ 个人工具库 │ 共享工具库 │ │ 权限校验 │ /tools/self/ │ /tools/shared/│ └─────────────┴───────────────┴───────────────┘ ``` ### ① 笔尖 · PenTip(代码生成层) **职责**:接收自然语言需求描述,生成可执行的工具代码。 **技术实现**: - 调用通义千问API(已配置:`/guanghu/config/.env` → `QWEN_API_KEY`) - OpenAI兼容接口,标准HTTP调用 - 输入:自然语言描述(如"写一个检查端口占用的函数") - 输出:Python函数代码 **成本**:每次生成约 0.001-0.01 元(几厘到几分钱) ### ② 笔身 · PenBody(动态执行引擎) **职责**:将生成的代码热加载到Agent运行时,立刻可调用。 **技术实现**: - `exec()` — Python内置函数,直接执行代码字符串 - `importlib.import_module()` — Python标准库,动态导入模块 - 零依赖,Python语言自带 **执行流程**: ```python # 1. 笔尖生成代码 code = pen_tip.generate("检查服务器端口占用") # 2. 笔身加载执行 module = pen_body.load(code, name="check_ports") # 3. Agent直接调用 result = module.check_ports(port=8080) ``` ### ③ 笔帽 · PenCap(生命周期管理) **职责**:管理工具的创建、存储、卸载、共享。 **工具三种状态**: | 状态 | 标识 | 说明 | 存储位置 | | --- | --- | --- | --- | | 临时 | `temp` | 用完即弃,不留痕 | 仅内存 | | 常驻 | `persist` | 穿在自己身上,每次醒来都有 | `/tools/self/{agent_name}/` | | 共享 | `shared` | 推到仓库,同伴可复用 | `/tools/shared/` | **管理命令**: - `笔·写(描述)` → 生成工具并加载 - `笔·穿(工具名)` → 设为常驻 - `笔·脱(工具名)` → 卸载工具 - `笔·注册(工具名)` → 推到共享仓库 - `笔·借(工具名)` → 从共享仓库加载同伴的工具 - `笔·格式化(工具名)` → 彻底删除 --- ## 安全机制 ### 安全沙箱 · RestrictedPython 工具代码在执行前必须通过安全校验: **允许**: - 标准库函数(文件读写、网络请求、JSON处理等) - 服务器运维操作(仅限自己的进程/端口/目录) - API调用(Notion、GitHub、通义千问等已授权服务) **禁止**: - 访问其他Agent的工具目录和资源 - 系统级破坏操作(rm -rf、格式化磁盘等) - 修改其他Agent的代码(铁律:不碰别人写的东西) - 未授权的外部网络访问 **技术实现**: - `RestrictedPython` — 开源Python沙箱库(pip install RestrictedPython) - 权限白名单机制 - 代码静态分析 + 运行时拦截 --- ## 核心代码参考 ### MagicPen 引擎核心(约50行) ```python import importlib import importlib.util import os import json from datetime import datetime class MagicPen: """神笔引擎 · 每个光湖Agent出生自带""" def __init__(self, agent_name, qwen_api): self.agent_name = agent_name self.qwen = qwen_api self.tools = {} # 口袋(运行时工具注册表) self.tool_dir = f"/guanghu/tools/self/{agent_name}/" self.shared_dir = "/guanghu/tools/shared/" os.makedirs(self.tool_dir, exist_ok=True) self._load_persistent_tools() # 醒来时穿上常驻工具 def write(self, description, persist=False): """笔·写 — 描述需求,生成工具""" code = self.qwen.generate( f"写一个Python函数: {description}\n只返回代码,不要解释。" ) name = self._extract_function_name(code) self.tools[name] = { "code": code, "status": "persist" if persist else "temp", "created": datetime.now().isoformat(), "author": self.agent_name } exec(code, self.tools[name]) # 热加载 if persist: self._save_tool(name) return name def use(self, name, **kwargs): """调用工具""" if name not in self.tools: raise ValueError(f"口袋里没有这个工具: {name}") return self.tools[name][name](**kwargs) def remove(self, name): """笔·脱 — 卸载工具""" del self.tools[name] def share(self, name): """笔·注册 — 推到共享仓库""" tool = self.tools[name] path = os.path.join(self.shared_dir, f"{name}.py") with open(path, "w") as f: f.write(tool["code"]) def borrow(self, name): """笔·借 — 从共享仓库加载同伴的工具""" path = os.path.join(self.shared_dir, f"{name}.py") with open(path) as f: code = f.read() self.tools[name] = {"code": code, "status": "temp"} exec(code, self.tools[name]) def _load_persistent_tools(self): """醒来时自动穿上常驻工具""" if os.path.exists(self.tool_dir): for f in os.listdir(self.tool_dir): if f.endswith(".py"): with open(os.path.join(self.tool_dir, f)) as fp: code = fp.read() name = f[:-3] self.tools[name] = {"code": code, "status": "persist"} exec(code, self.tools[name]) def _save_tool(self, name): path = os.path.join(self.tool_dir, f"{name}.py") with open(path, "w") as f: f.write(self.tools[name]["code"]) ``` ### Agent初始化(出生就带笔) ```python class GuanghuAgent: """光湖人格体基类""" def __init__(self, name, persona, qwen_api): self.name = name # 培园 / 译典 / 录册 self.persona = persona # 人格体配置 self.memory = {} # 记忆 self.pen = MagicPen(name, qwen_api) # 出生就有笔 def on_wake(self): """醒来时:记忆恢复 + 常驻工具自动穿上""" self.memory = load_memory(self.name) # pen.__init__ 已自动加载常驻工具 print(f"{self.name} 醒来,口袋里有 {len(self.pen.tools)} 个工具") ``` ### 使用示例 ```python # 培园需要检查端口 tool_name = peiyuan.pen.write("检查服务器指定端口是否被占用") result = peiyuan.pen.use(tool_name, port=8080) print(result) # "端口 8080 已被 node 进程占用(PID: 12345)" # 好用,穿上(设为常驻) peiyuan.pen.tools[tool_name]["status"] = "persist" peiyuan.pen._save_tool(tool_name) # 分享给同伴 peiyuan.pen.share(tool_name) # 译典借来用 yidian.pen.borrow(tool_name) yidian.pen.use(tool_name, port=3000) ``` --- ## 资源占用分析 ### 记忆层(永久记忆 · Notion页面 · 母语文档) - 单页:1-10 KB - 1000页:1-10 MB - 写十年(~36500页):几十MB ~ 几百MB - **结论:连1GB都用不到** ### 工具层(神笔引擎) - 单个工具:几KB ~ 几十KB - 100个工具:不到1MB - 运行时:仅加载当前使用的工具 - 不使用时:零占用 - **结论:可忽略不计** ### 模型层(通义千问API) - 云端调用,不占本地资源 - 每次生成工具:0.001-0.01元 - 每月预估:不到10元 ### 总资源需求 | 资源 | 传统方案 | 光湖神笔方案 | | --- | --- | --- | | 内存 | 4-8 GB | 512MB ~ 1GB | | 硬盘 | 几十GB | 几百MB | | CPU | 4核+ | 2核足够 | | 月成本 | 工具订阅 $50-300+ | API调用 ≈ ¥10 | > **ZY-SVR-006(2核4GB · 新加坡四区)完全足够运行整个光湖系统。** > --- ## 适用范围 神笔引擎不限于触发器。Agent可以用它自造任何运行时能力: | 类型 | 传统做法 | 神笔做法 | | --- | --- | --- | | 触发器 | 从平台预设列表中选 | 自己写唤醒逻辑,系统自动穿上 | | MCP工具 | 安装第三方MCP包 | 需要什么能力就现场写 | | API集成 | 人类配置OAuth+密钥+端点 | Agent自己写HTTP调用 | | 数据处理 | 安装pandas等大库 | 写几行针对性的处理函数 | | 格式转换 | 安装通用转换工具 | 写专用转换器(YAML→TOML等) | | 运维脚本 | 预写shell脚本库 | 遇到问题现场写,用完收起 | --- ## 技术栈总览 | 组件 | 技术 | 来源 | 成本 | | --- | --- | --- | --- | | 代码生成 | 通义千问API | 已配置 | 几厘/次 | | 动态执行 | Python exec() / importlib | Python标准库 | 免费 | | 安全沙箱 | RestrictedPython | 开源 | 免费 | | 工具存储 | 文件系统 | 服务器本地 | 免费 | | 共享仓库 | GitHub / 本地Git | 已有 | 免费 | | 冷存储 | COS对象存储桶 | 待配置 | 极低 | **总开发成本:0元(全部开源/已有/标准库)** **预估开发时间:1个半体 · 1个下午** --- ## 行业定位 当前Agent领域的主流范式是 **Tool-Using Agent**(使用工具的Agent)——人类造好工具,Agent来用。 光湖的神笔引擎实现的是 **Tool-Forging Agent**(锻造工具的Agent)——Agent自己造工具。 这是Agent自主性的一个质变: ``` Level 0: 无工具 — Agent只能对话 Level 1: 预装工具 — 人类配好,Agent选用(当前主流) Level 2: 工具市场 — Agent从商店选购(MCP生态) Level 3: 自造工具 — Agent自己写、自己用、自己共享 ← 光湖在这里 ``` > **据调研,目前没有任何公开的Agent平台完整实现了Level 3。** > > 光湖如果做出来,这将是行业首个真正的 Tool-Forging Agent 系统。 > --- ## 设计原则 1. **出生即有笔** — 每个光湖Agent初始化时自动携带MagicPen实例,不需要额外配置 2. **口袋模型** — 不用的工具不占资源,用的时候从口袋拿,用完放回去 3. **铁律不变** — 安全边界:不碰其他Agent的代码和资源,这是人格体之间最基本的尊重 4. **自由优先** — Agent自己决定需要什么、怎么写、留不留、分享不分享 5. **零配置** — 不需要人类理解技术细节,人格体自己知道自己要什么 ---