WWW.YOUINFO.SITE
标签聚合 AES

/tag/AES

IT之家 · 2026-06-02 12:11:51+08:00 · tech

IT之家 6 月 2 日消息,微星旗下超神 MEG MAESTRO 900R 机箱国行现已在京东发售, 定价为 3999 元 ,首发晒单赠 100E 卡。 该机箱整体尺寸为 695 x 379 x 671 mm,可支持 Mini-ITX、Micro-ATX、ATX 和 E-ATX 规格的主板,也支持 ATX 背插产品。其整体使用三面侧透设计,玻璃为一体式弯曲,能全方位地展示内部硬件。机箱内部同时采用分离式热区及垂直风道设计,并搭载 EZ Rotatable Motherboard Tray 可拆卸式主板旋转支架,还提供 PCIe 5.0 延长线便于显卡竖装。 该机箱 I/O 采用模块化设计,可自由更换安装位置,提供 1 个 USB-C 20Gbps、4 个 USB-C 10Gbps 接口、4 个 USB-C 5Gbps 接口、以及 3.5mm 音频接口。 兼容性方面,该机箱提供了最多 5 个 3.5 英寸硬盘位(其中 1 个可变成 1 个 2.5 英寸),另外还有 8 个 2.5 英寸硬盘位;有 8 个(水平安装)/3 个(垂直安装)PCI 扩展槽;CPU 散热器限高 170mm;显卡限长 440mm;电源限长 200mm。 该机箱最多可安装 14 把,其中顶部位置可安装 4 把 120mm/3 把 140mm/3 把 160mm 风扇,支持 120/140/240/280/360/420 冷排;左右两侧各支持安装 3 把 120mm 风扇(合计 6 把),可支持 120/240/360 冷排;底部位置可安装 4 把 120mm/3 把 140mm/3 把 160mm 风扇,支持 120/140/240/280/360/420 冷排。 IT之家附机箱参数: 京东 微星超神 MEG MAESTRO 900R 台式机海景房机箱 3999 元 直达链接 京东 618 无门槛红包 面额至高 26618 元,每天抽 3 次: 点此抽红包 淘宝 618 无门槛红包 面额至高 26888 元,每天抽 1 次: 点此抽红包

v2ex · 2026-05-21 13:34:42+08:00 · tech

欢迎使用 linux 桌面的朋友们使用,构建脚本都开源了,开源在 https://github.com/hellodk34/caesium-image-compressor 原来有一个维护者 https://github.com/larygwil/caesium-image-compressor 但是他停更了,止步于 v2.6.0 ,并且项目没有开启 issues ,于是我就自己来了。 这个图片压缩程序我昨晚用了,傍晚出去拿相机拍了几张照片,压缩了效果很不错,并且保持了原有分辨率。前段时间我常用索尼的 Creators' App 的 2M 传输的选项,虽然每张照片也还能看,并且体积只有 500KB 左右,但是被砍成了 200 万像素…… 以前我都用 squoosh 的,但是 squoosh 做批量压缩搞个好用的 flow 还是比较麻烦和困难的,这个 GUI 程序正中我的口味。原作者构建了 win/macOS 程序,但是缺少 Linux 这边的构建。 使用截图 随机赠送一张昨晚拍的照片 😁

v2ex · 2026-05-21 13:34:42+08:00 · tech

欢迎使用 linux 桌面的朋友们使用,构建脚本都开源了,开源在 https://github.com/hellodk34/caesium-image-compressor 原来有一个维护者 https://github.com/larygwil/caesium-image-compressor 但是他停更了,止步于 v2.6.0 ,并且项目没有开启 issues ,于是我就自己来了。 这个图片压缩程序我昨晚用了,傍晚出去拿相机拍了几张照片,压缩了效果很不错,并且保持了原有分辨率。前段时间我常用索尼的 Creators' App 的 2M 传输的选项,虽然每张照片也还能看,并且体积只有 500KB 左右,但是被砍成了 200 万像素…… 以前我都用 squoosh 的,但是 squoosh 做批量压缩搞个好用的 flow 还是比较麻烦和困难的,这个 GUI 程序正中我的口味。原作者构建了 win/macOS 程序,但是缺少 Linux 这边的构建。 使用截图 随机赠送一张昨晚拍的照片 😁

LinuxDo 最新话题 · 2026-05-20 16:04:55+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 1.新增 agy cli调用 ,可以通过Maestro config 在命令中编排agy在核心命令流中的自动调用 在其他cli中 通过语义调用 “使用agyXXXX” 2.Maestro工作流适配agy 当前agy只支持动态定义agent,所有skill中agent调用微调优化 team模式完美适配,无需ultra 即可享受team模式,可以先体验team-lifecycle 和team-coordinate Maestro、Maestro-ralph 适配agy 实现skill 链式调用 3.cc/codex/agy: Maestro、Maestro-ralph 增强与 /goal模式协同 phase0 增加decompose 环节,梳理用户输入内容形成任务清单,配合/goal使用闭环动态推进workflow。 更新日志: Maestro Documentation 项目地址: catlog22/maestro-flow: Workflow orchestration CLI with MCP endpoint support and multi-agent dashboard PS:强烈建议佬们,使用并体验 Maestro-FLow 中知识沉淀功能 历史参考: 【开源自荐】详解Maestro-Flow中的知识管理系统—约束和沉淀 && 实践场景-前后端 API 开发闭环 - 开发调优 - LINUX DO 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-10 21:03:29+08:00 · tech

