05_terminal_tool_examples.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. """
  2. TerminalTool 使用示例
  3. 展示 TerminalTool 的典型使用模式:
  4. 1. 探索式导航
  5. 2. 数据文件分析
  6. 3. 日志文件分析
  7. 4. 代码库分析
  8. """
  9. from hello_agents.tools import TerminalTool
  10. def demo_exploratory_navigation():
  11. """演示探索式导航"""
  12. print("\n" + "=" * 80)
  13. print("场景1: 探索式导航")
  14. print("=" * 80 + "\n")
  15. terminal = TerminalTool(workspace="./my_project")
  16. # 第一步:查看项目根目录
  17. print("1. 查看项目根目录:")
  18. result = terminal.run({"command": "ls -la"})
  19. print(result)
  20. # 第二步:进入源代码目录
  21. print("\n2. 进入源代码目录:")
  22. result = terminal.run({"command": "cd src"})
  23. print(result)
  24. # 第三步:查找特定文件
  25. print("\n3. 查找特定模式的文件:")
  26. result = terminal.run({"command": "find . -name '*service*.py'"})
  27. print(result)
  28. # 第四步:查看文件内容
  29. print("\n4. 查看文件内容:")
  30. result = terminal.run({"command": "cat user_service.py"})
  31. print(result[:500] + "..." if len(result) > 500 else result)
  32. def demo_data_file_analysis():
  33. """演示数据文件分析"""
  34. print("\n" + "=" * 80)
  35. print("场景2: 数据文件分析")
  36. print("=" * 80 + "\n")
  37. terminal = TerminalTool(workspace="./data")
  38. # 查看 CSV 文件的前几行
  39. print("1. 查看 CSV 文件前5行:")
  40. result = terminal.run({"command": "head -n 5 sales_2024.csv"})
  41. print(result)
  42. # 统计总行数
  43. print("\n2. 统计文件行数:")
  44. result = terminal.run({"command": "wc -l *.csv"})
  45. print(result)
  46. # 提取和统计产品类别
  47. print("\n3. 统计产品类别分布:")
  48. result = terminal.run({"command": "tail -n +2 sales_2024.csv | cut -d',' -f2 | sort | uniq -c"})
  49. print(result)
  50. def demo_log_analysis():
  51. """演示日志文件分析"""
  52. print("\n" + "=" * 80)
  53. print("场景3: 日志文件分析")
  54. print("=" * 80 + "\n")
  55. terminal = TerminalTool(workspace="/var/log")
  56. # 查看最新的错误日志
  57. print("1. 查看最新的错误日志:")
  58. result = terminal.run({"command": "tail -n 50 app.log | grep ERROR"})
  59. print(result)
  60. # 统计错误类型分布
  61. print("\n2. 统计错误类型分布:")
  62. result = terminal.run({"command": "grep ERROR app.log | awk '{print $4}' | sort | uniq -c | sort -rn"})
  63. print(result)
  64. # 查找特定时间段的日志
  65. print("\n3. 查找特定时间段的日志:")
  66. result = terminal.run({"command": "grep '2024-01-19 15:' app.log | tail -n 20"})
  67. print(result)
  68. def demo_codebase_analysis():
  69. """演示代码库分析"""
  70. print("\n" + "=" * 80)
  71. print("场景4: 代码库分析")
  72. print("=" * 80 + "\n")
  73. terminal = TerminalTool(workspace="./codebase")
  74. # 统计代码行数
  75. print("1. 统计代码行数:")
  76. result = terminal.run({"command": "find . -name '*.py' -exec wc -l {} + | tail -n 1"})
  77. print(result)
  78. # 查找所有 TODO 注释
  79. print("\n2. 查找所有 TODO 注释:")
  80. result = terminal.run({"command": "grep -rn 'TODO' --include='*.py'"})
  81. print(result)
  82. # 查找特定函数的定义
  83. print("\n3. 查找特定函数的定义:")
  84. result = terminal.run({"command": "grep -rn 'def process_data' --include='*.py'"})
  85. print(result)
  86. def demo_security_features():
  87. """演示安全特性"""
  88. print("\n" + "=" * 80)
  89. print("安全特性演示")
  90. print("=" * 80 + "\n")
  91. terminal = TerminalTool(workspace="./project")
  92. # 尝试执行不允许的命令
  93. print("1. 尝试执行危险命令 (rm):")
  94. result = terminal.run({"command": "rm -rf /"})
  95. print(result)
  96. # 尝试访问工作目录外的文件
  97. print("\n2. 尝试访问工作目录外的文件:")
  98. result = terminal.run({"command": "cat /etc/passwd"})
  99. print(result)
  100. # 尝试逃逸工作目录
  101. print("\n3. 尝试通过 .. 逃逸工作目录:")
  102. result = terminal.run({"command": "cd ../../../etc"})
  103. print(result)
  104. def main():
  105. print("=" * 80)
  106. print("TerminalTool 使用示例")
  107. print("=" * 80)
  108. # 演示各种使用场景
  109. demo_exploratory_navigation()
  110. demo_data_file_analysis()
  111. demo_log_analysis()
  112. demo_codebase_analysis()
  113. demo_security_features()
  114. print("\n" + "=" * 80)
  115. print("演示完成!")
  116. print("=" * 80)
  117. if __name__ == "__main__":
  118. main()