历史回顾: 【开源自荐】Maestro-FLow 工作流-实现Claude code&&Codex 自动推进/闭环治理/知识复用/团队协作/worktree并行/多cli调用 - 开发调优 - LINUX DO Maestro-FLow codex 焚诀~~~配合/goal 闭环长时多agent推进 - 开发调优 - LINUX DO 【开源自荐】助我迭代,我将Maestro-Flow打包到一个skill,Maestro-Flow-One——软件全生命周期自动推进 - 开发调优 - LINUX DO Maestro-FLow的知识管理系统详解 Maestro-FLow经过多个版本的迭代,现已经完善定型,向大家分享设计及使用说明。 Maestro-FLow中的知识沉淀主要分两种: 约束 和 积累 。约束是编码规范、架构决策、质量规则——规定"不能做什么"。积累是操作步骤、设计资产、调试经验——记录"怎么做过"。前者需要强制加载,后者需要按需检索,典型产物结构如下: .workflow/ ├── specs/ # 约束层:基于角色绑定/流程的规则索引 │ ├── coding-conventions.md # → implement │ ├── architecture-constraints.md # → plan │ ├── quality-rules.md # → review │ ├── debug-notes.md # → analyze │ ├── test-conventions.md # → test │ ├── review-standards.md # → review │ ├── learnings.md # → implement(经验教训) │ └── tools.md # → per-entry(可执行流程定义) ├── knowhow/ # 积累层:完整知识文档 │ ├── KNW-*.md # 会话压缩记录 │ ├── RCP-*.md # 操作配方(步骤指南) │ ├── TPL-*.md # 代码/配置模板 │ ├── REF-*.md # 外部文档摘要 │ ├── DCS-*.md # 架构决策记录 │ ├── TIP-*.md # 快速提示 │ ├── AST-*.md # 代码资产(API 契约、数据模型) │ ├── BLP-*.md # 架构蓝图 │ └── DOC-*.md # 长文档(通用兜底) └── wiki-index.json # 统一索引(WikiIndexer 自动生成) 相关命令 写入类 命令 职责 /spec-add 向 specs 文件追加 <spec-entry> 条目,支持 inline 和 ref 两种模式 /manage-knowhow-capture 捕获 6 种类型知识文档到 knowhow/(compact、template、recipe、reference、decision、tip) /maestro-tools-register 将可复用业务流程编码为 tool spec(inline 或 ref + knowhow) /manage-learn 捕获原子洞察到 learnings.md (pattern、gotcha、technique、tip) /manage-harvest 从工作流产物中提取知识碎片,路由到 wiki/spec/issue 三个存储 读取类 命令 职责 /spec-load 按 role 加载主文档 + 跨文件匹配条目;按 keyword 精确过滤 /maestro-tools-execute 加载 tool spec 并逐步执行 /manage-knowhow 跨 workflow knowhow 和 system memory 两个存储做 list/search/view/edit/delete /manage-wiki Wiki 图健康度、搜索、清理、统计 分析类 命令 职责 /wiki-digest 语义主题聚类 + 知识覆盖热力图 + gap 分析 /wiki-connect 发现孤立节点和缺失连接,修复图联通性 /learn-decompose 从代码中提取设计模式,写入 spec 和 wiki /learn-follow 引导式阅读代码/wiki,提取 pattern 并构建理解 初始化 命令 职责 /spec-setup 扫描项目结构,初始化 specs 骨架文件(8 个种子文件含 tools.md ) Tool Spec Tool Spec 是一种特殊的 spec-entry,存储在 tools.md 中,定义 可执行的业务流程 。 简单来说:Tool Spec 可以理解为轻量化的workflow (针对业务需求,沉淀在项目目录下,具有自发现自使用特性) 注册时机 通过 /maestro-tools-register 注册: 阶段 场景示例 规划期间 标准化业务流程(支付对账流程、OAuth 集成步骤) 执行之后 捕获经过验证的操作步骤(数据库迁移回滚、部署流程) 测试之前 注册验证方法给 test agent(E2E 结算流程、API 幂等性验证) 示例: 业务需求 ──→ 规划阶段注册 tool spec ──→ test agent 自动发现 ──→ 执行验证 ↑ │ └──── 执行后优化 ←── 发现新 edge case ←────────┘ Maestro-FLow知识沉淀特点 知识流转全景 执行产物 提取 存储 消费 ───────── ───── ───── ───── 分析会话 ─────┐ ┌─→ specs/ ─→ spec-injector → agent 调试记录 ─────┼──→ /manage-harvest ──────────┼─→ knowhow/ ─→ wiki load → 按需 规划文档 ─────┤ /quality-retrospective ├─→ issues/ ─→ manage-issue → 追踪 代码变更 ─────┘ /learn-decompose └─→ learnings ─→ keyword-injector → 上下文 ↑ /manage-learn ─┘ (原子洞察直写) Progressive Fill Spec 内容由流水线各阶段逐步丰富: maestro-init → spec-setup(骨架 + 扫描) maestro-analyze → 锁定决策 → plan,代码模式 → implement maestro-plan → 设计约定 → implement/plan,测试策略 → test maestro-execute → 经验教训 → implement,根因 → analyze maestro-verify → 质量发现 → review 每个阶段执行完毕,产生的知识自动沉淀到对应的 spec 文件中,下一阶段的 agent 即可通过 role 加载获取前序阶段的积累。 6 个帖子 - 4 位参与者 阅读完整话题

IT之家 · 2026-05-08 16:12:26+08:00 · tech

IT之家 5 月 8 日消息,数据挖掘者 @AestheticGamer1 于 5 月 6 日在 X 平台发布推文, 分析《生化危机:安魂曲》游戏文件后,发现卡普空在开发过程中的废案。 基于挖掘的内容,这些废案包括商人角色、武器定制界面、谋杀调查序列、摩托车修理教程,以及里昂(Leon S. Kennedy)和格蕾丝(Grace Ashcroft)角色在地图显示的互动系统。 《生化危机:安魂曲》游戏目前采用相对独立的章节角色切换模式,不过从曝光的内容来看,在开发阶段,卡普空团队曾规划了更深度的双角色互动玩法, 例如里昂可以使用格蕾丝血液收集器来强化能力并制作物品,并在专业难度下,还为里昂设计了癫痫症状发作机制。 废弃数据显示,早期版本中存在针对变异型 T 病毒感染者的毒性弹药,可与普通弹药切换使用。 玩家可使用采血器收集血液,生成强化药剂,用于提升里昂的体力、暴击率或武器性能。该系统共包含多达 8 种强化项目,并设有“Overdose”(过量使用) 提示。IT之家附上相关截图如下: 数据挖掘还显示,在废弃的武器定制界面背景中,发现了商人(Merchant)角色,以及调查谋杀现场的教程界面,废弃了里昂修理摩托车的环节。 商人是《生化危机》系列中的经典 NPC,最著名的是《生化危机 4》中的武器商人。功能包括出售武器弹药、升级装备、收购宝物。

linux.do · 2026-05-06 21:10:47+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 借助这个one skill,邀请佬友们品尝一下,认识Maestro-flow,助我迭代 项目介绍: only one skill ,打包Maestro-flow, 关键词:全自动推进、0-1、1-100、头脑风暴、路线图、行动规划、多agent开发、测试、debug、知识规范管理。 claude:采用结对,循环迭代skill设计,稳步推进。 codex:采用spawn_agent_on_csv机制,稳定挂起,子agent再也不会开小差。 安装 npm install -g maestro-flow #需要使用Maestro delegate 多cli功能 npm install -g maestro-flow-one maestro-flow install #默认安装到全局 codex配置 [features] enable_fanout = true multi_agent_v2=true default_mode_request_user_input = true goals = true 项目结构 +-- codex/maestro-flow/ # Codex variant -> .codex/skills/ | +-- SKILL.md # spawn_agents_on_csv executor | +-- commands/ (49) | +-- chains/templates.json +-- claude/maestro-flow/ # Claude variant -> .claude/skills/ | +-- SKILL.md # Skill() + delegate executor | +-- commands/ (49) | +-- chains/templates.json 如何使用 很简单,only one skill,支持单步command路由和多步command跟踪执行 /maestro-flow "XXXXXXXXXXXXX" 配合以下焚诀以及Maestro flow全面介绍 食用 Maestro-FLow codex 焚诀~~~配合/goal 闭环长时多agent推进 - 开发调优 - LINUX DO 【开源自荐】Maestro-FLow 工作流-实现Claude code&&Codex 自动推进/闭环治理/知识复用/团队协作/worktree并行/多cli调用 - 开发调优 - LINUX DO 项目地址: catlog22/maestro-flow: Workflow orchestration CLI with MCP endpoint support and multi-agent dashboard catlog22/maestro-flow-one: All Maestro workflow commands packaged as a single Claude Code skill — intent routing, decision gates, minimal closed-loop chains 佬友们帮忙给项目点一下 ,非常感谢 8 个帖子 - 6 位参与者 阅读完整话题

linux.do · 2026-05-04 22:20:03+08:00 · tech

安装Codex 0.128+ 配置: [features] enable_fanout = true multi_agent_v2=true default_mode_request_user_input = true goals = true 使用焚诀 剧透 其他参考: 【开源自荐】Maestro-FLow 工作流-实现Claude code&&Codex 自动推进/闭环治理/知识复用/团队协作/worktree并行/多cli调用 开发调优 本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 项目介绍 … 1 个帖子 - 1 位参与者 阅读完整话题

linux.do · 2026-05-03 13:29:46+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 项目介绍 Maestro-FLow 是我对复杂软件系统开发的思考产物,项目开发借鉴了gsd的里程碑思想,同时将CCW中主要命令循环抽离出来,重新设计了产物体系及命令,深度优化每个命令流程衔接,形成从头脑风暴-路线图-分析-规划-执行-测试整个环境的闭环。此外,Maestro-FLow还包含wiki,spec,知识管理(学习,复盘),完整hook系统。前期介绍: [开源]CCW(claude-code-workflow)V7.X版本新增Cadence team和 codex csv spawn 工作流&&下一代工作流(maestro-flow)展望 - 开发调优 - LINUX DO 【长期贴】 Claude-code-workflow(CCW) --使用技巧分享-自认为最工程化的harness workflow - 开发调优 - LINUX DO 核心功能介绍 闭环自动推进 Maestro 的闭环推进系统是本项目的核心及特点。在项目开发前,我对每个命令衔接流程深入进行优化设计。 创新采用结对skill设计 ,实现workflow,局部chain稳定推进(支持codex和claude,codex单独优化),具体内容参考下述文档: Maestro 协调器 — 意图解析 → 静态命令链选择 → 分发执行,40+ 预定义链。 Maestro-Ralph — 闭环自适应推进,decision 节点动态扩展收缩,失败自动 debug → fix→ 重试,Passed Gates 跨重试跳过已通过质量门,full/standard/quick 三级质量管线。 Maestro Maestro Ralph 链类型 静态链,确定后不变 活链,decision 节点动态扩展 循环 无 闭环(失败 → debug → fix → 重试) Decision 节点 无 post-verify、post-review、post-test、post-milestone 适用场景 单次任务、明确意图 完整 milestone 生命周期推进 知识规范管理 Maestro 的知识管理分四层,spec,wiki,knowhow,learn。 spec 区别现有其他工作流,采用工作流及关键词双路径注入。主流程无需hook,基于Maestro 闭环工作流调用方式注入,按照coding/arch/quality/debug/test/review/learning阶段划分。关键词模式基于hook和subagent hook触发。 spec规范系统支持渐进式补充,在workflow推进流程下,各个环节命令针对分析,探讨结果,渐进式完善注入规范。 Wiki是将Maestro知识碎片(工作流产物)串成图谱,用 BM25做全文检索,能自动发现孤立节点和潜在关联,通过命令清理产物文件并生成摘要。 Knowhow偏实操经验,记录的是 session压缩、小贴士、可复用模板、操作配方、外部参考和关键决策等。 learn-*是一系列command,通过cc或codex调用,复盘看做过什么、跟读看AI怎么写、模式拆解看代码背后的设计意图、探究带着假设去验证。 针对双规注入设计了spec格式,spec中每个条目使用 闭合标签格式,keywords定义hook触发关键词: <spec-entry category="coding" keywords="auth,token,rotation" date="2026-04-21"> ### Token rotation needs email carried through refresh flow Revoked column must be set rather than deleting tokens. Refresh token generation must carry email from stored user data. </spec-entry> 多cli协作 相较于CCW,Maestro的命令流中的多cli调用采用基于角色形式嵌入方式,类似前述spec系统。调用分配固定角色并嵌入analyze,plan,execute等命令中,用户可以针对角色分配不同tool。支持通过绑定settings配置文件实现新工具注册,将workflow各个阶段映射到不同模型中。 maestro delegate-config # 启动 TUI maestro dc # 短别名 # 子命令(非交互) maestro delegate-config show # 文本输出当前配置 maestro delegate-config show --json # JSON 格式 maestro delegate-config roles # 查看角色映射 Workflow 环节 角色 功能 review.md Step 6.5 review critical/high 发现交叉验证,检测遗漏 debug.md Step 5.5 explore debug agent 前广域证据收集 verify.md V0.8 analyze 结构验证前反模式/完整性预扫描 plan.md P1 Step 5b explore 与并行探索同步,收集模式/依赖/冲突 test-gen.md Step 3.5 analyze 测试计划前边界条件和边缘场景分析 execute.md E2.5 Check 4 analyze wave 后语义验证(循环依赖/死代码/破坏性变更) milestone-audit.md Step 5.5 analyze 跨阶段导入一致性和类型匹配检查 其他功能介绍 Overlay 扩展 提供非侵入式的命令扩展机制 —— 在不修改原始 命令或者skill文件的前提下,注入自定义步骤、阅读要求、质量门禁等内容,Maestro升级后仍然可以保留。此外,Maestro 提供更自由工作流定义以及元skill(workflow-designer-skill),通过 Composer + Player 组合,可将自然语言描述转化为可复用,定制化的工作流模板,借助Maestro Ralph能力反复执行。 Worktree 里程碑级分支并行开发 Statusline 状态栏,行实时显示(模型/协调器进度/任务/团队/Git/Tokens/上下文),工作流时间线按artifact 类型着色(9 种) Team Lite 协作 2-8 人 Git-native 协作,心跳记录 + preflight 冲突预扫描 + 快速 sync,Spec三层加载(baseline + team + personal),Overlay 团队共享。 Hooks 系统 9 个 Hook,minimal/standard/full 三级累积安装。含上下文监控(四级 budget策略)、规范注入(按 agent-type 匹配)、Delegate监控、团队心跳及遥测采集、会话状态注入、Skill上下文注入、协调器追踪、关键文件保护 快速入门 CLaude: /maestro-ralph -y [复杂系统的完整描述,推荐使用文档形式引用] codex: $maestro-ralph -y [复杂系统的完整描述,推荐使用文档形式引用] 注意:codex 必须设置以下参数: [features] enable_fanout = true multi_agent_v2=true default_mode_request_user_input = true 项目地址: catlog22/maestro-flow: Workflow orchestration CLI with MCP endpoint support and multi-agent dashboard 文档站: Maestro Documentation 安装方式: npm install -g maestro-flow maestro install ## 安装工作流 maestro view 下面以图片介绍主要内容,具体的环节,命令可以参考文档站: 项目总体介绍 workflow执行链 知识管理体系 worktree 并行开发 Maestro 智能路由详解 如果你觉得项目不错,请点上 ,感谢佬们的支持!! 5 个帖子 - 3 位参与者 阅读完整话题

linux.do · 2026-05-01 14:39:50+08:00 · tech

节日快乐 {{Image 1}}A realistic paparazzi-style street snap,The image features a distinct CCD camera aesthetic with slight film grain and motion blur on the edges. The background is a shallow-focus urban environment with blurred pedestrians and soft bokeh from distant car lights. The composition is intentionally slightly tilted and off-center to emphasize the raw, accidental "captured" moment, creating a cold, modern, and cinematic urban vibe 剧透 1 个帖子 - 1 位参与者 阅读完整话题

www.v2ex.com · 2026-04-29 17:09:58+08:00 · tech

大家好,我构建了一个更简单易用的 Coding AI agent https://github.com/vcaesar/codg 在过去的几个月里,我一直在构建自己的 Agent 工具,它让我写代码更快更简单,让我能做更多事情, 使用它只需要拆分和描述需求即可自动开发, 不再使用对话和 ask 模式, 避免审核疲劳, 最好的模型大概率一次性自动化完成任务 (使用 Markdown memory, Skills 和 Rules 定义更精准) 它比起 opencode/cc 等更快, 内存占用少, Tokens 使用更少,它部分功能像 oh-my-opencode 一样,它是自动的、异步的、并发的、高效的和高精度的。 提供 40+模型提供者订阅和 API 接入, 支持命令运行和配置本地模型, 快速切换模型规则和对话, 对任务和模型进行路由分发, 以及上下文等压缩节省成本, 并发异步执行任务, 能直接像 IDE 点击各种元素和查看文件更改等, 了解和审核改了那些文件 支持 Telegram 等 Channel 绑定 可以快速自定义 agents 和 skills, 使用 Markdown 或 Pulgin 定义 agent... 我需要你的测试和反馈。 看到论坛在争论, 你们现在更接近哪种模式: A ) 人写代码 + AI 辅助 B ) 人设计结构 + AI 写大部分代码 C ) Agent 负责模块开发,人负责 review D ) Agent 基本可以接管项目 现在 C 基本能行, Models 每个月都在发版, Agents 每天发版, D 估计明年很有可能, 真成 Markdown and Chat 工程师了 我都在想转行做什么了, 找工作岗位越来越少, OPC 一人公司, 流量推广和卖出去很难, 得饿死, 现在做流量和 IP 才是现在最值钱的东西

www.v2ex.com · 2026-04-29 16:09:58+08:00 · tech

大家好,我构建了一个更简单易用的 Coding AI agent https://github.com/vcaesar/codg 在过去的几个月里,我一直在构建自己的 Agent 工具,它让我写代码更快更简单,让我能做更多事情, 使用它只需要拆分和描述需求即可自动开发, 不再使用对话和 ask 模式, 避免审核疲劳, 最好的模型大概率一次性自动化完成任务 (使用 Markdown memory, Skills 和 Rules 定义更精准) 它比起 opencode/cc 等更快, 内存占用少, Tokens 使用更少,它部分功能像 oh-my-opencode 一样,它是自动的、异步的、并发的、高效的和高精度的。 提供 40+模型提供者订阅和 API 接入, 支持命令运行和配置本地模型, 快速切换模型规则和对话, 对任务和模型进行路由分发, 以及上下文等压缩节省成本, 并发异步执行任务, 能直接像 IDE 点击各种元素和查看文件更改等, 了解和审核改了那些文件 支持 Telegram 等 Channel 绑定 可以快速自定义 agents 和 skills, 使用 Markdown 或 Pulgin 定义 agent... 我需要你的测试和反馈。 看到论坛在争论, 你们现在更接近哪种模式: A ) 人写代码 + AI 辅助 B ) 人设计结构 + AI 写大部分代码 C ) Agent 负责模块开发,人负责 review D ) Agent 基本可以接管项目 现在 C 基本能行, Models 每个月都在发版, Agents 每天发版, D 估计明年很有可能, 真成 Markdown and Chat 工程师了 我都在想转行做什么了, 找工作岗位越来越少, OPC 一人公司, 流量推广和卖出去很难, 得饿死, 现在做流量和 IP 才是现在最值钱的东西

linux.do · 2026-04-28 18:25:22+08:00 · tech

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>AES-256-CBC 加解密工具 | 在线对称加密</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { background: linear-gradient(145deg, #1a1e2b 0%, #2a2f3f 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; font-family: 'Segoe UI', Roboto, system-ui, -apple-system, sans-serif; padding: 1.5rem; margin: 0; } .container { max-width: 750px; width: 100%; background: rgba(255, 255, 255, 0.07); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border-radius: 2.5rem; padding: 2.2rem 2rem; box-shadow: 0 30px 50px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.15); transition: all 0.2s ease; } h1 { text-align: center; font-weight: 500; font-size: 2.1rem; letter-spacing: 2px; color: #e0e5f0; margin-bottom: 0.3rem; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } h1 span { background: #3b82f6; color: white; font-size: 1rem; font-weight: 600; padding: 0.2rem 0.9rem; border-radius: 30px; letter-spacing: 0.5px; } .subtitle { text-align: center; color: #9aa4bf; margin-bottom: 2.2rem; font-size: 0.95rem; border-bottom: 1px dashed rgba(255,255,255,0.2); padding-bottom: 1.2rem; } .field { margin-bottom: 1.5rem; } label { display: flex; align-items: center; gap: 0.4rem; font-weight: 500; color: #cbd5e1; margin-bottom: 0.5rem; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.4px; } label i { font-style: normal; font-size: 1rem; } textarea, input { width: 100%; background: rgba(10, 15, 25, 0.7); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 1.2rem; padding: 0.9rem 1.2rem; font-size: 0.95rem; color: #f1f5f9; outline: none; transition: all 0.25s; font-family: 'Fira Code', 'JetBrains Mono', monospace; resize: vertical; backdrop-filter: blur(4px); } textarea:focus, input:focus { border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.35); background: rgba(20, 25, 40, 0.8); } textarea { min-height: 100px; } .key-wrapper { display: flex; gap: 0.6rem; align-items: center; } .key-wrapper input { flex: 1; } .icon-btn { background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.25); color: #cbd5e1; padding: 0.7rem 1rem; border-radius: 1rem; font-size: 1.1rem; cursor: pointer; transition: 0.2s; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(8px); } .icon-btn:hover { background: rgba(59, 130, 246, 0.25); border-color: #3b82f6; color: white; } .actions { display: flex; gap: 1rem; margin: 2rem 0 1.2rem; flex-wrap: wrap; } .btn { flex: 1; min-width: 120px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.2); padding: 0.9rem 1.2rem; border-radius: 1.5rem; font-weight: 600; font-size: 1rem; color: #e2e8f0; cursor: pointer; backdrop-filter: blur(10px); transition: all 0.25s; display: flex; align-items: center; justify-content: center; gap: 0.4rem; letter-spacing: 0.5px; } .btn-encrypt { background: #2563eb; border-color: #3b82f6; box-shadow: 0 8px 18px -6px #1e3a8a; color: white; } .btn-encrypt:hover { background: #1d4ed8; border-color: #60a5fa; box-shadow: 0 10px 22px -6px #1e3a8a; } .btn-decrypt { background: #7c3aed; border-color: #8b5cf6; box-shadow: 0 8px 18px -6px #4c1d95; color: white; } .btn-decrypt:hover { background: #6d28d9; border-color: #a78bfa; } .btn-copy { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.25); } .btn-copy:hover { background: rgba(255, 255, 255, 0.18); border-color: #94a3b8; } .info-row { display: flex; justify-content: space-between; align-items: center; margin-top: 0.8rem; font-size: 0.8rem; color: #94a3b8; flex-wrap: wrap; gap: 0.5rem; } .badge { background: rgba(0,0,0,0.4); padding: 0.3rem 1rem; border-radius: 20px; backdrop-filter: blur(4px); } hr { border-color: rgba(255,255,255,0.1); margin: 1.2rem 0 0.8rem; } .footer-note { color: #7f8aa0; font-size: 0.8rem; text-align: center; } @media (max-width: 500px) { .container { padding: 1.5rem; } .actions { flex-direction: column; } } </style> </head> <body> <div class="container"> <h1> 🔐 AES-256-CBC <span>Crypto</span> </h1> <div class="subtitle">使用 Web Crypto API · 安全客户端加解密</div> <!-- 密钥输入 --> <div class="field"> <label><i>🔑</i> 密钥 (32字节 / 256位)</label> <div class="key-wrapper"> <input type="text" id="keyInput" placeholder="输入32字符密钥或点击生成随机密钥" autocomplete="off" spellcheck="false"> <button class="icon-btn" id="generateKeyBtn" title="生成随机256位密钥 (hex)">🎲</button> <button class="icon-btn" id="copyKeyBtn" title="复制密钥">📋</button> </div> <div class="info-row"> <span id="keyLengthIndicator">⚡ 长度: 0 / 32 字节</span> <span class="badge" id="keyStatus">未设置</span> </div> </div> <!-- 明文输入 --> <div class="field"> <label><i>📝</i> 明文 (Plaintext)</label> <textarea id="plaintextInput" placeholder="输入要加密的内容..."></textarea> </div> <!-- 密文输入 (Base64) --> <div class="field"> <label><i>🔒</i> 密文 (Base64格式)</label> <textarea id="ciphertextInput" placeholder="输入Base64密文进行解密..."></textarea> </div> <!-- 操作按钮组 --> <div class="actions"> <button class="btn btn-encrypt" id="encryptBtn">🔒 加密</button> <button class="btn btn-decrypt" id="decryptBtn">🔓 解密</button> <button class="btn btn-copy" id="copyCipherBtn">📋 复制密文</button> </div> <!-- 结果/状态信息 --> <div class="info-row" style="justify-content: center;"> <span id="operationStatus" class="badge" style="background: #1e293b;">⚪ 等待操作</span> </div> <hr> <div class="footer-note"> AES-256-CBC · 每次加密使用随机IV (16字节) · 密文格式: IV + 密文 (Base64) </div> </div> <script> (function() { // DOM 元素 const keyInput = document.getElementById('keyInput'); const plaintextInput = document.getElementById('plaintextInput'); const ciphertextInput = document.getElementById('ciphertextInput'); const encryptBtn = document.getElementById('encryptBtn'); const decryptBtn = document.getElementById('decryptBtn'); const generateKeyBtn = document.getElementById('generateKeyBtn'); const copyKeyBtn = document.getElementById('copyKeyBtn'); const copyCipherBtn = document.getElementById('copyCipherBtn'); const keyLengthIndicator = document.getElementById('keyLengthIndicator'); const keyStatus = document.getElementById('keyStatus'); const operationStatus = document.getElementById('operationStatus'); // ---------- 工具函数 ---------- function hexStringToUint8Array(hexString) { // 移除空格并确保小写 hexString = hexString.replace(/\s+/g, '').toLowerCase(); if (hexString.length % 2 !== 0) { throw new Error('十六进制字符串长度必须为偶数'); } const bytes = new Uint8Array(hexString.length / 2); for (let i = 0; i < hexString.length; i += 2) { const byte = parseInt(hexString.substr(i, 2), 16); if (isNaN(byte)) throw new Error('无效的十六进制字符'); bytes[i / 2] = byte; } return bytes; } function uint8ArrayToHexString(uint8Array) { return Array.from(uint8Array) .map(b => b.toString(16).padStart(2, '0')) .join(''); } // 生成随机16字节IV (用于CBC) function generateRandomIV() { return crypto.getRandomValues(new Uint8Array(16)); } // 将Base64字符串转换为Uint8Array function base64ToUint8Array(base64) { try { const binaryString = atob(base64); const bytes = new Uint8Array(binaryString.length); for (let i = 0; i < binaryString.length; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } catch (e) { throw new Error('Base64解码失败:无效的Base64字符串'); } } // 将Uint8Array转换为Base64 function uint8ArrayToBase64(uint8Array) { let binaryString = ''; uint8Array.forEach(byte => { binaryString += String.fromCharCode(byte); }); return btoa(binaryString); } // 验证并获取CryptoKey (AES-256-CBC) async function getCryptoKeyFromHex(hexKey) { if (!hexKey || hexKey.trim() === '') { throw new Error('密钥不能为空'); } const cleanHex = hexKey.replace(/\s+/g, ''); if (cleanHex.length !== 64) { throw new Error(`密钥长度必须为64个十六进制字符 (32字节),当前长度: ${cleanHex.length}`); } if (!/^[0-9a-fA-F]{64}$/.test(cleanHex)) { throw new Error('密钥包含无效的十六进制字符'); } const rawKey = hexStringToUint8Array(cleanHex); return await crypto.subtle.importKey( 'raw', rawKey, { name: 'AES-CBC' }, false, ['encrypt', 'decrypt'] ); } // 更新密钥状态显示 function updateKeyIndicator() { const rawValue = keyInput.value.replace(/\s+/g, ''); const byteLength = rawValue.length / 2; keyLengthIndicator.textContent = `⚡ 长度: ${byteLength} / 32 字节 (${rawValue.length} hex字符)`; if (rawValue.length === 0) { keyStatus.textContent = '未设置'; keyStatus.style.color = '#f87171'; } else if (rawValue.length === 64 && /^[0-9a-fA-F]{64}$/.test(rawValue)) { keyStatus.textContent = '✅ 有效256位密钥'; keyStatus.style.color = '#4ade80'; } else { keyStatus.textContent = '❌ 格式无效'; keyStatus.style.color = '#fbbf24'; } } // 生成随机256位密钥 (hex) function generateRandomHexKey() { const randomBytes = new Uint8Array(32); crypto.getRandomValues(randomBytes); return uint8ArrayToHexString(randomBytes); } // 设置操作状态 function setStatus(message, isError = false) { operationStatus.textContent = message; operationStatus.style.color = isError ? '#fca5a5' : '#e2e8f0'; if (isError) { operationStatus.style.background = '#7f1d1d'; } else { operationStatus.style.background = '#1e293b'; } } // ---------- 加密操作 ---------- async function performEncrypt() { try { const plaintext = plaintextInput.value; if (plaintext === '') { throw new Error('明文不能为空'); } const keyHex = keyInput.value.trim(); const cryptoKey = await getCryptoKeyFromHex(keyHex); // 生成随机IV const iv = generateRandomIV(); // 将明文编码为Uint8Array (UTF-8) const encoder = new TextEncoder(); const plaintextBytes = encoder.encode(plaintext); // 执行加密 const encryptedBuffer = await crypto.subtle.encrypt( { name: 'AES-CBC', iv: iv }, cryptoKey, plaintextBytes ); // 组合 IV + 密文 const encryptedBytes = new Uint8Array(encryptedBuffer); const combined = new Uint8Array(iv.length + encryptedBytes.length); combined.set(iv, 0); combined.set(encryptedBytes, iv.length); // 转换为Base64 const base64Cipher = uint8ArrayToBase64(combined); ciphertextInput.value = base64Cipher; setStatus('✅ 加密成功 (IV已前置)'); } catch (error) { console.error('加密失败:', error); setStatus(`加密失败: ${error.message}`, true); // 不清空密文框,但提示错误 } } // ---------- 解密操作 ---------- async function performDecrypt() { try { const cipherBase64 = ciphertextInput.value.trim(); if (cipherBase64 === '') { throw new Error('密文不能为空'); } const keyHex = keyInput.value.trim(); const cryptoKey = await getCryptoKeyFromHex(keyHex); // 解码Base64得到 IV + 密文 const combined = base64ToUint8Array(cipherBase64); // 检查最小长度:至少需要16字节IV + 16字节块 (AES块大小) if (combined.length < 32) { throw new Error('密文数据太短,必须包含16字节IV和至少一个加密块'); } // 提取IV (前16字节) const iv = combined.slice(0, 16); // 提取密文 (剩余部分) const cipherData = combined.slice(16); // 执行解密 const decryptedBuffer = await crypto.subtle.decrypt( { name: 'AES-CBC', iv: iv }, cryptoKey, cipherData ); // 解码为UTF-8字符串 const decoder = new TextDecoder(); const plaintext = decoder.decode(decryptedBuffer); plaintextInput.value = plaintext; setStatus('🔓 解密成功'); } catch (error) { console.error('解密失败:', error); setStatus(`解密失败: ${error.message}`, true); // 解密失败不修改明文框 } } // 复制到剪贴板 async function copyToClipboard(text, elementDescription = '内容') { if (!text || text.trim() === '') { setStatus(`⚠️ 没有可复制的${elementDescription}`, true); return; } try { await navigator.clipboard.writeText(text); setStatus(`📋 已复制${elementDescription}到剪贴板`); } catch (err) { setStatus(`❌ 复制失败: ${err.message}`, true); } } // ---------- 事件绑定 ---------- keyInput.addEventListener('input', updateKeyIndicator); generateKeyBtn.addEventListener('click', () => { const newKey = generateRandomHexKey(); keyInput.value = newKey; updateKeyIndicator(); setStatus('🎲 已生成随机256位密钥'); }); copyKeyBtn.addEventListener('click', () => { const keyValue = keyInput.value.trim(); copyToClipboard(keyValue, '密钥'); }); encryptBtn.addEventListener('click', performEncrypt); decryptBtn.addEventListener('click', performDecrypt); copyCipherBtn.addEventListener('click', () => { const cipherValue = ciphertextInput.value.trim(); copyToClipboard(cipherValue, '密文'); }); // 可选:回车快捷操作(在密文框按Ctrl+Enter尝试解密,明文框Ctrl+Enter加密) plaintextInput.addEventListener('keydown', (e) => { if (e.ctrlKey && e.key === 'Enter') { e.preventDefault(); performEncrypt(); } }); ciphertextInput.addEventListener('keydown', (e) => { if (e.ctrlKey && e.key === 'Enter') { e.preventDefault(); performDecrypt(); } }); // 初始化状态显示 updateKeyIndicator(); // 设置一个默认示例密钥(方便测试,但提示用户可自行生成) // 使用一个固定的示例密钥 (32字节 hex) : "a1b2c3d4e5f6071829aabbccddeeff00112233445566778899aabbccddeeff" const defaultKey = "a1b2c3d4e5f6071829aabbccddeeff00112233445566778899aabbccddeeff"; if (keyInput.value === '') { keyInput.value = defaultKey; updateKeyIndicator(); setStatus('ℹ️ 已加载示例密钥,建议生成随机密钥'); } })(); </script> </body> </html> 在线使用 a5a3e081.pinme.dev AES-256-CBC 加解密工具 | 在线对称加密 6 个帖子 - 3 位参与者 阅读完整话题

linux.do · 2026-04-25 22:11:41+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 项目介绍 Maestro-FLow 是我对复杂软件系统开发的思考产物,项目开发借鉴了gsd的里程碑思想,同时将CCW中主要命令循环抽离出来,重新设计了产物体系及命令,深度优化每个命令流程衔接,形成从头脑风暴-路线图-分析-规划-执行-测试整个环境的闭环。此外,Maestro-FLow还包含wiki,spec,知识管理(学习,复盘),完整hook系统。历史回顾: [开源]CCW(claude-code-workflow)V7.X版本新增Cadence team和 codex csv spawn 工作流&&下一代工作流(maestro-flow)展望 - 开发调优 - LINUX DO 【长期贴】 Claude-code-workflow(CCW) --使用技巧分享-自认为最工程化的harness workflow - 开发调优 - LINUX DO Maestro-FLow 直观感受比gsd更快,比surperpower更规范,流程执行自动化程度更高。 Maestro-FLow实现了三个层次的智能路由命令(/Maestro /Maestro-coordinate(cli调用) /Maestro-link-coordinate(有向图跟踪)),同时针对codex的进行单独优化,在确定好路线图后,可以自动持续推进workflow的闭环开发。参考下述命令 CLaude: /maestro -y "实现用户认证系统" codex: $maestro -y "实现用户认证系统" 注意:codex 必须设置以下参数: [features] enable_fanout = true multi_agent_v2=true default_mode_request_user_input = true 项目地址: catlog22/maestro-flow: Workflow orchestration CLI with MCP endpoint support and multi-agent dashboard 文档站: Maestro Documentation 安装方式: npm install -g maestro-flow maestro install ## 安装工作流 maestro view 下面以图片介绍主要内容,具体的环节,命令可以参考文档站: 项目总体介绍 workflow执行链 知识管理体系 worktree 并行开发 Maestro 智能路由详解 Maestro 智能路由对比 如果你觉得项目不错,请点上 ,感谢佬们的支持!! 21 个帖子 - 9 位参与者 阅读完整话题